diff --git a/.gitignore b/.gitignore
index 86c249dff..7bf46a22a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,7 @@
/node_modules
Homestead.yaml
Homestead.json
-/nbproject/private/
\ No newline at end of file
+/nbproject/private/
+.env
+/app/Plugins/ServiceDesk/
+/app/config/
diff --git a/DB/dummy-data.sql b/DB/dummy-data.sql
new file mode 100644
index 000000000..20758471d
--- /dev/null
+++ b/DB/dummy-data.sql
@@ -0,0 +1,1867 @@
+-- phpMyAdmin SQL Dump
+-- version 4.1.14
+-- http://www.phpmyadmin.net
+--
+-- Host: 127.0.0.1
+-- Generation Time: May 16, 2016 at 12:18 PM
+-- Server version: 5.6.17
+-- PHP Version: 5.5.12
+
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+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 utf8 */;
+
+--
+-- Database: `demo_from_safraz`
+--
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `banlist`
+--
+
+CREATE TABLE IF NOT EXISTS `banlist` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `ban_status` tinyint(1) NOT NULL,
+ `email_address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `internal_notes` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `canned_response`
+--
+
+CREATE TABLE IF NOT EXISTS `canned_response` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user_id` int(10) unsigned NOT NULL,
+ `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `message` text COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `user_id` (`user_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
+
+--
+-- Dumping data for table `canned_response`
+--
+
+INSERT INTO `canned_response` (`id`, `user_id`, `title`, `message`, `created_at`, `updated_at`) VALUES
+(1, 1, 'Ticket accepted Reply', 'Hi %Client Name%, We are looking into your issue Thank You, Kind Regards, Demo Admin,', '2016-05-16 03:02:43', '2016-05-16 03:03:18'),
+(2, 1, 'Issue Fixed Reply', 'Hi %Client Name% We have fixed your issue. Thank You, Kind Regards, Demo Admin.', '2016-05-16 03:04:15', '2016-05-16 03:04:15');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `custom_forms`
+--
+
+CREATE TABLE IF NOT EXISTS `custom_forms` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `formname` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `custom_form_fields`
+--
+
+CREATE TABLE IF NOT EXISTS `custom_form_fields` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `forms_id` int(11) NOT NULL,
+ `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `value` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `required` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `date_format`
+--
+
+CREATE TABLE IF NOT EXISTS `date_format` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `format` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ;
+
+--
+-- Dumping data for table `date_format`
+--
+
+INSERT INTO `date_format` (`id`, `format`) VALUES
+(1, 'dd/mm/yyyy'),
+(2, 'dd-mm-yyyy'),
+(3, 'dd.mm.yyyy'),
+(4, 'mm/dd/yyyy'),
+(5, 'mm:dd:yyyy'),
+(6, 'mm-dd-yyyy'),
+(7, 'yyyy/mm/dd'),
+(8, 'yyyy.mm.dd'),
+(9, 'yyyy-mm-dd');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `date_time_format`
+--
+
+CREATE TABLE IF NOT EXISTS `date_time_format` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `format` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ;
+
+--
+-- Dumping data for table `date_time_format`
+--
+
+INSERT INTO `date_time_format` (`id`, `format`) VALUES
+(1, 'd/m/Y H:i:s'),
+(2, 'd.m.Y H:i:s'),
+(3, 'd-m-Y H:i:s'),
+(4, 'm/d/Y H:i:s'),
+(5, 'm.d.Y H:i:s'),
+(6, 'm-d-Y H:i:s'),
+(7, 'Y/m/d H:i:s'),
+(8, 'Y.m.d H:i:s'),
+(9, 'Y-m-d H:i:s');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `department`
+--
+
+CREATE TABLE IF NOT EXISTS `department` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `sla` int(10) unsigned DEFAULT NULL,
+ `manager` int(10) unsigned DEFAULT NULL,
+ `ticket_assignment` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `outgoing_email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `template_set` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `auto_ticket_response` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `auto_message_response` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `auto_response_email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `recipient` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `group_access` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `department_sign` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `sla` (`sla`),
+ KEY `manager_2` (`manager`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
+
+--
+-- Dumping data for table `department`
+--
+
+INSERT INTO `department` (`id`, `name`, `type`, `sla`, `manager`, `ticket_assignment`, `outgoing_email`, `template_set`, `auto_ticket_response`, `auto_message_response`, `auto_response_email`, `recipient`, `group_access`, `department_sign`, `created_at`, `updated_at`) VALUES
+(1, 'Support', '', 1, NULL, '', '', '', '', '', '', '', '', '', '2016-05-02 06:32:36', '2016-05-02 06:32:36'),
+(2, 'Sales', '', 1, NULL, '', '', '', '', '', '', '', '', '', '2016-05-02 06:32:36', '2016-05-02 06:32:36'),
+(3, 'Operation', '', 1, NULL, '', '', '', '', '', '', '', '', '', '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `emails`
+--
+
+CREATE TABLE IF NOT EXISTS `emails` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `email_address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `email_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `department` int(10) unsigned DEFAULT NULL,
+ `priority` int(10) unsigned DEFAULT NULL,
+ `help_topic` int(10) unsigned DEFAULT NULL,
+ `user_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `fetching_host` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `fetching_port` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `fetching_protocol` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `fetching_encryption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `mailbox_protocol` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `imap_config` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `folder` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `sending_host` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `sending_port` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `sending_protocol` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `sending_encryption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `internal_notes` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `auto_response` tinyint(1) NOT NULL,
+ `fetching_status` tinyint(1) NOT NULL,
+ `move_to_folder` tinyint(1) NOT NULL,
+ `delete_email` tinyint(1) NOT NULL,
+ `do_nothing` tinyint(1) NOT NULL,
+ `sending_status` tinyint(1) NOT NULL,
+ `authentication` tinyint(1) NOT NULL,
+ `header_spoofing` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `department` (`department`,`priority`,`help_topic`),
+ KEY `department_2` (`department`,`priority`,`help_topic`),
+ KEY `priority` (`priority`),
+ KEY `help_topic` (`help_topic`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `groups`
+--
+
+CREATE TABLE IF NOT EXISTS `groups` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `group_status` tinyint(1) NOT NULL,
+ `can_create_ticket` tinyint(1) NOT NULL,
+ `can_edit_ticket` tinyint(1) NOT NULL,
+ `can_post_ticket` tinyint(1) NOT NULL,
+ `can_close_ticket` tinyint(1) NOT NULL,
+ `can_assign_ticket` tinyint(1) NOT NULL,
+ `can_transfer_ticket` tinyint(1) NOT NULL,
+ `can_delete_ticket` tinyint(1) NOT NULL,
+ `can_ban_email` tinyint(1) NOT NULL,
+ `can_manage_canned` tinyint(1) NOT NULL,
+ `can_manage_faq` tinyint(1) NOT NULL,
+ `can_view_agent_stats` tinyint(1) NOT NULL,
+ `department_access` tinyint(1) NOT NULL,
+ `admin_notes` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
+
+--
+-- Dumping data for table `groups`
+--
+
+INSERT INTO `groups` (`id`, `name`, `group_status`, `can_create_ticket`, `can_edit_ticket`, `can_post_ticket`, `can_close_ticket`, `can_assign_ticket`, `can_transfer_ticket`, `can_delete_ticket`, `can_ban_email`, `can_manage_canned`, `can_manage_faq`, `can_view_agent_stats`, `department_access`, `admin_notes`, `created_at`, `updated_at`) VALUES
+(1, 'Group A', 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, '', '2016-05-02 06:32:35', '2016-05-02 06:32:35'),
+(2, 'Group B', 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, '', '2016-05-02 06:32:36', '2016-05-02 06:32:36'),
+(3, 'Group C', 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '', '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `group_assign_department`
+--
+
+CREATE TABLE IF NOT EXISTS `group_assign_department` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `group_id` int(10) unsigned NOT NULL,
+ `department_id` int(10) unsigned NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `group_id` (`group_id`),
+ KEY `department_id` (`department_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `help_topic`
+--
+
+CREATE TABLE IF NOT EXISTS `help_topic` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `topic` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `parent_topic` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `custom_form` int(10) unsigned DEFAULT NULL,
+ `department` int(10) unsigned DEFAULT NULL,
+ `ticket_status` int(10) unsigned DEFAULT NULL,
+ `priority` int(10) unsigned DEFAULT NULL,
+ `sla_plan` int(10) unsigned DEFAULT NULL,
+ `thank_page` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `ticket_num_format` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `internal_notes` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `type` tinyint(1) NOT NULL,
+ `auto_assign` int(10) unsigned DEFAULT NULL,
+ `auto_response` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `custom_form` (`custom_form`),
+ KEY `department` (`department`),
+ KEY `ticket_status` (`ticket_status`),
+ KEY `priority` (`priority`),
+ KEY `sla_plan` (`sla_plan`),
+ KEY `auto_assign_2` (`auto_assign`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
+
+--
+-- Dumping data for table `help_topic`
+--
+
+INSERT INTO `help_topic` (`id`, `topic`, `parent_topic`, `custom_form`, `department`, `ticket_status`, `priority`, `sla_plan`, `thank_page`, `ticket_num_format`, `internal_notes`, `status`, `type`, `auto_assign`, `auto_response`, `created_at`, `updated_at`) VALUES
+(1, 'Support query', '', NULL, 1, 1, 2, 1, '', '1', '', 1, 1, NULL, 0, '2016-05-02 06:32:36', '2016-05-02 06:32:36'),
+(2, 'Sales query', '', NULL, 2, 1, 2, 1, '', '1', '', 0, 1, NULL, 0, '2016-05-02 06:32:36', '2016-05-02 06:32:36'),
+(3, 'Operational query', '', NULL, 3, 1, 2, 1, '', '1', '', 0, 1, NULL, 0, '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `kb_article`
+--
+
+CREATE TABLE IF NOT EXISTS `kb_article` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `slug` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `description` text COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `type` tinyint(1) NOT NULL,
+ `publish_time` datetime DEFAULT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
+
+--
+-- Dumping data for table `kb_article`
+--
+
+INSERT INTO `kb_article` (`id`, `name`, `slug`, `description`, `status`, `type`, `publish_time`, `created_at`, `updated_at`) VALUES
+(2, 'RETURN & CANCELLATION', 'cloth', '
Size doesn’t fit you or the Apparel/ Product is damaged/ defective can be returned in its original packing within 7 days of delivery. Once we have verified the damage, defect and/or error, you shall receive a replacement or a full refund for the Product in the original means of payment.
\r\n\r\n \r\nThe B Clothing reserves the right to refuse a payment on a return of product purchased from www.thebclothing.com if the product is not received in its original condition, or is received damaged or has been used. All products to be returned must be notified to The B Clothing within 7 Days of receipt of your order..
\r\n\r\n \r\nIn case of International shipments, customers may return any products that they have a size issue with if they are willing to bear the shipping costs. In case of damaged or defective products, International customers would need to send images of the product in its original packaging to support@abcclothing.com to claim a refund. Also, for damages and defects, the customer must notify ABC Clothing within 2 days of receiving the product.
\r\n\r\n \r\nIn case of any returns that are approved, the purchase amount will be refunded to the customer within 15 business days upon receipt of return package, deducting any applicable return-processing fee.
\r\n\r\n \r\nThe following mode of refund payments will be used: \r\n• If online payment, then amount will be refunded online.
\r\n\r\n \r\nAny requests for cancellation of orders placed should be made immediately by contacting support@abc clothing.com. If the order has been processed or shipped, the applicable order cancellation charges will be applied.
\r\n\r\n
\r\n', 1, 1, '2015-05-03 23:56:00', '2016-05-03 12:57:11', '2016-05-04 01:32:24'),
+(3, ' SHIPPING POLICY', 'hello', 'We ship worldwide. We use FedEx/DTDC for shipping.
\r\n\r\nStandard Shipping is usually 3-7 Working days for orders within India and 12-15 Working days for International Orders, but usually faster. IF your order doesn’t reach you in time, you may write to us at support@abcclothing.com
\r\n\r\nInternational Orders
\r\n\r\nFor international orders, please note, your shipping will be calculated at the time of Check out only, this is a System Generated amount, based on your Zip Code, Region and Order Weight. (Approx Costs Rs.1250-1500 for 500 gms – International Shipment, subject to region)
\r\n\r\nTracking
\r\n\r\nFor tracking your order go to the following website, it will require your tracking ID which is sent via mail in your invoice.
\r\n', 1, 1, '2015-05-03 23:58:00', '2016-05-03 13:01:10', '2016-05-16 03:08:03'),
+(4, 'PRIVACY POLICY', 'policy', 'The ABC Clothing collects your basic information to service your requests. This basic information is gathered when you purchase products/Gift card vouchers or when you sign up for e-mail notifications. Information gathered from you includes your name, mailing address, e-mail and phone number. Only when you place an order, your card information is requested and is submitted via the highest level of encryption to make sure of the greatest amount of safety and security. Reason why we gather this information:
\r\n\r\nTo process your order . \r\nShipping and Customer Service. \r\nWe also use the information to upgrade our products, customer services, website content and navigation.
\r\n\r\n \r\nInternal Record Keeping . \r\nWe at The ABC Clothing respect that you do not want your personal information shared with other companies. The information you provide shall, therefore, be only used to process your order and customer support. The ABC Clothing does not share, sell or rent customer information to any other company.
\r\n', 1, 1, '2015-05-04 00:01:00', '2016-05-03 13:06:09', '2016-05-16 03:08:00'),
+(5, 'SECURE SHOPPING GUARANTEE', 'abc', 'We accept all major Indian and International Credit/ Debit Cards, and Net Banking with over 40 Banks.
\r\n\r\nNO Cash on Delivery (as random people order and share false addresses for fun)
\r\n\r\nYes, shopping at our e-store is 100% safe. All payment requests are directed to the secured PayU Payment Gateway. This gives you the highest level of protection possible whenever you use credit cards or make other financial or confidential transactions over the Internet.
\r\n\r\nYou can be assured that our e-store offers you the highest standards of security currently available on the net so as to ensure that your shopping experience is private, safe and secure.
\r\n', 1, 1, '2015-05-04 00:09:00', '2016-05-03 13:11:15', '2016-05-04 01:32:53'),
+(8, 'TROUSER SKIRTS', 'tro', 'Paris takes its fashion very, very seriously. So seriously, in fact, that wearing the wrong thing has actually caused a riot.
\r\n\r\nIn 1911, two rival Parisian couture houses launched their "trouser skirts," an innovation in fashion that trod the very fixed line between the genders and seemed to promise greater flexibility for women in general. There were two different versions of the trouser skirt: One was a sort of baggy pant with a very low hanging crotch, described as "a sack with holes made for the legs to go through," not unlike the fashions on high streets today, and the other a pair of the same kind of pants topped with an over-skirt, again, not unlike high street fashions of today. Both versions were launched by models at the opening day of racing season to general revulsion and disgust, but thankfully, no violence.
\r\n\r\nIt wasn't until the ladies attempted to promenade their future fashions on the boulevards that the fisticuffs started—at the Place de l'Opera, the poor models were attacked by a jeering mob of fashion Philistines, who pulled their hair, trampled their hats, and reduced them to tears. A squad of police officers on bicycles were dispatched to rescue the girls and escort them to safety.
\r\n', 1, 1, '2015-05-04 11:54:00', '2016-05-04 00:56:06', '2016-05-04 00:56:06'),
+(9, 'CUSTOM ORDER', 'cus', 'You saw, you liked but couldn’t see your size? We will custom make it for you.
\r\n\r\nHow it works:
\r\n\r\n\r\n You liked something and want to modify a little or have something else on mind, do pen it down and share it with us on Support@abcclothing.com \r\n We’ll work out the price depending on how detailed or intricate you want your garment. \r\n An advance would be required for any customized orders. \r\n Once you’ve placed a deposit, we’ll make you a sketch of the garment. \r\n We can complete your order in 15-20 days depending on the workload. \r\n We will also share some updates on the garment in case something needs to be changed. \r\n We finally ship it to your given address. \r\n \r\n\r\nNote: No returns and refunds.
\r\n', 1, 1, '2015-05-04 11:56:00', '2016-05-04 01:01:08', '2016-05-04 01:27:43'),
+(10, 'DISCLAIMERS', 'dismiss', 'ABC clothing.com does not promise that the site will be inoffensive, error-free or uninterrupted, or that it will provide specific information from use of the site or any content, search, or link on it. The site and its content are delivered on an “as-is” and “as-available” basis. ABC clothing.com cannot ensure that files you download from the site will be free of viruses or contamination or destructive features.
\r\n\r\nThebclothing.com disclaims all warranties, express or implied, including any implied warranties of merchantability and fitness for a particular purpose. ABC clothing.com will not be liable for any damages of any kind arising from the use of this site, including, without limitation, direct, indirect, incidental, and punitive and consequential damages.
\r\n\r\nABC clothing.com disclaims any and all liability for the acts, omissions, and conduct of any third-party users, ABC clothing.com users, advertisers, and/or sponsors on the Site, in connection with the Site, or other-wise related to your use of the Site. ABC clothing.com is not responsible for the products, services, actions, or failure to act of any third party in connection with or referenced on the Site. Without limiting the fore-going, you may report the misconduct of users and/or third-party advertisers or service and/or product providers referenced on or included in the Site to ABC clothing.com at Support@abcclothing.com
\r\n\r\nABC clothing.com may investigate the claim and take appropriate action, at its sole discretion.
\r\n\r\nFor any query kindly drop mail us on Support@abcclothing.com.
\r\n', 1, 1, '2015-05-04 12:02:00', '2016-05-04 01:06:37', '2016-05-16 03:07:58');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `kb_article_relationship`
+--
+
+CREATE TABLE IF NOT EXISTS `kb_article_relationship` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `article_id` int(10) unsigned NOT NULL,
+ `category_id` int(10) unsigned NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `article_relationship_article_id_foreign` (`article_id`),
+ KEY `article_relationship_category_id_foreign` (`category_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=29 ;
+
+--
+-- Dumping data for table `kb_article_relationship`
+--
+
+INSERT INTO `kb_article_relationship` (`id`, `article_id`, `category_id`, `created_at`, `updated_at`) VALUES
+(17, 8, 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
+(20, 9, 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
+(23, 2, 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
+(24, 5, 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
+(26, 10, 2, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
+(27, 4, 2, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
+(28, 3, 2, '0000-00-00 00:00:00', '0000-00-00 00:00:00');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `kb_category`
+--
+
+CREATE TABLE IF NOT EXISTS `kb_category` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `slug` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `description` text COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `parent` int(11) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
+
+--
+-- Dumping data for table `kb_category`
+--
+
+INSERT INTO `kb_category` (`id`, `name`, `slug`, `description`, `status`, `parent`, `created_at`, `updated_at`) VALUES
+(1, 'Issue Handeling', 'issue-handling', 'These are the list of error handling issue. ', 1, 0, '2016-05-03 08:18:14', '2016-05-16 03:06:05'),
+(2, 'Policy', 'policy', 'These are the policies defined by this organization ', 1, 0, '2016-05-16 03:07:28', '2016-05-16 03:07:28');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `kb_comment`
+--
+
+CREATE TABLE IF NOT EXISTS `kb_comment` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `article_id` int(10) unsigned NOT NULL,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `website` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `comment` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `comment_article_id_foreign` (`article_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `kb_pages`
+--
+
+CREATE TABLE IF NOT EXISTS `kb_pages` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `visibility` tinyint(1) NOT NULL,
+ `slug` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `description` text COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `kb_pages`
+--
+
+INSERT INTO `kb_pages` (`id`, `name`, `status`, `visibility`, `slug`, `description`, `created_at`, `updated_at`) VALUES
+(1, 'About Us', 1, 1, 'about-us', 'At ABC, our vision is to be Earth''s most customer centric company; to build a place where people can come to find and discover virtually anything they want to buy online. With ABC.com, we endeavor to build that same destination over globally by giving customers more of what they want – vast selection, low prices, fast and reliable delivery, and a trusted and convenient online shopping experience – and provide sellers a world-class e-commerce platform. We are committed to ensure 100% Purchase Protection for your shopping done on ABC.com so that you can benefit from a safe and secure online ordering experience, convenient payment options such as cash on delivery, easy returns and enjoy a completely hassle free online shopping experience.
We launched with Books and Movies & TV shows and have expanded our offerings to include the Kindle family of E-Readers, the ABC store and various products under different categories. Customers can now buy products from popular brands across categories such as Samsung mobiles, Dell laptops, Canon cameras, Fastrack watches and many more at ABC.com. Don’t forget to check out the ABC Exclusives Store and also, shop for Today''s Deals on ABC and save big every day. On ABC, shopping is not only about buying, it''s also about gifting and through Gift a Smile you can give products online to charity through verified NGOs.
Customers can also shop our full selection of products using the ABC App for Android, iOS and Windows which offers customers a convenient, fast and secure way to search, browse, compare offers, and shop online quickly and easily, at anytime from anywhere.
It is still “Day 1” and we continue to relentlessly focus on using our investments in technology and innovation to transform the lives of our customers and all our partners.
', '2016-05-16 03:10:14', '2016-05-16 03:20:47');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `kb_settings`
+--
+
+CREATE TABLE IF NOT EXISTS `kb_settings` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `pagination` int(11) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `kb_settings`
+--
+
+INSERT INTO `kb_settings` (`id`, `pagination`, `created_at`, `updated_at`) VALUES
+(1, 10, '2016-05-02 06:32:38', '2016-05-02 06:32:38');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `languages`
+--
+
+CREATE TABLE IF NOT EXISTS `languages` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `locale` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ;
+
+--
+-- Dumping data for table `languages`
+--
+
+INSERT INTO `languages` (`id`, `name`, `locale`) VALUES
+(1, 'English', 'en'),
+(2, 'Italian', 'it'),
+(3, 'German', 'de'),
+(4, 'French', 'fr'),
+(5, 'Brazilian Portuguese', 'pt_BR'),
+(6, 'Dutch', 'nl'),
+(7, 'Spanish', 'es'),
+(8, 'Norwegian', 'nb_NO'),
+(9, 'Danish', 'da');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `log_notification`
+--
+
+CREATE TABLE IF NOT EXISTS `log_notification` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `log` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `log_notification`
+--
+
+INSERT INTO `log_notification` (`id`, `log`, `created_at`, `updated_at`) VALUES
+(1, 'NOT-1', '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `mailbox_protocol`
+--
+
+CREATE TABLE IF NOT EXISTS `mailbox_protocol` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `value` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
+
+--
+-- Dumping data for table `mailbox_protocol`
+--
+
+INSERT INTO `mailbox_protocol` (`id`, `name`, `value`) VALUES
+(1, 'IMAP', '/imap'),
+(2, 'IMAP+SSL', '/imap/ssl'),
+(3, 'IMAP+TLS', '/imap/tls'),
+(4, 'IMAP+SSL/No-validate', '/imap/ssl/novalidate-cert');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `migrations`
+--
+
+CREATE TABLE IF NOT EXISTS `migrations` (
+ `migration` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `batch` int(11) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+--
+-- Dumping data for table `migrations`
+--
+
+INSERT INTO `migrations` (`migration`, `batch`) VALUES
+('2016_02_16_140450_create_banlist_table', 1),
+('2016_02_16_140450_create_canned_response_table', 1),
+('2016_02_16_140450_create_custom_form_fields_table', 1),
+('2016_02_16_140450_create_custom_forms_table', 1),
+('2016_02_16_140450_create_date_format_table', 1),
+('2016_02_16_140450_create_date_time_format_table', 1),
+('2016_02_16_140450_create_department_table', 1),
+('2016_02_16_140450_create_emails_table', 1),
+('2016_02_16_140450_create_group_assign_department_table', 1),
+('2016_02_16_140450_create_groups_table', 1),
+('2016_02_16_140450_create_help_topic_table', 1),
+('2016_02_16_140450_create_kb_article_relationship_table', 1),
+('2016_02_16_140450_create_kb_article_table', 1),
+('2016_02_16_140450_create_kb_category_table', 1),
+('2016_02_16_140450_create_kb_comment_table', 1),
+('2016_02_16_140450_create_kb_pages_table', 1),
+('2016_02_16_140450_create_kb_settings_table', 1),
+('2016_02_16_140450_create_languages_table', 1),
+('2016_02_16_140450_create_log_notification_table', 1),
+('2016_02_16_140450_create_mailbox_protocol_table', 1),
+('2016_02_16_140450_create_organization_table', 1),
+('2016_02_16_140450_create_password_resets_table', 1),
+('2016_02_16_140450_create_plugins_table', 1),
+('2016_02_16_140450_create_send_mail_table', 1),
+('2016_02_16_140450_create_settings_alert_notice_table', 1),
+('2016_02_16_140450_create_settings_auto_response_table', 1),
+('2016_02_16_140450_create_settings_company_table', 1),
+('2016_02_16_140450_create_settings_email_table', 1),
+('2016_02_16_140450_create_settings_ratings_table', 1),
+('2016_02_16_140450_create_settings_system_table', 1),
+('2016_02_16_140450_create_settings_ticket_table', 1),
+('2016_02_16_140450_create_sla_plan_table', 1),
+('2016_02_16_140450_create_team_assign_agent_table', 1),
+('2016_02_16_140450_create_teams_table', 1),
+('2016_02_16_140450_create_template_table', 1),
+('2016_02_16_140450_create_ticket_attachment_table', 1),
+('2016_02_16_140450_create_ticket_collaborator_table', 1),
+('2016_02_16_140450_create_ticket_form_data_table', 1),
+('2016_02_16_140450_create_ticket_priority_table', 1),
+('2016_02_16_140450_create_ticket_source_table', 1),
+('2016_02_16_140450_create_ticket_status_table', 1),
+('2016_02_16_140450_create_ticket_thread_table', 1),
+('2016_02_16_140450_create_tickets_table', 1),
+('2016_02_16_140450_create_time_format_table', 1),
+('2016_02_16_140450_create_timezone_table', 1),
+('2016_02_16_140450_create_user_assign_organization_table', 1),
+('2016_02_16_140450_create_users_table', 1),
+('2016_02_16_140450_create_version_check_table', 1),
+('2016_02_16_140450_create_widgets_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_canned_response_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_department_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_emails_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_group_assign_department_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_help_topic_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_kb_article_relationship_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_kb_comment_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_organization_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_settings_system_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_team_assign_agent_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_teams_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_ticket_attachment_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_ticket_collaborator_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_ticket_form_data_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_ticket_thread_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_tickets_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_user_assign_organization_table', 1),
+('2016_02_16_140454_add_foreign_keys_to_users_table', 1),
+('2016_03_31_061239_create_notifications_table', 1),
+('2016_03_31_061534_create_notification_types_table', 1),
+('2016_03_31_061740_create_user_notification_table', 1),
+('2016_04_18_115852_create_workflow_name_table', 1),
+('2016_04_18_115900_create_workflow_rule_table', 1),
+('2016_04_18_115908_create_workflow_action_table', 1);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `notifications`
+--
+
+CREATE TABLE IF NOT EXISTS `notifications` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `model_id` int(11) NOT NULL,
+ `userid_created` int(11) NOT NULL,
+ `type_id` int(11) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
+
+--
+-- Dumping data for table `notifications`
+--
+
+INSERT INTO `notifications` (`id`, `model_id`, `userid_created`, `type_id`, `created_at`, `updated_at`) VALUES
+(1, 1, 2, 3, '2016-05-03 00:16:13', '2016-05-03 00:16:13'),
+(2, 2, 1, 3, '2016-05-03 00:27:13', '2016-05-03 00:27:13'),
+(3, 3, 2, 3, '2016-05-03 01:03:59', '2016-05-03 01:03:59'),
+(4, 4, 1, 3, '2016-05-03 01:07:15', '2016-05-03 01:07:15'),
+(5, 5, 3, 3, '2016-05-03 01:14:11', '2016-05-03 01:14:11'),
+(6, 6, 4, 3, '2016-05-03 01:19:19', '2016-05-03 01:19:19'),
+(7, 7, 1, 3, '2016-05-03 01:25:15', '2016-05-03 01:25:15'),
+(8, 3, 1, 2, '2016-05-16 02:49:22', '2016-05-16 02:49:22'),
+(9, 6, 1, 2, '2016-05-16 02:52:18', '2016-05-16 02:52:18'),
+(10, 6, 1, 2, '2016-05-16 03:00:29', '2016-05-16 03:00:29');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `notification_types`
+--
+
+CREATE TABLE IF NOT EXISTS `notification_types` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `message` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `icon_class` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `organization`
+--
+
+CREATE TABLE IF NOT EXISTS `organization` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `phone` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `website` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `head` int(10) unsigned DEFAULT NULL,
+ `internal_notes` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `head` (`head`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `organization`
+--
+
+INSERT INTO `organization` (`id`, `name`, `phone`, `website`, `address`, `head`, `internal_notes`, `created_at`, `updated_at`) VALUES
+(1, 'XYZ Organization', '', '', '', NULL, '', '2016-05-16 03:21:30', '2016-05-16 03:21:30');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `password_resets`
+--
+
+CREATE TABLE IF NOT EXISTS `password_resets` (
+ `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `token` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ KEY `password_resets_email_index` (`email`),
+ KEY `password_resets_token_index` (`token`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `plugins`
+--
+
+CREATE TABLE IF NOT EXISTS `plugins` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `path` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` int(11) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `send_mail`
+--
+
+CREATE TABLE IF NOT EXISTS `send_mail` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `driver` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `host` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `port` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `encryption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `send_mail`
+--
+
+INSERT INTO `send_mail` (`id`, `driver`, `host`, `port`, `encryption`, `name`, `email`, `password`) VALUES
+(1, '', '', '', '', '', '', '');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `settings_alert_notice`
+--
+
+CREATE TABLE IF NOT EXISTS `settings_alert_notice` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `ticket_status` tinyint(1) NOT NULL,
+ `ticket_admin_email` tinyint(1) NOT NULL,
+ `ticket_department_manager` tinyint(1) NOT NULL,
+ `ticket_department_member` tinyint(1) NOT NULL,
+ `ticket_organization_accmanager` tinyint(1) NOT NULL,
+ `message_status` tinyint(1) NOT NULL,
+ `message_last_responder` tinyint(1) NOT NULL,
+ `message_assigned_agent` tinyint(1) NOT NULL,
+ `message_department_manager` tinyint(1) NOT NULL,
+ `message_organization_accmanager` tinyint(1) NOT NULL,
+ `internal_status` tinyint(1) NOT NULL,
+ `internal_last_responder` tinyint(1) NOT NULL,
+ `internal_assigned_agent` tinyint(1) NOT NULL,
+ `internal_department_manager` tinyint(1) NOT NULL,
+ `assignment_status` tinyint(1) NOT NULL,
+ `assignment_assigned_agent` tinyint(1) NOT NULL,
+ `assignment_team_leader` tinyint(1) NOT NULL,
+ `assignment_team_member` tinyint(1) NOT NULL,
+ `transfer_status` tinyint(1) NOT NULL,
+ `transfer_assigned_agent` tinyint(1) NOT NULL,
+ `transfer_department_manager` tinyint(1) NOT NULL,
+ `transfer_department_member` tinyint(1) NOT NULL,
+ `overdue_status` tinyint(1) NOT NULL,
+ `overdue_assigned_agent` tinyint(1) NOT NULL,
+ `overdue_department_manager` tinyint(1) NOT NULL,
+ `overdue_department_member` tinyint(1) NOT NULL,
+ `system_error` tinyint(1) NOT NULL,
+ `sql_error` tinyint(1) NOT NULL,
+ `excessive_failure` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `settings_alert_notice`
+--
+
+INSERT INTO `settings_alert_notice` (`id`, `ticket_status`, `ticket_admin_email`, `ticket_department_manager`, `ticket_department_member`, `ticket_organization_accmanager`, `message_status`, `message_last_responder`, `message_assigned_agent`, `message_department_manager`, `message_organization_accmanager`, `internal_status`, `internal_last_responder`, `internal_assigned_agent`, `internal_department_manager`, `assignment_status`, `assignment_assigned_agent`, `assignment_team_leader`, `assignment_team_member`, `transfer_status`, `transfer_assigned_agent`, `transfer_department_manager`, `transfer_department_member`, `overdue_status`, `overdue_assigned_agent`, `overdue_department_manager`, `overdue_department_member`, `system_error`, `sql_error`, `excessive_failure`, `created_at`, `updated_at`) VALUES
+(1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `settings_auto_response`
+--
+
+CREATE TABLE IF NOT EXISTS `settings_auto_response` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `new_ticket` tinyint(1) NOT NULL,
+ `agent_new_ticket` tinyint(1) NOT NULL,
+ `submitter` tinyint(1) NOT NULL,
+ `participants` tinyint(1) NOT NULL,
+ `overlimit` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `settings_auto_response`
+--
+
+INSERT INTO `settings_auto_response` (`id`, `new_ticket`, `agent_new_ticket`, `submitter`, `participants`, `overlimit`, `created_at`, `updated_at`) VALUES
+(1, 1, 1, 0, 0, 0, '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `settings_company`
+--
+
+CREATE TABLE IF NOT EXISTS `settings_company` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `company_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `website` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `phone` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `landing_page` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `offline_page` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `thank_page` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `logo` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `use_logo` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `settings_company`
+--
+
+INSERT INTO `settings_company` (`id`, `company_name`, `website`, `phone`, `address`, `landing_page`, `offline_page`, `thank_page`, `logo`, `use_logo`, `created_at`, `updated_at`) VALUES
+(1, 'ABC Company', '', '', '', '', '', '', '', '0', '2016-05-02 06:32:36', '2016-05-16 04:41:49');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `settings_email`
+--
+
+CREATE TABLE IF NOT EXISTS `settings_email` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `template` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `sys_email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `alert_email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `admin_email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `mta` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `email_fetching` tinyint(1) NOT NULL,
+ `notification_cron` tinyint(1) NOT NULL,
+ `strip` tinyint(1) NOT NULL,
+ `separator` tinyint(1) NOT NULL,
+ `all_emails` tinyint(1) NOT NULL,
+ `email_collaborator` tinyint(1) NOT NULL,
+ `attachment` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `settings_email`
+--
+
+INSERT INTO `settings_email` (`id`, `template`, `sys_email`, `alert_email`, `admin_email`, `mta`, `email_fetching`, `notification_cron`, `strip`, `separator`, `all_emails`, `email_collaborator`, `attachment`, `created_at`, `updated_at`) VALUES
+(1, 'default', NULL, '', '', '', 1, 0, 0, 0, 1, 1, 1, '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `settings_ratings`
+--
+
+CREATE TABLE IF NOT EXISTS `settings_ratings` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `rating_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `publish` int(11) NOT NULL,
+ `modify` int(11) NOT NULL,
+ `slug` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `settings_ratings_slug_unique` (`slug`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `settings_system`
+--
+
+CREATE TABLE IF NOT EXISTS `settings_system` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `status` tinyint(1) NOT NULL,
+ `url` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `department` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `page_size` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `log_level` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `purge_log` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `api_enable` int(11) NOT NULL,
+ `api_key_mandatory` int(11) NOT NULL,
+ `api_key` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `name_format` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `time_farmat` int(10) unsigned DEFAULT NULL,
+ `date_format` int(10) unsigned DEFAULT NULL,
+ `date_time_format` int(10) unsigned DEFAULT NULL,
+ `day_date_time` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `time_zone` int(10) unsigned DEFAULT NULL,
+ `content` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `time_farmat` (`time_farmat`),
+ KEY `date_format` (`date_format`),
+ KEY `date_time_format` (`date_time_format`),
+ KEY `time_zone` (`time_zone`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `settings_system`
+--
+
+INSERT INTO `settings_system` (`id`, `status`, `url`, `name`, `department`, `page_size`, `log_level`, `purge_log`, `api_enable`, `api_key_mandatory`, `api_key`, `name_format`, `time_farmat`, `date_format`, `date_time_format`, `day_date_time`, `time_zone`, `content`, `created_at`, `updated_at`) VALUES
+(1, 1, '', 'ABC SUPPORT CENTER
', '1', '', '', '', 0, 0, '', '', NULL, NULL, 1, '', 79, '', '2016-05-02 06:32:38', '2016-05-16 04:44:53');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `settings_ticket`
+--
+
+CREATE TABLE IF NOT EXISTS `settings_ticket` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `num_format` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `num_sequence` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `priority` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `sla` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `help_topic` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `max_open_ticket` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `collision_avoid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `captcha` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `claim_response` tinyint(1) NOT NULL,
+ `assigned_ticket` tinyint(1) NOT NULL,
+ `answered_ticket` tinyint(1) NOT NULL,
+ `agent_mask` tinyint(1) NOT NULL,
+ `html` tinyint(1) NOT NULL,
+ `client_update` tinyint(1) NOT NULL,
+ `max_file_size` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `settings_ticket`
+--
+
+INSERT INTO `settings_ticket` (`id`, `num_format`, `num_sequence`, `priority`, `sla`, `help_topic`, `max_open_ticket`, `collision_avoid`, `captcha`, `status`, `claim_response`, `assigned_ticket`, `answered_ticket`, `agent_mask`, `html`, `client_update`, `max_file_size`, `created_at`, `updated_at`) VALUES
+(1, '#ABCD 1234 1234567', '0', '1', '2', '1', '', '2', '', 1, 0, 0, 0, 0, 0, 0, 0, '2016-05-02 06:32:36', '2016-05-02 06:32:36');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `sla_plan`
+--
+
+CREATE TABLE IF NOT EXISTS `sla_plan` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `grace_period` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `admin_note` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `transient` tinyint(1) NOT NULL,
+ `ticket_overdue` tinyint(1) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
+
+--
+-- Dumping data for table `sla_plan`
+--
+
+INSERT INTO `sla_plan` (`id`, `name`, `grace_period`, `admin_note`, `status`, `transient`, `ticket_overdue`, `created_at`, `updated_at`) VALUES
+(1, 'Sla 1', '6 Hours', '', 1, 0, 0, '2016-05-02 06:32:34', '2016-05-02 06:32:34'),
+(2, 'Sla 2', '12 Hours', '', 1, 0, 0, '2016-05-02 06:32:34', '2016-05-02 06:32:34'),
+(3, 'Sla 3', '24 Hours', '', 1, 0, 0, '2016-05-02 06:32:34', '2016-05-02 06:32:34');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `teams`
+--
+
+CREATE TABLE IF NOT EXISTS `teams` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `team_lead` int(10) unsigned DEFAULT NULL,
+ `assign_alert` tinyint(1) NOT NULL,
+ `admin_notes` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `team_lead` (`team_lead`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
+
+--
+-- Dumping data for table `teams`
+--
+
+INSERT INTO `teams` (`id`, `name`, `status`, `team_lead`, `assign_alert`, `admin_notes`, `created_at`, `updated_at`) VALUES
+(1, 'Level 1 Support', 1, NULL, 0, '', '2016-05-02 06:32:35', '2016-05-02 06:32:35'),
+(2, 'Level 2 Support', 0, NULL, 0, '', '2016-05-02 06:32:35', '2016-05-02 06:32:35'),
+(3, 'Developer', 0, NULL, 0, '', '2016-05-02 06:32:35', '2016-05-02 06:32:35');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `team_assign_agent`
+--
+
+CREATE TABLE IF NOT EXISTS `team_assign_agent` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `team_id` int(10) unsigned DEFAULT NULL,
+ `agent_id` int(10) unsigned DEFAULT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `team_id` (`team_id`),
+ KEY `agent_id` (`agent_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `template`
+--
+
+CREATE TABLE IF NOT EXISTS `template` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` tinyint(1) NOT NULL,
+ `template_set_to_clone` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `language` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `internal_note` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `tickets`
+--
+
+CREATE TABLE IF NOT EXISTS `tickets` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `ticket_number` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `user_id` int(10) unsigned DEFAULT NULL,
+ `dept_id` int(10) unsigned DEFAULT NULL,
+ `team_id` int(10) unsigned DEFAULT NULL,
+ `priority_id` int(10) unsigned DEFAULT NULL,
+ `sla` int(10) unsigned DEFAULT NULL,
+ `help_topic_id` int(10) unsigned DEFAULT NULL,
+ `status` int(10) unsigned DEFAULT NULL,
+ `rating` tinyint(1) NOT NULL,
+ `ratingreply` tinyint(1) NOT NULL,
+ `flags` int(11) NOT NULL,
+ `ip_address` int(11) NOT NULL,
+ `assigned_to` int(10) unsigned DEFAULT NULL,
+ `lock_by` int(11) NOT NULL,
+ `lock_at` datetime DEFAULT NULL,
+ `source` int(10) unsigned DEFAULT NULL,
+ `isoverdue` int(11) NOT NULL,
+ `reopened` int(11) NOT NULL,
+ `isanswered` int(11) NOT NULL,
+ `html` int(11) NOT NULL,
+ `is_deleted` int(11) NOT NULL,
+ `closed` int(11) NOT NULL,
+ `is_transferred` tinyint(1) NOT NULL,
+ `transferred_at` datetime NOT NULL,
+ `reopened_at` datetime DEFAULT NULL,
+ `duedate` datetime DEFAULT NULL,
+ `closed_at` datetime DEFAULT NULL,
+ `last_message_at` datetime DEFAULT NULL,
+ `last_response_at` datetime DEFAULT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `user_id` (`user_id`),
+ KEY `dept_id` (`dept_id`),
+ KEY `team_id` (`team_id`),
+ KEY `priority_id` (`priority_id`),
+ KEY `sla` (`sla`),
+ KEY `help_topic_id` (`help_topic_id`),
+ KEY `status` (`status`),
+ KEY `assigned_to` (`assigned_to`),
+ KEY `source` (`source`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;
+
+--
+-- Dumping data for table `tickets`
+--
+
+INSERT INTO `tickets` (`id`, `ticket_number`, `user_id`, `dept_id`, `team_id`, `priority_id`, `sla`, `help_topic_id`, `status`, `rating`, `ratingreply`, `flags`, `ip_address`, `assigned_to`, `lock_by`, `lock_at`, `source`, `isoverdue`, `reopened`, `isanswered`, `html`, `is_deleted`, `closed`, `is_transferred`, `transferred_at`, `reopened_at`, `duedate`, `closed_at`, `last_message_at`, `last_response_at`, `created_at`, `updated_at`) VALUES
+(3, 'AAAD-0003-0000003', 2, 2, NULL, 1, 1, 2, 1, 0, 0, 0, 0, 1, 1, '2016-05-16 10:18:17', 3, 0, 0, 1, 0, 0, 0, 0, '0000-00-00 00:00:00', NULL, '2016-05-03 12:33:59', NULL, NULL, NULL, '2016-05-03 01:03:59', '2016-05-16 04:48:17'),
+(4, 'AAAE-0004-0000004', 2, 1, NULL, 1, 1, 1, 1, 0, 0, 0, 0, NULL, 1, '2016-05-16 10:06:55', 3, 0, 0, 0, 0, 0, 0, 0, '0000-00-00 00:00:00', NULL, '2016-05-03 12:37:15', NULL, NULL, NULL, '2016-05-03 01:07:15', '2016-05-16 04:36:55'),
+(5, 'AAAF-0005-0000005', 2, 1, NULL, 1, 1, 1, 1, 0, 0, 0, 0, NULL, 1, '2016-05-16 10:06:53', 3, 0, 0, 0, 0, 0, 0, 0, '0000-00-00 00:00:00', NULL, '2016-05-03 12:44:10', NULL, NULL, NULL, '2016-05-03 01:14:10', '2016-05-16 04:36:53'),
+(6, 'AAAG-0006-0000006', 2, 1, NULL, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2016-05-16 10:06:48', 3, 0, 0, 1, 0, 0, 0, 0, '0000-00-00 00:00:00', NULL, '2016-05-03 12:49:19', NULL, NULL, NULL, '2016-05-03 01:19:19', '2016-05-16 04:36:48'),
+(7, 'AAAH-0007-0000007', 2, 2, NULL, 1, 1, 2, 1, 0, 0, 0, 0, NULL, 1, '2016-05-16 10:06:50', 3, 0, 0, 0, 0, 0, 0, 0, '0000-00-00 00:00:00', NULL, '2016-05-03 12:55:15', NULL, NULL, NULL, '2016-05-03 01:25:15', '2016-05-16 04:36:50');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ticket_attachment`
+--
+
+CREATE TABLE IF NOT EXISTS `ticket_attachment` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `thread_id` int(10) unsigned DEFAULT NULL,
+ `size` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `poster` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `file` mediumblob,
+ PRIMARY KEY (`id`),
+ KEY `thread_id` (`thread_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ticket_collaborator`
+--
+
+CREATE TABLE IF NOT EXISTS `ticket_collaborator` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `isactive` tinyint(1) NOT NULL,
+ `ticket_id` int(10) unsigned DEFAULT NULL,
+ `user_id` int(10) unsigned DEFAULT NULL,
+ `role` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `ticket_id` (`ticket_id`),
+ KEY `user_id` (`user_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ticket_form_data`
+--
+
+CREATE TABLE IF NOT EXISTS `ticket_form_data` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `ticket_id` int(10) unsigned DEFAULT NULL,
+ `title` text COLLATE utf8_unicode_ci NOT NULL,
+ `content` text COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `ticket_id` (`ticket_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ticket_priority`
+--
+
+CREATE TABLE IF NOT EXISTS `ticket_priority` (
+ `priority_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `priority` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `priority_desc` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `priority_color` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `priority_urgency` tinyint(1) NOT NULL,
+ `ispublic` tinyint(1) NOT NULL,
+ PRIMARY KEY (`priority_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
+
+--
+-- Dumping data for table `ticket_priority`
+--
+
+INSERT INTO `ticket_priority` (`priority_id`, `priority`, `priority_desc`, `priority_color`, `priority_urgency`, `ispublic`) VALUES
+(1, 'Low', 'Low', 'info', 4, 1),
+(2, 'Normal', 'Normal', 'info', 3, 1),
+(3, 'High', 'High', 'warning', 2, 1),
+(4, 'Emergency', 'Emergency', 'danger', 1, 1);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ticket_source`
+--
+
+CREATE TABLE IF NOT EXISTS `ticket_source` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `value` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
+
+--
+-- Dumping data for table `ticket_source`
+--
+
+INSERT INTO `ticket_source` (`id`, `name`, `value`) VALUES
+(1, 'web', 'Web'),
+(2, 'email', 'E-mail'),
+(3, 'agent', 'Agent Panel');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ticket_status`
+--
+
+CREATE TABLE IF NOT EXISTS `ticket_status` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `state` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `mode` int(11) NOT NULL,
+ `message` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `flags` int(11) NOT NULL,
+ `sort` int(11) NOT NULL,
+ `properties` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
+
+--
+-- Dumping data for table `ticket_status`
+--
+
+INSERT INTO `ticket_status` (`id`, `name`, `state`, `mode`, `message`, `flags`, `sort`, `properties`, `created_at`, `updated_at`) VALUES
+(1, 'Open', 'open', 3, 'Ticket have been Reopened by', 0, 1, 'Open tickets.', '2016-05-02 06:32:34', '2016-05-02 06:32:34'),
+(2, 'Resolved', 'closed', 1, 'Ticket have been Resolved by', 0, 2, 'Resolved tickets.', '2016-05-02 06:32:34', '2016-05-02 06:32:34'),
+(3, 'Closed', 'closed', 3, 'Ticket have been Closed by', 0, 3, 'Closed tickets. Tickets will still be accessible on client and staff panels.', '2016-05-02 06:32:34', '2016-05-02 06:32:34'),
+(4, 'Archived', 'archived', 3, 'Ticket have been Archived by', 0, 4, 'Tickets only adminstratively available but no longer accessible on ticket queues and client panel.', '2016-05-02 06:32:34', '2016-05-02 06:32:34'),
+(5, 'Deleted', 'deleted', 3, 'Ticket have been Deleted by', 0, 5, 'Tickets queued for deletion. Not accessible on ticket queues.', '2016-05-02 06:32:34', '2016-05-02 06:32:34');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ticket_thread`
+--
+
+CREATE TABLE IF NOT EXISTS `ticket_thread` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `ticket_id` int(10) unsigned DEFAULT NULL,
+ `user_id` int(10) unsigned DEFAULT NULL,
+ `poster` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `source` int(10) unsigned DEFAULT NULL,
+ `reply_rating` int(11) NOT NULL,
+ `rating_count` int(11) NOT NULL,
+ `is_internal` tinyint(1) NOT NULL,
+ `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `body` text COLLATE utf8_unicode_ci NOT NULL,
+ `format` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `ip_address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `ticket_id_2` (`ticket_id`),
+ KEY `user_id` (`user_id`),
+ KEY `source` (`source`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;
+
+--
+-- Dumping data for table `ticket_thread`
+--
+
+INSERT INTO `ticket_thread` (`id`, `ticket_id`, `user_id`, `poster`, `source`, `reply_rating`, `rating_count`, `is_internal`, `title`, `body`, `format`, `ip_address`, `created_at`, `updated_at`) VALUES
+(3, 3, 2, 'client', NULL, 0, 0, 0, 'Sewing defects ', 'Hi ABC Team,\n \nWe have taken delivery of the consignment sent against B/No.123789 dated 3th May 2016. \n\nOn opening the parcel, we have observed that 3 items of "Jake and jones T-shirt" are not there. We shall, therefore, appreciate your sending us the same through registered post. Alternatively please issue us the necessary credit note. \n\nYours faithfully,\nFor Excel Packaging', '', '', '2016-05-03 01:03:59', '2016-05-03 01:03:59'),
+(4, 4, 2, 'client', NULL, 0, 0, 0, 'Colour effects', 'Hi ABC Team,\n \nWhen we placed our T-shirt order with your representative when he called on us last time, we were given an undertaking that we would be provided free delivery. After some time i get call charged with the cost of delivery. \n\nThis is something new, strange and in total violation of business morality and so were constrained not to send our further orders. First we thought to keep silent over \nthe matter but now we think that you should be informed about it. If you had been in our place, you too would have taken this matter as un-generous and unethical. \n\n\n\nThank you', '', '', '2016-05-03 01:07:15', '2016-05-03 01:07:15'),
+(5, 5, 2, 'client', NULL, 0, 0, 0, 'Sizing defects ', 'Hi ABC Team,\n \n\nWhen we placed our trial order with your representative when he called on us last time, we were given an undertaking that we would be provided free delivery. But to our surprise and annoyance we were charged with the cost of delivery. \n\nThis is something new, strange and in total violation of business morality and so were constrained not to send our further orders. First we thought to keep silent over\nthe matter but now we think that you should be informed about it. If you had been in our place, you too would have taken this matter as un-generous and unethical. \n\nWe look forward to your views and comments at the earliest.\n \nThank You\n', '', '', '2016-05-03 01:14:11', '2016-05-03 01:14:11'),
+(6, 6, 2, 'client', NULL, 0, 0, 0, 'Garment defects', 'Hi ABC Team,\n \nWe have recently received several complaints from customers about your T-shirt. The t-shirt are clearly not giving satisfaction and in some cases we have had to refund the purchase price. \n\nThe T-shirt are part of the batch of 60 supplied against our order number 12345 dated 01 may. This order was placed on the basis of a sample Shirt left by your representative. We have ourselves compared the performance of this sample with that of a number of the pens from this batch, and there is little doubt that many of them are faulty - some of them leak and others blot when writing. \n\nThe complaints we have received relate only to shirt from the batch mentioned. shirt supplied before these have always been satisfactory.\n\nWe therefore wish to return the unsold balance, amounting to 10 shirt. Please replace them with shirt of the quality which our earlier dealings with you have led us to expect. \n\nPlease let us know what arrangements you wish us to make for the return of these unsuitable shirt. \n\nYours faithfully', '', '', '2016-05-03 01:19:20', '2016-05-03 01:19:20'),
+(7, 7, 2, 'client', NULL, 0, 0, 0, 'cash withdraw', 'Hi ABC Team,\n \nI am writing to you to complain about the shipment of sweaters we received yesterday against the above order.\nThe boxes in which the sweaters were packed were damaged, and looked as if they had been broken open in transit. \nFrom your invoice No.1234 we estimate that thirty garments have been stolen to the value of USD150. And because of\nthe rummaging in the boxes, quite a few other garments were crushed or stained and cannot be sold as new articles in our shops.\n \nAs the sale was on a c.i.f. basis and the forwarding company your agents, we suggest you contact them with regard to compensation.\nYou will find a list of the damaged and missing articles attached, and the consignment will be put to one side until we receive your instructions.\n \nThank You', '', '', '2016-05-03 01:25:15', '2016-05-03 01:25:15'),
+(8, 3, 1, '', NULL, 0, 0, 1, '', 'This Ticket have been assigned to demo admin', '', '', '2016-05-16 02:49:22', '2016-05-16 02:49:22'),
+(9, 3, 1, 'support', NULL, 0, 0, 0, '', 'Hi Client, We will be looking into your issue. Thanks Regards ABC team.', '', '', '2016-05-16 02:49:22', '2016-05-16 02:49:22'),
+(10, 6, 1, '', NULL, 0, 0, 1, '', 'This Ticket have been assigned to demo admin', '', '', '2016-05-16 02:52:18', '2016-05-16 02:52:18'),
+(11, 6, 1, 'support', NULL, 0, 0, 0, '', 'Hi Client, We are looking into your issue. Thanks, Regards Team ABC. ', '', '', '2016-05-16 02:52:18', '2016-05-16 02:52:18'),
+(12, 6, 1, 'support', NULL, 0, 0, 0, '', 'Hi Client, We have Resend your orders Thanks, Regards Team ABC. ', '', '', '2016-05-16 03:00:29', '2016-05-16 03:00:29');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `timezone`
+--
+
+CREATE TABLE IF NOT EXISTS `timezone` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `location` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=114 ;
+
+--
+-- Dumping data for table `timezone`
+--
+
+INSERT INTO `timezone` (`id`, `name`, `location`) VALUES
+(1, 'Pacific/Midway', '(GMT-11:00) Midway Island'),
+(2, 'US/Samoa', '(GMT-11:00) Samoa'),
+(3, 'US/Hawaii', '(GMT-10:00) Hawaii'),
+(4, 'US/Alaska', '(GMT-09:00) Alaska'),
+(5, 'US/Pacific', '(GMT-08:00) Pacific Time (US & Canada)'),
+(6, 'America/Tijuana', '(GMT-08:00) Tijuana'),
+(7, 'US/Arizona', '(GMT-07:00) Arizona'),
+(8, 'US/Mountain', '(GMT-07:00) Mountain Time (US & Canada)'),
+(9, 'America/Chihuahua', '(GMT-07:00) Chihuahua'),
+(10, 'America/Mazatlan', '(GMT-07:00) Mazatlan'),
+(11, 'America/Mexico_City', '(GMT-06:00) Mexico City'),
+(12, 'America/Monterrey', '(GMT-06:00) Monterrey'),
+(13, 'Canada/Saskatchewan', '(GMT-06:00) Saskatchewan'),
+(14, 'US/Central', '(GMT-06:00) Central Time (US & Canada)'),
+(15, 'US/Eastern', '(GMT-05:00) Eastern Time (US & Canada)'),
+(16, 'US/East-Indiana', '(GMT-05:00) Indiana (East)'),
+(17, 'America/Bogota', '(GMT-05:00) Bogota'),
+(18, 'America/Lima', '(GMT-05:00) Lima'),
+(19, 'America/Caracas', '(GMT-04:30) Caracas'),
+(20, 'Canada/Atlantic', '(GMT-04:00) Atlantic Time (Canada)'),
+(21, 'America/La_Paz', '(GMT-04:00) La Paz'),
+(22, 'America/Santiago', '(GMT-04:00) Santiago'),
+(23, 'Canada/Newfoundland', '(GMT-03:30) Newfoundland'),
+(24, 'America/Buenos_Aires', '(GMT-03:00) Buenos Aires'),
+(25, 'Greenland', '(GMT-03:00) Greenland'),
+(26, 'Atlantic/Stanley', '(GMT-02:00) Stanley'),
+(27, 'Atlantic/Azores', '(GMT-01:00) Azores'),
+(28, 'Atlantic/Cape_Verde', '(GMT-01:00) Cape Verde Is.'),
+(29, 'Africa/Casablanca', '(GMT) Casablanca'),
+(30, 'Europe/Dublin', '(GMT) Dublin'),
+(31, 'Europe/Lisbon', '(GMT) Lisbon'),
+(32, 'Europe/London', '(GMT) London'),
+(33, 'Africa/Monrovia', '(GMT) Monrovia'),
+(34, 'Europe/Amsterdam', '(GMT+01:00) Amsterdam'),
+(35, 'Europe/Belgrade', '(GMT+01:00) Belgrade'),
+(36, 'Europe/Berlin', '(GMT+01:00) Berlin'),
+(37, 'Europe/Bratislava', '(GMT+01:00) Bratislava'),
+(38, 'Europe/Brussels', '(GMT+01:00) Brussels'),
+(39, 'Europe/Budapest', '(GMT+01:00) Budapest'),
+(40, 'Europe/Copenhagen', '(GMT+01:00) Copenhagen'),
+(41, 'Europe/Ljubljana', '(GMT+01:00) Ljubljana'),
+(42, 'Europe/Madrid', '(GMT+01:00) Madrid'),
+(43, 'Europe/Paris', '(GMT+01:00) Paris'),
+(44, 'Europe/Prague', '(GMT+01:00) Prague'),
+(45, 'Europe/Rome', '(GMT+01:00) Rome'),
+(46, 'Europe/Sarajevo', '(GMT+01:00) Sarajevo'),
+(47, 'Europe/Skopje', '(GMT+01:00) Skopje'),
+(48, 'Europe/Stockholm', '(GMT+01:00) Stockholm'),
+(49, 'Europe/Vienna', '(GMT+01:00) Vienna'),
+(50, 'Europe/Warsaw', '(GMT+01:00) Warsaw'),
+(51, 'Europe/Zagreb', '(GMT+01:00) Zagreb'),
+(52, 'Europe/Athens', '(GMT+02:00) Athens'),
+(53, 'Europe/Bucharest', '(GMT+02:00) Bucharest'),
+(54, 'Africa/Cairo', '(GMT+02:00) Cairo'),
+(55, 'Africa/Harare', '(GMT+02:00) Harare'),
+(56, 'Europe/Helsinki', '(GMT+02:00) Helsinki'),
+(57, 'Europe/Istanbul', '(GMT+02:00) Istanbul'),
+(58, 'Asia/Jerusalem', '(GMT+02:00) Jerusalem'),
+(59, 'Europe/Kiev', '(GMT+02:00) Kyiv'),
+(60, 'Europe/Minsk', '(GMT+02:00) Minsk'),
+(61, 'Europe/Riga', '(GMT+02:00) Riga'),
+(62, 'Europe/Sofia', '(GMT+02:00) Sofia'),
+(63, 'Europe/Tallinn', '(GMT+02:00) Tallinn'),
+(64, 'Europe/Vilnius', '(GMT+02:00) Vilnius'),
+(65, 'Asia/Baghdad', '(GMT+03:00) Baghdad'),
+(66, 'Asia/Kuwait', '(GMT+03:00) Kuwait'),
+(67, 'Africa/Nairobi', '(GMT+03:00) Nairobi'),
+(68, 'Asia/Riyadh', '(GMT+03:00) Riyadh'),
+(69, 'Asia/Tehran', '(GMT+03:30) Tehran'),
+(70, 'Europe/Moscow', '(GMT+04:00) Moscow'),
+(71, 'Asia/Baku', '(GMT+04:00) Baku'),
+(72, 'Europe/Volgograd', '(GMT+04:00) Volgograd'),
+(73, 'Asia/Muscat', '(GMT+04:00) Muscat'),
+(74, 'Asia/Tbilisi', '(GMT+04:00) Tbilisi'),
+(75, 'Asia/Yerevan', '(GMT+04:00) Yerevan'),
+(76, 'Asia/Kabul', '(GMT+04:30) Kabul'),
+(77, 'Asia/Karachi', '(GMT+05:00) Karachi'),
+(78, 'Asia/Tashkent', '(GMT+05:00) Tashkent'),
+(79, 'Asia/Kolkata', '(GMT+05:30) Kolkata'),
+(80, 'Asia/Kathmandu', '(GMT+05:45) Kathmandu'),
+(81, 'Asia/Yekaterinburg', '(GMT+06:00) Ekaterinburg'),
+(82, 'Asia/Almaty', '(GMT+06:00) Almaty'),
+(83, 'Asia/Dhaka', '(GMT+06:00) Dhaka'),
+(84, 'Asia/Novosibirsk', '(GMT+07:00) Novosibirsk'),
+(85, 'Asia/Bangkok', '(GMT+07:00) Bangkok'),
+(86, 'Asia/Ho_Chi_Minh', '(GMT+07.00) Ho Chi Minh'),
+(87, 'Asia/Jakarta', '(GMT+07:00) Jakarta'),
+(88, 'Asia/Krasnoyarsk', '(GMT+08:00) Krasnoyarsk'),
+(89, 'Asia/Chongqing', '(GMT+08:00) Chongqing'),
+(90, 'Asia/Hong_Kong', '(GMT+08:00) Hong Kong'),
+(91, 'Asia/Kuala_Lumpur', '(GMT+08:00) Kuala Lumpur'),
+(92, 'Australia/Perth', '(GMT+08:00) Perth'),
+(93, 'Asia/Singapore', '(GMT+08:00) Singapore'),
+(94, 'Asia/Taipei', '(GMT+08:00) Taipei'),
+(95, 'Asia/Ulaanbaatar', '(GMT+08:00) Ulaan Bataar'),
+(96, 'Asia/Urumqi', '(GMT+08:00) Urumqi'),
+(97, 'Asia/Irkutsk', '(GMT+09:00) Irkutsk'),
+(98, 'Asia/Seoul', '(GMT+09:00) Seoul'),
+(99, 'Asia/Tokyo', '(GMT+09:00) Tokyo'),
+(100, 'Australia/Adelaide', '(GMT+09:30) Adelaide'),
+(101, 'Australia/Darwin', '(GMT+09:30) Darwin'),
+(102, 'Asia/Yakutsk', '(GMT+10:00) Yakutsk'),
+(103, 'Australia/Brisbane', '(GMT+10:00) Brisbane'),
+(104, 'Australia/Canberra', '(GMT+10:00) Canberra'),
+(105, 'Pacific/Guam', '(GMT+10:00) Guam'),
+(106, 'Australia/Hobart', '(GMT+10:00) Hobart'),
+(107, 'Australia/Melbourne', '(GMT+10:00) Melbourne'),
+(108, 'Pacific/Port_Moresby', '(GMT+10:00) Port Moresby'),
+(109, 'Australia/Sydney', '(GMT+10:00) Sydney'),
+(110, 'Asia/Vladivostok', '(GMT+11:00) Vladivostok'),
+(111, 'Asia/Magadan', '(GMT+12:00) Magadan'),
+(112, 'Pacific/Auckland', '(GMT+12:00) Auckland'),
+(113, 'Pacific/Fiji', '(GMT+12:00) Fiji');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `time_format`
+--
+
+CREATE TABLE IF NOT EXISTS `time_format` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `format` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
+
+--
+-- Dumping data for table `time_format`
+--
+
+INSERT INTO `time_format` (`id`, `format`) VALUES
+(1, 'H:i:s'),
+(2, 'H.i.s');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `users`
+--
+
+CREATE TABLE IF NOT EXISTS `users` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `first_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `last_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `gender` tinyint(1) NOT NULL,
+ `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `ban` tinyint(1) NOT NULL,
+ `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
+ `active` int(11) NOT NULL,
+ `ext` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `phone_number` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `mobile` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `agent_sign` text COLLATE utf8_unicode_ci NOT NULL,
+ `account_type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `account_status` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `assign_group` int(10) unsigned DEFAULT NULL,
+ `primary_dpt` int(10) unsigned DEFAULT NULL,
+ `agent_tzone` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `daylight_save` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `limit_access` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `directory_listing` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `vacation_mode` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `company` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `role` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `internal_note` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `profile_pic` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `users_email_unique` (`email`),
+ KEY `assign_group_3` (`assign_group`),
+ KEY `primary_dpt_2` (`primary_dpt`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
+
+--
+-- Dumping data for table `users`
+--
+
+INSERT INTO `users` (`id`, `user_name`, `first_name`, `last_name`, `gender`, `email`, `ban`, `password`, `active`, `ext`, `phone_number`, `mobile`, `agent_sign`, `account_type`, `account_status`, `assign_group`, `primary_dpt`, `agent_tzone`, `daylight_save`, `limit_access`, `directory_listing`, `vacation_mode`, `company`, `role`, `internal_note`, `profile_pic`, `remember_token`, `created_at`, `updated_at`) VALUES
+(1, 'Admin', 'demo', 'admin', 0, 'demo@admin.com', 0, '$2y$10$YDp.gyUDTlZzcSyQ/APEB.Y.Y/2GJJ7ACkNhv9sCegvyhDCT7idEW', 1, '', '', '', '', '', '', 1, 1, '', '', '', '', '', '', 'admin', '', '', 'sKedQEtnNhcu73PmFv7HHJR2iAfHy6PuU1xEs7Lx2qctQjZ4xEs02tG9LkJ1', '2016-05-02 06:32:39', '2016-05-03 05:40:26'),
+(2, 'Client', '', '', 0, 'demo@client.com', 0, '$2y$10$YDp.gyUDTlZzcSyQ/APEB.Y.Y/2GJJ7ACkNhv9sCegvyhDCT7idEW', 1, '', '9999999999', '', '', '', '', NULL, NULL, '', '', '', '', '', '', 'user', '', '', NULL, '2016-05-03 00:16:13', '2016-05-03 00:16:13'),
+(3, 'Client', '', '', 0, 'demo@client2.com', 0, '$2y$10$YDp.gyUDTlZzcSyQ/APEB.Y.Y/2GJJ7ACkNhv9sCegvyhDCT7idEW', 1, '', '9999999999', '', '', '', '', NULL, NULL, '', '', '', '', '', '', 'user', '', '', NULL, '2016-05-03 01:14:10', '2016-05-03 01:14:10'),
+(4, 'Client', '', '', 0, 'demo@client3.com', 0, '$2y$10$YDp.gyUDTlZzcSyQ/APEB.Y.Y/2GJJ7ACkNhv9sCegvyhDCT7idEW', 1, '', '9999999999', '', '', '', '', NULL, NULL, '', '', '', '', '', '', 'user', '', '', NULL, '2016-05-03 01:19:19', '2016-05-03 01:19:19');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `user_assign_organization`
+--
+
+CREATE TABLE IF NOT EXISTS `user_assign_organization` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `org_id` int(10) unsigned DEFAULT NULL,
+ `user_id` int(10) unsigned DEFAULT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `org_id` (`org_id`),
+ KEY `user_id` (`user_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
+
+--
+-- Dumping data for table `user_assign_organization`
+--
+
+INSERT INTO `user_assign_organization` (`id`, `org_id`, `user_id`, `created_at`, `updated_at`) VALUES
+(1, 1, 2, '2016-05-16 04:24:47', '2016-05-16 04:24:47'),
+(2, 1, 3, '2016-05-16 04:25:13', '2016-05-16 04:25:13');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `user_notification`
+--
+
+CREATE TABLE IF NOT EXISTS `user_notification` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `notification_id` int(11) NOT NULL,
+ `user_id` int(11) NOT NULL,
+ `is_read` int(11) NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
+
+--
+-- Dumping data for table `user_notification`
+--
+
+INSERT INTO `user_notification` (`id`, `notification_id`, `user_id`, `is_read`, `created_at`, `updated_at`) VALUES
+(1, 1, 1, 0, '2016-05-03 00:16:13', '2016-05-03 00:16:13'),
+(2, 2, 1, 0, '2016-05-03 00:27:13', '2016-05-03 00:27:13'),
+(3, 3, 1, 0, '2016-05-03 01:03:59', '2016-05-03 01:03:59'),
+(4, 4, 1, 0, '2016-05-03 01:07:15', '2016-05-03 01:07:15'),
+(5, 5, 1, 0, '2016-05-03 01:14:11', '2016-05-03 01:14:11'),
+(6, 6, 1, 0, '2016-05-03 01:19:20', '2016-05-03 01:19:20'),
+(7, 7, 1, 0, '2016-05-03 01:25:15', '2016-05-03 01:25:15'),
+(8, 8, 1, 0, '2016-05-16 02:49:22', '2016-05-16 02:49:22'),
+(9, 9, 1, 0, '2016-05-16 02:52:18', '2016-05-16 02:52:18'),
+(10, 10, 1, 0, '2016-05-16 03:00:29', '2016-05-16 03:00:29');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `version_check`
+--
+
+CREATE TABLE IF NOT EXISTS `version_check` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `current_version` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `new_version` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `version_check`
+--
+
+INSERT INTO `version_check` (`id`, `current_version`, `new_version`, `created_at`, `updated_at`) VALUES
+(1, '', '', '2016-05-02 06:32:37', '2016-05-02 06:32:37');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `widgets`
+--
+
+CREATE TABLE IF NOT EXISTS `widgets` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `title` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `value` text COLLATE utf8_unicode_ci,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=21 ;
+
+--
+-- Dumping data for table `widgets`
+--
+
+INSERT INTO `widgets` (`id`, `name`, `title`, `value`, `created_at`, `updated_at`) VALUES
+(1, 'footer1', 'Products', 'Men Women Kids Decor Wedding Cloth ', '2016-05-02 06:32:37', '2016-05-04 01:38:33'),
+(2, 'footer2', 'Company', 'About Us Road Map Privacy Policy Cancellation & Refund Policy Term & Condition ', '2016-05-02 06:32:37', '2016-05-03 23:45:32'),
+(3, 'footer3', 'Contact Us', 'BTM Layout, No: #28 9th Cross First Stage BTM Layout Near Water Tank Bangalore – 560 029 Karnataka – India Telephone: +91 8861529581 Email: support@abcClothing.com ', '2016-05-02 06:32:37', '2016-05-04 01:40:32'),
+(4, 'footer4', NULL, NULL, '2016-05-02 06:32:37', '2016-05-02 06:32:37'),
+(5, 'side1', NULL, NULL, '2016-05-02 06:32:37', '2016-05-02 06:32:37'),
+(6, 'side2', NULL, NULL, '2016-05-02 06:32:37', '2016-05-02 06:32:37'),
+(7, 'linkedin', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:37', '2016-05-16 04:40:29'),
+(8, 'stumble', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:37', '2016-05-16 04:40:39'),
+(9, 'google', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:37', '2016-05-16 04:40:02'),
+(10, 'deviantart', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:37', '2016-05-16 04:39:53'),
+(11, 'flickr', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:07'),
+(12, 'skype', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:20'),
+(13, 'rss', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:25'),
+(14, 'twitter', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:46'),
+(15, 'facebook', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:11'),
+(16, 'youtube', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:41:02'),
+(17, 'vimeo', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:53'),
+(18, 'pinterest', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:33'),
+(19, 'dribbble', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:39:57'),
+(20, 'instagram', NULL, 'http://www.faveohelpdesk.com', '2016-05-02 06:32:38', '2016-05-16 04:40:15');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `workflow_action`
+--
+
+CREATE TABLE IF NOT EXISTS `workflow_action` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `workflow_id` int(10) unsigned NOT NULL,
+ `condition` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `action` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `workflow_action_1` (`workflow_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `workflow_name`
+--
+
+CREATE TABLE IF NOT EXISTS `workflow_name` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `status` int(11) NOT NULL,
+ `order` int(11) NOT NULL,
+ `target` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `internal_note` text COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `workflow_rules`
+--
+
+CREATE TABLE IF NOT EXISTS `workflow_rules` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `workflow_id` int(10) unsigned NOT NULL,
+ `matching_criteria` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `matching_scenario` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `matching_relation` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `matching_value` text COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `workflow_rules_1` (`workflow_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
+
+--
+-- Constraints for dumped tables
+--
+
+--
+-- Constraints for table `canned_response`
+--
+ALTER TABLE `canned_response`
+ ADD CONSTRAINT `canned_response_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `department`
+--
+ALTER TABLE `department`
+ ADD CONSTRAINT `department_ibfk_2` FOREIGN KEY (`manager`) REFERENCES `users` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `department_ibfk_1` FOREIGN KEY (`sla`) REFERENCES `sla_plan` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `emails`
+--
+ALTER TABLE `emails`
+ ADD CONSTRAINT `emails_ibfk_3` FOREIGN KEY (`help_topic`) REFERENCES `help_topic` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `emails_ibfk_1` FOREIGN KEY (`department`) REFERENCES `department` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `emails_ibfk_2` FOREIGN KEY (`priority`) REFERENCES `ticket_priority` (`priority_id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `group_assign_department`
+--
+ALTER TABLE `group_assign_department`
+ ADD CONSTRAINT `group_assign_department_ibfk_2` FOREIGN KEY (`department_id`) REFERENCES `department` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `group_assign_department_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `help_topic`
+--
+ALTER TABLE `help_topic`
+ ADD CONSTRAINT `help_topic_ibfk_6` FOREIGN KEY (`auto_assign`) REFERENCES `users` (`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `help_topic_ibfk_1` FOREIGN KEY (`custom_form`) REFERENCES `custom_forms` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `help_topic_ibfk_2` FOREIGN KEY (`department`) REFERENCES `department` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `help_topic_ibfk_3` FOREIGN KEY (`ticket_status`) REFERENCES `ticket_status` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `help_topic_ibfk_4` FOREIGN KEY (`priority`) REFERENCES `ticket_priority` (`priority_id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `help_topic_ibfk_5` FOREIGN KEY (`sla_plan`) REFERENCES `sla_plan` (`id`);
+
+--
+-- Constraints for table `kb_article_relationship`
+--
+ALTER TABLE `kb_article_relationship`
+ ADD CONSTRAINT `article_relationship_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `kb_category` (`id`),
+ ADD CONSTRAINT `article_relationship_article_id_foreign` FOREIGN KEY (`article_id`) REFERENCES `kb_article` (`id`);
+
+--
+-- Constraints for table `kb_comment`
+--
+ALTER TABLE `kb_comment`
+ ADD CONSTRAINT `comment_article_id_foreign` FOREIGN KEY (`article_id`) REFERENCES `kb_article` (`id`);
+
+--
+-- Constraints for table `organization`
+--
+ALTER TABLE `organization`
+ ADD CONSTRAINT `organization_ibfk_1` FOREIGN KEY (`head`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `settings_system`
+--
+ALTER TABLE `settings_system`
+ ADD CONSTRAINT `settings_system_ibfk_4` FOREIGN KEY (`date_time_format`) REFERENCES `date_time_format` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `settings_system_ibfk_1` FOREIGN KEY (`time_zone`) REFERENCES `timezone` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `settings_system_ibfk_2` FOREIGN KEY (`time_farmat`) REFERENCES `time_format` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `settings_system_ibfk_3` FOREIGN KEY (`date_format`) REFERENCES `date_format` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `teams`
+--
+ALTER TABLE `teams`
+ ADD CONSTRAINT `teams_ibfk_1` FOREIGN KEY (`team_lead`) REFERENCES `users` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `team_assign_agent`
+--
+ALTER TABLE `team_assign_agent`
+ ADD CONSTRAINT `team_assign_agent_ibfk_2` FOREIGN KEY (`agent_id`) REFERENCES `users` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `team_assign_agent_ibfk_1` FOREIGN KEY (`team_id`) REFERENCES `teams` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `tickets`
+--
+ALTER TABLE `tickets`
+ ADD CONSTRAINT `tickets_ibfk_9` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_2` FOREIGN KEY (`dept_id`) REFERENCES `department` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_3` FOREIGN KEY (`team_id`) REFERENCES `teams` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_4` FOREIGN KEY (`priority_id`) REFERENCES `ticket_priority` (`priority_id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_5` FOREIGN KEY (`sla`) REFERENCES `sla_plan` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_6` FOREIGN KEY (`help_topic_id`) REFERENCES `help_topic` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_7` FOREIGN KEY (`status`) REFERENCES `ticket_status` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `tickets_ibfk_8` FOREIGN KEY (`source`) REFERENCES `ticket_source` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `ticket_attachment`
+--
+ALTER TABLE `ticket_attachment`
+ ADD CONSTRAINT `ticket_attachment_ibfk_1` FOREIGN KEY (`thread_id`) REFERENCES `ticket_thread` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `ticket_collaborator`
+--
+ALTER TABLE `ticket_collaborator`
+ ADD CONSTRAINT `ticket_collaborator_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `ticket_collaborator_ibfk_1` FOREIGN KEY (`ticket_id`) REFERENCES `tickets` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `ticket_form_data`
+--
+ALTER TABLE `ticket_form_data`
+ ADD CONSTRAINT `ticket_form_data_ibfk_1` FOREIGN KEY (`ticket_id`) REFERENCES `tickets` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `ticket_thread`
+--
+ALTER TABLE `ticket_thread`
+ ADD CONSTRAINT `ticket_thread_ibfk_3` FOREIGN KEY (`source`) REFERENCES `ticket_source` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `ticket_thread_ibfk_1` FOREIGN KEY (`ticket_id`) REFERENCES `tickets` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `ticket_thread_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `users`
+--
+ALTER TABLE `users`
+ ADD CONSTRAINT `users_ibfk_2` FOREIGN KEY (`primary_dpt`) REFERENCES `department` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `users_ibfk_1` FOREIGN KEY (`assign_group`) REFERENCES `groups` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `user_assign_organization`
+--
+ALTER TABLE `user_assign_organization`
+ ADD CONSTRAINT `user_assign_organization_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON UPDATE NO ACTION,
+ ADD CONSTRAINT `user_assign_organization_ibfk_1` FOREIGN KEY (`org_id`) REFERENCES `organization` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `workflow_action`
+--
+ALTER TABLE `workflow_action`
+ ADD CONSTRAINT `workflow_action_1` FOREIGN KEY (`workflow_id`) REFERENCES `workflow_name` (`id`) ON UPDATE NO ACTION;
+
+--
+-- Constraints for table `workflow_rules`
+--
+ALTER TABLE `workflow_rules`
+ ADD CONSTRAINT `workflow_rules_1` FOREIGN KEY (`workflow_id`) REFERENCES `workflow_name` (`id`) ON UPDATE NO ACTION;
+
+/*!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 */;
diff --git a/README.md b/README.md
index 04c36ed2f..d5e75f509 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-About Faveo
-
+About Faveo
+
Headquartered in Bangalore, Faveo HELPDESK provides Businesses with an automated Helpdesk system to manage customer support.
The word Faveo comes from Latin which means to be favourable. Which truly highlights vision and the scope as well as the functionality of the product that Faveo is. It is specifically designed to cater the needs of startups and SME’s empowering them with state of art, ticket based support system. In today’s competitive startup scenario customer retention is one of the major challenges. Handling client query diligently is all the difference between retaining or losing a long lasting relationship. The company is driven with passion of providing tools for managing consumer queries for strategic insights and helping companies take those decisive decisions.
@@ -28,8 +28,6 @@ Faveo is designed & developed by Ladybird Web Host Offers hosting with minimum requirement to host Faveo web application. Faveo has been tested on Ladybird Web Host servers & works very well in their server environment. All web hosting packages offered by Ladybird Web Host come with 30 day money back gurantee.
diff --git a/app/Handlers/Commands/.gitkeep b/__construct()
similarity index 100%
rename from app/Handlers/Commands/.gitkeep
rename to __construct()
diff --git a/app/BaseModel.php b/app/BaseModel.php
new file mode 100644
index 000000000..5321d9e92
--- /dev/null
+++ b/app/BaseModel.php
@@ -0,0 +1,33 @@
+
+ */
+class BaseModel extends Model
+{
+ public function setAttribute($property, $value)
+ {
+ require_once base_path('vendor'.DIRECTORY_SEPARATOR.'htmlpurifier'.DIRECTORY_SEPARATOR.'library'.DIRECTORY_SEPARATOR.'HTMLPurifier.auto.php');
+ $path = base_path('vendor'.DIRECTORY_SEPARATOR.'htmlpurifier'.DIRECTORY_SEPARATOR.'library'.DIRECTORY_SEPARATOR.'HTMLPurifier'.DIRECTORY_SEPARATOR.'DefinitionCache'.DIRECTORY_SEPARATOR.'Serializer');
+ if (!File::exists($path)) {
+ File::makeDirectory($path, $mode = 0777, true, true);
+ }
+ $config = \HTMLPurifier_Config::createDefault();
+ //dd($config);
+ $purifier = new \HTMLPurifier($config);
+ if ($value != strip_tags($value)) {
+ $value = $purifier->purify($value);
+ }
+ parent::setAttribute($property, $value);
+ }
+}
diff --git a/app/Commands/Command.php b/app/Commands/Command.php
deleted file mode 100644
index c9b0a33a6..000000000
--- a/app/Commands/Command.php
+++ /dev/null
@@ -1,8 +0,0 @@
-hourly();
$schedule->call(function () {
-
$user = new User();
$user->save();
-
- })->everyFiveMinutes();
+ })->everyFiveMinutes();
}
}
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
index de7122f6f..0496485b6 100644
--- a/app/Exceptions/Handler.php
+++ b/app/Exceptions/Handler.php
@@ -3,13 +3,19 @@
namespace App\Exceptions;
// controller
-use App\Http\Controllers\Common\PhpMailController;
use Exception;
-use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
+//use Illuminate\Validation\ValidationException;
+use Illuminate\Foundation\Validation\ValidationException;
+use Illuminate\Auth\Access\AuthorizationException;
+use Illuminate\Database\Eloquent\ModelNotFoundException;
+// use Symfony\Component\HttpKernel\Exception\HttpException;
+// use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
+use Bugsnag\BugsnagLaravel\BugsnagExceptionHandler as ExceptionHandler;
+use Bugsnag;
+use Symfony\Component\HttpFoundation\RedirectResponse;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-class Handler extends ExceptionHandler
-{
- public $phpmailer;
+class Handler extends ExceptionHandler {
/**
* A list of the exception types that should not be reported.
@@ -17,9 +23,27 @@ class Handler extends ExceptionHandler
* @var array
*/
protected $dontReport = [
- 'Symfony\Component\HttpKernel\Exception\HttpException',
+// 'Symfony\Component\HttpKernel\Exception\HttpException',
+// 'Illuminate\Http\Exception\HttpResponseException',
+ ValidationException::class,
+ AuthorizationException::class,
+ HttpResponseException ::class,
+ ModelNotFoundException::class,
+ \Symfony\Component\HttpKernel\Exception\HttpException::class,
];
+ /**
+ * Create a new controller instance.
+ * constructor to check
+ * 1. php mailer.
+ *
+ * @return void
+ */
+ // public function __construct(PhpMailController $PhpMailController)
+ // {
+ // $this->PhpMailController = $PhpMailController;
+ // }
+
/**
* Report or log an exception.
*
@@ -29,8 +53,14 @@ class Handler extends ExceptionHandler
*
* @return void
*/
- public function report(Exception $e)
- {
+ public function report(Exception $e) {
+ $debug = \Config::get('app.bugsnag_reporting');
+ $debug = ($debug) ? 'true' : 'false';
+ if ($debug == 'false') {
+ Bugsnag::setBeforeNotifyFunction(function ($error) {
+ return false;
+ });
+ }
return parent::report($e);
}
@@ -42,51 +72,42 @@ class Handler extends ExceptionHandler
*
* @return \Illuminate\Http\Response
*/
- public function render($request, Exception $e)
- {
- //dd($e);
- $phpmail = new PhpMailController();
- $this->PhpMailController = $phpmail;
- if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
- return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
- } elseif ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
- return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
- }
- // This is to check if the debug is true or false
- if (config('app.debug') == false) {
- // checking if the error is actually an error page or if its an system error page
- if ($this->isHttpException($e) && $e->getStatusCode() == 404) {
- return response()->view('errors.404', []);
- } else {
- // checking if the application is installed
- if (\Config::get('database.install') == 1) {
- // checking if the error log send to Ladybirdweb is enabled or not
- if (\Config::get('app.ErrorLog') == '1') {
- try {
- $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => 'faveo logger', 'email' => 'faveoerrorlogger@gmail.com'], $message = ['subject' => 'Faveo downloaded from github has occured error', 'scenario' => 'error-report'], $template_variables = ['system_error' => " Message: ".$e->getMessage().' Code: '.$e->getCode().' File: '.$e->getFile().' Line: '.$e->getLine().' ']);
- } catch (Exception $exx) {
- }
- }
- }
-
- return response()->view('errors.500', []);
- }
- }
- // returns non oops error message
- return parent::render($request, $e);
- // checking if the error is related to http error i.e. page not found
- if ($this->isHttpException($e)) {
- // returns error for page not found
- return $this->renderHttpException($e);
- }
- // checking if the config app sebug is enabled or not
- if (config('app.debug')) {
- // returns oops error page i.e. colour full error page
- return $this->renderExceptionWithWhoops($e);
- }
-
- return parent::render($request, $e);
- }
+// public function render($request, Exception $e) {
+// if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
+// return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
+// } elseif ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
+// return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
+// }
+ // This is to check if the debug is true or false
+// if (config('app.debug') == false) {
+// // checking if the error is actually an error page or if its an system error page
+// if ($this->isHttpException($e) && $e->getStatusCode() == 404) {
+// return response()->view('errors.404', []);
+// } else {
+// // checking if the application is installed
+// if (\Config::get('database.install') == 1) {
+// // checking if the error log send to Ladybirdweb is enabled or not
+// if (\Config::get('app.ErrorLog') == '1') {
+//
+// }
+// }
+// return response()->view('errors.500', []);
+// }
+// }
+ // returns non oops error message
+// return parent::render($request, $e);
+ // checking if the error is related to http error i.e. page not found
+// if ($this->isHttpException($e)) {
+// // returns error for page not found
+// return $this->renderHttpException($e);
+// }
+// // checking if the config app sebug is enabled or not
+// if (config('app.debug')) {
+// // returns oops error page i.e. colour full error page
+// return $this->renderExceptionWithWhoops($e);
+// }
+ //return parent::render($request, $e);
+// }
/**
* function to generate oops error page.
@@ -95,14 +116,78 @@ class Handler extends ExceptionHandler
*
* @return \Illuminate\Http\Response
*/
- protected function renderExceptionWithWhoops(Exception $e)
- {
- // new instance of whoops class to display customized error page
- $whoops = new \Whoops\Run();
- $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
+// protected function renderExceptionWithWhoops(Exception $e) {
+// // new instance of whoops class to display customized error page
+// $whoops = new \Whoops\Run();
+// $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
+//
+// return new \Illuminate\Http\Response(
+// $whoops->handleException($e), $e->getStatusCode(), $e->getHeaders()
+// );
+// }
- return new \Illuminate\Http\Response(
- $whoops->handleException($e), $e->getStatusCode(), $e->getHeaders()
- );
+ /**
+ * Render an exception into an HTTP response.
+ * @param type $request
+ * @param Exception $e
+ * @return type mixed
+ */
+ public function render($request, Exception $e) {
+
+ switch ($e) {
+ case $e instanceof \Illuminate\Http\Exception\HttpResponseException :
+ return parent::render($request, $e);
+ case $e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException :
+ return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
+ case $e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException :
+ return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
+ default :
+ return $this->common($request, $e);
+ }
}
+
+ /**
+ * Function to render 500 error page
+ * @param type $request
+ * @param type $e
+ * @return type mixed
+ */
+ public function render500($request, $e) {
+ if (config('app.debug') == true) {
+ return parent::render($request, $e);
+ }
+ return redirect()->route('error500', []);
+ }
+
+ /**
+ * Function to render 404 error page
+ * @param type $request
+ * @param type $e
+ * @return type mixed
+ */
+ public function render404($request, $e) {
+ if (config('app.debug') == true) {
+ return parent::render($request, $e);
+ }
+ return redirect()->route('error404', []);
+ }
+
+ /**
+ * Common finction to render both types of codes
+ * @param type $request
+ * @param type $e
+ * @return type mixed
+ */
+ public function common($request, $e) {
+ switch ($e) {
+ case $e instanceof HttpException :
+ return $this->render404($request, $e);
+ case $e instanceof NotFoundHttpException :
+ return $this->render404($request, $e);
+ default :
+ return $this->render500($request, $e);
+ }
+ return parent::render($request, $e);
+ }
+
}
diff --git a/app/Http/Controllers/Admin/helpdesk/AgentController.php b/app/Http/Controllers/Admin/helpdesk/AgentController.php
index 202e83ecd..71de27ccd 100644
--- a/app/Http/Controllers/Admin/helpdesk/AgentController.php
+++ b/app/Http/Controllers/Admin/helpdesk/AgentController.php
@@ -13,12 +13,15 @@ use App\Model\helpdesk\Agent\Assign_team_agent;
use App\Model\helpdesk\Agent\Department;
use App\Model\helpdesk\Agent\Groups;
use App\Model\helpdesk\Agent\Teams;
+use App\Model\helpdesk\Utility\CountryCode;
use App\Model\helpdesk\Utility\Timezones;
use App\User;
// classes
use DB;
use Exception;
+use GeoIP;
use Hash;
+use Lang;
/**
* AgentController
@@ -72,7 +75,7 @@ class AgentController extends Controller
*
* @return type view
*/
- public function create(Timezones $timezone, Groups $group, Department $department, Teams $team_all)
+ public function create(Timezones $timezone, Groups $group, Department $department, Teams $team_all, CountryCode $code)
{
try {
// gte all the teams
@@ -84,9 +87,11 @@ class AgentController extends Controller
// get all department
$departments = $department->get();
// list all the teams in a single variable
- $teams = $team->lists('id', 'name');
+ $teams = $team->lists('id', 'name')->toArray();
+ $location = GeoIP::getLocation('');
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
// returns to the page with all the variables and their datas
- return view('themes.default1.admin.helpdesk.agent.agents.create', compact('assign', 'teams', 'agents', 'timezones', 'groups', 'departments', 'team'));
+ return view('themes.default1.admin.helpdesk.agent.agents.create', compact('assign', 'teams', 'agents', 'timezones', 'groups', 'departments', 'team'))->with('phonecode', $phonecode->phonecode);
} catch (Exception $e) {
// returns if try fails with exception meaagse
return redirect()->back()->with('fails', $e->getMessage());
@@ -104,13 +109,24 @@ class AgentController extends Controller
*/
public function store(User $user, AgentRequest $request)
{
+ if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) {
+ return redirect()->back()->with(['fails2' => Lang::get('lang.country-code-required-error'), 'country_code' => 1])->withInput();
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get();
+ if (!count($code)) {
+ return redirect()->back()->with(['fails2' => Lang::get('lang.incorrect-country-code-error'), 'country_code' => 1])->withInput();
+ }
+ }
// fixing the user role to agent
- $user->fill($request->input())->save();
+ $user->fill($request->except(['group', 'primary_department', 'agent_time_zone']))->save();
+ $user->assign_group = $request->group;
+ $user->primary_dpt = $request->primary_department;
+ $user->agent_tzone = $request->agent_time_zone;
// generate password and has immediately to store
$password = $this->generateRandomString();
$user->password = Hash::make($password);
// fetching all the team details checked for this user
- $requests = $request->input('team_id');
+ $requests = $request->input('team');
// get user id of the inserted user detail
$id = $user->id;
// insert team
@@ -128,13 +144,13 @@ class AgentController extends Controller
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $name, 'email' => $email], $message = ['subject' => 'Password', 'scenario' => 'registration-notification'], $template_variables = ['user' => $name, 'email_address' => $email, 'user_password' => $password]);
} catch (Exception $e) {
// returns if try fails
- return redirect('agents')->with('fails', 'Some error occurred while sending mail to the agent. Please check email settings and try again');
+ return redirect('agents')->with('warning', Lang::get('lang.agent_send_mail_error_on_agent_creation'));
}
// returns for the success case
- return redirect('agents')->with('success', 'Agent Created sucessfully');
+ return redirect('agents')->with('success', Lang::get('lang.agent_creation_success'));
} else {
// returns if fails
- return redirect('agents')->with('fails', 'Agent can not Create');
+ return redirect('agents')->with('fails', Lang::get('lang.failed_to_create_agent'));
}
}
@@ -151,9 +167,11 @@ class AgentController extends Controller
*
* @return type Response
*/
- public function edit($id, User $user, Assign_team_agent $team_assign_agent, Timezones $timezone, Groups $group, Department $department, Teams $team)
+ public function edit($id, User $user, Assign_team_agent $team_assign_agent, Timezones $timezone, Groups $group, Department $department, Teams $team, CountryCode $code)
{
try {
+ $location = GeoIP::getLocation('');
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
$user = $user->whereId($id)->first();
$team = $team->get();
$teams1 = $team->lists('name', 'id');
@@ -161,12 +179,12 @@ class AgentController extends Controller
$groups = $group->get();
$departments = $department->get();
$table = $team_assign_agent->where('agent_id', $id)->first();
- $teams = $team->lists('id', 'name');
- $assign = $team_assign_agent->where('agent_id', $id)->lists('team_id');
+ $teams = $team->lists('id', 'name')->toArray();
+ $assign = $team_assign_agent->where('agent_id', $id)->lists('team_id')->toArray();
- return view('themes.default1.admin.helpdesk.agent.agents.edit', compact('teams', 'assign', 'table', 'teams1', 'selectedTeams', 'user', 'timezones', 'groups', 'departments', 'team', 'exp', 'counted'));
+ return view('themes.default1.admin.helpdesk.agent.agents.edit', compact('teams', 'assign', 'table', 'teams1', 'selectedTeams', 'user', 'timezones', 'groups', 'departments', 'team', 'exp', 'counted'))->with('phonecode', $phonecode->phonecode);
} catch (Exception $e) {
- return redirect('agents')->with('fail', 'No such file');
+ return redirect('agents')->with('fail', Lang::get('lang.failed_to_edit_agent'));
}
}
@@ -182,7 +200,14 @@ class AgentController extends Controller
*/
public function update($id, User $user, AgentUpdate $request, Assign_team_agent $team_assign_agent)
{
-
+ if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) {
+ return redirect()->back()->with(['fails2' => Lang::get('lang.country-code-required-error'), 'country_code' => 1])->withInput();
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get();
+ if (!count($code)) {
+ return redirect()->back()->with(['fails2' => Lang::get('lang.incorrect-country-code-error'), 'country_code' => 1])->withInput();
+ }
+ }
// storing all the details
$user = $user->whereId($id)->first();
$daylight_save = $request->input('daylight_save');
@@ -192,18 +217,25 @@ class AgentController extends Controller
//==============================================
$table = $team_assign_agent->where('agent_id', $id);
$table->delete();
- $requests = $request->input('team_id');
+ $requests = $request->input('team');
// inserting team details
foreach ($requests as $req) {
DB::insert('insert into team_assign_agent (team_id, agent_id) values (?,?)', [$req, $id]);
}
//Todo For success and failure conditions
try {
+ if ($request->input('country_code') != '' or $request->input('country_code') != null) {
+ $user->country_code = $request->input('country_code');
+ }
$user->fill($request->except('daylight_save', 'limit_access', 'directory_listing', 'vocation_mode', 'assign_team'))->save();
+ $user->assign_group = $request->group;
+ $user->primary_dpt = $request->primary_department;
+ $user->agent_tzone = $request->agent_time_zone;
+ $user->save();
- return redirect('agents')->with('success', 'Agent Updated sucessfully');
+ return redirect('agents')->with('success', Lang::get('lang.agent_updated_sucessfully'));
} catch (Exception $e) {
- return redirect('agents')->with('fails', 'Agent did not update'.''.$e->errorInfo[2].' ');
+ return redirect('agents')->with('fails', Lang::get('lang.unable_to_update_agent').''.$e->errorInfo[2].' ');
}
}
@@ -226,12 +258,12 @@ class AgentController extends Controller
$team_assign_agent->delete();
$user = $user->whereId($id)->first();
try {
- $error = 'This staff is related to some tickets';
+ $error = Lang::get('lang.this_staff_is_related_to_some_tickets');
$user->id;
$user->delete();
throw new \Exception($error);
- return redirect('agents')->with('success', 'Agent Deleted sucessfully');
+ return redirect('agents')->with('success', Lang::get('lang.agent_deleted_sucessfully'));
} catch (\Exception $e) {
return redirect('agents')->with('fails', $error);
}
diff --git a/app/Http/Controllers/Admin/helpdesk/BanlistController.php b/app/Http/Controllers/Admin/helpdesk/BanlistController.php
index e55849dfc..890a89775 100644
--- a/app/Http/Controllers/Admin/helpdesk/BanlistController.php
+++ b/app/Http/Controllers/Admin/helpdesk/BanlistController.php
@@ -12,6 +12,7 @@ use App\Model\helpdesk\Email\Banlist;
use App\User;
//classes
use Exception;
+use Lang;
/**
* BanlistController
@@ -50,7 +51,7 @@ class BanlistController extends Controller
return view('themes.default1.admin.helpdesk.emails.banlist.index', compact('bans'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -64,7 +65,7 @@ class BanlistController extends Controller
try {
return view('themes.default1.admin.helpdesk.emails.banlist.create');
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -88,7 +89,7 @@ class BanlistController extends Controller
$use->internal_note = $request->input('internal_note');
$use->save();
// $user->create($request->input())->save();
- return redirect('banlist')->with('success', 'Email Banned sucessfully');
+ return redirect('banlist')->with('success', Lang::get('lang.email_banned_sucessfully'));
} else {
$user = new User();
$user->email = $adban;
@@ -96,10 +97,10 @@ class BanlistController extends Controller
$user->internal_note = $request->input('internal_note');
$user->save();
- return redirect('banlist')->with('success', 'Email Banned sucessfully');
+ return redirect('banlist')->with('success', Lang::get('lang.email_banned_sucessfully'));
}
} catch (Exception $e) {
- return redirect('banlist')->with('fails', 'Email can not Ban');
+ return redirect('banlist')->with('fails', Lang::get('lang.email_can_not_ban'));
}
}
@@ -118,7 +119,7 @@ class BanlistController extends Controller
return view('themes.default1.admin.helpdesk.emails.banlist.edit', compact('bans'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -138,12 +139,33 @@ class BanlistController extends Controller
$bans->internal_note = $request->input('internal_note');
$bans->ban = $request->input('ban');
if ($bans->save()) {
- return redirect('banlist')->with('success', 'Banned Email Updated sucessfully');
+ return redirect('banlist')->with('success', Lang::get('lang.banned_email_updated_sucessfully'));
} else {
- return redirect('banlist')->with('fails', 'Banned Email not Updated');
+ return redirect('banlist')->with('fails', Lang::get('lang.banned_email_not_updated'));
}
} catch (Exception $e) {
- return redirect('banlist')->with('fails', 'Banned Email not Updated');
+ return redirect('banlist')->with('fails', Lang::get('lang.banned_email_not_updated'));
+ }
+ }
+
+ /**
+ * delete the banned users.
+ *
+ * @param type $id
+ * @param \App\User $ban
+ *
+ * @return type view
+ */
+ public function delete($id, User $ban)
+ {
+ try {
+ $ban_user = $ban->where('id', '=', $id)->first();
+ $ban_user->ban = 0;
+ $ban_user->save();
+
+ return redirect('banlist')->with('success', Lang::get('lang.banned_removed_sucessfully'));
+ } catch (Exception $ex) {
+ return redirect('banlist')->with('fails', $ex->getMessage());
}
}
}
diff --git a/app/Http/Controllers/Admin/helpdesk/CloseWrokflowController.php b/app/Http/Controllers/Admin/helpdesk/CloseWrokflowController.php
new file mode 100644
index 000000000..6ce31f246
--- /dev/null
+++ b/app/Http/Controllers/Admin/helpdesk/CloseWrokflowController.php
@@ -0,0 +1,67 @@
+security = $security;
+ }
+
+ /**
+ * get the workflow settings page.
+ *
+ * @param \App\Model\helpdesk\Workflow\WorkflowClose $securitys
+ *
+ * @return type view
+ */
+ public function index(WorkflowClose $securitys)
+ {
+ try {
+ $security = $securitys->whereId('1')->first();
+
+ return view('themes.default1.admin.helpdesk.settings.close-workflow.index', compact('security'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * updating the workflow settings for closing ticket.
+ *
+ * @param type $id
+ * @param \App\Http\Requests\helpdesk\WorkflowCloseRequest $request
+ *
+ * @return type redirect
+ */
+ public function update($id, WorkflowCloseRequest $request)
+ {
+ try {
+ $security = new WorkflowClose();
+ $securitys = $security->whereId($id)->first();
+ $securitys->days = $request->input('days');
+ $securitys->condition = $request->input('condition');
+ $securitys->send_email = $request->input('send_email');
+ $securitys->status = $request->input('status');
+ $securitys->save();
+
+ return \Redirect::back()->with('success', Lang::get('lang.successfully_saved_your_settings'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+}
diff --git a/app/Http/Controllers/Admin/helpdesk/DepartmentController.php b/app/Http/Controllers/Admin/helpdesk/DepartmentController.php
index 749eb942f..95dadf0a4 100644
--- a/app/Http/Controllers/Admin/helpdesk/DepartmentController.php
+++ b/app/Http/Controllers/Admin/helpdesk/DepartmentController.php
@@ -22,6 +22,7 @@ use App\User;
// classes
use DB;
use Exception;
+use Lang;
/**
* DepartmentController.
@@ -76,7 +77,7 @@ class DepartmentController extends Controller
{
try {
$slas = $sla->get();
- $user = $user->where('role', 'agent')->get();
+ $user = $user->where('role', 'agent2')->get();
$emails = $email->get();
$templates = $template->get();
$department = $department->get();
@@ -84,7 +85,7 @@ class DepartmentController extends Controller
return view('themes.default1.admin.helpdesk.agent.departments.create', compact('department', 'templates', 'slas', 'user', 'emails', 'groups'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -99,7 +100,12 @@ class DepartmentController extends Controller
public function store(Department $department, DepartmentRequest $request)
{
try {
- $department->fill($request->except('group_id', 'manager'))->save();
+ $department->fill($request->except('group_id', 'manager', 'sla'))->save();
+ if ($request->sla) {
+ $department->sla = $request->input('sla');
+ } else {
+ $department->sla = null;
+ }
$requests = $request->input('group_id');
$id = $department->id;
if ($request->manager) {
@@ -107,18 +113,15 @@ class DepartmentController extends Controller
} else {
$department->manager = null;
}
- // foreach ($requests as $req) {
- // DB::insert('insert into group_assign_department(group_id, department_id) values (?,?)', [$req, $id]);
- // }
/* Succes And Failure condition */
/* Check Whether the function Success or Fail */
if ($department->save() == true) {
- return redirect('departments')->with('success', 'Department Created sucessfully');
+ return redirect('departments')->with('success', Lang::get('lang.department_created_sucessfully'));
} else {
- return redirect('departments')->with('fails', 'Department can not Create');
+ return redirect('departments')->with('fails', Lang::get('lang.failed_to_create_department'));
}
} catch (Exception $e) {
- return redirect('departments')->with('fails', 'Department can not Create');
+ return redirect('departments')->with('fails', Lang::get('lang.failed_to_create_department'));
}
}
@@ -140,17 +143,21 @@ class DepartmentController extends Controller
public function edit($id, User $user, Group_assign_department $group_assign_department, Template $template, Teams $team, Department $department, Sla_plan $sla, Emails $email, Groups $group)
{
try {
+ $sys_department = \DB::table('settings_system')
+ ->select('department')
+ ->where('id', '=', 1)
+ ->first();
$slas = $sla->get();
- $user = $user->where('role', 'agent')->get();
+ $user = $user->where('primary_dpt', $id)->get();
$emails = $email->get();
$templates = $template->get();
$departments = $department->whereId($id)->first();
$groups = $group->lists('id', 'name');
$assign = $group_assign_department->where('department_id', $id)->lists('group_id');
- return view('themes.default1.admin.helpdesk.agent.departments.edit', compact('assign', 'team', 'templates', 'departments', 'slas', 'user', 'emails', 'groups'));
+ return view('themes.default1.admin.helpdesk.agent.departments.edit', compact('assign', 'team', 'templates', 'departments', 'slas', 'user', 'emails', 'groups', 'sys_department'));
} catch (Exception $e) {
- return view('404');
+ return redirect('departments')->with('fails', $e->getMessage());
}
}
@@ -168,6 +175,7 @@ class DepartmentController extends Controller
{
// dd($id);
try {
+
$table = $group_assign_department->where('department_id', $id);
$table->delete();
$requests = $request->input('group_id');
@@ -182,14 +190,25 @@ class DepartmentController extends Controller
$departments->manager = null;
}
$departments->save();
-
- if ($departments->fill($request->except('group_access', 'manager'))->save()) {
- return redirect('departments')->with('success', 'Department Updated sucessfully');
+ if ($request->sla) {
+ $departments->sla = $request->input('sla');
+ $departments->save();
} else {
- return redirect('departments')->with('fails', 'Department not Updated');
+ $departments->sla = null;
+ $departments->save();
+ }
+ if ($request->input('sys_department') == 'on') {
+ DB::table('settings_system')
+ ->where('id', 1)
+ ->update(['department' => $id]);
+ }
+ if ($departments->fill($request->except('group_access', 'manager', 'sla'))->save()) {
+ return redirect('departments')->with('success', Lang::get('lang.department_updated_sucessfully'));
+ } else {
+ return redirect('departments')->with('fails', Lang::get('lang.department_not_updated'));
}
} catch (Exception $e) {
- return redirect('departments')->with('fails', 'Department not Updated');
+ return redirect('departments')->with('fails', Lang::get('lang.department_not_updated'));
}
}
@@ -207,7 +226,7 @@ class DepartmentController extends Controller
// try {
$system = $system->where('id', '=', '1')->first();
if ($system->department == $id) {
- return redirect('departments')->with('fails', 'You cannot delete default department');
+ return redirect('departments')->with('fails', Lang::get('lang.you_cannot_delete_default_department'));
} else {
$tickets = DB::table('tickets')->where('dept_id', '=', $id)->update(['dept_id' => $system->department]);
if ($tickets > 0) {
@@ -216,7 +235,7 @@ class DepartmentController extends Controller
} else {
$text_tickets = 'Ticket';
}
- $ticket = ''.$tickets.' '.$text_tickets.' have been moved to default department ';
+ $ticket = ''.$tickets.' '.$text_tickets.Lang::get('lang.have_been_moved_to_default_department').' ';
} else {
$ticket = '';
}
@@ -227,7 +246,7 @@ class DepartmentController extends Controller
} else {
$text_user = 'User';
}
- $user = ''.$users.' '.$text_user.' have been moved to default department ';
+ $user = ''.$users.' '.$text_user.Lang::get('lang.have_been_moved_to_default_department').' ';
} else {
$user = '';
}
@@ -238,13 +257,13 @@ class DepartmentController extends Controller
} else {
$text_emails = 'Email';
}
- $email = ''.$emails.' System '.$text_emails.' have been moved to default department ';
+ $email = ''.$emails.' System '.$text_emails.Lang::get('lang.have_been_moved_to_default_department').' ';
} else {
$email = '';
}
$helptopic = DB::table('help_topic')->where('department', '=', $id)->update(['department' => null], ['status' => '1']);
if ($helptopic > 0) {
- $helptopic = 'The associated helptopic has been deactivated ';
+ $helptopic = ''.Lang::get('lang.the_associated_helptopic_has_been_deactivated').' ';
} else {
$helptopic = '';
}
@@ -255,9 +274,9 @@ class DepartmentController extends Controller
$departments = $department->whereId($id)->first();
/* Check the function is Success or Fail */
if ($departments->delete() == true) {
- return redirect('departments')->with('success', 'Department Deleted sucessfully'.$message);
+ return redirect('departments')->with('success', Lang::get('lang.department_deleted_sucessfully').$message);
} else {
- return redirect('departments')->with('fails', 'Department can not Delete');
+ return redirect('departments')->with('fails', Lang::get('lang.department_can_not_delete'));
}
}
}
diff --git a/app/Http/Controllers/Admin/helpdesk/EmailsController.php b/app/Http/Controllers/Admin/helpdesk/EmailsController.php
index 19a2202ad..e4b767aef 100644
--- a/app/Http/Controllers/Admin/helpdesk/EmailsController.php
+++ b/app/Http/Controllers/Admin/helpdesk/EmailsController.php
@@ -18,6 +18,7 @@ use Crypt;
// classes
use Exception;
use Illuminate\Http\Request;
+use Lang;
/**
* ======================================
@@ -27,15 +28,14 @@ use Illuminate\Http\Request;
*
* @author Ladybird
*/
-class EmailsController extends Controller
-{
+class EmailsController extends Controller {
+
/**
* Defining constructor variables.
*
* @return type
*/
- public function __construct()
- {
+ public function __construct() {
$this->middleware('auth');
$this->middleware('roles');
}
@@ -47,8 +47,7 @@ class EmailsController extends Controller
*
* @return type view
*/
- public function index(Emails $email)
- {
+ public function index(Emails $email) {
try {
// fetch all the emails from emails table
$emails = $email->get();
@@ -69,8 +68,7 @@ class EmailsController extends Controller
*
* @return type Response
*/
- public function create(Department $department, Help_topic $help, Ticket_Priority $ticket_priority, MailboxProtocol $mailbox_protocol)
- {
+ public function create(Department $department, Help_topic $help, Ticket_Priority $ticket_priority, MailboxProtocol $mailbox_protocol) {
try {
// fetch all the departments from the department table
$departments = $department->get();
@@ -95,18 +93,16 @@ class EmailsController extends Controller
*
* @return int
*/
- public function validatingEmailSettings(Request $request)
- {
+ public function validatingEmailSettings(Request $request) {
$validator = \Validator::make(
- [
- 'email_address' => $request->email_address,
- 'email_name' => $request->email_name,
- 'password' => $request->password,
- ],
- [
+ [
+ 'email_address' => $request->input('email_address'),
+ 'email_name' => $request->input('email_name'),
+ 'password' => $request->input('password'),
+ ], [
'email_address' => 'required|email|unique:emails',
- 'email_name' => 'required',
- 'password' => 'required',
+ 'email_name' => 'required',
+ 'password' => 'required',
]
);
if ($validator->fails()) {
@@ -119,32 +115,31 @@ class EmailsController extends Controller
return $return_data;
}
- if ($request->validate == 'on') {
+ if ($request->input('imap_validate') == 'on') {
$validate = '/validate-cert';
- } else {
+ } elseif (!$request->input('imap_validate')) {
$validate = '/novalidate-cert';
}
- if ($request->fetching_status == 'on') {
+ if ($request->input('fetching_status') == 'on') {
$imap_check = $this->getImapStream($request, $validate);
if ($imap_check[0] == 0) {
- return 'Incoming email connection failed';
+ return Lang::get('lang.incoming_email_connection_failed_please_check_email_credentials_or_imap_settings');
}
$need_to_check_imap = 1;
} else {
$imap_check = 0;
$need_to_check_imap = 0;
}
- if ($request->sending_status == 'on') {
+ if ($request->input('sending_status') == 'on') {
$smtp_check = $this->getSmtp($request);
if ($smtp_check == 0) {
- return 'Outgoing email connection failed';
+ return Lang::get('lang.outgoing_email_connection_failed');
}
$need_to_check_smtp = 1;
} else {
$smtp_check = 0;
$need_to_check_smtp = 0;
}
-
if ($need_to_check_imap == 1 && $need_to_check_smtp == 1) {
if ($imap_check != 0 && $smtp_check != 0) {
$this->store($request, $imap_check[1]);
@@ -178,55 +173,69 @@ class EmailsController extends Controller
*
* @return type Redirect
*/
- public function store($request, $imap_check)
- {
- // dd($request);
+ public function store($request, $imap_check) {
$email = new Emails();
try {
- // getConnection($request->input('email_name'), $request->input('email_address'), $request->input('email_address'))
// saving all the fields to the database
- if ($email->fill($request->except('password', 'department', 'priority', 'help_topic', 'fetching_status', 'fetching_encryption', 'sending_status', 'auto_response'))->save() == true) {
- if ($request->fetching_status == 'on') {
- $email->fetching_status = 1;
- } else {
- $email->fetching_status = 0;
- }
- if ($request->sending_status == 'on') {
- $email->sending_status = 1;
- } else {
- $email->sending_status = 0;
- }
- if ($request->auto_response == 'on') {
- $email->auto_response = 1;
- } else {
- $email->auto_response = 0;
- }
- if ($imap_check !== null) {
- $email->fetching_encryption = $imap_check;
- } else {
- $email->fetching_encryption = $request->fetching_encryption;
- }
- // fetching department value
- $email->department = $this->departmentValue($request->input('department'));
- // fetching priority value
- $email->priority = $this->priorityValue($request->input('priority'));
- // fetching helptopic value
- $email->help_topic = $this->helpTopicValue($request->input('help_topic'));
- // inserting the encrypted value of password
- $email->password = Crypt::encrypt($request->input('password'));
- $email->save(); // run save
- // Creating a default system email as the first email is inserted to the system
- $email_settings = Email::where('id', '=', '1')->first();
- $email_settings->sys_email = $email->id;
- $email_settings->save();
- // returns success message for successful email creation
-// return redirect('emails')->with('success', 'Email Created sucessfully');
- return 1;
- } else {
- // returns fail message for unsuccessful save execution
-// return redirect('emails')->with('fails', 'Email can not Create');
- return 0;
+// if ($email->fill($request->except('password', 'department', 'priority', 'help_topic', 'fetching_status', 'fetching_encryption', 'sending_status', 'auto_response'))->save() == true) {
+ $email->email_address = $request->email_address;
+ $email->email_name = $request->email_name;
+ $email->fetching_host = $request->fetching_host;
+ $email->fetching_port = $request->fetching_port;
+ $email->fetching_protocol = $request->fetching_protocol;
+ $email->sending_host = $request->sending_host;
+ $email->sending_port = $request->sending_port;
+ $email->sending_protocol = $request->sending_protocol;
+ $email->sending_encryption = $request->sending_encryption;
+
+ if ($request->smtp_validate == 'on') {
+ $email->smtp_validate = $request->smtp_validate;
}
+
+ if ($request->input('password')) {
+ $email->password = Crypt::encrypt($request->input('password'));
+ }
+ if ($request->input('fetching_status') == 'on') {
+ $email->fetching_status = 1;
+ } else {
+ $email->fetching_status = 0;
+ }
+ if ($request->input('sending_status') == 'on') {
+ $email->sending_status = 1;
+ } else {
+ $email->sending_status = 0;
+ }
+ if ($request->input('auto_response') == 'on') {
+ $email->auto_response = 1;
+ } else {
+ $email->auto_response = 0;
+ }
+ if ($imap_check !== null) {
+ $email->fetching_encryption = $imap_check;
+ } else {
+ $email->fetching_encryption = $request->input('fetching_encryption');
+ }
+ // fetching department value
+ $email->department = $this->departmentValue($request->input('department'));
+ // fetching priority value
+ $email->priority = $this->priorityValue($request->input('priority'));
+ // fetching helptopic value
+ $email->help_topic = $this->helpTopicValue($request->input('help_topic'));
+ // inserting the encrypted value of password
+ $email->password = Crypt::encrypt($request->input('password'));
+ $email->save(); // run save
+ // Creating a default system email as the first email is inserted to the system
+ $email_settings = Email::where('id', '=', '1')->first();
+ $email_settings->sys_email = $email->id;
+ $email_settings->save();
+ // returns success message for successful email creation
+// return redirect('emails')->with('success', 'Email Created sucessfully');
+ return 1;
+// } else {
+ // returns fail message for unsuccessful save execution
+// return redirect('emails')->with('fails', 'Email can not Create');
+// return 0;
+// }
} catch (Exception $e) {
// returns if try fails
// return redirect()->back()->with('fails', $e->getMessage());
@@ -246,13 +255,16 @@ class EmailsController extends Controller
*
* @return type Response
*/
- public function edit($id, Department $department, Help_topic $help, Emails $email, Ticket_Priority $ticket_priority, MailboxProtocol $mailbox_protocol)
- {
+ public function edit($id, Department $department, Help_topic $help, Emails $email, Ticket_Priority $ticket_priority, MailboxProtocol $mailbox_protocol) {
try {
+ $sys_email = \DB::table('settings_email')->select('sys_email')->where('id', '=', 1)->first();
+ // dd($sys_email);
// fetch the selected emails
$emails = $email->whereId($id)->first();
// get all the departments
$departments = $department->get();
+ //get count of emails
+ $count = $email->count();
// get all the helptopic
$helps = $help->get();
// get all the priority
@@ -260,7 +272,7 @@ class EmailsController extends Controller
// get all the mailbox protocols
$mailbox_protocols = $mailbox_protocol->get();
// return if the execution is succeeded
- return view('themes.default1.admin.helpdesk.emails.emails.edit', compact('mailbox_protocols', 'priority', 'departments', 'helps', 'emails'));
+ return view('themes.default1.admin.helpdesk.emails.emails.edit', compact('mailbox_protocols', 'priority', 'departments', 'helps', 'emails', 'sys_email'))->with('count', $count);
} catch (Exception $e) {
// return if try fails
return redirect()->back()->with('fails', $e->getMessage());
@@ -274,18 +286,16 @@ class EmailsController extends Controller
*
* @return int
*/
- public function validatingEmailSettingsUpdate($id, Request $request)
- {
+ public function validatingEmailSettingsUpdate($id, Request $request) {
$validator = \Validator::make(
- [
- 'email_address' => $request->email_address,
- 'email_name' => $request->email_name,
- 'password' => $request->password,
- ],
- [
+ [
+ 'email_address' => $request->input('email_address'),
+ 'email_name' => $request->input('email_name'),
+ 'password' => $request->input('password'),
+ ], [
'email_address' => 'email',
- 'email_name' => 'required',
- 'password' => 'required',
+ 'email_name' => 'required',
+ 'password' => 'required',
]
);
if ($validator->fails()) {
@@ -299,32 +309,31 @@ class EmailsController extends Controller
return $return_data;
}
// return $request;
- if ($request->validate == 'on') {
+ if ($request->input('imap_validate') == 'on') {
$validate = '/validate-cert';
- } else {
+ } elseif (!$request->input('imap_validate')) {
$validate = '/novalidate-cert';
}
- if ($request->fetching_status == 'on') {
+ if ($request->input('fetching_status') == 'on') {
$imap_check = $this->getImapStream($request, $validate);
if ($imap_check[0] == 0) {
- return 'Incoming email connection failed';
+ return Lang::get('lang.incoming_email_connection_failed_please_check_email_credentials_or_imap_settings');
}
$need_to_check_imap = 1;
} else {
$imap_check = 0;
$need_to_check_imap = 0;
}
- if ($request->sending_status == 'on') {
+ if ($request->input('sending_status') == 'on') {
$smtp_check = $this->getSmtp($request);
if ($smtp_check == 0) {
- return 'Outgoing email connection failed';
+ return Lang::get('lang.outgoing_email_connection_failed');
}
$need_to_check_smtp = 1;
} else {
$smtp_check = 0;
$need_to_check_smtp = 0;
}
-
if ($need_to_check_imap == 1 && $need_to_check_smtp == 1) {
if ($imap_check != 0 && $smtp_check != 0) {
$this->update($id, $request, $imap_check[1]);
@@ -359,36 +368,45 @@ class EmailsController extends Controller
*
* @return type Response
*/
- public function update($id, $request, $imap_check)
- {
- // try {
- // dd($id);
- // dd($request);
- // dd($imap_check);
+ public function update($id, $request, $imap_check) {
+ try {
// fetch the selected emails
$emails = Emails::whereId($id)->first();
// insert all the requested parameters with except
- $emails->fill($request->except('password', 'department', 'priority', 'help_topic', 'fetching_status', 'fetching_encryption', 'sending_status', 'auto_response'))->save();
- if ($request->fetching_status == 'on') {
- $emails->fetching_status = 1;
- } else {
- $emails->fetching_status = 0;
- }
- if ($request->sending_status == 'on') {
- $emails->sending_status = 1;
- } else {
- $emails->sending_status = 0;
- }
- if ($request->auto_response == 'on') {
- $emails->auto_response = 1;
- } else {
- $emails->auto_response = 0;
- }
- if ($imap_check !== null) {
- $emails->fetching_encryption = $imap_check;
- } else {
- $emails->fetching_encryption = $request->fetching_encryption;
- }
+ $emails->email_address = $request->email_address;
+ $emails->email_name = $request->email_name;
+ $emails->fetching_host = $request->fetching_host;
+ $emails->fetching_port = $request->fetching_port;
+ $emails->fetching_protocol = $request->fetching_protocol;
+ $emails->sending_host = $request->sending_host;
+ $emails->sending_port = $request->sending_port;
+ $emails->sending_protocol = $request->sending_protocol;
+ $emails->sending_encryption = $request->sending_encryption;
+ if ($request->smtp_validate == 'on') {
+ $emails->smtp_validate = $request->smtp_validate;
+ }
+
+ if ($request->input('fetching_status') == 'on') {
+ $emails->fetching_status = 1;
+ } else {
+ $emails->fetching_status = 0;
+ }
+ if ($request->input('sending_status') == 'on') {
+ $emails->sending_status = 1;
+ } else {
+ $emails->sending_status = 0;
+ }
+ if ($request->input('auto_response') == 'on') {
+ $emails->auto_response = 1;
+ } else {
+ $emails->auto_response = 0;
+ }
+ if ($imap_check !== null) {
+ $emails->fetching_encryption = $imap_check;
+ } else {
+ $emails->fetching_encryption = $request->fetching_encryption;
+ }
+ $emails->password = Crypt::encrypt($request->input('password'));
// dd($email->fetching_encryption);
// fetching department value
$emails->department = $this->departmentValue($request->input('department'));
@@ -397,14 +415,25 @@ class EmailsController extends Controller
// fetching helptopic value
$emails->help_topic = $this->helpTopicValue($request->input('help_topic'));
// inserting the encrypted value of password
- $emails->password = Crypt::encrypt($request->input('password'));
- $emails->save();
+// $emails->password = Crypt::encrypt($request->input('password'));
+ $emails->save();
+ //dd($request->sys_email);
+ if($request->sys_email == 'on') {
+ $system = \DB::table('settings_email')
+ ->where('id', '=', 1)
+ ->update(['sys_email' => $id]);
+ } elseif ($request->input('count') <= 1 && $request->sys_email == null) {
+ $system = \DB::table('settings_email')
+ ->where('id', '=', 1)
+ ->update(['sys_email' => null]);
+ }
// returns success message for successful email update
$return = 1;
- // } catch (Exception $e) {
- // // returns if try fails
- // $return = $e->getMessage();
- // }
+ } catch (Exception $e) {
+ // // returns if try fails
+ $return = $e->getMessage();
+ }
+
return $return;
}
@@ -416,14 +445,13 @@ class EmailsController extends Controller
*
* @return type Redirect
*/
- public function destroy($id, Emails $email)
- {
+ public function destroy($id, Emails $email) {
// fetching the details on the basis of the $id passed to the function
$default_system_email = Email::where('id', '=', '1')->first();
if ($default_system_email->sys_email) {
// checking if the default system email is the passed email
if ($id == $default_system_email->sys_email) {
- return redirect('emails')->with('fails', 'You cannot delete system default Email');
+ return redirect('emails')->with('fails', Lang::get('lang.you_cannot_delete_system_default_email'));
}
}
try {
@@ -431,9 +459,9 @@ class EmailsController extends Controller
$emails = $email->whereId($id)->first();
// checking if deleting the email is success or if it's carrying any dependencies
if ($emails->delete() == true) {
- return redirect('emails')->with('success', 'Email Deleted sucessfully');
+ return redirect('emails')->with('success', Lang::get('lang.email_deleted_sucessfully'));
} else {
- return redirect('emails')->with('fails', 'Email can not Delete ');
+ return redirect('emails')->with('fails', Lang::get('lang.email_can_not_delete'));
}
} catch (Exception $e) {
// returns if the try fails
@@ -448,28 +476,26 @@ class EmailsController extends Controller
*
* @return type int
*/
- public function getImapStream($request, $validate)
- {
+ public function getImapStream($request, $validate) {
$fetching_status = $request->input('fetching_status');
$username = $request->input('email_address');
$password = $request->input('password');
$protocol_id = $request->input('mailbox_protocol');
- $fetching_protocol = '/'.$request->input('fetching_protocol');
- $fetching_encryption = '/'.$request->input('fetching_encryption');
+ $fetching_protocol = '/' . $request->input('fetching_protocol');
+ $fetching_encryption = '/' . $request->input('fetching_encryption');
if ($fetching_encryption == '/none') {
$fetching_encryption2 = '/novalidate-cert';
$mailbox_protocol = $fetching_encryption2;
$host = $request->input('fetching_host');
$port = $request->input('fetching_port');
- $mailbox = '{'.$host.':'.$port.$mailbox_protocol.'}INBOX';
+ $mailbox = '{' . $host . ':' . $port . $mailbox_protocol . '}INBOX';
} else {
- $mailbox_protocol = $fetching_protocol.$fetching_encryption;
+ $mailbox_protocol = $fetching_protocol . $fetching_encryption;
$host = $request->input('fetching_host');
$port = $request->input('fetching_port');
- $mailbox = '{'.$host.':'.$port.$mailbox_protocol.$validate.'}INBOX';
- $mailbox_protocol = $fetching_encryption.$validate;
+ $mailbox = '{' . $host . ':' . $port . $mailbox_protocol . $validate . '}INBOX';
+ $mailbox_protocol = $fetching_encryption . $validate;
}
-
try {
$imap_stream = imap_open($mailbox, $username, $password);
} catch (\Exception $ex) {
@@ -492,8 +518,7 @@ class EmailsController extends Controller
*
* @return type int
*/
- public function checkImapStream($imap_stream)
- {
+ public function checkImapStream($imap_stream) {
$check_imap_stream = imap_check($imap_stream);
if ($check_imap_stream) {
$imap_stream = 1;
@@ -511,22 +536,43 @@ class EmailsController extends Controller
*
* @return int
*/
- public function getSmtp($request)
- {
+ public function getSmtp($request) {
$sending_status = $request->input('sending_status');
- $mail = new \PHPMailer();
- $mail->isSMTP();
- $mail->Host = $request->input('sending_host');
- $mail->SMTPAuth = true; // Enable SMTP authentication
- $mail->Username = $request->input('email_address');
- $mail->Password = $request->input('password');
- $mail->SMTPSecure = $request->input('sending_encryption');
- $mail->Port = $request->input('sending_port');
- if ($mail->smtpConnect() == true) {
- $mail->smtpClose();
+ // cheking for the sending protocol
+ if ($request->input('sending_protocol') == 'smtp') {
+ $mail = new \PHPMailer();
+ $mail->isSMTP();
+ $mail->Host = $request->input('sending_host'); // Specify main and backup SMTP servers
+ //$mail->SMTPAuth = true; // Enable SMTP authentication
+ $mail->Username = $request->input('email_address'); // SMTP username
+ $mail->Password = $request->input('password'); // SMTP password
+ $mail->SMTPSecure = $request->input('sending_encryption'); // Enable TLS encryption, `ssl` also accepted
+ $mail->Port = $request->input('sending_port'); // TCP port to connect to
+ if (!$request->input('smtp_validate')) {
+ $mail->SMTPAuth = true; // Enable SMTP authentication
+ $mail->SMTPOptions = [
+ 'ssl' => [
+ 'verify_peer' => false,
+ 'verify_peer_name' => false,
+ 'allow_self_signed' => true,
+ ],
+ ];
+ if ($mail->smtpConnect($mail->SMTPOptions) == true) {
+ $mail->smtpClose();
+ $return = 1;
+ } else {
+ $return = 0;
+ }
+ } else {
+ if ($mail->smtpConnect()) {
+ $mail->smtpClose();
+ $return = 1;
+ } else {
+ $return = 0;
+ }
+ }
+ } elseif ($request->input('sending_protocol') == 'mail') {
$return = 1;
- } else {
- $return = 0;
}
return $return;
@@ -539,8 +585,7 @@ class EmailsController extends Controller
*
* @return type string or null
*/
- public function departmentValue($dept)
- {
+ public function departmentValue($dept) {
if ($dept) {
$email_department = $dept;
} else {
@@ -557,8 +602,7 @@ class EmailsController extends Controller
*
* @return type string or null
*/
- public function priorityValue($priority)
- {
+ public function priorityValue($priority) {
if ($priority) {
$email_priority = $priority;
} else {
@@ -575,8 +619,7 @@ class EmailsController extends Controller
*
* @return type string or null
*/
- public function helpTopicValue($help_topic)
- {
+ public function helpTopicValue($help_topic) {
if ($help_topic) {
$email_help_topic = $help_topic;
} else {
@@ -585,4 +628,5 @@ class EmailsController extends Controller
return $email_help_topic;
}
+
}
diff --git a/app/Http/Controllers/Admin/helpdesk/ErrorAndDebuggingController.php b/app/Http/Controllers/Admin/helpdesk/ErrorAndDebuggingController.php
new file mode 100644
index 000000000..d826cf07c
--- /dev/null
+++ b/app/Http/Controllers/Admin/helpdesk/ErrorAndDebuggingController.php
@@ -0,0 +1,102 @@
+
+ */
+class ErrorAndDebuggingController extends Controller
+{
+ /**
+ * Create a new controller instance.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ // $this->smtp();
+ $this->middleware('auth');
+ $this->middleware('roles');
+ }
+
+ /**
+ * function to show error and debugging setting page
+ * @param void
+ * @return response
+ */
+ public function showSettings()
+ {
+ $debug = \Config::get('app.debug');
+ $bugsnag = \Config::get('app.bugsnag_reporting');
+ return view('themes.default1.admin.helpdesk.settings.error-and-logs.error-debug')->with(['debug'=> $debug, 'bugsnag' => $bugsnag]);
+ }
+
+ /**
+ * funtion to update error and debugging settings
+ * @param void
+ * @return
+ */
+ public function postSettings()
+ {
+ try{
+ $debug = \Config::get('app.debug');
+ $debug = ($debug) ? 'true' : 'false';
+ $bugsnag_debug = \Config::get('app.bugsnag_reporting');
+ $bugsnag_debug = ($bugsnag_debug) ? 'true' : 'false';
+ if ($debug != \Input::get('debug') || $bugsnag_debug != \Input::get('bugsnag')) {
+ // dd($request->input());
+ $debug_new = base_path()
+ .DIRECTORY_SEPARATOR.
+ 'config'
+ .DIRECTORY_SEPARATOR.
+ 'app.php';
+ $datacontent = File::get($debug_new);
+ $datacontent = str_replace("'debug' => ".$debug,
+ "'debug' => ".\Input::get('debug'),
+ $datacontent);
+ File::put($debug_new, $datacontent);
+
+ // dd($request->input());
+ $bugsnag_debug_new = base_path()
+ .DIRECTORY_SEPARATOR.
+ 'config'
+ .DIRECTORY_SEPARATOR.
+ 'app.php';
+ $datacontent2 = File::get($bugsnag_debug_new);
+ $datacontent2 = str_replace("'bugsnag_reporting' => ".$bugsnag_debug,
+ "'bugsnag_reporting' => ".\Input::get('bugsnag'),
+ $datacontent2);
+ File::put($bugsnag_debug_new, $datacontent2);
+ return redirect()->back()->with('success',
+ Lang::get('lang.error-debug-settings-saved-message'));
+ } else {
+ return redirect()->back()->with('fails',
+ Lang::get('lang.error-debug-settings-error-message'));
+ }
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * function to show error log table page
+ * @param void
+ * @return response view
+ */
+ public function showErrorLogs()
+ {
+ return view('themes.default1.admin.helpdesk.settings.error-and-logs.log-table');
+ }
+}
diff --git a/app/Http/Controllers/Admin/helpdesk/FormController.php b/app/Http/Controllers/Admin/helpdesk/FormController.php
index 786c87546..0353d528b 100644
--- a/app/Http/Controllers/Admin/helpdesk/FormController.php
+++ b/app/Http/Controllers/Admin/helpdesk/FormController.php
@@ -12,6 +12,7 @@ use App\Model\helpdesk\Manage\Help_topic;
use Illuminate\Http\Request;
// Class
use Input;
+use Lang;
use Redirect;
/**
@@ -29,7 +30,7 @@ class FormController extends Controller
{
$this->fields = $fields;
$this->forms = $forms;
- // $this->middleware('auth');
+ $this->middleware('auth');
}
/**
@@ -51,21 +52,29 @@ class FormController extends Controller
*/
public function index(Forms $forms)
{
- return view('themes.default1.admin.helpdesk.manage.form.index', compact('forms'));
+ try {
+ return view('themes.default1.admin.helpdesk.manage.form.index', compact('forms'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
}
/**
- * Show the form for creating a new resource.
+ * create a new form.
*
* @return Response
*/
public function create()
{
- return view('themes.default1.admin.helpdesk.manage.form.form');
+ try {
+ return view('themes.default1.admin.helpdesk.manage.form.form');
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
}
/**
- * Display the specified resource.
+ * Show a new form.
*
* @param int $id
*
@@ -73,18 +82,22 @@ class FormController extends Controller
*/
public function show($id)
{
- return view('themes.default1.admin.helpdesk.manage.form.preview', compact('id'));
+ try {
+ return view('themes.default1.admin.helpdesk.manage.form.preview', compact('id'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
}
/**
- * Store a newly created resource in storage.
+ * Store a new form.
*
* @return Response
*/
public function store(Forms $forms)
{
if (!Input::get('formname')) {
- return Redirect::back()->with('fails', 'Please fill Form name');
+ return Redirect::back()->with('fails', Lang::get('lang.please_fill_form_name'));
}
$required = Input::get('required');
$count = count($required);
@@ -112,9 +125,19 @@ class FormController extends Controller
}
Fields::insert($fields);
- return Redirect::back()->with('success', 'Successfully created Form');
+ return Redirect::back()->with('success', Lang::get('lang.successfully_created_form'));
}
+ /**
+ * Delete Form.
+ *
+ * @param type $id
+ * @param \App\Model\helpdesk\Form\Forms $forms
+ * @param type $field
+ * @param type $help_topic
+ *
+ * @return type redirect
+ */
public function delete($id, Forms $forms, Fields $field, Help_topic $help_topic)
{
$fields = $field->where('forms_id', $id)->get();
@@ -129,6 +152,6 @@ class FormController extends Controller
$forms = $forms->where('id', $id)->first();
$forms->delete();
- return redirect()->back()->with('success', 'Deleted Successfully');
+ return redirect()->back()->with('success', Lang::get('lang.form_deleted_successfully'));
}
}
diff --git a/app/Http/Controllers/Admin/helpdesk/GroupController.php b/app/Http/Controllers/Admin/helpdesk/GroupController.php
index a89bc1cfb..6786eb813 100644
--- a/app/Http/Controllers/Admin/helpdesk/GroupController.php
+++ b/app/Http/Controllers/Admin/helpdesk/GroupController.php
@@ -6,6 +6,7 @@ namespace App\Http\Controllers\Admin\helpdesk;
use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\GroupRequest;
+use App\Http\Requests\helpdesk\GroupUpdateRequest;
use App\Model\helpdesk\Agent\Department;
// models
use App\Model\helpdesk\Agent\Group_assign_department;
@@ -15,6 +16,7 @@ use Exception;
// classes
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
+use Lang;
/**
* GroupController.
@@ -51,7 +53,7 @@ class GroupController extends Controller
return view('themes.default1.admin.helpdesk.agent.groups.index', compact('departments', 'group_assign_department', 'groups'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', Lang::get('lang.failed_to_load_the_page'));
}
}
@@ -65,7 +67,7 @@ class GroupController extends Controller
try {
return view('themes.default1.admin.helpdesk.agent.groups.create');
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', Lang::get('lang.failed_to_load_the_page'));
}
}
@@ -83,10 +85,10 @@ class GroupController extends Controller
/* Check Whether function success or not */
$group->fill($request->input())->save();
- return redirect('groups')->with('success', 'Group Created Successfully');
+ return redirect('groups')->with('success', Lang::get('lang.group_created_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('groups')->with('fails', 'Groups can not Create'.''.$e->errorInfo[2].' ');
+ return redirect('groups')->with('fails', Lang::get('lang.group_can_not_create').''.$e->getMessage().' ');
}
}
@@ -105,7 +107,7 @@ class GroupController extends Controller
return view('themes.default1.admin.helpdesk.agent.groups.edit', compact('groups'));
} catch (Exception $e) {
- return redirect('groups')->with('fails', 'Groups can not Create'.''.$e->errorInfo[2].' ');
+ return redirect('groups')->with('fails', Lang::get('lang.group_can_not_update').''.$e->getMessage().' ');
}
}
@@ -118,56 +120,59 @@ class GroupController extends Controller
*
* @return type Response
*/
- public function update($id, Groups $group, Request $request)
+ public function update($id, Groups $group, GroupUpdateRequest $request)
{
+ // Database instannce to the current id
$var = $group->whereId($id)->first();
+ // Updating Name
+ $var->name = $request->input('name');
//Updating Status
- $status = $request->Input('group_status');
+ $status = $request->input('group_status');
$var->group_status = $status;
//Updating can_create_ticket field
- $createTicket = $request->Input('can_create_ticket');
+ $createTicket = $request->input('can_create_ticket');
$var->can_create_ticket = $createTicket;
//Updating can_edit_ticket field
- $editTicket = $request->Input('can_edit_ticket');
+ $editTicket = $request->input('can_edit_ticket');
$var->can_edit_ticket = $editTicket;
//Updating can_post_ticket field
- $postTicket = $request->Input('can_post_ticket');
+ $postTicket = $request->input('can_post_ticket');
$var->can_post_ticket = $postTicket;
//Updating can_close_ticket field
- $closeTicket = $request->Input('can_close_ticket');
+ $closeTicket = $request->input('can_close_ticket');
$var->can_close_ticket = $closeTicket;
//Updating can_assign_ticket field
- $assignTicket = $request->Input('can_assign_ticket');
+ $assignTicket = $request->input('can_assign_ticket');
$var->can_assign_ticket = $assignTicket;
//Updating can_delete_ticket field
- $deleteTicket = $request->Input('can_delete_ticket');
+ $deleteTicket = $request->input('can_delete_ticket');
$var->can_delete_ticket = $deleteTicket;
//Updating can_ban_email field
- $banEmail = $request->Input('can_ban_email');
+ $banEmail = $request->input('can_ban_email');
$var->can_ban_email = $banEmail;
//Updating can_manage_canned field
- $manageCanned = $request->Input('can_manage_canned');
+ $manageCanned = $request->input('can_manage_canned');
$var->can_manage_canned = $manageCanned;
//Updating can_manage_faq field
- $manageFaq = $request->Input('can_manage_faq');
+ $manageFaq = $request->input('can_manage_faq');
$var->can_manage_faq = $manageFaq;
//Updating can_view_agent_stats field
- $viewAgentStats = $request->Input('can_view_agent_stats');
+ $viewAgentStats = $request->input('can_view_agent_stats');
$var->can_view_agent_stats = $viewAgentStats;
//Updating department_access field
- $departmentAccess = $request->Input('department_access');
+ $departmentAccess = $request->input('department_access');
$var->department_access = $departmentAccess;
//Updating admin_notes field
- $adminNotes = $request->Input('admin_notes');
+ $adminNotes = $request->input('admin_notes');
$var->admin_notes = $adminNotes;
/* Check whether function success or not */
try {
$var->save();
/* redirect to Index page with Success Message */
- return redirect('groups')->with('success', 'Group Updated Successfully');
+ return redirect('groups')->with('success', Lang::get('lang.group_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('groups')->with('fails', 'Groups can not Create'.''.$e->errorInfo[2].' ');
+ return redirect('groups')->with('fails', Lang::get('lang.group_can_not_update').''.$e->getMessage().' ');
}
}
@@ -184,9 +189,9 @@ class GroupController extends Controller
{
$users = User::where('assign_group', '=', $id)->first();
if ($users) {
- $user = 'There are agents assigned to this group. Please unassign them from this group to delete ';
+ $user = ''.Lang::get('lang.there_are_agents_assigned_to_this_group_please_unassign_them_from_this_group_to_delete').' ';
- return redirect('groups')->with('fails', 'Group cannot Delete '.$user);
+ return redirect('groups')->with('fails', Lang('lang.group_cannot_delete').$user);
}
$group_assign_department->where('group_id', $id)->delete();
$groups = $group->whereId($id)->first();
@@ -194,10 +199,10 @@ class GroupController extends Controller
try {
$groups->delete();
/* redirect to Index page with Success Message */
- return redirect('groups')->with('success', 'Group Deleted Successfully');
+ return redirect('groups')->with('success', Lang::get('lang.group_deleted_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('groups')->with('fails', 'Groups cannot Create'.''.$e->errorInfo[2].' ');
+ return redirect('groups')->with('fails', Lang::get('lang.group_cannot_delete').''.$e->getMessage().' ');
}
}
}
diff --git a/app/Http/Controllers/Admin/helpdesk/HelptopicController.php b/app/Http/Controllers/Admin/helpdesk/HelptopicController.php
index 31f3d825d..f96afb703 100644
--- a/app/Http/Controllers/Admin/helpdesk/HelptopicController.php
+++ b/app/Http/Controllers/Admin/helpdesk/HelptopicController.php
@@ -19,6 +19,7 @@ use App\User;
// classes
use DB;
use Exception;
+use Lang;
/**
* HelptopicController.
@@ -52,7 +53,7 @@ class HelptopicController extends Controller
return view('themes.default1.admin.helpdesk.manage.helptopic.index', compact('topics'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -90,7 +91,7 @@ class HelptopicController extends Controller
return view('themes.default1.admin.helpdesk.manage.helptopic.create', compact('priority', 'departments', 'topics', 'forms', 'agents', 'slas'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -119,10 +120,10 @@ class HelptopicController extends Controller
$topic->fill($request->except('custom_form', 'auto_assign'))->save();
// $topics->fill($request->except('custom_form','auto_assign'))->save();
/* redirect to Index page with Success Message */
- return redirect('helptopic')->with('success', 'Helptopic Created Successfully');
+ return redirect('helptopic')->with('success', Lang::get('lang.helptopic_created_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('helptopic')->with('fails', 'Helptopic can not Create'.''.$e->errorInfo[2].' ');
+ return redirect('helptopic')->with('fails', Lang::get('lang.helptopic_can_not_create').''.$e->getMessage().' ');
}
}
@@ -148,10 +149,13 @@ class HelptopicController extends Controller
$forms = $form->get();
$slas = $sla->get();
$priority = $priority->get();
-
- return view('themes.default1.admin.helpdesk.manage.helptopic.edit', compact('priority', 'departments', 'topics', 'forms', 'agents', 'slas'));
+ $sys_help_topic = \DB::table('settings_ticket')
+ ->select('help_topic')
+ ->where('id', '=', 1)->first();
+
+ return view('themes.default1.admin.helpdesk.manage.helptopic.edit', compact('priority', 'departments', 'topics', 'forms', 'agents', 'slas', 'sys_help_topic'));
} catch (Exception $e) {
- return redirect('helptopic')->with('fails', ''.$e->errorInfo[2].' ');
+ return redirect('helptopic')->with('fails', ''.$e->getMessage().' ');
}
}
@@ -166,7 +170,6 @@ class HelptopicController extends Controller
*/
public function update($id, Help_topic $topic, HelptopicUpdate $request)
{
- // dd($request);
try {
$topics = $topic->whereId($id)->first();
if ($request->custom_form) {
@@ -184,11 +187,16 @@ class HelptopicController extends Controller
$topics->custom_form = $custom_form;
$topics->auto_assign = $auto_assign;
$topics->save();
+ if ($request->input('sys_help_tpoic') == 'on') {
+ \DB::table('settings_ticket')
+ ->where('id', '=', 1)
+ ->update(['help_topic' => $id]);
+ }
/* redirect to Index page with Success Message */
- return redirect('helptopic')->with('success', 'Helptopic Updated Successfully');
+ return redirect('helptopic')->with('success', Lang::get('lang.helptopic_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('helptopic')->with('fails', 'Helptopic can not Update'.''.$e->errorInfo[2].' ');
+ return redirect('helptopic')->with('fails', Lang::get('lang.helptopic_can_not_update').''.$e->getMessage().' ');
}
}
@@ -204,45 +212,40 @@ class HelptopicController extends Controller
{
$ticket_settings = $ticket_setting->where('id', '=', '1')->first();
if ($ticket_settings->help_topic == $id) {
- return redirect('departments')->with('fails', 'You cannot delete default department');
+ return redirect('departments')->with('fails', Lang::get('lang.you_cannot_delete_default_department'));
} else {
$tickets = DB::table('tickets')->where('help_topic_id', '=', $id)->update(['help_topic_id' => $ticket_settings->help_topic]);
-
if ($tickets > 0) {
if ($tickets > 1) {
$text_tickets = 'Tickets';
} else {
$text_tickets = 'Ticket';
}
- $ticket = ''.$tickets.' '.$text_tickets.' have been moved to default Help Topic ';
+ $ticket = ''.$tickets.' '.$text_tickets.Lang::get('lang.have_been_moved_to_default_help_topic').' ';
} else {
$ticket = '';
}
-
$emails = DB::table('emails')->where('help_topic', '=', $id)->update(['help_topic' => $ticket_settings->help_topic]);
-
if ($emails > 0) {
if ($emails > 1) {
$text_emails = 'Emails';
} else {
$text_emails = 'Email';
}
- $email = ''.$emails.' System '.$text_emails.' have been moved to default Help Topic ';
+ $email = ''.$emails.' System '.$text_emails.Lang::get('lang.have_been_moved_to_default_help_topic').' ';
} else {
$email = '';
}
-
$message = $ticket.$email;
-
$topics = $topic->whereId($id)->first();
/* Check whether function success or not */
try {
$topics->delete();
/* redirect to Index page with Success Message */
- return redirect('helptopic')->with('success', 'Helptopic Deleted Successfully'.$message);
+ return redirect('helptopic')->with('success', Lang::get('lang.helptopic_deleted_successfully').$message);
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('helptopic')->with('fails', 'Helptopic can not Delete'.''.$e->errorInfo[2].' ');
+ return redirect('helptopic')->with('fails', Lang::get('lang.helptopic_can_not_update').''.$e->getMessage().' ');
}
}
}
diff --git a/app/Http/Controllers/Admin/helpdesk/SecurityController.php b/app/Http/Controllers/Admin/helpdesk/SecurityController.php
new file mode 100644
index 000000000..f8fb3e1b7
--- /dev/null
+++ b/app/Http/Controllers/Admin/helpdesk/SecurityController.php
@@ -0,0 +1,121 @@
+
+ */
+class SecurityController extends Controller
+{
+ private $security;
+
+ public function __construct(Security $security)
+ {
+ $this->security = $security;
+ }
+
+ /**
+ * list of securitys.
+ *
+ * @param type Security $securitys
+ *
+ * @return Response
+ */
+ public function index(Security $securitys)
+ {
+ try {
+ $security = $securitys->whereId('1')->first();
+
+ return view('themes.default1.admin.helpdesk.settings.security.index', compact('security'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Create security setting.
+ *
+ * @return Response
+ */
+ public function create()
+ {
+ return view('themes.default1.admin.helpdesk.setting.security.security');
+ }
+
+ /**
+ * Show security.
+ *
+ * @param int $id
+ *
+ * @return Response
+ */
+ public function show($id)
+ {
+ return view('themes.default1.admin.helpdesk.setting.security.preview', compact('id'));
+ }
+
+ /**
+ * Update security details.
+ *
+ * @return Response
+ */
+ public function update($id, SecurityRequest $request)
+ {
+ try {
+ $security = new Security();
+ $securitys = $security->whereId($id)->first();
+ $securitys->lockout_message = $request->input('lockout_message');
+ $securitys->backlist_offender = $request->input('backlist_offender');
+ $securitys->backlist_threshold = $request->input('backlist_threshold');
+ $securitys->lockout_period = $request->input('lockout_period');
+ $securitys->days_to_keep_logs = $request->input('days_to_keep_logs');
+ $securitys->save();
+
+ return Redirect::back()->with('success', Lang::get('lang.security_settings_saved_successfully'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Delete security details.
+ *
+ * @param type $id
+ * @param \App\Model\helpdesk\Settings\Security $securitys
+ * @param type $field
+ * @param \App\Http\Controllers\Admin\helpdesk\Help_topic $help_topic
+ *
+ * @return type redirect
+ */
+ public function delete($id, Security $securitys, Fields $field, Help_topic $help_topic)
+ {
+ $fields = $field->where('securitys_id', $id)->get();
+ $help_topics = $help_topic->where('custom_security', '=', $id)->get();
+ foreach ($help_topics as $help_topic) {
+ $help_topic->custom_security = null;
+ $help_topic->save();
+ }
+ foreach ($fields as $field) {
+ $field->delete();
+ }
+ $securitys = $securitys->where('id', $id)->first();
+ $securitys->delete();
+
+ return redirect()->back()->with('success', 'Deleted Successfully');
+ }
+}
diff --git a/app/Http/Controllers/Admin/helpdesk/SettingsController.php b/app/Http/Controllers/Admin/helpdesk/SettingsController.php
index 8402b6c4b..1b8d66e41 100644
--- a/app/Http/Controllers/Admin/helpdesk/SettingsController.php
+++ b/app/Http/Controllers/Admin/helpdesk/SettingsController.php
@@ -7,6 +7,8 @@ use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\CompanyRequest;
use App\Http\Requests\helpdesk\EmailRequest;
+use App\Http\Requests\helpdesk\RatingUpdateRequest;
+use App\Http\Requests\helpdesk\StatusRequest;
use App\Http\Requests\helpdesk\SystemRequest;
// models
use App\Model\helpdesk\Agent\Department;
@@ -14,7 +16,8 @@ use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Email\Template;
use App\Model\helpdesk\Manage\Help_topic;
use App\Model\helpdesk\Manage\Sla_plan;
-use App\Model\helpdesk\Settings\Access;
+use App\Model\helpdesk\Notification\UserNotification;
+use App\Model\helpdesk\Ratings\Rating;
use App\Model\helpdesk\Settings\Alert;
use App\Model\helpdesk\Settings\Company;
use App\Model\helpdesk\Settings\Email;
@@ -26,9 +29,11 @@ use App\Model\helpdesk\Utility\Date_format;
use App\Model\helpdesk\Utility\Date_time_format;
use App\Model\helpdesk\Utility\Time_format;
use App\Model\helpdesk\Utility\Timezones;
+use DateTime;
// classes
use DB;
use Exception;
+use File;
use Illuminate\Http\Request;
use Input;
use Lang;
@@ -52,16 +57,6 @@ class SettingsController extends Controller
$this->middleware('roles');
}
- /**
- * Main Settings Page.
- *
- * @return type view
- */
- public function settings()
- {
- return view('themes.default1.admin.helpdesk.setting');
- }
-
/**
* @param int $id
* @param $compant instance of company table
@@ -109,10 +104,10 @@ class SettingsController extends Controller
try {
$companys->fill($request->except('logo'))->save();
/* redirect to Index page with Success Message */
- return redirect('getcompany')->with('success', 'Company Updated Successfully');
+ return redirect('getcompany')->with('success', Lang::get('lang.company_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('getcompany')->with('fails', 'Company can not Updated'.''.$e->getMessage().' ');
+ return redirect('getcompany')->with('fails', Lang::get('lang.company_can_not_updated').''.$e->getMessage().' ');
}
}
@@ -158,6 +153,9 @@ class SettingsController extends Controller
$departments = $department->get();
/* Fetch the values from Timezones table */
$timezones = $timezone->get();
+
+ //$debug = \Config::get('app.debug');
+ //dd($value);
/* Direct to System Settings Page */
return view('themes.default1.admin.helpdesk.settings.system', compact('systems', 'departments', 'timezones', 'time', 'date', 'date_time'));
} catch (Exception $e) {
@@ -184,10 +182,13 @@ class SettingsController extends Controller
/* Check whether function success or not */
$systems->fill($request->input())->save();
/* redirect to Index page with Success Message */
- return redirect('getsystem')->with('success', 'System Updated Successfully');
+
+ // dd($datacontent);
+ //\Config::set('app.debug', $request->input('debug'));
+ return redirect('getsystem')->with('success', Lang::get('lang.system_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('getsystem')->with('fails', 'System can not Updated'.''.$e->getMessage().' ');
+ return redirect('getsystem')->with('fails', Lang::get('lang.system_can_not_updated').' '.$e->getMessage());
}
}
@@ -245,10 +246,10 @@ class SettingsController extends Controller
/* Check whether function success or not */
$tickets->save();
/* redirect to Index page with Success Message */
- return redirect('getticket')->with('success', 'Ticket Updated Successfully');
+ return redirect('getticket')->with('success', Lang::get('lang.ticket_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('getticket')->with('fails', 'Ticket can not Updated'.''.$e->getMessage().' ');
+ return redirect('getticket')->with('fails', Lang::get('lang.ticket_can_not_updated').''.$e->getMessage().' ');
}
}
@@ -303,10 +304,10 @@ class SettingsController extends Controller
/* Check whether function success or not */
$emails->save();
/* redirect to Index page with Success Message */
- return redirect('getemail')->with('success', 'Email Updated Successfully');
+ return redirect('getemail')->with('success', Lang::get('lang.email_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('getemail')->with('fails', 'Email can not Updated'.''.$e->getMessage().' ');
+ return redirect('getemail')->with('fails', Lang::get('lang.email_can_not_updated').''.$e->getMessage().' ');
}
}
@@ -322,16 +323,15 @@ class SettingsController extends Controller
public function getSchedular(Email $email, Template $template, Emails $email1)
{
// try {
- /* fetch the values of email from Email table */
- $emails = $email->whereId('1')->first();
- /* Fetch the values from Template table */
- $templates = $template->get();
- /* Fetch the values from Emails table */
- $emails1 = $email1->get();
+ /* fetch the values of email from Email table */
+ $emails = $email->whereId('1')->first();
+ /* Fetch the values from Template table */
+ $templates = $template->get();
+ /* Fetch the values from Emails table */
+ $emails1 = $email1->get();
return view('themes.default1.admin.helpdesk.settings.crone', compact('emails', 'templates', 'emails1'));
// } catch {
-
// }
}
@@ -368,57 +368,6 @@ class SettingsController extends Controller
}
}
- /**
- * get the form for Access setting page.
- *
- * @param type Access $access
- *
- * @return type Response
- */
- // public function getaccess(Access $access) {
- // try {
- // /* fetch the values of access from access table */
- // $accesses = $access->whereId('1')->first();
-// // Direct to Access Settings Page
- // return view('themes.default1.admin.helpdesk.settings.access', compact('accesses'));
- // } catch (Exception $e) {
- // return view('404');
- // }
- // }
-
- /**
- * Update the specified resource in storage.
- *
- * @param type Access $access
- * @param type Request $request
- *
- * @return type Response
- */
- // public function postaccess(Access $access, Request $request) {
- // try {
- // /* fetch the values of access request */
- // $accesses = $access->whereId('1')->first();
- // /* fill the values to access table */
- // $accesses->fill($request->except('password_reset', 'bind_agent_ip', 'reg_require', 'quick_access'))->save();
- // /* insert checkbox value to DB */
- // $accesses->password_reset = $request->input('password_reset');
- // $accesses->bind_agent_ip = $request->input('bind_agent_ip');
- // $accesses->reg_require = $request->input('reg_require');
- // $accesses->quick_access = $request->input('quick_access');
- // /* Check whether function success or not */
- // if ($accesses->save() == true) {
- // /* redirect to Index page with Success Message */
- // return redirect('getaccess')->with('success', 'Access Updated Successfully');
- // } else {
- // /* redirect to Index page with Fails Message */
- // return redirect('getaccess')->with('fails', 'Access can not Updated');
- // }
- // } catch (Exception $e) {
- // /* redirect to Index page with Fails Message */
- // return redirect('getaccess')->with('fails', 'Access can not Updated');
- // }
- // }
-
/**
* get the form for Responder setting page.
*
@@ -461,10 +410,10 @@ class SettingsController extends Controller
/* Check whether function success or not */
$responders->save();
/* redirect to Index page with Success Message */
- return redirect('getresponder')->with('success', 'Responder Updated Successfully');
+ return redirect('getresponder')->with('success', Lang::get('lang.auto_response_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('getresponder')->with('fails', 'Responder can not Updated'.''.$e->getMessage().' ');
+ return redirect('getresponder')->with('fails', Lang::get('lang.auto_response_can_not_updated').''.$e->getMessage().' ');
}
}
@@ -549,52 +498,13 @@ class SettingsController extends Controller
/* Check whether function success or not */
$alerts->save();
/* redirect to Index page with Success Message */
- return redirect('getalert')->with('success', 'Alert Updated Successfully');
+ return redirect('getalert')->with('success', Lang::get('lang.alert_&_notices_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('getalert')->with('fails', 'Alert can not Updated'.''.$e->getMessage().' ');
+ return redirect('getalert')->with('fails', Lang::get('lang.alert_&_notices_can_not_updated').''.$e->getMessage().' ');
}
}
- /**
- * To display the list of ratings in the system.
- *
- * @return type View
- */
- public function RatingSettings()
- {
- $ratings = DB::table('settings_ratings')->get();
-
- return view('themes.default1.admin.helpdesk.settings.ratings', compact('ratings'));
- }
-
- /**
- * To store rating data.
- *
- * @return type Redirect
- */
- public function PostRatingSettings($slug)
- {
- $name = Input::get('rating_name');
- $publish = Input::get('publish');
- $modify = Input::get('modify');
- DB::table('settings_ratings')->whereSlug($slug)->update(['rating_name' => $name, 'publish' => $publish, 'modify' => $modify]);
-
- return redirect()->back()->with('success', 'Successfully updated');
- }
-
- /**
- * To delete a type of rating.
- *
- * @return type Redirect
- */
- public function RatingDelete($slug)
- {
- DB::table('settings_ratings')->whereSlug($slug)->delete();
-
- return redirect()->back()->with('success', 'Successfully Deleted');
- }
-
/**
* Generate Api key.
*
@@ -606,4 +516,297 @@ class SettingsController extends Controller
return $key;
}
+
+ /**
+ * Main Settings Page.
+ *
+ * @return type view
+ */
+ public function settings()
+ {
+ return view('themes.default1.admin.helpdesk.setting');
+ }
+
+ /**
+ * @param int $id
+ * @param $compant instance of company table
+ *
+ * get the form for company setting page
+ *
+ * @return Response
+ */
+ public function getStatuses()
+ {
+ try {
+ /* fetch the values of company from company table */
+ $statuss = \DB::table('ticket_status')->get();
+ /* Direct to Company Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.status', compact('statuss'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * @param int $id
+ * @param $compant instance of company table
+ *
+ * get the form for company setting page
+ *
+ * @return Response
+ */
+ public function getEditStatuses($id)
+ {
+ try {
+ /* fetch the values of company from company table */
+ $status = \DB::table('ticket_status')->where('id', '=', $id)->first();
+ /* Direct to Company Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.status-edit', compact('status'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * @param int $id
+ * @param $compant instance of company table
+ *
+ * get the form for company setting page
+ *
+ * @return Response
+ */
+ public function editStatuses($id, StatusRequest $request)
+ {
+ try {
+ /* fetch the values of company from company table */
+ $statuss = \App\Model\helpdesk\Ticket\Ticket_Status::whereId($id)->first();
+ $statuss->name = $request->input('name');
+ $statuss->icon_class = $request->input('icon_class');
+ $statuss->email_user = $request->input('email_user');
+ $statuss->sort = $request->input('sort');
+ $delete = $request->input('deleted');
+ if ($delete == 'yes') {
+ $statuss->state = 'delete';
+ } else {
+ $statuss->state = $request->input('state');
+ }
+ $statuss->sort = $request->input('sort');
+ $statuss->save();
+ /* Direct to Company Settings Page */
+ return redirect()->back()->with('success', Lang::get('lang.status_has_been_updated_successfully'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * create a status.
+ *
+ * @param \App\Model\helpdesk\Ticket\Ticket_Status $statuss
+ * @param \App\Http\Requests\helpdesk\StatusRequest $request
+ *
+ * @return type redirect
+ */
+ public function createStatuses(\App\Model\helpdesk\Ticket\Ticket_Status $statuss, StatusRequest $request)
+ {
+ try {
+ /* fetch the values of company from company table */
+ $statuss->name = $request->input('name');
+ $statuss->icon_class = $request->input('icon_class');
+ $statuss->email_user = $request->input('email_user');
+ $statuss->sort = $request->input('sort');
+ $delete = $request->input('delete');
+ if ($delete == 'yes') {
+ $statuss->state = 'deleted';
+ } else {
+ $statuss->state = $request->input('state');
+ }
+ $statuss->sort = $request->input('sort');
+ $statuss->save();
+ /* Direct to Company Settings Page */
+ return redirect()->back()->with('success', Lang::get('lang.status_has_been_created_successfully'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * delete a status.
+ *
+ * @param type $id
+ *
+ * @return type redirect
+ */
+ public function deleteStatuses($id)
+ {
+ try {
+ if ($id > 5) {
+ /* fetch the values of company from company table */
+ \App\Model\helpdesk\Ticket\Ticket_Status::whereId($id)->delete();
+ /* Direct to Company Settings Page */
+ return redirect()->back()->with('success', Lang::get('lang.status_has_been_deleted'));
+ } else {
+ return redirect()->back()->with('failed', Lang::get('lang.you_cannot_delete_this_status'));
+ }
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * get the page of notification settings.
+ *
+ * @return type view
+ */
+ public function notificationSettings()
+ {
+ return view('themes.default1.admin.helpdesk.settings.notification');
+ }
+
+ /**
+ * delete a notification.
+ *
+ * @return type redirect
+ */
+ public function deleteReadNoti()
+ {
+ $markasread = UserNotification::where('is_read', '=', 1)->get();
+ foreach ($markasread as $mark) {
+ $mark->delete();
+ \App\Model\helpdesk\Notification\Notification::whereId($mark->notification_id)->delete();
+ }
+
+ return redirect()->back()->with('success', Lang::get('lang.you_have_deleted_all_the_read_notifications'));
+ }
+
+ /**
+ * delete a notification log.
+ *
+ * @return type redirect
+ */
+ public function deleteNotificationLog()
+ {
+ $days = Input::get('no_of_days');
+ if ($days == null) {
+ return redirect()->back()->with('fails', 'Please enter valid no of days');
+ }
+ $date = new DateTime();
+ $date->modify($days.' day');
+ $formatted_date = $date->format('Y-m-d H:i:s');
+ $markasread = UserNotification::where('created_at', '<=', $formatted_date)->get();
+ foreach ($markasread as $mark) {
+ $mark->delete();
+ \App\Model\helpdesk\Notification\Notification::whereId($mark->notification_id)->delete();
+ }
+
+ return redirect()->back()->with('success', Lang::get('lang.you_have_deleted_all_the_notification_records_since').$days.' days.');
+ }
+
+ /**
+ * To display the list of ratings in the system.
+ *
+ * @return type View
+ */
+ public function RatingSettings()
+ {
+ try {
+ $ratings = Rating::orderBy('display_order', 'asc')->get();
+
+ return view('themes.default1.admin.helpdesk.settings.ratings', compact('ratings'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * edit a rating.
+ *
+ * @param type $id
+ *
+ * @return type view
+ */
+ public function editRatingSettings($id)
+ {
+ try {
+ $rating = Rating::whereId($id)->first();
+
+ return view('themes.default1.admin.helpdesk.settings.edit-ratings', compact('rating'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * To store rating data.
+ *
+ * @return type Redirect
+ */
+ public function PostRatingSettings($id, Rating $ratings, RatingUpdateRequest $request)
+ {
+ try {
+ $rating = $ratings->whereId($id)->first();
+ $rating->name = $request->input('name');
+ $rating->display_order = $request->input('display_order');
+ $rating->allow_modification = $request->input('allow_modification');
+ $rating->rating_scale = $request->input('rating_scale');
+// $rating->rating_area = $request->input('rating_area');
+ $rating->restrict = $request->input('restrict');
+ $rating->save();
+
+ return redirect()->back()->with('success', Lang::get('lang.ratings_updated_successfully'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * get the create rating page.
+ *
+ * @return type redirect
+ */
+ public function createRating()
+ {
+ try {
+ return view('themes.default1.admin.helpdesk.settings.create-ratings');
+ } catch (Exception $ex) {
+ return redirect('getratings')->with('fails', Lang::get('lang.ratings_can_not_be_created').''.$ex->getMessage().' ');
+ }
+ }
+
+ /**
+ * store a rating value.
+ *
+ * @param \App\Model\helpdesk\Ratings\Rating $rating
+ * @param \App\Model\helpdesk\Ratings\RatingRef $ratingrefs
+ * @param \App\Http\Requests\helpdesk\RatingRequest $request
+ *
+ * @return type redirect
+ */
+ public function storeRating(Rating $rating, \App\Model\helpdesk\Ratings\RatingRef $ratingrefs, \App\Http\Requests\helpdesk\RatingRequest $request)
+ {
+ $rating->name = $request->input('name');
+ $rating->display_order = $request->input('display_order');
+ $rating->allow_modification = $request->input('allow_modification');
+ $rating->rating_scale = $request->input('rating_scale');
+ $rating->rating_area = $request->input('rating_area');
+ $rating->restrict = $request->input('restrict');
+ $rating->save();
+ $ratingrefs->rating_id = $rating->id;
+ $ratingrefs->save();
+
+ return redirect()->back()->with('success', Lang::get('lang.successfully_created_this_rating'));
+ }
+
+ /**
+ * To delete a type of rating.
+ *
+ * @return type Redirect
+ */
+ public function RatingDelete($slug, \App\Model\helpdesk\Ratings\RatingRef $ratingrefs)
+ {
+ $ratingrefs->where('rating_id', '=', $slug)->delete();
+ Rating::whereId($slug)->delete();
+
+ return redirect()->back()->with('success', Lang::get('lang.rating_deleted_successfully'));
+ }
}
diff --git a/app/Http/Controllers/Admin/helpdesk/SettingsController2.php b/app/Http/Controllers/Admin/helpdesk/SettingsController2.php
new file mode 100644
index 000000000..9fc11288e
--- /dev/null
+++ b/app/Http/Controllers/Admin/helpdesk/SettingsController2.php
@@ -0,0 +1,743 @@
+
+ */
+class SettingsController2 extends Controller
+{
+ /**
+ * Create a new controller instance.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ // $this->smtp();
+ $this->middleware('auth');
+ $this->middleware('roles');
+ }
+
+ /**
+ * Main Settings Page.
+ *
+ * @return type view
+ */
+ public function settings()
+ {
+ return view('themes.default1.admin.helpdesk.setting');
+ }
+
+ public function notificationSettings()
+ {
+ return view('themes.default1.admin.helpdesk.settings.notification');
+ }
+
+ public function deleteReadNoti()
+ {
+ $markasread = UserNotification::where('is_read', '=', 1)->get();
+ foreach ($markasread as $mark) {
+ $mark->delete();
+ \App\Model\helpdesk\Notification\Notification::whereId($mark->notification_id)->delete();
+ }
+
+ return redirect()->back()->with('success', 'You have deleted all the read notifications');
+ }
+
+ public function deleteNotificationLog()
+ {
+ $days = Input::get('no_of_days');
+ $date = new DateTime();
+ $date->modify($days.' day');
+ $formatted_date = $date->format('Y-m-d H:i:s');
+ $markasread = DB::table('user_notification')->where('created_at', '<=', $formatted_date)->get();
+ foreach ($markasread as $mark) {
+ $mark->delete();
+ \App\Model\helpdesk\Notification\Notification::whereId($mark->notification_id)->delete();
+ }
+
+ return redirect()->back()->with('success', 'You have deleted all the notification records since '.$days.' days.');
+ }
+
+ /**
+ * @param int $id
+ * @param $compant instance of company table
+ *
+ * get the form for company setting page
+ *
+ * @return Response
+ */
+ public function getStatuses()
+ {
+ try {
+ /* fetch the values of company from company table */
+ $statuss = \DB::table('ticket_status')->get();
+ /* Direct to Company Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.status', compact('statuss'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * @param int $id
+ * @param $compant instance of company table
+ *
+ * get the form for company setting page
+ *
+ * @return Response
+ */
+ public function editStatuses($id)
+ {
+ try {
+ /* fetch the values of company from company table */
+ $statuss = \App\Model\helpdesk\Ticket\Ticket_Status::whereId($id)->first();
+ $statuss->name = Input::get('name');
+ $statuss->icon_class = Input::get('icon_class');
+ $statuss->email_user = Input::get('email_user');
+ $statuss->sort = Input::get('sort');
+ $delete = Input::get('delete');
+ if ($delete == 'yes') {
+ $statuss->state = 'delete';
+ } else {
+ $statuss->state = Input::get('state');
+ }
+ $statuss->sort = Input::get('sort');
+ $statuss->save();
+ /* Direct to Company Settings Page */
+ return redirect()->back()->with('success', 'Status has been updated!');
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ public function createStatuses(\App\Model\helpdesk\Ticket\Ticket_Status $statuss)
+ {
+ // try {
+ /* fetch the values of company from company table */
+ $statuss->name = Input::get('name');
+ $statuss->icon_class = Input::get('icon_class');
+ $statuss->email_user = Input::get('email_user');
+ $statuss->sort = Input::get('sort');
+ $delete = Input::get('delete');
+ if ($delete == 'yes') {
+ $statuss->state = 'delete';
+ } else {
+ $statuss->state = Input::get('state');
+ }
+ $statuss->sort = Input::get('sort');
+ $statuss->save();
+ /* Direct to Company Settings Page */
+ return redirect()->back()->with('success', 'Status has been created!');
+// } catch (Exception $ex) {
+// return redirect()->back()->with('fails', $ex->errorInfo[2]);
+// }
+ }
+
+ public function deleteStatuses($id)
+ {
+ try {
+ if ($id > 5) {
+ /* fetch the values of company from company table */
+ \App\Model\helpdesk\Ticket\Ticket_Status::whereId($id)->delete();
+ /* Direct to Company Settings Page */
+ return redirect()->back()->with('success', 'Status has been deleted');
+ } else {
+ return redirect()->back()->with('failed', 'You cannot delete this status');
+ }
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * @param int $id
+ * @param $compant instance of company table
+ *
+ * get the form for company setting page
+ *
+ * @return Response
+ */
+ public function getcompany(Company $company)
+ {
+ try {
+ /* fetch the values of company from company table */
+ $companys = $company->whereId('1')->first();
+ /* Direct to Company Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.company', compact('companys'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param type int $id
+ * @param type Company $company
+ * @param type CompanyRequest $request
+ *
+ * @return Response
+ */
+ public function postcompany($id, Company $company, CompanyRequest $request)
+ {
+ /* fetch the values of company request */
+ $companys = $company->whereId('1')->first();
+ if (Input::file('logo')) {
+ $name = Input::file('logo')->getClientOriginalName();
+ $destinationPath = 'lb-faveo/media/company/';
+ $fileName = rand(0000, 9999).'.'.$name;
+ Input::file('logo')->move($destinationPath, $fileName);
+ $companys->logo = $fileName;
+ }
+ if ($request->input('use_logo') == null) {
+ $companys->use_logo = '0';
+ }
+ /* Check whether function success or not */
+ try {
+ $companys->fill($request->except('logo'))->save();
+ /* redirect to Index page with Success Message */
+ return redirect('getcompany')->with('success', 'Company Updated Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('getcompany')->with('fails', 'Company can not Updated'.''.$e->getMessage().' ');
+ }
+ }
+
+ /**
+ * function to delete system logo.
+ *
+ * @return type string
+ */
+ public function deleteLogo()
+ {
+ $path = $_GET['data1']; //get file path of logo image
+ if (!unlink($path)) {
+ return 'false';
+ } else {
+ $companys = Company::where('id', '=', 1)->first();
+ $companys->logo = null;
+ $companys->use_logo = '0';
+ $companys->save();
+
+ return 'true';
+ }
+ // return $res;
+ }
+
+ /**
+ * get the form for System setting page.
+ *
+ * @param type System $system
+ * @param type Department $department
+ * @param type Timezones $timezone
+ * @param type Date_format $date
+ * @param type Date_time_format $date_time
+ * @param type Time_format $time
+ *
+ * @return type Response
+ */
+ public function getsystem(System $system, Department $department, Timezones $timezone, Date_format $date, Date_time_format $date_time, Time_format $time)
+ {
+ try {
+ /* fetch the values of system from system table */
+ $systems = $system->whereId('1')->first();
+ /* Fetch the values from Department table */
+ $departments = $department->get();
+ /* Fetch the values from Timezones table */
+ $timezones = $timezone->get();
+ /* Direct to System Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.system', compact('systems', 'departments', 'timezones', 'time', 'date', 'date_time'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param type int $id
+ * @param type System $system
+ * @param type SystemRequest $request
+ *
+ * @return type Response
+ */
+ public function postsystem($id, System $system, SystemRequest $request)
+ {
+ try {
+ // dd($request);
+ /* fetch the values of system request */
+ $systems = $system->whereId('1')->first();
+ /* fill the values to coompany table */
+ /* Check whether function success or not */
+ $systems->fill($request->input())->save();
+ /* redirect to Index page with Success Message */
+ return redirect('getsystem')->with('success', 'System Updated Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('getsystem')->with('fails', 'System can not Updated'.''.$e->getMessage().' ');
+ }
+ }
+
+ /**
+ * get the form for Ticket setting page.
+ *
+ * @param type Ticket $ticket
+ * @param type Sla_plan $sla
+ * @param type Help_topic $topic
+ * @param type Priority $priority
+ *
+ * @return type Response
+ */
+ public function getticket(Ticket $ticket, Sla_plan $sla, Help_topic $topic, Ticket_Priority $priority)
+ {
+ try {
+ /* fetch the values of ticket from ticket table */
+ $tickets = $ticket->whereId('1')->first();
+ /* Fetch the values from SLA Plan table */
+ $slas = $sla->get();
+ /* Fetch the values from Help_topic table */
+ $topics = $topic->get();
+ /* Direct to Ticket Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.ticket', compact('tickets', 'slas', 'topics', 'priority'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param type int $id
+ * @param type Ticket $ticket
+ * @param type Request $request
+ *
+ * @return type Response
+ */
+ public function postticket($id, Ticket $ticket, Request $request)
+ {
+ try {
+ /* fetch the values of ticket request */
+ $tickets = $ticket->whereId('1')->first();
+ /* fill the values to coompany table */
+ $tickets->fill($request->except('captcha', 'claim_response', 'assigned_ticket', 'answered_ticket', 'agent_mask', 'html', 'client_update'))->save();
+ /* insert checkbox to Database */
+ $tickets->captcha = $request->input('captcha');
+ $tickets->claim_response = $request->input('claim_response');
+ $tickets->assigned_ticket = $request->input('assigned_ticket');
+ $tickets->answered_ticket = $request->input('answered_ticket');
+ $tickets->agent_mask = $request->input('agent_mask');
+ $tickets->html = $request->input('html');
+ $tickets->client_update = $request->input('client_update');
+ $tickets->collision_avoid = $request->input('collision_avoid');
+ /* Check whether function success or not */
+ $tickets->save();
+ /* redirect to Index page with Success Message */
+ return redirect('getticket')->with('success', 'Ticket Updated Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('getticket')->with('fails', 'Ticket can not Updated'.''.$e->getMessage().' ');
+ }
+ }
+
+ /**
+ * get the form for Email setting page.
+ *
+ * @param type Email $email
+ * @param type Template $template
+ * @param type Emails $email1
+ *
+ * @return type Response
+ */
+ public function getemail(Email $email, Template $template, Emails $email1)
+ {
+ try {
+ /* fetch the values of email from Email table */
+ $emails = $email->whereId('1')->first();
+ /* Fetch the values from Template table */
+ $templates = $template->get();
+ /* Fetch the values from Emails table */
+ $emails1 = $email1->get();
+ /* Direct to Email Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.email', compact('emails', 'templates', 'emails1'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param type int $id
+ * @param type Email $email
+ * @param type EmailRequest $request
+ *
+ * @return type Response
+ */
+ public function postemail($id, Email $email, EmailRequest $request)
+ {
+ try {
+ /* fetch the values of email request */
+ $emails = $email->whereId('1')->first();
+ /* fill the values to email table */
+ $emails->fill($request->except('email_fetching', 'all_emails', 'email_collaborator', 'strip', 'attachment'))->save();
+ /* insert checkboxes to database */
+ // $emails->email_fetching = $request->input('email_fetching');
+ // $emails->notification_cron = $request->input('notification_cron');
+ $emails->all_emails = $request->input('all_emails');
+ $emails->email_collaborator = $request->input('email_collaborator');
+ $emails->strip = $request->input('strip');
+ $emails->attachment = $request->input('attachment');
+ /* Check whether function success or not */
+ $emails->save();
+ /* redirect to Index page with Success Message */
+ return redirect('getemail')->with('success', 'Email Updated Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('getemail')->with('fails', 'Email can not Updated'.''.$e->getMessage().' ');
+ }
+ }
+
+ /**
+ * get the form for cron job setting page.
+ *
+ * @param type Email $email
+ * @param type Template $template
+ * @param type Emails $email1
+ *
+ * @return type Response
+ */
+ public function getSchedular(Email $email, Template $template, Emails $email1)
+ {
+ // try {
+ /* fetch the values of email from Email table */
+ $emails = $email->whereId('1')->first();
+ /* Fetch the values from Template table */
+ $templates = $template->get();
+ /* Fetch the values from Emails table */
+ $emails1 = $email1->get();
+
+ return view('themes.default1.admin.helpdesk.settings.crone', compact('emails', 'templates', 'emails1'));
+ // } catch {
+
+ // }
+ }
+
+ /**
+ * Update the specified resource in storage for cron job.
+ *
+ * @param type Email $email
+ * @param type EmailRequest $request
+ *
+ * @return type Response
+ */
+ public function postSchedular(Email $email, Template $template, Emails $email1, Request $request)
+ {
+ // dd($request);
+ try {
+ /* fetch the values of email request */
+ $emails = $email->whereId('1')->first();
+ if ($request->email_fetching) {
+ $emails->email_fetching = $request->email_fetching;
+ } else {
+ $emails->email_fetching = 0;
+ }
+ if ($request->notification_cron) {
+ $emails->notification_cron = $request->notification_cron;
+ } else {
+ $emails->notification_cron = 0;
+ }
+ $emails->save();
+ /* redirect to Index page with Success Message */
+ return redirect('job-scheduler')->with('success', Lang::get('lang.job-scheduler-success'));
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('job-scheduler')->with('fails', Lang::get('lang.job-scheduler-error').''.$e->getMessage().' ');
+ }
+ }
+
+ /**
+ * get the form for Access setting page.
+ *
+ * @param type Access $access
+ *
+ * @return type Response
+ */
+ // public function getaccess(Access $access) {
+ // try {
+ // /* fetch the values of access from access table */
+ // $accesses = $access->whereId('1')->first();
+// // Direct to Access Settings Page
+ // return view('themes.default1.admin.helpdesk.settings.access', compact('accesses'));
+ // } catch (Exception $e) {
+ // return view('404');
+ // }
+ // }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param type Access $access
+ * @param type Request $request
+ *
+ * @return type Response
+ */
+ // public function postaccess(Access $access, Request $request) {
+ // try {
+ // /* fetch the values of access request */
+ // $accesses = $access->whereId('1')->first();
+ // /* fill the values to access table */
+ // $accesses->fill($request->except('password_reset', 'bind_agent_ip', 'reg_require', 'quick_access'))->save();
+ // /* insert checkbox value to DB */
+ // $accesses->password_reset = $request->input('password_reset');
+ // $accesses->bind_agent_ip = $request->input('bind_agent_ip');
+ // $accesses->reg_require = $request->input('reg_require');
+ // $accesses->quick_access = $request->input('quick_access');
+ // /* Check whether function success or not */
+ // if ($accesses->save() == true) {
+ // /* redirect to Index page with Success Message */
+ // return redirect('getaccess')->with('success', 'Access Updated Successfully');
+ // } else {
+ // /* redirect to Index page with Fails Message */
+ // return redirect('getaccess')->with('fails', 'Access can not Updated');
+ // }
+ // } catch (Exception $e) {
+ // /* redirect to Index page with Fails Message */
+ // return redirect('getaccess')->with('fails', 'Access can not Updated');
+ // }
+ // }
+
+ /**
+ * get the form for Responder setting page.
+ *
+ * @param type Responder $responder
+ *
+ * @return type Response
+ */
+ public function getresponder(Responder $responder)
+ {
+ try {
+ /* fetch the values of responder from responder table */
+ $responders = $responder->whereId('1')->first();
+ /* Direct to Responder Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.responder', compact('responders'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param type Responder $responder
+ * @param type Request $request
+ *
+ * @return type
+ */
+ public function postresponder(Responder $responder, Request $request)
+ {
+ try {
+ /* fetch the values of responder request */
+ $responders = $responder->whereId('1')->first();
+ /* insert Checkbox value to DB */
+ $responders->new_ticket = $request->input('new_ticket');
+ $responders->agent_new_ticket = $request->input('agent_new_ticket');
+ $responders->submitter = $request->input('submitter');
+ $responders->participants = $request->input('participants');
+ $responders->overlimit = $request->input('overlimit');
+ /* fill the values to coompany table */
+ /* Check whether function success or not */
+ $responders->save();
+ /* redirect to Index page with Success Message */
+ return redirect('getresponder')->with('success', 'Responder Updated Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('getresponder')->with('fails', 'Responder can not Updated'.''.$e->getMessage().' ');
+ }
+ }
+
+ /**
+ * get the form for Alert setting page.
+ *
+ * @param type Alert $alert
+ *
+ * @return type Response
+ */
+ public function getalert(Alert $alert)
+ {
+ try {
+ /* fetch the values of alert from alert table */
+ $alerts = $alert->whereId('1')->first();
+ /* Direct to Alert Settings Page */
+ return view('themes.default1.admin.helpdesk.settings.alert', compact('alerts'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param type $id
+ * @param type Alert $alert
+ * @param type Request $request
+ *
+ * @return type Response
+ */
+ public function postalert($id, Alert $alert, Request $request)
+ {
+ try {
+ /* fetch the values of alert request */
+ $alerts = $alert->whereId('1')->first();
+ /* Insert Checkbox to DB */
+ $alerts->assignment_status = $request->input('assignment_status');
+ $alerts->ticket_status = $request->input('ticket_status');
+ $alerts->overdue_department_member = $request->input('overdue_department_member');
+ $alerts->sql_error = $request->input('sql_error');
+ $alerts->excessive_failure = $request->input('excessive_failure');
+ $alerts->overdue_status = $request->input('overdue_status');
+ $alerts->overdue_assigned_agent = $request->input('overdue_assigned_agent');
+ $alerts->overdue_department_manager = $request->input('overdue_department_manager');
+ $alerts->internal_status = $request->input('internal_status');
+ $alerts->internal_last_responder = $request->input('internal_last_responder');
+ $alerts->internal_assigned_agent = $request->input('internal_assigned_agent');
+ $alerts->internal_department_manager = $request->input('internal_department_manager');
+ $alerts->assignment_assigned_agent = $request->input('assignment_assigned_agent');
+ $alerts->assignment_team_leader = $request->input('assignment_team_leader');
+ $alerts->assignment_team_member = $request->input('assignment_team_member');
+ $alerts->system_error = $request->input('system_error');
+ $alerts->transfer_department_member = $request->input('transfer_department_member');
+ $alerts->transfer_department_manager = $request->input('transfer_department_manager');
+ $alerts->transfer_assigned_agent = $request->input('transfer_assigned_agent');
+ $alerts->transfer_status = $request->input('transfer_status');
+ $alerts->message_organization_accmanager = $request->input('message_organization_accmanager');
+ $alerts->message_department_manager = $request->input('message_department_manager');
+ $alerts->message_assigned_agent = $request->input('message_assigned_agent');
+ $alerts->message_last_responder = $request->input('message_last_responder');
+ $alerts->message_status = $request->input('message_status');
+ $alerts->ticket_organization_accmanager = $request->input('ticket_organization_accmanager');
+ $alerts->ticket_department_manager = $request->input('ticket_department_manager');
+ $alerts->ticket_department_member = $request->input('ticket_department_member');
+ $alerts->ticket_admin_email = $request->input('ticket_admin_email');
+
+ if ($request->input('system_error') == null) {
+ $str = '%0%';
+ $path = app_path('../config/app.php');
+ $content = \File::get($path);
+ $content = str_replace('%1%', $str, $content);
+ \File::put($path, $content);
+ } else {
+ $str = '%1%';
+ $path = app_path('../config/app.php');
+ $content = \File::get($path);
+ $content = str_replace('%0%', $str, $content);
+ \File::put($path, $content);
+ }
+ /* fill the values to coompany table */
+ /* Check whether function success or not */
+ $alerts->save();
+ /* redirect to Index page with Success Message */
+ return redirect('getalert')->with('success', 'Alert Updated Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('getalert')->with('fails', 'Alert can not Updated'.''.$e->getMessage().' ');
+ }
+ }
+
+ /**
+ * To display the list of ratings in the system.
+ *
+ * @return type View
+ */
+ public function RatingSettings()
+ {
+ $ratings = DB::table('settings_ratings')->get();
+
+ return view('themes.default1.admin.helpdesk.settings.ratings', compact('ratings'));
+ }
+
+ /**
+ * To store rating data.
+ *
+ * @return type Redirect
+ */
+ public function PostRatingSettings($slug)
+ {
+ $name = Input::get('rating_name');
+ $publish = Input::get('publish');
+ $modify = Input::get('modify');
+ DB::table('settings_ratings')->whereSlug($slug)->update(['rating_name' => $name, 'publish' => $publish, 'modify' => $modify]);
+
+ return redirect()->back()->with('success', 'Successfully updated');
+ }
+
+ public function createRating()
+ {
+ $name = Input::get('rating_name');
+ $publish = Input::get('publish');
+ $modify = Input::get('modify');
+ DB::table('settings_ratings')->insert(['rating_name' => $name, 'publish' => $publish, 'modify' => $modify]);
+
+ return redirect()->back()->with('success', 'Successfully created this rating');
+ }
+
+ /**
+ * To delete a type of rating.
+ *
+ * @return type Redirect
+ */
+ public function RatingDelete($slug)
+ {
+ DB::table('settings_ratings')->whereSlug($slug)->delete();
+
+ return redirect()->back()->with('success', 'Successfully Deleted');
+ }
+
+ /**
+ * Generate Api key.
+ *
+ * @return type json
+ */
+ public function generateApiKey()
+ {
+ $key = str_random(32);
+
+ return $key;
+ }
+}
diff --git a/app/Http/Controllers/Admin/helpdesk/SlaController.php b/app/Http/Controllers/Admin/helpdesk/SlaController.php
index 7dee75a9c..8ddab22da 100644
--- a/app/Http/Controllers/Admin/helpdesk/SlaController.php
+++ b/app/Http/Controllers/Admin/helpdesk/SlaController.php
@@ -13,6 +13,7 @@ use App\Model\helpdesk\Settings\Ticket;
//classes
use DB;
use Exception;
+use Lang;
/**
* SlaController.
@@ -47,7 +48,7 @@ class SlaController extends Controller
/* Listing the values From Sla_plan Table */
return view('themes.default1.admin.helpdesk.manage.sla.index', compact('slas'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -62,7 +63,7 @@ class SlaController extends Controller
/* Direct to Create Page */
return view('themes.default1.admin.helpdesk.manage.sla.create');
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -81,10 +82,10 @@ class SlaController extends Controller
/* Check whether function success or not */
$sla->fill($request->input())->save();
/* redirect to Index page with Success Message */
- return redirect('sla')->with('success', 'SLA Plan Created Successfully');
+ return redirect('sla')->with('success', Lang::get('lang.sla_plan_created_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('sla')->with('fails', 'SLA Plan can not Create'.''.$e->errorInfo[2].' ');
+ return redirect('sla')->with('fails', Lang::get('lang.sla_plan_can_not_create').''.$e->getMessage().' ');
}
}
@@ -96,16 +97,16 @@ class SlaController extends Controller
*
* @return type Response
*/
- public function edit($id, Sla_plan $sla)
+ public function edit($id)
{
try {
/* Direct to edit page along values of perticular field using Id */
- $slas = $sla->whereId($id)->first();
+ $slas = Sla_plan::whereId($id)->first();
$slas->get();
-
- return view('themes.default1.admin.helpdesk.manage.sla.edit', compact('slas'));
+ $sla = \DB::table('settings_ticket')->select('sla')->where('id', '=', 1)->first();
+ return view('themes.default1.admin.helpdesk.manage.sla.edit', compact('slas','sla'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -118,11 +119,11 @@ class SlaController extends Controller
*
* @return type Response
*/
- public function update($id, Sla_plan $sla, SlaUpdate $request)
+ public function update($id, SlaUpdate $request)
{
try {
/* Fill values to selected field using Id except Check box */
- $slas = $sla->whereId($id)->first();
+ $slas = Sla_plan::whereId($id)->first();
$slas->fill($request->except('transient', 'ticket_overdue'))->save();
/* Update transient checkox field */
$slas->transient = $request->input('transient');
@@ -131,10 +132,15 @@ class SlaController extends Controller
/* Check whether function success or not */
$slas->save();
/* redirect to Index page with Success Message */
- return redirect('sla')->with('success', 'SLA Plan Updated Successfully');
+ if ($request->input('sys_sla') == 'on') {
+ \DB::table('settings_ticket')
+ ->where('id', '=', 1)
+ ->update(['sla' => $id]);
+ }
+ return redirect('sla')->with('success', Lang::get('lang.sla_plan_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('sla')->with('fails', 'SLA Plan can not Update'.''.$e->errorInfo[2].' ');
+ return redirect('sla')->with('fails', Lang::get('lang.sla_plan_can_not_update').''.$e->getMessage().' ');
}
}
@@ -146,11 +152,11 @@ class SlaController extends Controller
*
* @return type Response
*/
- public function destroy($id, Sla_plan $sla)
+ public function destroy($id)
{
$default_sla = Ticket::where('id', '=', '1')->first();
if ($default_sla->sla == $id) {
- return redirect('departments')->with('fails', 'You cannot delete default department');
+ return redirect('departments')->with('fails', Lang::get('lang.you_cannot_delete_default_department'));
} else {
$tickets = DB::table('tickets')->where('sla', '=', $id)->update(['sla' => $default_sla->sla]);
if ($tickets > 0) {
@@ -159,7 +165,7 @@ class SlaController extends Controller
} else {
$text_tickets = 'Ticket';
}
- $ticket = ''.$tickets.' '.$text_tickets.' have been moved to default SLA ';
+ $ticket = ''.$tickets.' '.$text_tickets.Lang::get('lang.have_been_moved_to_default_sla').' ';
} else {
$ticket = '';
}
@@ -170,7 +176,7 @@ class SlaController extends Controller
} else {
$text_dept = 'Email';
}
- $dept = 'Associated department have been moved to default SLA ';
+ $dept = ''.Lang::get('lang.associated_department_have_been_moved_to_default_sla').' ';
} else {
$dept = '';
}
@@ -181,21 +187,21 @@ class SlaController extends Controller
} else {
$text_topic = 'Email';
}
- $topic = 'Associated Help Topic have been moved to default SLA ';
+ $topic = ''.Lang::get('lang.associated_help_topic_have_been_moved_to_default_sla').' ';
} else {
$topic = '';
}
$message = $ticket.$dept.$topic;
/* Delete a perticular field from the database by delete() using Id */
- $slas = $sla->whereId($id)->first();
+ $slas = Sla_plan::whereId($id)->first();
/* Check whether function success or not */
try {
$slas->delete();
/* redirect to Index page with Success Message */
- return redirect('sla')->with('success', 'SLA Plan Deleted Successfully'.$message);
+ return redirect('sla')->with('success', Lang::get('lang.sla_plan_deleted_successfully').$message);
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('sla')->with('fails', 'SLA Plan can not Delete'.''.$e->errorInfo[2].' ');
+ return redirect('sla')->with('fails', Lang::get('lang.sla_plan_can_not_delete').''.$e->getMessage().' ');
}
}
}
diff --git a/app/Http/Controllers/Admin/helpdesk/TeamController.php b/app/Http/Controllers/Admin/helpdesk/TeamController.php
index 0af3a5d77..11ffbcdd6 100644
--- a/app/Http/Controllers/Admin/helpdesk/TeamController.php
+++ b/app/Http/Controllers/Admin/helpdesk/TeamController.php
@@ -14,6 +14,7 @@ use App\User;
// classes
use DB;
use Exception;
+use Lang;
/**
* TeamController.
@@ -51,7 +52,7 @@ class TeamController extends Controller
return view('themes.default1.admin.helpdesk.agent.teams.index', compact('assign_team_agent', 'teams'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -69,7 +70,7 @@ class TeamController extends Controller
return view('themes.default1.admin.helpdesk.agent.teams.create', compact('user'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -93,10 +94,10 @@ class TeamController extends Controller
/* Check whether function success or not */
$team->fill($request->except('team_lead'))->save();
/* redirect to Index page with Success Message */
- return redirect('teams')->with('success', 'Teams Created Successfully');
+ return redirect('teams')->with('success', Lang::get('lang.teams_created_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('teams')->with('fails', 'Teams can not Create'.''.$e->errorInfo[2].' ');
+ return redirect('teams')->with('fails', Lang::get('lang.teams_can_not_create').''.$e->getMessage().' ');
}
}
@@ -120,7 +121,7 @@ class TeamController extends Controller
return view('themes.default1.admin.helpdesk.agent.teams.edit', compact('agent_id', 'user', 'teams', 'allagents'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -153,10 +154,10 @@ class TeamController extends Controller
try {
$teams->fill($request->except('team_lead'))->save();
/* redirect to Index page with Success Message */
- return redirect('teams')->with('success', 'Teams Updated Successfully');
+ return redirect('teams')->with('success', Lang::get('lang.teams_updated_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('teams')->with('fails', 'Teams can not Update'.''.$e->errorInfo[2].' ');
+ return redirect('teams')->with('fails', Lang::get('lang.teams_can_not_update').''.$e->getMessage().' ');
}
}
@@ -178,10 +179,10 @@ class TeamController extends Controller
/* Check whether function success or not */
$teams->delete();
/* redirect to Index page with Success Message */
- return redirect('teams')->with('success', 'Teams Deleted Successfully');
+ return redirect('teams')->with('success', Lang::get('lang.teams_deleted_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('teams')->with('fails', 'Teams can not Delete'.''.$e->errorInfo[2].' ');
+ return redirect('teams')->with('fails', Lang::get('lang.teams_can_not_delete').''.$e->getMessage().' ');
}
}
}
diff --git a/app/Http/Controllers/Admin/helpdesk/TemplateController.php b/app/Http/Controllers/Admin/helpdesk/TemplateController.php
index cf41444e7..6b7600cd1 100644
--- a/app/Http/Controllers/Admin/helpdesk/TemplateController.php
+++ b/app/Http/Controllers/Admin/helpdesk/TemplateController.php
@@ -4,9 +4,9 @@ namespace App\Http\Controllers\Admin\helpdesk;
// controllers
use App\Http\Controllers\Common\PhpMailController;
-use App\Http\Controllers\Common\SettingsController;
use App\Http\Controllers\Controller;
// requests
+use App\Http\Requests\helpdesk\DiagnosRequest;
use App\Http\Requests\helpdesk\TemplateRequest;
use App\Http\Requests\helpdesk\TemplateUdate;
// models
@@ -17,24 +17,22 @@ use App\Model\helpdesk\Utility\Languages;
use Exception;
use Illuminate\Http\Request;
use Input;
-use Mail;
+use Lang;
/**
* TemplateController.
*
* @author Ladybird
*/
-class TemplateController extends Controller
-{
+class TemplateController extends Controller {
+
/**
* Create a new controller instance.
*
* @return type void
*/
- public function __construct(PhpMailController $PhpMailController)
- {
+ public function __construct(PhpMailController $PhpMailController) {
$this->PhpMailController = $PhpMailController;
- SettingsController::smtp();
$this->middleware('auth');
$this->middleware('roles');
}
@@ -46,14 +44,13 @@ class TemplateController extends Controller
*
* @return type Response
*/
- public function index(Template $template)
- {
+ public function index(Template $template) {
try {
$templates = $template->get();
return view('themes.default1.admin.helpdesk.emails.template.index', compact('templates'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -65,8 +62,7 @@ class TemplateController extends Controller
*
* @return type Response
*/
- public function create(Languages $language, Template $template)
- {
+ public function create(Languages $language, Template $template) {
try {
$templates = $template->get();
$languages = $language->get();
@@ -85,8 +81,7 @@ class TemplateController extends Controller
*
* @return type Response
*/
- public function store(Template $template, TemplateRequest $request)
- {
+ public function store(Template $template, TemplateRequest $request) {
try {
/* Check whether function success or not */
if ($template->fill($request->input())->save() == true) {
@@ -109,8 +104,7 @@ class TemplateController extends Controller
*
* @return Response
*/
- public function show($id)
- {
+ public function show($id) {
//
}
@@ -123,41 +117,37 @@ class TemplateController extends Controller
*
* @return type Response
*/
- public function listdirectories()
- {
- $path = \Config::get('view.paths')[0].'/emails/';
+ public function listdirectories() {
+ $path = \Config::get('view.paths')[0] . '/emails/';
$directories = scandir($path);
$directory = str_replace('/', '-', $path);
return view('themes.default1.admin.helpdesk.emails.template.listdirectories', compact('directories', 'directory'));
}
- public function listtemplates($template, $path)
- {
+ public function listtemplates($template, $path) {
$paths = str_replace('-', '/', $path);
- $directory2 = $paths.$template;
+ $directory2 = $paths . $template;
$templates = scandir($directory2);
- $directory = str_replace('/', '-', $directory2.'/');
+ $directory = str_replace('/', '-', $directory2 . '/');
return view('themes.default1.admin.helpdesk.emails.template.listtemplates', compact('templates', 'directory'));
}
- public function readtemplate($template, $path)
- {
+ public function readtemplate($template, $path) {
$directory = str_replace('-', '/', $path);
- $handle = fopen($directory.$template, 'r');
- $contents = fread($handle, filesize($directory.$template));
+ $handle = fopen($directory . $template, 'r');
+ $contents = fread($handle, filesize($directory . $template));
fclose($handle);
return view('themes.default1.admin.helpdesk.emails.template.readtemplates', compact('contents', 'template', 'path'));
}
- public function createtemplate()
- {
+ public function createtemplate() {
$directory = '../resources/views/emails/';
$fname = Input::get('folder_name');
- $filename = $directory.$fname;
+ $filename = $directory . $fname;
// images folder creation using php
// $mydir = dirname( __FILE__ )."/html/images";
@@ -169,7 +159,7 @@ class TemplateController extends Controller
if (!file_exists($filename)) {
mkdir($filename, 0777);
}
- $files = array_filter(scandir($directory.'default'));
+ $files = array_filter(scandir($directory . 'default'));
foreach ($files as $file) {
if ($file === '.' or $file === '..') {
@@ -177,29 +167,27 @@ class TemplateController extends Controller
}
if (!is_dir($file)) {
// $file_to_go = str_replace("code/resources/views/emails/",'code/resources/views/emails/'.$fname,$file);
- $destination = $directory.$fname.'/';
+ $destination = $directory . $fname . '/';
- copy($directory.'default/'.$file, $destination.$file);
+ copy($directory . 'default/' . $file, $destination . $file);
}
}
return \Redirect::back()->with('success', 'Successfully copied');
}
- public function writetemplate($template, $path)
- {
+ public function writetemplate($template, $path) {
$directory = str_replace('-', '/', $path);
$b = Input::get('templatedata');
- file_put_contents($directory.$template, print_r($b, true));
+ file_put_contents($directory . $template, print_r($b, true));
return \Redirect::back()->with('success', 'Successfully updated');
}
- public function deletetemplate($template, $path)
- {
+ public function deletetemplate($template, $path) {
$directory = str_replace('-', '/', $path);
- $dir = $directory.$template;
+ $dir = $directory . $template;
$status = \DB::table('settings_email')->first();
if ($template == 'default' or $template == $status->template) {
return \Redirect::back()->with('fails', 'You cannot delete a default or active directory!');
@@ -208,7 +196,7 @@ class TemplateController extends Controller
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != '.' && $object != '..') {
- unlink($dir.'/'.$object);
+ unlink($dir . '/' . $object);
}
}
rmdir($dir);
@@ -219,15 +207,13 @@ class TemplateController extends Controller
return \Redirect::back()->with('success', 'Successfully Deleted');
}
- public function activateset($setname)
- {
+ public function activateset($setname) {
\DB::table('settings_email')->update(['template' => $setname]);
return \Redirect::back()->with('success', 'You have Successfully Activated this Set');
}
- public function edit($id, Template $template, Languages $language)
- {
+ public function edit($id, Template $template, Languages $language) {
try {
$templates = $template->whereId($id)->first();
$languages = $language->get();
@@ -247,8 +233,7 @@ class TemplateController extends Controller
*
* @return type Response
*/
- public function update($id, Template $template, TemplateUdate $request)
- {
+ public function update($id, Template $template, TemplateUdate $request) {
try {
//TODO validation
$templates = $template->whereId($id)->first();
@@ -274,8 +259,7 @@ class TemplateController extends Controller
*
* @return type Response
*/
- public function destroy($id, Template $template)
- {
+ public function destroy($id, Template $template) {
try {
$templates = $template->whereId($id)->first();
/* Check whether function success or not */
@@ -299,14 +283,13 @@ class TemplateController extends Controller
*
* @return type Response
*/
- public function formDiagno(Emails $email)
- {
+ public function formDiagno(Emails $email) {
try {
$emails = $email->get();
return view('themes.default1.admin.helpdesk.emails.template.formDiagno', compact('emails'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -317,19 +300,56 @@ class TemplateController extends Controller
*
* @return type
*/
- public function postDiagno(Request $request)
- {
- $email = $request->input('to');
- if ($email == null) {
- return redirect('getdiagno')->with('fails', 'Please provide E-mail address !');
- }
- // sending mail via php mailer
- $mail = $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['email' => $email], $message = ['subject' => 'Checking the connection', 'scenario' => 'error-report', 'content' => 'Email Received Successfully'], $template_variables = ['system_error' => 'Email Received Successfully']);
-
- if ($mail == null) {
- return redirect('getdiagno')->with('fails', 'Please check your E-mail settings. Unable to send mails');
- } else {
- return redirect('getdiagno')->with('success', 'Please check your mail. An E-mail has been sent to your E-mail address');
+ public function postDiagno(DiagnosRequest $request) {
+ try {
+ $email_details = Emails::where('id', '=', $request->from)->first();
+ if ($email_details->sending_protocol == 'mail') {
+ $mail = new \PHPMailer(); // defaults to using php "mail()"
+ $mail->IsSendmail(); // telling the class to use SendMail transport
+ $mail->SetFrom($email_details->email_address, $email_details->email_name); // sender details
+ $address = $request->to; // receiver email
+ $mail->AddAddress($address);
+ $mail->Subject = $request->subject; // subject of the email
+ $body = $request->message; // body of the email
+ $mail->MsgHTML($body);
+ if (!$mail->Send()) {
+ $return = Lang::get('lang.mailer_error') . ': ' . $mail->ErrorInfo;
+ } else {
+ $return = Lang::get('lang.message_has_been_sent');
+ }
+ } elseif ($email_details->sending_protocol == 'smtp') {
+ $mail = new \PHPMailer();
+ $mail->isSMTP(); // Set mailer to use SMTP
+ if ($email_details->smtp_validate == '1') {
+ $mail->SMTPOptions = [
+ 'ssl' => [
+ 'verify_peer' => false,
+ 'verify_peer_name' => false,
+ 'allow_self_signed' => true,
+ ],
+ ];
+ }
+ $mail->Host = $email_details->sending_host; // Specify main and backup SMTP servers
+ $mail->SMTPAuth = true; // Enable SMTP authentication
+ $mail->Username = $email_details->email_address; // SMTP username
+ $mail->Password = \Crypt::decrypt($email_details->password); // SMTP password
+ $mail->SMTPSecure = $email_details->sending_encryption; // Enable TLS encryption, `ssl` also accepted
+ $mail->Port = $email_details->sending_port; // TCP port to connect to
+ $mail->setFrom($email_details->email_address, $email_details->email_name);
+ $mail->addAddress($request->to, ''); // Add a recipient
+ $mail->isHTML(true); // Set email format to HTML
+ $mail->Subject = $request->subject;
+ $mail->Body = utf8_decode($request->message);
+ if (!$mail->send()) {
+ $return = Lang::get('lang.mailer_error') . ': ' . $mail->ErrorInfo;
+ } else {
+ $return = Lang::get('lang.message_has_been_sent');
+ }
+ }
+ return redirect()->back()->with('success', $return);
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
+
}
diff --git a/app/Http/Controllers/Admin/helpdesk/WorkflowController.php b/app/Http/Controllers/Admin/helpdesk/WorkflowController.php
index e83970caa..7583525b4 100644
--- a/app/Http/Controllers/Admin/helpdesk/WorkflowController.php
+++ b/app/Http/Controllers/Admin/helpdesk/WorkflowController.php
@@ -24,6 +24,7 @@ use Datatable;
//classes
use Exception;
use Illuminate\Http\Request;
+use Lang;
/**
* WorkflowController
@@ -60,7 +61,7 @@ class WorkflowController extends Controller
try {
return view('themes.default1.admin.helpdesk.manage.workflow.index');
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -143,18 +144,14 @@ class WorkflowController extends Controller
*/
public function create(Emails $emails)
{
- // dd($emails);
foreach ($emails->lists('email_address', 'id') as $key => $email) {
$email_data["E-$key"] = $email;
}
-// dd($email_data);
-// dd($emails->lists('email_address' , 'id'));
$emails = $email_data;
try {
- // $emails = $emails->get();
return view('themes.default1.admin.helpdesk.manage.workflow.create', compact('emails'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -167,10 +164,9 @@ class WorkflowController extends Controller
*/
public function store(WorkflowCreateRequest $request)
{
- //dd($request);
try {
// store a new workflow credentials in to the system
- $workflow_name = new WorkflowName();
+ $workflow_name = new WorkflowName;
$workflow_name->name = $request->name;
$workflow_name->status = $request->status;
$workflow_name->order = $request->execution_order;
@@ -198,7 +194,7 @@ class WorkflowController extends Controller
$workflow_action->save();
}
- return redirect('workflow')->with('success', 'Workflow Created Successfully');
+ return redirect('workflow')->with('success', Lang::get('lang.workflow_created_successfully'));
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
@@ -222,7 +218,7 @@ class WorkflowController extends Controller
return view('themes.default1.admin.helpdesk.manage.workflow.edit', compact('id', 'workflow', 'emails', 'workflow_rules', 'workflow_actions'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -269,7 +265,7 @@ class WorkflowController extends Controller
$workflow_action->save();
}
- return redirect('workflow')->with('success', 'Workflow Updated Successfully');
+ return redirect('workflow')->with('success', Lang::get('lang.workflow_updated_successfully'));
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
@@ -288,7 +284,7 @@ class WorkflowController extends Controller
$workflow_rules = WorkflowRules::where('workflow_id', '=', $id)->delete();
$workflow = WorkflowName::whereId($id)->delete();
- return redirect('workflow')->with('success', 'Workflow Deleted Successfully');
+ return redirect('workflow')->with('success', Lang::get('lang.workflow_deleted_successfully'));
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
diff --git a/app/Http/Controllers/Agent/helpdesk/CannedController.php b/app/Http/Controllers/Agent/helpdesk/CannedController.php
index f2924280e..76c13de1e 100644
--- a/app/Http/Controllers/Agent/helpdesk/CannedController.php
+++ b/app/Http/Controllers/Agent/helpdesk/CannedController.php
@@ -12,6 +12,7 @@ use App\Model\helpdesk\Agent_panel\Canned;
use App\User;
// classes
use Exception;
+use Lang;
/**
* CannedController.
@@ -46,7 +47,11 @@ class CannedController extends Controller
*/
public function index()
{
- return view('themes.default1.agent.helpdesk.canned.index');
+ try {
+ return view('themes.default1.agent.helpdesk.canned.index');
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
}
/**
@@ -56,7 +61,11 @@ class CannedController extends Controller
*/
public function create()
{
- return view('themes.default1.agent.helpdesk.canned.create');
+ try {
+ return view('themes.default1.agent.helpdesk.canned.create');
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
}
/**
@@ -69,17 +78,17 @@ class CannedController extends Controller
*/
public function store(CannedRequest $request, Canned $canned)
{
- // fetching all the requested inputs
- $canned->user_id = \Auth::user()->id;
- $canned->title = $request->input('title');
- $canned->message = $request->input('message');
try {
+ // fetching all the requested inputs
+ $canned->user_id = \Auth::user()->id;
+ $canned->title = $request->input('title');
+ $canned->message = $request->input('message');
// saving inputs
$canned->save();
- return redirect()->route('canned.list')->with('success', 'Added Successfully');
+ return redirect()->route('canned.list')->with('success', Lang::get('lang.added_successfully'));
} catch (Exception $e) {
- return redirect()->route('canned.list')->with('fails', $e->errorInfo[2]);
+ return redirect()->route('canned.list')->with('fails', $e->getMessage());
}
}
@@ -93,10 +102,14 @@ class CannedController extends Controller
*/
public function edit($id, Canned $canned)
{
- // fetching requested canned response
- $canned = $canned->where('user_id', '=', \Auth::user()->id)->where('id', '=', $id)->first();
+ try {
+ // fetching requested canned response
+ $canned = $canned->where('user_id', '=', \Auth::user()->id)->where('id', '=', $id)->first();
- return view('themes.default1.agent.helpdesk.canned.edit', compact('canned'));
+ return view('themes.default1.agent.helpdesk.canned.edit', compact('canned'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
}
/**
@@ -110,19 +123,19 @@ class CannedController extends Controller
*/
public function update($id, CannedUpdateRequest $request, Canned $canned)
{
- /* select the field where id = $id(request Id) */
- $canned = $canned->where('id', '=', $id)->where('user_id', '=', \Auth::user()->id)->first();
- // fetching all the requested inputs
- $canned->user_id = \Auth::user()->id;
- $canned->title = $request->input('title');
- $canned->message = $request->input('message');
try {
+ /* select the field where id = $id(request Id) */
+ $canned = $canned->where('id', '=', $id)->where('user_id', '=', \Auth::user()->id)->first();
+ // fetching all the requested inputs
+ $canned->user_id = \Auth::user()->id;
+ $canned->title = $request->input('title');
+ $canned->message = $request->input('message');
// saving inputs
$canned->save();
- return redirect()->route('canned.list')->with('success', 'Updated Successfully');
+ return redirect()->route('canned.list')->with('success', Lang::get('lang.updated_successfully'));
} catch (Exception $e) {
- return redirect()->route('canned.list')->with('fails', $e->errorInfo[2]);
+ return redirect()->route('canned.list')->with('fails', $e->getMessage());
}
}
@@ -136,17 +149,17 @@ class CannedController extends Controller
*/
public function destroy($id, Canned $canned)
{
- /* select the field where id = $id(request Id) */
- $canned = $canned->whereId($id)->first();
- /* delete the selected field */
- /* Check whether function success or not */
try {
+ /* select the field where id = $id(request Id) */
+ $canned = $canned->whereId($id)->first();
+ /* delete the selected field */
+ /* Check whether function success or not */
$canned->delete();
/* redirect to Index page with Success Message */
- return redirect()->route('canned.list')->with('success', 'User Deleted Successfully');
+ return redirect()->route('canned.list')->with('success', Lang::get('lang.user_deleted_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect()->route('canned.list')->with('fails', $e->errorInfo[2]);
+ return redirect()->route('canned.list')->with('fails', $e->getMessage());
}
}
diff --git a/app/Http/Controllers/Agent/helpdesk/DashboardController.php b/app/Http/Controllers/Agent/helpdesk/DashboardController.php
index 55a95c3ff..7ca17659e 100644
--- a/app/Http/Controllers/Agent/helpdesk/DashboardController.php
+++ b/app/Http/Controllers/Agent/helpdesk/DashboardController.php
@@ -100,4 +100,52 @@ class DashboardController extends Controller
// ->get();
// return $ticketlist;
}
+
+ public function userChartData($id, $date111 = '', $date122 = '')
+ {
+ $date11 = strtotime($date122);
+ $date12 = strtotime($date111);
+ if ($date11 && $date12) {
+ $date2 = $date12;
+ $date1 = $date11;
+ } else {
+ // generating current date
+ $date2 = strtotime(date('Y-m-d'));
+ $date3 = date('Y-m-d');
+ $format = 'Y-m-d';
+ // generating a date range of 1 month
+ $date1 = strtotime(date($format, strtotime('-1 month'.$date3)));
+ }
+ $return = '';
+ $last = '';
+ for ($i = $date1; $i <= $date2; $i = $i + 86400) {
+ $thisDate = date('Y-m-d', $i);
+ $user = User::whereId($id)->first();
+ if ($user->role == 'user') {
+ $created = \DB::table('tickets')->select('created_at')->where('user_id', '=', $id)->where('created_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $closed = \DB::table('tickets')->select('closed_at')->where('user_id', '=', $id)->where('closed_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $reopened = \DB::table('tickets')->select('reopened_at')->where('user_id', '=', $id)->where('reopened_at', 'LIKE', '%'.$thisDate.'%')->count();
+ } else {
+ $created = \DB::table('tickets')->select('created_at')->where('assigned_to', '=', $id)->where('created_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $closed = \DB::table('tickets')->select('closed_at')->where('assigned_to', '=', $id)->where('closed_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $reopened = \DB::table('tickets')->select('reopened_at')->where('assigned_to', '=', $id)->where('reopened_at', 'LIKE', '%'.$thisDate.'%')->count();
+ }
+ $value = ['date' => $thisDate, 'open' => $created, 'closed' => $closed, 'reopened' => $reopened];
+ $array = array_map('htmlentities', $value);
+ $json = html_entity_decode(json_encode($array));
+ $return .= $json.',';
+ }
+ $last = rtrim($return, ',');
+ $users = User::whereId($id)->first();
+
+ return '['.$last.']';
+
+ // $ticketlist = DB::table('tickets')
+ // ->select(DB::raw('MONTH(updated_at) as month'),DB::raw('SUM(CASE WHEN status = 3 THEN 1 ELSE 0 END) as closed'),DB::raw('SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) as reopened'),DB::raw('SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as open'),DB::raw('SUM(CASE WHEN status = 5 THEN 1 ELSE 0 END) as deleted'),
+ // DB::raw('count(*) as totaltickets'))
+ // ->groupBy('month')
+ // ->orderBy('month', 'asc')
+ // ->get();
+ // return $ticketlist;
+ }
}
diff --git a/app/Http/Controllers/Agent/helpdesk/DashboardController2.php b/app/Http/Controllers/Agent/helpdesk/DashboardController2.php
new file mode 100644
index 000000000..721f61392
--- /dev/null
+++ b/app/Http/Controllers/Agent/helpdesk/DashboardController2.php
@@ -0,0 +1,103 @@
+
+ */
+class DashboardController2 extends Controller
+{
+ /**
+ * Create a new controller instance.
+ * constructor to check
+ * 1. authentication
+ * 2. user roles
+ * 3. roles must be agent.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ // checking for authentication
+ $this->middleware('auth');
+ // checking if the role is agent
+ $this->middleware('role.agent');
+ }
+
+ /**
+ * Get the dashboard page.
+ *
+ * @return type view
+ */
+ public function index()
+ {
+ // if(Auth::user()->role == "user"){
+ // return \Redirect::route('home');
+ // }
+ try {
+ return View::make('themes.default1.agent.helpdesk.dashboard.dashboard');
+ } catch (Exception $e) {
+ return View::make('themes.default1.agent.helpdesk.dashboard.dashboard');
+ }
+ }
+
+ /**
+ * Fetching dashboard graph data to implement graph.
+ *
+ * @return type Json
+ */
+ public function ChartData($date111 = '', $date122 = '')
+ {
+ $date11 = strtotime($date122);
+ $date12 = strtotime($date111);
+ if ($date11 && $date12) {
+ $date2 = $date12;
+ $date1 = $date11;
+ } else {
+ // generating current date
+ $date2 = strtotime(date('Y-m-d'));
+ $date3 = date('Y-m-d');
+ $format = 'Y-m-d';
+ // generating a date range of 1 month
+ $date1 = strtotime(date($format, strtotime('-1 month'.$date3)));
+ }
+ $return = '';
+ $last = '';
+ for ($i = $date1; $i <= $date2; $i = $i + 86400) {
+ $thisDate = date('Y-m-d', $i);
+
+ $created = \DB::table('tickets')->select('created_at')->where('created_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $closed = \DB::table('tickets')->select('closed_at')->where('closed_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $reopened = \DB::table('tickets')->select('reopened_at')->where('reopened_at', 'LIKE', '%'.$thisDate.'%')->count();
+
+ $value = ['date' => $thisDate, 'open' => $created, 'closed' => $closed, 'reopened' => $reopened];
+ $array = array_map('htmlentities', $value);
+ $json = html_entity_decode(json_encode($array));
+ $return .= $json.',';
+ }
+ $last = rtrim($return, ',');
+
+ return '['.$last.']';
+
+ // $ticketlist = DB::table('tickets')
+ // ->select(DB::raw('MONTH(updated_at) as month'),DB::raw('SUM(CASE WHEN status = 3 THEN 1 ELSE 0 END) as closed'),DB::raw('SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) as reopened'),DB::raw('SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as open'),DB::raw('SUM(CASE WHEN status = 5 THEN 1 ELSE 0 END) as deleted'),
+ // DB::raw('count(*) as totaltickets'))
+ // ->groupBy('month')
+ // ->orderBy('month', 'asc')
+ // ->get();
+ // return $ticketlist;
+ }
+}
diff --git a/app/Http/Controllers/Agent/helpdesk/MailController.php b/app/Http/Controllers/Agent/helpdesk/MailController.php
index 76c6f1ced..1095246ac 100644
--- a/app/Http/Controllers/Agent/helpdesk/MailController.php
+++ b/app/Http/Controllers/Agent/helpdesk/MailController.php
@@ -27,16 +27,16 @@ use PhpImap\Mailbox as ImapMailbox;
*
* @author Ladybird
*/
-class MailController extends Controller
-{
+class MailController extends Controller {
+
/**
* constructor
* Create a new controller instance.
*
* @param type TicketController $TicketController
*/
- public function __construct(TicketWorkflowController $TicketWorkflowController)
- {
+ public function __construct(TicketWorkflowController $TicketWorkflowController) {
+ $this->middleware('board');
$this->TicketWorkflowController = $TicketWorkflowController;
}
@@ -45,8 +45,7 @@ class MailController extends Controller
*
* @return type
*/
- public function readmails(Emails $emails, Email $settings_email, System $system, Ticket $ticket)
- {
+ public function readmails(Emails $emails, Email $settings_email, System $system, Ticket $ticket) {
// $path_url = $system->first()->url;
if ($settings_email->first()->email_fetching == 1) {
if ($settings_email->first()->all_emails == 1) {
@@ -81,7 +80,7 @@ class MailController extends Controller
$protocol = $fetching_encryption2;
} else {
if ($e_mail->fetching_protocol) {
- $fetching_protocol = '/'.$e_mail->fetching_protocol;
+ $fetching_protocol = '/' . $e_mail->fetching_protocol;
} else {
$fetching_protocol = '';
}
@@ -90,13 +89,13 @@ class MailController extends Controller
} else {
$fetching_encryption = '';
}
- $protocol = $fetching_protocol.$fetching_encryption;
+ $protocol = $fetching_protocol . $fetching_encryption;
}
- $imap_config = '{'.$host.':'.$port.$protocol.'}INBOX';
+ $imap_config = '{' . $host . ':' . $port . $protocol . '}INBOX';
$password = Crypt::decrypt($e_mail->password);
$mailbox = new ImapMailbox($imap_config, $e_mail->email_address, $password, __DIR__);
$mails = [];
- $mailsIds = $mailbox->searchMailBox('SINCE '.date('d-M-Y', strtotime('-1 day')));
+ $mailsIds = $mailbox->searchMailBox('SINCE ' . date('d-M-Y', strtotime('-1 day')));
if (!$mailsIds) {
die('Mailbox is empty');
}
@@ -111,14 +110,32 @@ class MailController extends Controller
$collaborator = null;
}
$body = $mail->textHtml;
- if ($body == null) {
- $body = $mailbox->backup_getmail($mailId);
- $body = str_replace('\r\n', ' ', $body);
+ if ($body != null) {
+ $body = self::trimTableTag($body);
}
+ // if mail body has no messages fetch backup mail
+ if ($body == null) {
+ $body = $mail->textPlain;
+ }
+ if ($body == null) {
+ $attach = $mail->getAttachments();
+ $path = $attach['html-body']->filePath;
+ if ($path == null) {
+ $path = $attach['text-body']->filePath;
+ }
+
+ $body = file_get_contents($path);
+ //dd($body);
+ $body = self::trimTableTag($body);
+ }
+// if ($body == null) {
+// $body = $mailbox->backup_getmail($mailId);
+// $body = str_replace('\r\n', ' ', $body);
+// }
$date = $mail->date;
$datetime = $overview[0]->date;
$date_time = explode(' ', $datetime);
- $date = $date_time[1].'-'.$date_time[2].'-'.$date_time[3].' '.$date_time[4];
+ $date = $date_time[1] . '-' . $date_time[2] . '-' . $date_time[3] . ' ' . $date_time[4];
$date = date('Y-m-d H:i:s', strtotime($date));
if (isset($mail->subject)) {
$subject = $mail->subject;
@@ -130,19 +147,19 @@ class MailController extends Controller
$ticket_source = Ticket_source::where('name', '=', 'email')->first();
$source = $ticket_source->id;
$phone = '';
-
+ $phonecode = '';
+ $mobile_number = '';
$assign = $get_helptopic->auto_assign;
$form_data = null;
$team_assign = null;
$ticket_status = null;
- $result = $this->TicketWorkflowController->workflow($fromaddress, $fromname, $subject, $body, $phone, $helptopic, $sla, $priority, $source, $collaborator, $dept, $assign, $team_assign, $ticket_status, $form_data, $auto_response);
+ $result = $this->TicketWorkflowController->workflow($fromaddress, $fromname, $subject, $body, $phone, $phonecode, $mobile_number, $helptopic, $sla, $priority, $source, $collaborator, $dept, $assign, $team_assign, $ticket_status, $form_data, $auto_response);
// dd($result);
if ($result[1] == true) {
$ticket_table = Tickets::where('ticket_number', '=', $result[0])->first();
$thread_id = Ticket_Thread::where('ticket_id', '=', $ticket_table->id)->max('id');
// $thread_id = Ticket_Thread::whereRaw('id = (select max(`id`) from ticket_thread)')->first();
$thread_id = $thread_id;
-
foreach ($mail->getAttachments() as $attachment) {
$support = 'support';
// echo $_SERVER['DOCUMENT_ROOT'];
@@ -153,7 +170,7 @@ class MailController extends Controller
// var_dump($attachment->filePath);
// dd($filepath);
// $path = $dir_img_path[0]."/code/public/".$filepath[1];
- $path = public_path().$filepath[1];
+ $path = public_path() . $filepath[1];
// dd($path);
$filesize = filesize($path);
$file_data = file_get_contents($path);
@@ -162,9 +179,8 @@ class MailController extends Controller
$string = str_replace('-', '', $attachment->name);
$filename = explode('src', $attachment->filePath);
$filename = str_replace('\\', '', $filename);
- $body = str_replace('cid:'.$imageid, $filepath[1], $body);
+ $body = str_replace('cid:' . $imageid, $filepath[1], $body);
$pos = strpos($body, $filepath[1]);
-
if ($pos == false) {
if ($settings_email->first()->attachment == 1) {
$upload = new Ticket_attachments();
@@ -208,8 +224,7 @@ class MailController extends Controller
*
* @return type string
*/
- public function separate_reply($body)
- {
+ public function separate_reply($body) {
$body2 = explode('---Reply above this line---', $body);
$body3 = $body2[0];
@@ -223,8 +238,7 @@ class MailController extends Controller
*
* @return type string
*/
- public function decode_imap_text($str)
- {
+ public function decode_imap_text($str) {
$result = '';
$decode_header = imap_mime_header_decode($str);
foreach ($decode_header as $obj) {
@@ -239,8 +253,7 @@ class MailController extends Controller
*
* @return type
*/
- public function fetch_attachments()
- {
+ public function fetch_attachments() {
$uploads = Upload::all();
foreach ($uploads as $attachment) {
$image = @imagecreatefromstring($attachment->file);
@@ -248,8 +261,8 @@ class MailController extends Controller
imagejpeg($image, null, 80);
$data = ob_get_contents();
ob_end_clean();
- $var = ' ';
- echo ''.$var.' ';
+ $var = ' ';
+ echo '' . $var . ' ';
}
}
@@ -260,14 +273,42 @@ class MailController extends Controller
*
* @return type file
*/
- public function get_data($id)
- {
+ public function get_data($id) {
$attachments = App\Model\helpdesk\Ticket\Ticket_attachments::where('id', '=', $id)->get();
foreach ($attachments as $attachment) {
- header('Content-type: application/'.$attachment->type.'');
- header('Content-Disposition: inline; filename='.$attachment->name.'');
+ header('Content-type: application/' . $attachment->type . '');
+ header('Content-Disposition: inline; filename=' . $attachment->name . '');
header('Content-Transfer-Encoding: binary');
echo $attachment->file;
}
}
+
+ public static function trimTableTag($html) {
+ if (strpos('', $html) != false) {
+ $first_pos = strpos($html, '', -1);
+ $total = strlen($fist_string);
+ $diff = $total - $last_pos;
+ $str = substr_replace($fist_string, '', $last_pos, -1);
+ $final_str = str_finish($str, '
');
+ return $final_str;
+ }
+ return $html;
+ }
+
+ public static function trim3D($html) {
+ $body = str_replace('=3D', '', $html);
+ return $body;
+ }
+
+ public static function trimInjections($html, $tags = ['', '', '']) {
+ $replace = [];
+ foreach ($tags as $key => $tag) {
+ $replace[$key] = htmlspecialchars($tag);
+ }
+ $body = str_replace($tags, $replace, $html);
+ return $body;
+ }
+
}
diff --git a/app/Http/Controllers/Agent/helpdesk/OrganizationController.php b/app/Http/Controllers/Agent/helpdesk/OrganizationController.php
index bfb5a1c98..94c11c29f 100644
--- a/app/Http/Controllers/Agent/helpdesk/OrganizationController.php
+++ b/app/Http/Controllers/Agent/helpdesk/OrganizationController.php
@@ -11,10 +11,12 @@ use App\Http\Requests\helpdesk\OrganizationUpdate;
// models
/* Define OrganizationRequest to validate the create form */
use App\Model\helpdesk\Agent_panel\Organization;
-/* Define OrganizationUpdate to validate the create form */
use App\Model\helpdesk\Agent_panel\User_org;
+/* Define OrganizationUpdate to validate the create form */
+use App\User;
// classes
use Exception;
+use Lang;
/**
* OrganizationController
@@ -54,7 +56,7 @@ class OrganizationController extends Controller
/* get all values of table organization */
return view('themes.default1.agent.helpdesk.organization.index');
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -131,7 +133,7 @@ class OrganizationController extends Controller
try {
return view('themes.default1.agent.helpdesk.organization.create');
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -150,14 +152,14 @@ class OrganizationController extends Controller
/* Check whether function success or not */
if ($org->fill($request->input())->save() == true) {
/* redirect to Index page with Success Message */
- return redirect('organizations')->with('success', 'Organization Created Successfully');
+ return redirect('organizations')->with('success', Lang::get('lang.organization_created_successfully'));
} else {
/* redirect to Index page with Fails Message */
- return redirect('organizations')->with('fails', 'Organization can not Create');
+ return redirect('organizations')->with('fails', Lang::get('lang.organization_can_not_create'));
}
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('organizations')->with('fails', 'Organization can not Create');
+ return redirect('organizations')->with('fails', Lang::get('lang.organization_can_not_create'));
}
}
@@ -177,7 +179,7 @@ class OrganizationController extends Controller
/* To view page */
return view('themes.default1.agent.helpdesk.organization.show', compact('orgs'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -197,7 +199,7 @@ class OrganizationController extends Controller
/* To view page */
return view('themes.default1.agent.helpdesk.organization.edit', compact('orgs'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -212,22 +214,22 @@ class OrganizationController extends Controller
*/
public function update($id, Organization $org, OrganizationUpdate $request)
{
-
- /* select the field by id */
- $orgs = $org->whereId($id)->first();
- /* update the organization table */
- /* Check whether function success or not */
try {
+ /* select the field by id */
+ $orgs = $org->whereId($id)->first();
+ /* update the organization table */
+ /* Check whether function success or not */
if ($orgs->fill($request->input())->save() == true) {
/* redirect to Index page with Success Message */
- return redirect('organizations')->with('success', 'Organization Updated Successfully');
+ return redirect('organizations')->with('success', Lang::get('lang.organization_updated_successfully'));
} else {
/* redirect to Index page with Fails Message */
- return redirect('organizations')->with('fails', 'Organization can not Update');
+ return redirect('organizations')->with('fails', Lang::get('lang.organization_can_not_update'));
}
} catch (Exception $e) {
+ // dd($e);
/* redirect to Index page with Fails Message */
- return redirect('organizations')->with('fails', $e->errorInfo[2]);
+ return redirect('organizations')->with('fails', $e->getMessage());
}
}
@@ -240,22 +242,21 @@ class OrganizationController extends Controller
*/
public function destroy($id, Organization $org, User_org $user_org)
{
-
- /* select the field by id */
- $orgs = $org->whereId($id)->first();
- $user_orgs = $user_org->where('org_id', '=', $id)->get();
- foreach ($user_orgs as $user_org) {
- $user_org->delete();
- }
- /* Delete the field selected from the table */
- /* Check whether function success or not */
try {
+ /* select the field by id */
+ $orgs = $org->whereId($id)->first();
+ $user_orgs = $user_org->where('org_id', '=', $id)->get();
+ foreach ($user_orgs as $user_org) {
+ $user_org->delete();
+ }
+ /* Delete the field selected from the table */
+ /* Check whether function success or not */
$orgs->delete();
/* redirect to Index page with Success Message */
- return redirect('organizations')->with('success', 'Organization Deleted Successfully');
+ return redirect('organizations')->with('success', Lang::get('lang.organization_deleted_successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('organizations')->with('fails', $e->errorInfo[2]);
+ return redirect('organizations')->with('fails', $e->getMessage());
}
}
@@ -278,4 +279,53 @@ class OrganizationController extends Controller
return 1;
}
+
+ /**
+ * get the report of organizations.
+ *
+ * @param type $id
+ * @param type $date111
+ * @param type $date122
+ *
+ * @return type array
+ */
+ public function orgChartData($id, $date111 = '', $date122 = '')
+ {
+ $date11 = strtotime($date122);
+ $date12 = strtotime($date111);
+ if ($date11 && $date12) {
+ $date2 = $date12;
+ $date1 = $date11;
+ } else {
+ // generating current date
+ $date2 = strtotime(date('Y-m-d'));
+ $date3 = date('Y-m-d');
+ $format = 'Y-m-d';
+ // generating a date range of 1 month
+ $date1 = strtotime(date($format, strtotime('-1 month'.$date3)));
+ }
+ $return = '';
+ $last = '';
+ for ($i = $date1; $i <= $date2; $i = $i + 86400) {
+ $thisDate = date('Y-m-d', $i);
+
+ $user_orga_relation_id = '';
+ $user_orga_relations = User_org::where('org_id', '=', $id)->get();
+ foreach ($user_orga_relations as $user_orga_relation) {
+ $user_orga_relation_id[] = $user_orga_relation->user_id;
+ }
+ $created = \DB::table('tickets')->select('created_at')->whereIn('user_id', $user_orga_relation_id)->where('created_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $closed = \DB::table('tickets')->select('closed_at')->whereIn('user_id', $user_orga_relation_id)->where('closed_at', 'LIKE', '%'.$thisDate.'%')->count();
+ $reopened = \DB::table('tickets')->select('reopened_at')->whereIn('user_id', $user_orga_relation_id)->where('reopened_at', 'LIKE', '%'.$thisDate.'%')->count();
+
+ $value = ['date' => $thisDate, 'open' => $created, 'closed' => $closed, 'reopened' => $reopened];
+ $array = array_map('htmlentities', $value);
+ $json = html_entity_decode(json_encode($array));
+ $return .= $json.',';
+ }
+ $last = rtrim($return, ',');
+ $users = User::whereId($id)->first();
+
+ return '['.$last.']';
+ }
}
diff --git a/app/Http/Controllers/Agent/helpdesk/TicketController.php b/app/Http/Controllers/Agent/helpdesk/TicketController.php
index 1f2618807..a6a19d201 100644
--- a/app/Http/Controllers/Agent/helpdesk/TicketController.php
+++ b/app/Http/Controllers/Agent/helpdesk/TicketController.php
@@ -9,8 +9,8 @@ use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\CreateTicketRequest;
use App\Http\Requests\helpdesk\TicketRequest;
-// models
use App\Model\helpdesk\Agent\Department;
+// models
use App\Model\helpdesk\Agent\Teams;
use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Form\Fields;
@@ -28,14 +28,18 @@ use App\Model\helpdesk\Ticket\Ticket_source;
use App\Model\helpdesk\Ticket\Ticket_Status;
use App\Model\helpdesk\Ticket\Ticket_Thread;
use App\Model\helpdesk\Ticket\Tickets;
+use App\Model\helpdesk\Utility\CountryCode;
use App\Model\helpdesk\Utility\Date_time_format;
use App\Model\helpdesk\Utility\Timezones;
use App\User;
use Auth;
use DB;
use Exception;
+use ForceUTF8\Encoding;
+use GeoIP;
// classes
use Hash;
+use Illuminate\Http\Request;
use Illuminate\support\Collection;
use Input;
use Lang;
@@ -160,6 +164,11 @@ class TicketController extends Controller
return view('themes.default1.agent.helpdesk.ticket.overdue');
}
+ /**
+ * Ajax response overdue tickets.
+ *
+ * @return type json
+ */
public function getOverdueTickets()
{
if (Auth::user()->role == 'agent') {
@@ -242,9 +251,12 @@ class TicketController extends Controller
*
* @return type response
*/
- public function newticket()
+ public function newticket(CountryCode $code)
{
- return view('themes.default1.agent.helpdesk.ticket.new');
+ $location = GeoIP::getLocation();
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
+
+ return view('themes.default1.agent.helpdesk.ticket.new')->with('phonecode', $phonecode->phonecode);
}
/**
@@ -254,7 +266,7 @@ class TicketController extends Controller
*
* @return type response
*/
- public function post_newticket(CreateTicketRequest $request)
+ public function post_newticket(CreateTicketRequest $request, CountryCode $code)
{
try {
$email = $request->input('email');
@@ -271,15 +283,41 @@ class TicketController extends Controller
$body = $request->input('body');
$priority = $request->input('priority');
$phone = $request->input('phone');
+ $phonecode = $request->input('code');
+ $mobile_number = $request->input('mobile');
$source = Ticket_source::where('name', '=', 'agent')->first();
$headers = null;
$help = Help_topic::where('id', '=', $helptopic)->first();
$form_data = null;
$auto_response = 0;
$status = 1;
+ if ($phone != null || $mobile_number != null) {
+ $location = GeoIP::getLocation();
+ $geoipcode = $code->where('iso', '=', $location['isoCode'])->first();
+ if ($phonecode == null) {
+ $data = [
+ 'fails' => Lang::get('lang.country-code-required-error'),
+ 'phonecode' => $geoipcode->phonecode,
+ 'country_code_error' => 1,
+ ];
+
+ return Redirect()->back()->with($data)->withInput($request->except('password'));
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $phonecode)->get();
+ if (!count($code)) {
+ $data = [
+ 'fails' => Lang::get('lang.incorrect-country-code-error'),
+ 'phonecode' => $geoipcode->phonecode,
+ 'country_code_error' => 1,
+ ];
+
+ return Redirect()->back()->with($data)->withInput($request->except('password'));
+ }
+ }
+ }
//create user
- if ($this->create_user($email, $fullname, $subject, $body, $phone, $helptopic, $sla, $priority, $source->id, $headers, $help->department, $assignto, $form_data, $auto_response, $status)) {
- return Redirect('newticket')->with('success', 'Ticket created successfully!');
+ if ($this->create_user($email, $fullname, $subject, $body, $phone, $phonecode, $mobile_number, $helptopic, $sla, $priority, $source->id, $headers, $help->department, $assignto, $form_data, $auto_response, $status)) {
+ return Redirect('newticket')->with('success', Lang::get('lang.Ticket-created-successfully'));
} else {
return Redirect('newticket')->with('fails', 'fails');
}
@@ -549,12 +587,11 @@ class TicketController extends Controller
*
* @return type bool
*/
- public function create_user($emailadd, $username, $subject, $body, $phone, $helptopic, $sla, $priority, $source, $headers, $dept, $assignto, $from_data, $auto_response, $status)
+ public function create_user($emailadd, $username, $subject, $body, $phone, $phonecode, $mobile_number, $helptopic, $sla, $priority, $source, $headers, $dept, $assignto, $from_data, $auto_response, $status)
{
// define global variables
$email;
$username;
-
// check emails
$ticket_creator = $username;
$checkemail = $this->checkEmail($emailadd);
@@ -571,6 +608,7 @@ class TicketController extends Controller
$user->email = $emailadd;
$user->password = Hash::make($password);
$user->phone_number = $phone;
+ $user->country_code = $phonecode;
$user->role = 'user';
$user->active = '1';
// mail user his/her password
@@ -607,7 +645,6 @@ class TicketController extends Controller
} else {
$sign = $company;
}
-
if ($source == 3) {
try {
if ($auto_response == 0) {
@@ -667,7 +704,7 @@ class TicketController extends Controller
$emails_to_be_sent = array_unique($set_mails, SORT_REGULAR);
foreach ($emails_to_be_sent as $email_data) {
try {
- $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['user' => $email_data['to_user'], 'email' => $email_data['to_email']], $message = ['subject' => $updated_subject, 'body' => $body, 'scenario' => $mail], $template_variables = ['ticket_agent_name' => $email_data['to_user_name'], 'ticket_client_name' => $username, 'ticket_client_email' => $emailadd, 'user' => $email_data['to_user_name'], 'ticket_number' => $ticket_number2, 'email_address' => $emailadd, 'name' => $ticket_creator]);
+ $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['user' => $email_data['to_user'], 'email' => $email_data['to_email']], $message = ['subject' => $updated_subject, 'body' => Encoding::fixUTF8($body), 'scenario' => $mail], $template_variables = ['ticket_agent_name' => $email_data['to_user_name'], 'ticket_client_name' => $username, 'ticket_client_email' => $emailadd, 'user' => $email_data['to_user_name'], 'ticket_number' => $ticket_number2, 'email_address' => $emailadd, 'name' => $ticket_creator]);
} catch (\Exception $e) {
}
}
@@ -870,6 +907,7 @@ class TicketController extends Controller
$thread->title = $subject;
$thread->body = $body;
if ($thread->save()) {
+ \Event::fire('ticket.details', ['ticket' => $thread]); //get the ticket details
return true;
}
}
@@ -925,7 +963,6 @@ class TicketController extends Controller
$ticket_number = $ticket_status->ticket_number;
$system_from = $this->company();
-
$sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first();
if ($sending_emails == null) {
$from_email = $this->system_mail();
@@ -1409,9 +1446,9 @@ class TicketController extends Controller
$ticket_collaborator->role = 'ccc';
$ticket_collaborator->save();
- return '× Success! '.$data->user_name.''.$data->email.'
';
+ return '× Success! '.$data->user_name.''.$data->email.'
';
} else {
- return '× '.$data->user_name.''.$data->email.' This user already Collaborated
';
+ return '× '.$data->user_name.''.$data->email.' This user already Collaborated
';
}
}
@@ -1429,7 +1466,7 @@ class TicketController extends Controller
$ticket_id = Input::get('ticket_id');
$user_search = User::where('email', '=', $email)->first();
if (isset($user_serach)) {
- return '× Alert!This user already Exists
';
+ return '× Alert!This user already Exists
';
} else {
$company = $this->company();
$user = new User();
@@ -1451,7 +1488,7 @@ class TicketController extends Controller
$ticket_collaborator->role = 'ccc';
$ticket_collaborator->save();
- return '× '.$user->user_name.''.$user->email.'
';
+ return '× '.$user->user_name.''.$user->email.'
';
}
}
@@ -1495,7 +1532,7 @@ class TicketController extends Controller
$ticket->closed = 0;
$ticket->closed_at = null;
$ticket->save();
- } elseif ($value == 'Clean up') {
+ } elseif ($value == 'Delete forever') {
$thread = Ticket_Thread::where('ticket_id', '=', $ticket->id)->get();
foreach ($thread as $th_id) {
// echo $th_id->id." ";
@@ -1560,9 +1597,9 @@ class TicketController extends Controller
}
/**
- *adding offset to updated_at time.
+ * adding offset to updated_at time.
*
- *@return date
+ * @return date
*/
public static function timeOffset($utc)
{
@@ -1578,7 +1615,7 @@ class TicketController extends Controller
/**
* to get user date time format.
*
- *@return string
+ * @return string
*/
public static function getDateTimeFormat()
{
@@ -1664,9 +1701,32 @@ class TicketController extends Controller
*
* @return type Redirect
*/
- public function rating($id, $rating)
+ public function rating($id, Request $request, \App\Model\helpdesk\Ratings\RatingRef $rating_ref)
{
- Tickets::where('id', $id)->update(['rating' => $rating]);
+ foreach ($request->all() as $key => $value) {
+ if (strpos($key, '_') !== false) {
+ $ratName = str_replace('_', ' ', $key);
+ } else {
+ $ratName = $key;
+ }
+ $ratID = \App\Model\helpdesk\Ratings\Rating::where('name', '=', $ratName)->first();
+ $ratingrefs = $rating_ref->where('rating_id', '=', $ratID->id)->where('ticket_id', '=', $id)->first();
+ if ($ratingrefs !== null) {
+ $ratingrefs->rating_id = $ratID->id;
+ $ratingrefs->ticket_id = $id;
+
+ $ratingrefs->thread_id = '0';
+ $ratingrefs->rating_value = $value;
+ $ratingrefs->save();
+ } else {
+ $rating_ref->rating_id = $ratID->id;
+ $rating_ref->ticket_id = $id;
+
+ $rating_ref->thread_id = '0';
+ $rating_ref->rating_value = $value;
+ $rating_ref->save();
+ }
+ }
return redirect()->back()->with('Success', 'Thank you for your rating!');
}
@@ -1676,17 +1736,37 @@ class TicketController extends Controller
*
* @return type Redirect
*/
- public function ratingReply($id, $rating)
+ public function ratingReply($id, Request $request, \App\Model\helpdesk\Ratings\RatingRef $rating_ref)
{
- $thread = Ticket_Thread::whereId($id)->first();
-// $last_average = $thread->reply_rating;
-//$total_numbers = $thread->rating_count;
-//$new_number = $rating;
-//$new_average = (($last_average * $total_numbers) + $new_number) / ($total_numbers + 1);
-//$thread->rating_count += 1;
-$thread->reply_rating = $rating;
- $thread->save();
-// $thread->set('rating_count', 'rating_count+1', FALSE)->update(['ratingreply' => $new_average]);
+ foreach ($request->all() as $key => $value) {
+ $key1 = explode(',', $key);
+ if (strpos($key1[0], '_') !== false) {
+ $ratName = str_replace('_', ' ', $key1[0]);
+ } else {
+ $ratName = $key1[0];
+ }
+
+ $ratID = \App\Model\helpdesk\Ratings\Rating::where('name', '=', $ratName)->first();
+ $ratingrefs = $rating_ref->where('rating_id', '=', $ratID->id)->where('thread_id', '=', $key1[1])->first();
+
+ if ($ratingrefs !== null) {
+ $ratingrefs->rating_id = $ratID->id;
+ $ratingrefs->ticket_id = $id;
+
+ $ratingrefs->thread_id = $key1[1];
+ $ratingrefs->rating_value = $value;
+ $ratingrefs->save();
+ } else {
+ $rating_ref->rating_id = $ratID->id;
+ $rating_ref->ticket_id = $id;
+
+ $rating_ref->thread_id = $key1[1];
+ $rating_ref->rating_value = $value;
+ $rating_ref->save();
+ }
+ }
+
+
return redirect()->back()->with('Success', 'Thank you for your rating!');
}
@@ -1721,7 +1801,14 @@ $thread->reply_rating = $rating;
$diff = round(abs($to_time - $from_time) / 60, 2);
if ($diff < $cad && Auth::user()->id != $ticket->lock_by) {
- return 0; //ticket is locked
+ $user_data = User::select('user_name', 'first_name', 'last_name')->where('id', '=', $ticket->lock_by)->first();
+ if ($user_data->first_name != '') {
+ $name = $user_data->first_name.' '.$user_data->last_name;
+ } else {
+ $name = $user_data->username;
+ }
+
+ return Lang::get('lang.locked-ticket')." lock_by)."'>".$name.' '.$diff.' '.Lang::get('lang.minutes-ago'); //ticket is locked
} elseif ($diff < $cad && Auth::user()->id == $ticket->lock_by) {
$ticket = Tickets::where('id', '=', $id)->first();
$ticket->lock_at = date('Y-m-d H:i:s');
@@ -1798,8 +1885,8 @@ $thread->reply_rating = $rating;
if (Alert::first()->internal_status == 1 || Alert::first()->internal_assigned_agent == 1) {
// ticket assigned send mail
Mail::send('emails.Ticket_assign', ['agent' => $agent, 'ticket_number' => $ticket_number, 'from' => $company, 'master' => $master, 'system' => $system], function ($message) use ($agent_email, $agent, $ticket_number, $ticket_subject) {
- $message->to($agent_email, $agent)->subject($ticket_subject.'[#'.$ticket_number.']');
- });
+ $message->to($agent_email, $agent)->subject($ticket_subject.'[#'.$ticket_number.']');
+ });
}
return 1;
@@ -1821,15 +1908,14 @@ $thread->reply_rating = $rating;
$email = $email;
$ticket_id = $ticket_id;
$validator = \Validator::make(
- ['email' => $email,
- 'name' => $name, ],
- ['email' => 'required|email',
- ]
+ ['email' => $email,
+ 'name' => $name, ], ['email' => 'required|email',
+ ]
);
$user = User::where('email', '=', $email)->first();
$count = count($user);
if ($count === 1) {
- return 0;
+ return 0;
} elseif ($validator->fails()) {
return 2;
} else {
@@ -1863,7 +1949,7 @@ $thread->reply_rating = $rating;
} else {
$ticket = Tickets::select('user_id')->where('id', '=', $id)->first();
$ticket_data = Tickets::select('ticket_number', 'id')
- ->where('user_id', '=', $ticket->user_id)->where('id', '!=', $id)->where('status', '=', 1)->get();
+ ->where('user_id', '=', $ticket->user_id)->where('id', '!=', $id)->where('status', '=', 1)->get();
foreach ($ticket_data as $value) {
$title = Ticket_Thread::select('title')->where('ticket_id', '=', $value->id)->first();
echo "".$title->title.' ';
@@ -1896,9 +1982,9 @@ $thread->reply_rating = $rating;
} else {
$ticket = Tickets::select('user_id')->where('id', '=', $id)->first();
$ticket_data = Tickets::select('ticket_number', 'id')
- ->where('user_id', '=', $ticket->user_id)
- ->where('id', '!=', $id)
- ->where('status', '=', 1)->get();
+ ->where('user_id', '=', $ticket->user_id)
+ ->where('id', '!=', $id)
+ ->where('status', '=', 1)->get();
if (isset($ticket_data) && count($ticket_data) >= 1) {
return 1;
} else {
@@ -1936,13 +2022,13 @@ $thread->reply_rating = $rating;
$thread = Ticket_thread::where('ticket_id', '=', $value)->first();
$ticket = Tickets::select('ticket_number')->where('id', '=', $value)->first();
Ticket_thread::where('ticket_id', '=', $value)
- ->update(['ticket_id' => $p_id]);
+ ->update(['ticket_id' => $p_id]);
Ticket_Form_Data::where('ticket_id', '=', $value)
- ->update(['ticket_id' => $p_id]);
+ ->update(['ticket_id' => $p_id]);
Ticket_Collaborator::where('ticket_id', '=', $value)
- ->update(['ticket_id' => $p_id]);
+ ->update(['ticket_id' => $p_id]);
Tickets::where('id', '=', $value)
- ->update(['status' => 3]);
+ ->update(['status' => 3]);
if (!empty(Input::get('reason'))) {
$reason = Input::get('reason');
} else {
@@ -1950,7 +2036,7 @@ $thread->reply_rating = $rating;
}
if (!empty(Input::get('title'))) {
Ticket_thread::where('ticket_id', '=', $p_id)->first()
- ->update(['title' => Input::get('title')]);
+ ->update(['title' => Input::get('title')]);
}
$new_thread = new Ticket_thread();
@@ -1961,8 +2047,8 @@ $thread->reply_rating = $rating;
$new_thread->is_internal = 0;
$new_thread->title = $thread->title;
$new_thread->body = Lang::get('lang.get_merge_message').
- " #".$parent_ticket->ticket_number.' '.Lang::get('lang.merge-reason').' '.$reason;
+ " #".$parent_ticket->ticket_number.' '.Lang::get('lang.merge-reason').': '.$reason;
$new_thread->format = $thread->format;
$new_thread->ip_address = $thread->ip_address;
@@ -1973,7 +2059,7 @@ $thread->reply_rating = $rating;
$new_parent_thread->source = $parent_thread->source;
$new_parent_thread->is_internal = 1;
$new_parent_thread->title = $thread->title;
- $new_parent_thread->body = Lang::get('lang.ticket')." #".$ticket->ticket_number.'  '.Lang::get('lang.ticket_merged').''.Lang::get('lang.merge-reason').' '.$reason;
+ $new_parent_thread->body = Lang::get('lang.ticket')." #".$ticket->ticket_number.'  '.Lang::get('lang.ticket_merged').''.Lang::get('lang.merge-reason').': '.$reason;
$new_parent_thread->format = $parent_thread->format;
$new_parent_thread->ip_address = $parent_thread->ip_address;
if ($new_thread->save() && $new_parent_thread->save()) {
@@ -1998,16 +2084,17 @@ $thread->reply_rating = $rating;
}
/*
- *chumper's function to return data to chumper datatable.
- *@param Array-object $tickets
+ * chumper's function to return data to chumper datatable.
+ * @param Array-object $tickets
*
- *@return Array-object
+ * @return Array-object
*/
+
public static function getTable($tickets)
{
return \Datatable::collection(new Collection($tickets))
->addColumn('id', function ($ticket) {
- return " ";
+ return " ";
})
->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
@@ -2063,8 +2150,9 @@ $thread->reply_rating = $rating;
})
->addColumn('from', function ($ticket) {
$from = DB::table('users')->select('user_name')->where('id', '=', $ticket->user_id)->first();
+ $url = route('user.show', $ticket->user_id);
- return "user_name).'''.Lang::get('lang.see-profile2')."'>".ucfirst($from->user_name).' ';
+ return "user_name).'''.Lang::get('lang.see-profile2')."'>".ucfirst($from->user_name).' ';
})
// ->addColumn('Last Replier', function ($ticket) {
// $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->where('is_internal', '=', 0)->max('id');
@@ -2080,7 +2168,6 @@ $thread->reply_rating = $rating;
// $username = $LastResponse->user_name;
// }
// }
-
// return "".ucfirst($username).' ';
// })
->addColumn('assigned_to', function ($ticket) {
@@ -2088,8 +2175,9 @@ $thread->reply_rating = $rating;
return "Unassigned ";
} else {
$assign = DB::table('users')->where('id', '=', $ticket->assigned_to)->first();
+ $url = route('user.show', $ticket->assigned_to);
- return "first_name).'''.Lang::get('lang.see-profile2')."'>".ucfirst($assign->first_name).' '.ucfirst($assign->last_name).' ';
+ return "first_name).'''.Lang::get('lang.see-profile2')."'>".ucfirst($assign->first_name).' '.ucfirst($assign->last_name).' ';
}
})
->addColumn('Last', function ($ticket) {
@@ -2103,4 +2191,42 @@ $thread->reply_rating = $rating;
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
->make();
}
+
+ //Auto-close tickets
+ public function autoCloseTickets()
+ {
+ $workflow = \App\Model\helpdesk\Workflow\WorkflowClose::whereId(1)->first();
+
+ if ($workflow->condition == 1) {
+ $overdues = Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->orderBy('id', 'DESC')->get();
+ if (count($overdues) == 0) {
+ $tickets = null;
+ } else {
+ $i = 0;
+ foreach ($overdues as $overdue) {
+ // $sla_plan = Sla_plan::where('id', '=', $overdue->sla)->first();
+
+ $ovadate = $overdue->created_at;
+ $new_date = date_add($ovadate, date_interval_create_from_date_string($workflow->days.' days')).' ';
+ if (date('Y-m-d H:i:s') > $new_date) {
+ $i++;
+ $overdue->status = 3;
+ $overdue->closed = 1;
+ $overdue->closed_at = date('Y-m-d H:i:s');
+ $overdue->save();
+// if($workflow->send_email == 1) {
+// $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $overdue->dept_id), $to = ['name' => $user_name, 'email' => $email], $message = ['subject' => $ticket_subject.'[#'.$ticket_number.']', 'scenario' => 'close-ticket'], $template_variables = ['ticket_number' => $ticket_number]);
+// }
+ }
+ }
+ // dd(count($value));
+// if ($i > 0) {
+// $tickets = new collection($value);
+// } else {
+// $tickets = null;
+// }
+ }
+ } else {
+ }
+ }
}
diff --git a/app/Http/Controllers/Agent/helpdesk/TicketWorkflowController.php b/app/Http/Controllers/Agent/helpdesk/TicketWorkflowController.php
index 93ed3f1f1..15b8611d5 100644
--- a/app/Http/Controllers/Agent/helpdesk/TicketWorkflowController.php
+++ b/app/Http/Controllers/Agent/helpdesk/TicketWorkflowController.php
@@ -40,7 +40,7 @@ class TicketWorkflowController extends Controller
*
* @return type response
*/
- public function workflow($fromaddress, $fromname, $subject, $body, $phone, $helptopic, $sla, $priority, $source, $collaborator, $dept, $assign, $team_assign, $ticket_status, $form_data, $auto_response)
+ public function workflow($fromaddress, $fromname, $subject, $body, $phone, $phonecode, $mobile_number, $helptopic, $sla, $priority, $source, $collaborator, $dept, $assign, $team_assign, $ticket_status, $form_data, $auto_response)
{
$contact_details = ['email' => $fromaddress, 'email_name' => $fromname, 'subject' => $subject, 'message' => $body];
$ticket_settings_details = ['help_topic' => $helptopic, 'sla' => $sla, 'priority' => $priority, 'source' => $source, 'dept' => $dept, 'assign' => $assign, 'team' => $team_assign, 'status' => $ticket_status, 'reject' => false];
@@ -169,7 +169,7 @@ class TicketWorkflowController extends Controller
if ($ticket_settings_details['reject'] == true) {
return ['0' => false, '1' => false];
} else {
- $create_ticket = $this->TicketController->create_user($contact_details['email'], $contact_details['email_name'], $contact_details['subject'], $contact_details['message'], $phone, $ticket_settings_details['help_topic'], $ticket_settings_details['sla'], $ticket_settings_details['priority'], $source, $collaborator, $ticket_settings_details['dept'], $ticket_settings_details['assign'], $form_data, $auto_response, $ticket_settings_details['status']);
+ $create_ticket = $this->TicketController->create_user($contact_details['email'], $contact_details['email_name'], $contact_details['subject'], $contact_details['message'], $phone, $phonecode, $mobile_number, $ticket_settings_details['help_topic'], $ticket_settings_details['sla'], $ticket_settings_details['priority'], $source, $collaborator, $ticket_settings_details['dept'], $ticket_settings_details['assign'], $form_data, $auto_response, $ticket_settings_details['status']);
return $create_ticket;
}
diff --git a/app/Http/Controllers/Agent/helpdesk/UserController.php b/app/Http/Controllers/Agent/helpdesk/UserController.php
index 0aa9df39b..46e9b5d18 100644
--- a/app/Http/Controllers/Agent/helpdesk/UserController.php
+++ b/app/Http/Controllers/Agent/helpdesk/UserController.php
@@ -16,12 +16,15 @@ use App\Http\Requests\helpdesk\Sys_userUpdate;
// models
use App\Model\helpdesk\Agent_panel\Organization;
use App\Model\helpdesk\Agent_panel\User_org;
+use App\Model\helpdesk\Utility\CountryCode;
use App\User;
// classes
use Auth;
use Exception;
+use GeoIP;
use Hash;
use Input;
+use Lang;
use Redirect;
/**
@@ -62,7 +65,7 @@ class UserController extends Controller
/* get all values in Sys_user */
return view('themes.default1.agent.helpdesk.user.index');
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -75,24 +78,24 @@ class UserController extends Controller
{
// displaying list of users with chumper datatables
return \Datatable::collection(User::where('role', '!=', 'admin')->where('role', '!=', 'agent')->get())
- /* searchable column username and email*/
+ /* searchable column username and email */
->searchColumns('user_name', 'email', 'phone')
/* order column username and email */
->orderColumns('user_name', 'email')
/* column username */
->addColumn('user_name', function ($model) {
- if (strlen($model->user_name) > 20) {
- $username = substr($model->user_name, 0, 30);
- $username = substr($username, 0, strrpos($username, ' ')).' ...';
+ $string = strip_tags($model->user_name);
+ if (strlen($string) > 10) {
+ // truncate string
+ $stringCut = substr($string, 0, 10);
} else {
- $username = "id)."'>".$model->user_name.' ';
+ $stringCut = $model->user_name;
}
-
- return $username;
+ return $stringCut;
})
/* column email */
->addColumn('email', function ($model) {
- $email = "id)."'>".$model->email.' ';
+ $email = "id)."'>".$model->email.' ';
return $email;
})
@@ -150,10 +153,13 @@ class UserController extends Controller
*
* @return type view
*/
- public function create()
+ public function create(CountryCode $code)
{
try {
- return view('themes.default1.agent.helpdesk.user.create');
+ $location = GeoIP::getLocation('');
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
+
+ return view('themes.default1.agent.helpdesk.user.create')->with('phonecode', $phonecode->phonecode);
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->errorInfo[2]);
}
@@ -176,16 +182,25 @@ class UserController extends Controller
$user->mobile = $request->input('mobile');
$user->ext = $request->input('ext');
$user->phone_number = $request->input('phone_number');
+ $user->country_code = $request->input('country_code');
$user->active = $request->input('active');
$user->internal_note = $request->input('internal_note');
$user->role = 'user';
try {
+ if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) {
+ return redirect()->back()->with(['fails' => Lang::get('lang.country-code-required-error'), 'country_code_error' => 1])->withInput();
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get();
+ if (!count($code)) {
+ return redirect()->back()->with(['fails' => Lang::get('lang.incorrect-country-code-error'), 'country_code_error' => 1])->withInput();
+ }
+ }
$user->save();
/* redirect to Index page with Success Message */
- return redirect('user')->with('success', 'User Created Successfully');
+ return redirect('user')->with('success', Lang::get('lang.User-Created-Successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('user')->with('fails', $e->errorInfo[2]);
+ return redirect('user')->with('fails', $e->getMessage());
}
}
@@ -197,15 +212,16 @@ class UserController extends Controller
*
* @return type view
*/
- public function show($id, User $user)
+ public function show($id)
{
try {
+ $user = new User();
/* select the field where id = $id(request Id) */
$users = $user->whereId($id)->first();
return view('themes.default1.agent.helpdesk.user.show', compact('users'));
} catch (Exception $e) {
- return view('404');
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -217,15 +233,18 @@ class UserController extends Controller
*
* @return type Response
*/
- public function edit($id, User $user)
+ public function edit($id, CountryCode $code)
{
try {
+ $user = new User();
/* select the field where id = $id(request Id) */
$users = $user->whereId($id)->first();
+ $location = GeoIP::getLocation('');
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
- return view('themes.default1.agent.helpdesk.user.edit', compact('users'));
+ return view('themes.default1.agent.helpdesk.user.edit', compact('users'))->with('phonecode', $phonecode->phonecode);
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -238,19 +257,31 @@ class UserController extends Controller
*
* @return type Response
*/
- public function update($id, User $user, Sys_userUpdate $request)
+ public function update($id, Sys_userUpdate $request)
{
+ $user = new User();
/* select the field where id = $id(request Id) */
$users = $user->whereId($id)->first();
/* Update the value by selected field */
/* Check whether function success or not */
try {
+ if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) {
+ return redirect()->back()->with(['fails' => Lang::get('lang.country-code-required-error'), 'country_code_error' => 1])->withInput();
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get();
+ if (!count($code)) {
+ return redirect()->back()->with(['fails' => Lang::get('lang.incorrect-country-code-error'), 'country_code_error' => 1])->withInput();
+ } else {
+ $users->country_code = $request->country_code;
+ }
+ }
+ // dd($request->input());
$users->fill($request->input())->save();
/* redirect to Index page with Success Message */
- return redirect('user')->with('success', 'User Updated Successfully');
+ return redirect('user')->with('success', Lang::get('lang.User-profile-Updated-Successfully'));
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -265,7 +296,7 @@ class UserController extends Controller
try {
return view('themes.default1.agent.helpdesk.user.profile', compact('user'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -274,13 +305,15 @@ class UserController extends Controller
*
* @return type view
*/
- public function getProfileedit()
+ public function getProfileedit(CountryCode $code)
{
$user = Auth::user();
+ $location = GeoIP::getLocation('');
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
try {
- return view('themes.default1.agent.helpdesk.user.profile-edit', compact('user'));
+ return view('themes.default1.agent.helpdesk.user.profile-edit', compact('user'))->with('phonecode', $phonecode->phonecode);
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -324,15 +357,24 @@ class UserController extends Controller
$user->profile_pic = $fileName;
} else {
try {
+ if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) {
+ return redirect()->back()->with(['fails' => Lang::get('lang.country-code-required-error'), 'country_code_error' => 1])->withInput();
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get();
+ if (!count($code)) {
+ return redirect()->back()->with(['fails' => Lang::get('lang.incorrect-country-code-error'), 'country_code_error' => 1])->withInput();
+ }
+ $user->country_code = $request->country_code;
+ }
$user->fill($request->except('profile_pic', 'gender'))->save();
- return Redirect::route('profile')->with('success', 'Profile Updated sucessfully');
+ return Redirect::route('profile')->with('success', Lang::get('lang.Profile-Updated-sucessfully'));
} catch (Exception $e) {
- return Redirect::route('profile')->with('success', $e->errorInfo[2]);
+ return Redirect::route('profile')->with('success', $e->getMessage());
}
}
if ($user->fill($request->except('profile_pic'))->save()) {
- return Redirect::route('profile')->with('success', 'Profile Updated sucessfully');
+ return Redirect::route('profile')->with('success', Lang::get('lang.Profile-Updated-sucessfully'));
}
}
@@ -354,12 +396,12 @@ class UserController extends Controller
try {
$user->save();
- return redirect('profile-edit')->with('success1', 'Password Updated sucessfully');
+ return redirect('profile-edit')->with('success1', Lang::get('lang.password_updated_sucessfully'));
} catch (Exception $e) {
- return redirect('profile-edit')->with('fails', $e->errorInfo[2]);
+ return redirect('profile-edit')->with('fails', $e->getMessage());
}
} else {
- return redirect('profile-edit')->with('fails1', 'Password was not Updated. Incorrect old password');
+ return redirect('profile-edit')->with('fails1', Lang::get('lang.password_was_not_updated_incorrect_old_password'));
}
}
@@ -381,6 +423,25 @@ class UserController extends Controller
return 1;
}
+ public function orgAssignUser($id)
+ {
+ $org = Input::get('org');
+ $user_org = new User_org();
+ $user_org->org_id = $id;
+ $user_org->user_id = $org;
+ $user_org->save();
+
+ return 1;
+ }
+
+ public function removeUserOrg($id)
+ {
+ $user_org = User_org::where('org_id', '=', $id)->first();
+ $user_org->delete();
+
+ return redirect()->back()->with('success1', Lang::get('lang.the_user_has_been_removed_from_this_organization'));
+ }
+
/**
* creating an organization in user profile page via modal popup.
*
diff --git a/app/Http/Controllers/Agent/helpdesk/UserController2.php b/app/Http/Controllers/Agent/helpdesk/UserController2.php
new file mode 100644
index 000000000..345288039
--- /dev/null
+++ b/app/Http/Controllers/Agent/helpdesk/UserController2.php
@@ -0,0 +1,427 @@
+
+ */
+class UserController2 extends Controller
+{
+ /**
+ * Create a new controller instance.
+ * constructor to check
+ * 1. authentication
+ * 2. user roles
+ * 3. roles must be agent.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ // checking authentication
+ $this->middleware('auth');
+ // checking if role is agent
+ $this->middleware('role.agent');
+ }
+
+ /**
+ * Display all list of the users.
+ *
+ * @param type User $user
+ *
+ * @return type view
+ */
+ public function index()
+ {
+ try {
+ /* get all values in Sys_user */
+ return view('themes.default1.agent.helpdesk.user.index');
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * This function is used to display the list of users using chumper datatables.
+ *
+ * @return datatable
+ */
+ public function user_list()
+ {
+ // displaying list of users with chumper datatables
+ return \Datatable::collection(User::where('role', '!=', 'admin')->where('role', '!=', 'agent')->get())
+ /* searchable column username and email*/
+ ->searchColumns('user_name', 'email', 'phone')
+ /* order column username and email */
+ ->orderColumns('user_name', 'email')
+ /* column username */
+ ->addColumn('user_name', function ($model) {
+ if (strlen($model->user_name) > 20) {
+ $username = substr($model->user_name, 0, 30);
+ $username = substr($username, 0, strrpos($username, ' ')).' ...';
+ } else {
+ $username = "id)."'>".$model->user_name.' ';
+ }
+
+ return $username;
+ })
+ /* column email */
+ ->addColumn('email', function ($model) {
+ $email = "id)."'>".$model->email.' ';
+
+ return $email;
+ })
+ /* column phone */
+ ->addColumn('phone', function ($model) {
+ $phone = '';
+ if ($model->phone_number) {
+ $phone = $model->ext.' '.$model->phone_number;
+ }
+ $mobile = '';
+ if ($model->mobile) {
+ $mobile = $model->mobile;
+ }
+ $phone = $phone.' '.$mobile;
+
+ return $phone;
+ })
+ /* column account status */
+ ->addColumn('status', function ($model) {
+ $status = $model->active;
+ if ($status == 1) {
+ $stat = 'Active ';
+ } else {
+ $stat = 'Inactive ';
+ }
+
+ return $stat;
+ })
+ /* column ban status */
+ ->addColumn('ban', function ($model) {
+ $status = $model->ban;
+ if ($status == 1) {
+ $stat = 'Banned ';
+ } else {
+ $stat = 'Active ';
+ }
+
+ return $stat;
+ })
+ /* column last login date */
+ ->addColumn('lastlogin', function ($model) {
+ $t = $model->updated_at;
+
+ return TicketController::usertimezone($t);
+ })
+ /* column actions */
+ ->addColumn('Actions', function ($model) {
+ return ''.\Lang::get('lang.edit').' '.\Lang::get('lang.view').' ';
+ })
+ ->make();
+ }
+
+ /**
+ * Show the form for creating a new users.
+ *
+ * @return type view
+ */
+ public function create()
+ {
+ try {
+ return view('themes.default1.agent.helpdesk.user.create');
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * Store a newly created users in storage.
+ *
+ * @param type User $user
+ * @param type Sys_userRequest $request
+ *
+ * @return type redirect
+ */
+ public function store(User $user, Sys_userRequest $request)
+ {
+ /* insert the input request to sys_user table */
+ /* Check whether function success or not */
+ $user->email = $request->input('email');
+ $user->user_name = $request->input('full_name');
+ $user->mobile = $request->input('mobile');
+ $user->ext = $request->input('ext');
+ $user->phone_number = $request->input('phone_number');
+ $user->active = $request->input('active');
+ $user->internal_note = $request->input('internal_note');
+ $user->role = 'user';
+ try {
+ $user->save();
+ /* redirect to Index page with Success Message */
+ return redirect('user')->with('success', 'User Created Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect('user')->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * Display the specified users.
+ *
+ * @param type int $id
+ * @param type User $user
+ *
+ * @return type view
+ */
+ public function show($id, User $user)
+ {
+ try {
+ /* select the field where id = $id(request Id) */
+ $users = $user->whereId($id)->first();
+
+ return view('themes.default1.agent.helpdesk.user.show', compact('users'));
+ } catch (Exception $e) {
+ return view('404');
+ }
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param type int $id
+ * @param type User $user
+ *
+ * @return type Response
+ */
+ public function edit($id, User $user)
+ {
+ try {
+ /* select the field where id = $id(request Id) */
+ $users = $user->whereId($id)->first();
+
+ return view('themes.default1.agent.helpdesk.user.edit', compact('users'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * Update the specified user in storage.
+ *
+ * @param type int $id
+ * @param type User $user
+ * @param type Sys_userUpdate $request
+ *
+ * @return type Response
+ */
+ public function update($id, User $user, Sys_userUpdate $request)
+ {
+ /* select the field where id = $id(request Id) */
+ $users = $user->whereId($id)->first();
+ /* Update the value by selected field */
+ /* Check whether function success or not */
+ try {
+ $users->fill($request->input())->save();
+ /* redirect to Index page with Success Message */
+ return redirect('user')->with('success', 'User Updated Successfully');
+ } catch (Exception $e) {
+ /* redirect to Index page with Fails Message */
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * get agent profile page.
+ *
+ * @return type view
+ */
+ public function getProfile()
+ {
+ $user = Auth::user();
+ try {
+ return view('themes.default1.agent.helpdesk.user.profile', compact('user'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * get profile edit page.
+ *
+ * @return type view
+ */
+ public function getProfileedit()
+ {
+ $user = Auth::user();
+ try {
+ return view('themes.default1.agent.helpdesk.user.profile-edit', compact('user'));
+ } catch (Exception $e) {
+ return redirect()->back()->with('fails', $e->errorInfo[2]);
+ }
+ }
+
+ /**
+ * post profile edit.
+ *
+ * @param type int $id
+ * @param type ProfileRequest $request
+ *
+ * @return type Redirect
+ */
+ public function postProfileedit(ProfileRequest $request)
+ {
+ // geet authenticated user details
+ $user = Auth::user();
+ $user->gender = $request->input('gender');
+ $user->save();
+ // checking availability of agent profile ppicture
+ if ($user->profile_pic == 'avatar5.png' || $user->profile_pic == 'avatar2.png') {
+ if ($request->input('gender') == 1) {
+ $name = 'avatar5.png';
+ $destinationPath = 'lb-faveo/media/profilepic';
+ $user->profile_pic = $name;
+ } elseif ($request->input('gender') == 0) {
+ $name = 'avatar2.png';
+ $destinationPath = 'lb-faveo/media/profilepic';
+ $user->profile_pic = $name;
+ }
+ }
+ // checking if the post system includes agent profile picture upload
+ if (Input::file('profile_pic')) {
+ // fetching picture name
+ $name = Input::file('profile_pic')->getClientOriginalName();
+ // fetching upload destination path
+ $destinationPath = 'lb-faveo/media/profilepic';
+ // adding a random value to profile picture filename
+ $fileName = rand(0000, 9999).'.'.$name;
+ // moving the picture to a destination folder
+ Input::file('profile_pic')->move($destinationPath, $fileName);
+ // saving filename to database
+ $user->profile_pic = $fileName;
+ } else {
+ try {
+ $user->fill($request->except('profile_pic', 'gender'))->save();
+
+ return Redirect::route('profile')->with('success', 'Profile Updated sucessfully');
+ } catch (Exception $e) {
+ return Redirect::route('profile')->with('success', $e->errorInfo[2]);
+ }
+ }
+ if ($user->fill($request->except('profile_pic'))->save()) {
+ return Redirect::route('profile')->with('success', 'Profile Updated sucessfully');
+ }
+ }
+
+ /**
+ * Post profile password.
+ *
+ * @param type int $id
+ * @param type ProfilePassword $request
+ *
+ * @return type Redirect
+ */
+ public function postProfilePassword($id, ProfilePassword $request)
+ {
+ // get authenticated user
+ $user = Auth::user();
+ // checking if the old password matches the new password
+ if (Hash::check($request->input('old_password'), $user->getAuthPassword())) {
+ $user->password = Hash::make($request->input('new_password'));
+ try {
+ $user->save();
+
+ return redirect('profile-edit')->with('success1', 'Password Updated sucessfully');
+ } catch (Exception $e) {
+ return redirect('profile-edit')->with('fails', $e->errorInfo[2]);
+ }
+ } else {
+ return redirect('profile-edit')->with('fails1', 'Password was not Updated. Incorrect old password');
+ }
+ }
+
+ /**
+ * Assigning an user to an organization.
+ *
+ * @param type $id
+ *
+ * @return type boolean
+ */
+ public function UserAssignOrg($id)
+ {
+ $org = Input::get('org');
+ $user_org = new User_org();
+ $user_org->org_id = $org;
+ $user_org->user_id = $id;
+ $user_org->save();
+
+ return 1;
+ }
+
+ /**
+ * creating an organization in user profile page via modal popup.
+ *
+ * @param type $id
+ *
+ * @return type
+ */
+ public function User_Create_Org($id)
+ {
+ // checking if the entered value for website is available in database
+ if (Input::get('website') != null) {
+ // checking website
+ $check = Organization::where('website', '=', Input::get('website'))->first();
+ } else {
+ $check = null;
+ }
+ // checking if the name is unique
+ $check2 = Organization::where('name', '=', Input::get('name'))->first();
+ // if any of the fields is not available then return false
+ if (\Input::get('name') == null) {
+ return 'Name is required';
+ } elseif ($check2 != null) {
+ return 'Name should be Unique';
+ } elseif ($check != null) {
+ return 'Website should be Unique';
+ } else {
+ // storing organization details and assigning the current user to that organization
+ $org = new Organization();
+ $org->name = Input::get('name');
+ $org->phone = Input::get('phone');
+ $org->website = Input::get('website');
+ $org->address = Input::get('address');
+ $org->internal_notes = Input::get('internal');
+ $org->save();
+
+ $user_org = new User_org();
+ $user_org->org_id = $org->id;
+ $user_org->user_id = $id;
+ $user_org->save();
+ // for success return 0
+ return 0;
+ }
+ }
+}
diff --git a/app/Http/Controllers/Agent/kb/ArticleController.php b/app/Http/Controllers/Agent/kb/ArticleController.php
index 2a99cb213..c890f8899 100644
--- a/app/Http/Controllers/Agent/kb/ArticleController.php
+++ b/app/Http/Controllers/Agent/kb/ArticleController.php
@@ -3,7 +3,6 @@
namespace App\Http\Controllers\Agent\kb;
// Controllers
-use App\Http\Controllers\Agent\helpdesk\TicketController;
use App\Http\Controllers\Controller;
// Requests
use App\Http\Requests\kb\ArticleRequest;
@@ -21,16 +20,17 @@ use Datatable;
use DB;
use Exception;
use Illuminate\Http\Request;
+use Lang;
use Redirect;
/**
* ArticleController
* This controller is used to CRUD Articles.
*
- * @author Ladybird
+ * @author Ladybird
*/
-class ArticleController extends Controller
-{
+class ArticleController extends Controller {
+
/**
* Create a new controller instance.
* constructor to check
@@ -40,8 +40,7 @@ class ArticleController extends Controller
*
* @return void
*/
- public function __construct()
- {
+ public function __construct() {
// checking authentication
$this->middleware('auth');
// checking roles
@@ -49,8 +48,7 @@ class ArticleController extends Controller
SettingsController::language();
}
- public function test()
- {
+ public function test() {
//$table = $this->setDatatable();
return view('themes.default1.agent.kb.article.test');
}
@@ -60,29 +58,37 @@ class ArticleController extends Controller
*
* @return type void
*/
- public function getData()
- {
+ public function getData() {
+ $article = new Article();
// returns chumper datatable
- return Datatable::collection(Article::All())
+ return Datatable::query($article)
/* searcable column name */
->searchColumns('name')
/* order column name and description */
->orderColumns('name', 'description')
/* add column name */
->addColumn('name', function ($model) {
- return $model->name;
+
+ $string = strip_tags($model->name);
+ if (strlen($string) > 40) {
+ // truncate string
+ $stringCut = substr($string, 0, 40);
+ } else {
+ $stringCut = $model->name;
+ }
+ return $stringCut . '...';
})
/* add column Created */
- ->addColumn('Created', function ($model) {
- $t = $model->created_at;
+ ->addColumn('publish_time', function ($model) {
+ $t = $model->publish_time;
- return TicketController::usertimezone($t);
+ return $t;
})
/* add column action */
->addColumn('Actions', function ($model) {
/* here are all the action buttons and modal popup to delete articles with confirmations */
- return ' '.\Lang::get('lang.delete').' id.'/edit class="btn btn-warning btn-xs">'.\Lang::get('lang.edit').' slug.' class="btn btn-primary btn-xs">'.\Lang::get('lang.view').'
-
+ return '
' . \Lang::get('lang.delete') . ' id . '/edit class="btn btn-warning btn-xs">' . \Lang::get('lang.edit') . ' slug . ' class="btn btn-primary btn-xs">' . \Lang::get('lang.view') . '
+
- '.$model->name.'
+ ' . $model->name . '
@@ -108,13 +114,12 @@ class ArticleController extends Controller
*
* @return type view
*/
- public function index()
- {
+ public function index() {
/* show article list */
try {
return view('themes.default1.agent.kb.article.index');
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -125,15 +130,14 @@ class ArticleController extends Controller
*
* @return type view
*/
- public function create(Category $category)
- {
+ public function create(Category $category) {
/* get the attributes of the category */
$category = $category->lists('id', 'name');
/* get the create page */
try {
return view('themes.default1.agent.kb.article.create', compact('category'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -145,12 +149,11 @@ class ArticleController extends Controller
*
* @return type redirect
*/
- public function store(Article $article, ArticleRequest $request)
- {
+ public function store(Article $article, ArticleRequest $request) {
// requesting the values to store article data
- $publishTime = $request->input('year').'-'.$request->input('month').'-'.$request->input('day').' '.$request->input('hour').':'.$request->input('minute').':00';
+ $publishTime = $request->input('year') . '-' . $request->input('month') . '-' . $request->input('day') . ' ' . $request->input('hour') . ':' . $request->input('minute') . ':00';
- $sl = $request->input('slug');
+ $sl = $request->input('name');
$slug = str_slug($sl, '-');
$article->slug = $slug;
$article->publish_time = $publishTime;
@@ -166,9 +169,9 @@ class ArticleController extends Controller
try {
$article->fill($request->except('slug'))->save();
- return redirect('article')->with('success', 'Article Inserted Successfully');
+ return redirect('article')->with('success', Lang::get('lang.article_inserted_successfully'));
} catch (Exception $e) {
- return redirect('article')->with('fails', 'Article Not Inserted'.'
'.$e->errorInfo[2].' ');
+ return redirect('article')->with('fails', Lang::get('lang.article_not_inserted') . '
' . $e->getMessage() . ' ');
}
}
@@ -182,8 +185,10 @@ class ArticleController extends Controller
*
* @return view
*/
- public function edit($slug, Article $article, Relationship $relation, Category $category)
- {
+ public function edit($slug) {
+ $article = new Article();
+ $relation = new Relationship();
+ $category = new Category();
$aid = $article->where('id', $slug)->first();
$id = $aid->id;
/* define the selected fields */
@@ -197,7 +202,7 @@ class ArticleController extends Controller
try {
return view('themes.default1.agent.kb.article.edit', compact('assign', 'article', 'category'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -211,10 +216,11 @@ class ArticleController extends Controller
*
* @return Response
*/
- public function update($slug, Article $article, Relationship $relation, ArticleUpdate $request)
- {
+ public function update($slug, ArticleUpdate $request) {
+ $article = new Article();
+ $relation = new Relationship();
$aid = $article->where('id', $slug)->first();
- $publishTime = $request->input('year').'-'.$request->input('month').'-'.$request->input('day').' '.$request->input('hour').':'.$request->input('minute').':00';
+ $publishTime = $request->input('year') . '-' . $request->input('month') . '-' . $request->input('day') . ' ' . $request->input('hour') . ':' . $request->input('minute') . ':00';
$id = $aid->id;
$sl = $request->input('slug');
@@ -239,9 +245,9 @@ class ArticleController extends Controller
$article->publish_time = $publishTime;
$article->save();
- return redirect('article')->with('success', 'Article Updated Successfully');
+ return redirect('article')->with('success', Lang::get('lang.article_updated_successfully'));
} catch (Exception $e) {
- return redirect('article')->with('fails', 'Article Not Updated'.'
'.$e->errorInfo[2].' ');
+ return redirect('article')->with('fails', Lang::get('lang.article_not_updated') . '
' . $e->getMessage() . ' ');
}
}
@@ -253,8 +259,7 @@ class ArticleController extends Controller
*
* @return Response
*/
- public function destroy($slug, Article $article, Relationship $relation, Comment $comment)
- {
+ public function destroy($slug, Article $article, Relationship $relation, Comment $comment) {
/* delete the selected article from the table */
$article = $article->where('slug', $slug)->first(); //get the selected article via id
$id = $article->id;
@@ -271,12 +276,12 @@ class ArticleController extends Controller
}
if ($article) {
if ($article->delete()) {//true:redirect to index page with success message
- return Redirect::back()->with('success', 'Article Deleted Successfully');
+ return Redirect::back()->with('success', Lang::get('lang.article_deleted_successfully'));
} else { //redirect to index page with fails message
- return Redirect::back()->with('fails', 'Article Not Deleted');
+ return Redirect::back()->with('fails', Lang::get('lang.article_not_deleted'));
}
} else {
- return Redirect::back()->with('fails', 'Article can Not Deleted');
+ return Redirect::back()->with('fails', Lang::get('lang.article_can_not_deleted'));
}
}
@@ -288,8 +293,7 @@ class ArticleController extends Controller
*
* @return type
*/
- public static function usertimezone($utc)
- {
+ public static function usertimezone($utc) {
$user = Auth::user();
$tz = $user->timezone;
$set = Settings::whereId('1')->first();
@@ -300,4 +304,5 @@ class ArticleController extends Controller
$date = date($format, strtotime($utc) + $offset);
echo $date;
}
+
}
diff --git a/app/Http/Controllers/Agent/kb/CategoryController.php b/app/Http/Controllers/Agent/kb/CategoryController.php
index d5202a44a..5b9678672 100644
--- a/app/Http/Controllers/Agent/kb/CategoryController.php
+++ b/app/Http/Controllers/Agent/kb/CategoryController.php
@@ -14,16 +14,17 @@ use App\Model\kb\Relationship;
// Classes
use Datatable;
use Exception;
+use Lang;
use Redirect;
/**
* CategoryController
* This controller is used to CRUD category.
*
- * @author Ladybird
+ * @author Ladybird
*/
-class CategoryController extends Controller
-{
+class CategoryController extends Controller {
+
/**
* Create a new controller instance.
* constructor to check
@@ -33,8 +34,7 @@ class CategoryController extends Controller
*
* @return void
*/
- public function __construct()
- {
+ public function __construct() {
// checking authentication
$this->middleware('auth');
// checking roles
@@ -49,14 +49,13 @@ class CategoryController extends Controller
*
* @return Response
*/
- public function index()
- {
+ public function index() {
/* get the view of index of the catogorys with all attributes
of category model */
try {
return view('themes.default1.agent.kb.category.index');
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -65,8 +64,7 @@ class CategoryController extends Controller
*
* @return type chumper datatable
*/
- public function getData()
- {
+ public function getData() {
/* fetching chumper datatables */
return Datatable::collection(Category::All())
/* search column name */
@@ -75,7 +73,15 @@ class CategoryController extends Controller
->orderColumns('name', 'description')
/* add column name */
->addColumn('name', function ($model) {
- return $model->name;
+
+ $string = strip_tags($model->name);
+ if (strlen($string) > 40) {
+ // truncate string
+ $stringCut = substr($string, 0, 40);
+ } else {
+ $stringCut = $model->name;
+ }
+ return $stringCut.'...';
})
/* add column Created */
->addColumn('Created', function ($model) {
@@ -86,20 +92,20 @@ class CategoryController extends Controller
/* add column Actions */
/* there are action buttons and modal popup to delete a data column */
->addColumn('Actions', function ($model) {
- return ' '.\Lang::get('lang.delete').' id.'/edit class="btn btn-warning btn-xs">'.\Lang::get('lang.edit').' '.\Lang::get('lang.view').'
-
+ return '
' . \Lang::get('lang.delete') . ' id . '/edit class="btn btn-warning btn-xs">' . \Lang::get('lang.edit') . ' ' . \Lang::get('lang.view') . '
+
- '.$model->name.'
+ ' . $model->name . '
@@ -115,8 +121,7 @@ class CategoryController extends Controller
*
* @return type view
*/
- public function create(Category $category)
- {
+ public function create(Category $category) {
/* Get the all attributes in the category model */
$category = $category->get();
/* get the view page to create new category with all attributes
@@ -124,7 +129,7 @@ class CategoryController extends Controller
try {
return view('themes.default1.agent.kb.category.create', compact('category'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -136,8 +141,7 @@ class CategoryController extends Controller
*
* @return type Redirect
*/
- public function store(Category $category, CategoryRequest $request)
- {
+ public function store(Category $category, CategoryRequest $request) {
/* Get the whole request from the form and insert into table via model */
$sl = $request->input('slug');
$slug = str_slug($sl, '-');
@@ -146,9 +150,9 @@ class CategoryController extends Controller
try {
$category->fill($request->except('slug'))->save();
- return Redirect::back()->with('success', 'Category Inserted Successfully');
+ return Redirect::back()->with('success', Lang::get('lang.category_inserted_successfully'));
} catch (Exception $e) {
- return Redirect::back()->with('fails', 'Category Not Inserted'.'
'.$e->errorInfo[2].' ');
+ return Redirect::back()->with('fails', Lang::get('lang.category_not_inserted') . '
' . $e->getMessage() . ' ');
}
}
@@ -160,13 +164,12 @@ class CategoryController extends Controller
*
* @return type view
*/
- public function edit($slug, Category $category)
- {
+ public function edit($slug) {
// fetch the category
- $cid = $category->where('id', $slug)->first();
+ $cid = Category::where('id', $slug)->first();
$id = $cid->id;
/* get the atributes of the category model whose id == $id */
- $category = $category->whereId($id)->first();
+ $category = Category::whereId($id)->first();
/* get the Edit page the selected category via id */
return view('themes.default1.agent.kb.category.edit', compact('category'));
}
@@ -180,11 +183,10 @@ class CategoryController extends Controller
*
* @return type redirect
*/
- public function update($slug, Category $category, CategoryUpdate $request)
- {
+ public function update($slug, CategoryUpdate $request) {
/* Edit the selected category via id */
- $category = $category->where('id', $slug)->first();
+ $category = Category::where('id', $slug)->first();
$sl = $request->input('slug');
$slug = str_slug($sl, '-');
// dd($slug);
@@ -195,11 +197,10 @@ class CategoryController extends Controller
$category->fill($request->all())->save();
$category->slug = $slug;
$category->save();
-
- return redirect('category')->with('success', 'Category Updated Successfully');
+ return redirect('category')->with('success', Lang::get('lang.category_updated_successfully'));
} catch (Exception $e) {
//redirect to index with fails message
- return redirect('category')->with('fails', 'Category Not Updated'.'
'.$e->errorInfo[2].' ');
+ return redirect('category')->with('fails', Lang::get('lang.category_not_updated') . '
' . $e->getMessage() . ' ');
}
}
@@ -212,11 +213,10 @@ class CategoryController extends Controller
*
* @return type Redirect
*/
- public function destroy($id, Category $category, Relationship $relation)
- {
+ public function destroy($id, Category $category, Relationship $relation) {
$relation = $relation->where('category_id', $id)->first();
if ($relation != null) {
- return Redirect::back()->with('fails', 'Category Not Deleted');
+ return Redirect::back()->with('fails', Lang::get('lang.category_not_deleted'));
} else {
/* delete the category selected, id == $id */
$category = $category->whereId($id)->first();
@@ -224,10 +224,11 @@ class CategoryController extends Controller
try {
$category->delete();
- return Redirect::back()->with('success', 'Category Deleted Successfully');
+ return Redirect::back()->with('success', Lang::get('lang.category_deleted_successfully'));
} catch (Exception $e) {
- return Redirect::back()->with('fails', 'Category Not Deleted'.'
'.$e->errorInfo[2].' ');
+ return Redirect::back()->with('fails', Lang::get('lang.category_not_deleted') . '
' . $e->getMessage() . ' ');
}
}
}
+
}
diff --git a/app/Http/Controllers/Agent/kb/PageController.php b/app/Http/Controllers/Agent/kb/PageController.php
index 45ca6b11e..ada665b4e 100644
--- a/app/Http/Controllers/Agent/kb/PageController.php
+++ b/app/Http/Controllers/Agent/kb/PageController.php
@@ -2,7 +2,7 @@
namespace App\Http\Controllers\Agent\kb;
-// controllersuse App\Http\Controllers\Agent\helpdesk\TicketController;
+use App\Http\Controllers\Agent\helpdesk\TicketController;
use App\Http\Controllers\Controller;
// request
use App\Http\Requests\kb\PageRequest;
@@ -13,15 +13,16 @@ use Datatable;
// classes
use Exception;
use Illuminate\Http\Request;
+use Lang;
/**
* PageController
* This controller is used to CRUD Pages.
*
- * @author Ladybird
+ * @author Ladybird
*/
-class PageController extends Controller
-{
+class PageController extends Controller {
+
/**
* Create a new controller instance.
* constructor to check
@@ -31,8 +32,7 @@ class PageController extends Controller
*
* @return void
*/
- public function __construct(Page $page)
- {
+ public function __construct(Page $page) {
// checking authentication
$this->middleware('auth');
// checking roles
@@ -46,14 +46,13 @@ class PageController extends Controller
*
* @return type
*/
- public function index()
- {
+ public function index() {
$pages = $this->page->paginate(3);
$pages->setPath('page');
try {
return view('themes.default1.agent.kb.pages.index', compact('pages'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -62,8 +61,7 @@ class PageController extends Controller
*
* @return type
*/
- public function getData()
- {
+ public function getData() {
/* fetching chumper datatables */
return Datatable::collection(Page::All())
/* search column name */
@@ -83,8 +81,8 @@ class PageController extends Controller
/* add column Actions */
/* there are action buttons and modal popup to delete a data column */
->addColumn('Actions', function ($model) {
- return ' '.\Lang::get('lang.delete').' slug.'/edit class="btn btn-warning btn-xs">'.\Lang::get('lang.edit').' slug.' class="btn btn-primary btn-xs">'.\Lang::get('lang.view').'
-
+ return '
' . \Lang::get('lang.delete') . ' slug . '/edit class="btn btn-warning btn-xs">' . \Lang::get('lang.edit') . ' slug . ' class="btn btn-primary btn-xs">' . \Lang::get('lang.view') . '
+
- '.$model->name.'
+ ' . $model->name . '
@@ -110,8 +108,7 @@ class PageController extends Controller
*
* @return type view
*/
- public function create()
- {
+ public function create() {
return view('themes.default1.agent.kb.pages.create');
}
@@ -122,17 +119,16 @@ class PageController extends Controller
*
* @return type
*/
- public function store(PageRequest $request)
- {
+ public function store(PageRequest $request) {
$sl = $request->input('slug');
$slug = str_slug($sl, '-');
$this->page->slug = $slug;
try {
$this->page->fill($request->except('slug'))->save();
- return redirect('page')->with('success', 'Page created successfully');
+ return redirect('page')->with('success', Lang::get('lang.page_created_successfully'));
} catch (Exception $e) {
- return redirect('page')->with('fails', $e->errorInfo[2]);
+ return redirect('page')->with('fails', $e->getMessage());
}
}
@@ -143,14 +139,13 @@ class PageController extends Controller
*
* @return type view
*/
- public function edit($slug)
- {
+ public function edit($slug) {
try {
$page = $this->page->where('slug', $slug)->first();
return view('themes.default1.agent.kb.pages.edit', compact('page'));
} catch (Exception $e) {
- return redirect('page')->with('fails', $e->errorInfo[2]);
+ return redirect('page')->with('fails', $e->getMessage());
}
}
@@ -162,8 +157,7 @@ class PageController extends Controller
*
* @return type redirect
*/
- public function update($slug, PageUpdate $request)
- {
+ public function update($slug, PageUpdate $request) {
// get pages with respect to slug
$pages = $this->page->where('slug', $slug)->first();
$sl = $request->input('slug');
@@ -174,9 +168,9 @@ class PageController extends Controller
$pages->slug = $slug;
$pages->save();
- return redirect('page')->with('success', 'Your Page Updated Successfully');
+ return redirect('page')->with('success', Lang::get('lang.your_page_updated_successfully'));
} catch (Exception $e) {
- return redirect('page')->with('fails', $e->errorInfo[2]);
+ return redirect('page')->with('fails', $e->getMessage());
}
}
@@ -187,16 +181,16 @@ class PageController extends Controller
*
* @return type redirect
*/
- public function destroy($id)
- {
+ public function destroy($id) {
try {
// get the page to be deleted
$page = $this->page->whereId($id)->first();
$page->delete();
- return redirect('page')->with('success', 'Page Deleted Successfully');
+ return redirect('page')->with('success', Lang::get('lang.page_deleted_successfully'));
} catch (Exception $e) {
- return redirect('page')->with('fails', $e->errorInfo[2]);
+ return redirect('page')->with('fails', $e->getMessage());
}
}
+
}
diff --git a/app/Http/Controllers/Agent/kb/SettingsController.php b/app/Http/Controllers/Agent/kb/SettingsController.php
index 8764b2f15..cc202c251 100644
--- a/app/Http/Controllers/Agent/kb/SettingsController.php
+++ b/app/Http/Controllers/Agent/kb/SettingsController.php
@@ -22,12 +22,13 @@ use Hash;
use Illuminate\Http\Request;
use Image;
use Input;
+use Lang;
/**
* SettingsController
* This controller is used to perform settings in the setting page of knowledgebase.
*
- * @author Ladybird
+ * @author Ladybird
*/
class SettingsController extends Controller
{
@@ -106,14 +107,14 @@ class SettingsController extends Controller
/* Check whether function success or not */
if ($settings->fill($request->except('logo', 'background'))->save() == true) {
/* redirect to Index page with Success Message */
- return redirect('settings')->with('success', 'Settings Updated Successfully');
+ return redirect()->back()->with('success', Lang::get('lang.settings_updated_successfully'));
} else {
/* redirect to Index page with Fails Message */
- return redirect('settings')->with('fails', 'Settings can not Updated');
+ return redirect()->back()->with('fails', Lang::get('lang.settings_can_not_updated'));
}
} catch (Exception $e) {
/* redirect to Index page with Fails Message */
- return redirect('settings')->with('fails', 'Settings can not Updated');
+ return redirect()->back()->with('fails', Lang::get('lang.settings_can_not_updated'));
}
}
@@ -181,9 +182,9 @@ class SettingsController extends Controller
$comment = $comment->whereId($id)->first();
$comment->status = 1;
if ($comment->save()) {
- return redirect('comment')->with('success', $comment->name.'-'.'Comment Published');
+ return redirect('comment')->with('success', $comment->name.'-'.Lang::get('lang.comment_published'));
} else {
- return redirect('comment')->with('fails', 'Can not Process');
+ return redirect('comment')->with('fails', Lang::get('lang.can_not_process'));
}
}
@@ -199,9 +200,9 @@ class SettingsController extends Controller
{
$comment = $comment->whereId($id)->first();
if ($comment->delete()) {
- return redirect('comment')->with('success', $comment->name."'s!".'Comment Deleted');
+ return redirect('comment')->with('success', $comment->name."'s!".Lang::get('lang.comment_deleted'));
} else {
- return redirect('comment')->with('fails', 'Can not Process');
+ return redirect('comment')->with('fails', Lang::get('lang.can_not_process'));
}
}
diff --git a/app/Http/Controllers/Api.zip b/app/Http/Controllers/Api.zip
new file mode 100644
index 000000000..b61d03fb1
Binary files /dev/null and b/app/Http/Controllers/Api.zip differ
diff --git a/app/Http/Controllers/Api/v1/ApiController.php b/app/Http/Controllers/Api/v1/ApiController.php
index d14daaa17..a6dc9168d 100644
--- a/app/Http/Controllers/Api/v1/ApiController.php
+++ b/app/Http/Controllers/Api/v1/ApiController.php
@@ -191,6 +191,7 @@ class ApiController extends Controller
*/
public function ticketReply()
{
+ //dd($this->request->all());
try {
$v = \Validator::make($this->request->all(), [
'ticket_ID' => 'required|exists:tickets,id',
@@ -302,9 +303,9 @@ class ApiController extends Controller
// return response()->json(compact('result'));
$result = $this->user->join('tickets', function ($join) {
- $join->on('users.id', '=', 'tickets.user_id')
+ $join->on('users.id', '=', 'tickets.user_id')
->where('isanswered', '=', 0)->where('status', '=', 1)->whereNull('assigned_to');
- })
+ })
->join('department', 'department.id', '=', 'tickets.dept_id')
->join('ticket_priority', 'ticket_priority.priority_id', '=', 'tickets.priority_id')
->join('sla_plan', 'sla_plan.id', '=', 'tickets.sla')
@@ -347,9 +348,9 @@ class ApiController extends Controller
// $result = $this->model->where('assigned_to', '=', null)->where('status', '1')->orderBy('id', 'DESC')->get();
// return response()->json(compact('result'));
$unassigned = $this->user->join('tickets', function ($join) {
- $join->on('users.id', '=', 'tickets.user_id')
+ $join->on('users.id', '=', 'tickets.user_id')
->whereNull('assigned_to')->where('status', '=', 1);
- })
+ })
->join('department', 'department.id', '=', 'tickets.dept_id')
->join('ticket_priority', 'ticket_priority.priority_id', '=', 'tickets.priority_id')
->join('sla_plan', 'sla_plan.id', '=', 'tickets.sla')
@@ -392,9 +393,9 @@ class ApiController extends Controller
// return response()->json(compact('result'));
$result = $this->user->join('tickets', function ($join) {
- $join->on('users.id', '=', 'tickets.user_id')
+ $join->on('users.id', '=', 'tickets.user_id')
->where('isanswered', '=', 0)->where('status', '>', 1)->where('status', '<', 4);
- })
+ })
->join('department', 'department.id', '=', 'tickets.dept_id')
->join('ticket_priority', 'ticket_priority.priority_id', '=', 'tickets.priority_id')
->join('sla_plan', 'sla_plan.id', '=', 'tickets.sla')
@@ -1019,9 +1020,9 @@ class ApiController extends Controller
{
try {
$trash = $this->user->join('tickets', function ($join) {
- $join->on('users.id', '=', 'tickets.user_id')
+ $join->on('users.id', '=', 'tickets.user_id')
->where('status', '=', 5);
- })
+ })
->join('department', 'department.id', '=', 'tickets.dept_id')
->join('ticket_priority', 'ticket_priority.priority_id', '=', 'tickets.priority_id')
->join('sla_plan', 'sla_plan.id', '=', 'tickets.sla')
@@ -1070,9 +1071,9 @@ class ApiController extends Controller
return response()->json(compact('error'));
}
$result = $this->user->join('tickets', function ($join) use ($id) {
- $join->on('users.id', '=', 'tickets.assigned_to')
+ $join->on('users.id', '=', 'tickets.assigned_to')
->where('user_id', '=', $id);
- })
+ })
->join('department', 'department.id', '=', 'tickets.dept_id')
->join('ticket_priority', 'ticket_priority.priority_id', '=', 'tickets.priority_id')
->join('sla_plan', 'sla_plan.id', '=', 'tickets.sla')
@@ -1121,9 +1122,9 @@ class ApiController extends Controller
return response()->json(compact('error'));
}
$result = $this->user->join('tickets', function ($join) use ($id) {
- $join->on('users.id', '=', 'tickets.user_id')
+ $join->on('users.id', '=', 'tickets.user_id')
->where('user_id', '=', $id);
- })
+ })
->join('department', 'department.id', '=', 'tickets.dept_id')
->join('ticket_priority', 'ticket_priority.priority_id', '=', 'tickets.priority_id')
->join('sla_plan', 'sla_plan.id', '=', 'tickets.sla')
diff --git a/app/Http/Controllers/Api/v1/InstallerApiController.php b/app/Http/Controllers/Api/v1/InstallerApiController.php
index 4c2559705..49e1fedf1 100644
--- a/app/Http/Controllers/Api/v1/InstallerApiController.php
+++ b/app/Http/Controllers/Api/v1/InstallerApiController.php
@@ -63,6 +63,17 @@ class InstallerApiController extends Controller
return ['response' => 'fail', 'reason' => $return_data, 'status' => '0'];
}
+ $path1 = base_path().DIRECTORY_SEPARATOR.'.env';
+ $path2 = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'database.php';
+ $path3 = base_path().DIRECTORY_SEPARATOR.'app'.DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php';
+ $path4 = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'lfm.php';
+ $f1 = substr(sprintf('%o', fileperms($path1)), -3);
+ $f2 = substr(sprintf('%o', fileperms($path2)), -3);
+ $f3 = substr(sprintf('%o', fileperms($path3)), -3);
+ $f4 = substr(sprintf('%o', fileperms($path4)), -3);
+ if ($f1 != '777' || $f2 != '777' || $f3 != '777' || $f4 != '777') {
+ return ['response' => 'fail', 'reason' => 'File permission issue.', 'status' => '0'];
+ }
// dd($validator->messages());
// error_reporting(E_ALL & ~E_NOTICE);
// Check for pre install
@@ -214,9 +225,16 @@ class InstallerApiController extends Controller
$content24 = File::get($path23);
$content23 = str_replace('"%smtplink%"', $smtpfilepath, $content23);
$content24 = str_replace("'%url%'", $lfmpath, $content24);
+ $link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
+ $pos = strpos($link, 'api/v1/system-config');
+ $link = substr($link, 0, $pos);
+ $app_url = app_path('../config/app.php');
+ $datacontent2 = File::get($app_url);
+ $datacontent2 = str_replace('http://localhost', $link, $datacontent2);
+ File::put($app_url, $datacontent2);
File::put($path22, $content23);
File::put($path23, $content24);
-
+ Artisan::call('key:generate');
// If user created return success
if ($user) {
return ['response' => 'success', 'status' => '1'];
diff --git a/app/Http/Controllers/Api/v1/TicketController.php b/app/Http/Controllers/Api/v1/TicketController.php
index 67dbc8352..a19ca43d6 100644
--- a/app/Http/Controllers/Api/v1/TicketController.php
+++ b/app/Http/Controllers/Api/v1/TicketController.php
@@ -269,11 +269,16 @@ class TicketController extends Controller
try {
$check_attachment = null;
$eventthread = $thread->where('ticket_id', $request->input('ticket_ID'))->first();
+ //dd($request->input('ticket_ID'));
+ //dd($eventthread);
$eventuserid = $eventthread->user_id;
$emailadd = User::where('id', $eventuserid)->first()->email;
+ //dd($emailadd);
$source = $eventthread->source;
+
$form_data = $request->except('reply_content', 'ticket_ID', 'attachment');
\Event::fire(new \App\Events\ClientTicketFormPost($form_data, $emailadd, $source));
+ //dd('yes');
$reply_content = $request->input('reply_content');
$thread->ticket_id = $request->input('ticket_ID');
$thread->poster = 'support';
@@ -333,10 +338,16 @@ class TicketController extends Controller
// // }
// // }
// }, true);
-
+ //dd('reply');
+ /*
+ * Getting the subject of the thread
+ */
+ //dd($eventthread);
try {
- $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['name' => $username, 'email' => $emailadd], $message = ['subject' => $updated_subject, 'scenario' => 'create-ticket-by-agent', 'body' => $body], $template_variables = ['agent_sign' => Auth::user()->agent_sign, 'ticket_number' => $ticket_number2]);
+ $re = $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $tickets->dept_id), $to = ['name' => $user_name, 'email' => $email], $message = ['subject' => $eventthread->title, 'scenario' => 'create-ticket-by-agent', 'body' => $thread->body], $template_variables = ['agent_sign' => Auth::user()->agent_sign, 'ticket_number' => $tickets->number]);
+ //dd($re);
} catch (\Exception $e) {
+ throw new \Exception($e->getMessage());
}
$collaborators = Ticket_Collaborator::where('ticket_id', '=', $ticket_id)->get();
@@ -368,6 +379,7 @@ class TicketController extends Controller
return $thread;
} catch (\Exception $e) {
+ //dd($e);
return $e->getMessage();
}
}
diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php
index 8777900d5..aac98be8d 100644
--- a/app/Http/Controllers/Auth/AuthController.php
+++ b/app/Http/Controllers/Auth/AuthController.php
@@ -9,12 +9,12 @@ use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\LoginRequest;
use App\Http\Requests\helpdesk\RegisterRequest;
-use App\User;
+use App\Model\helpdesk\Settings\Security;
// classes
+use App\User;
use Auth;
+use DB;
use Hash;
-use Illuminate\Contracts\Auth\Guard;
-use Illuminate\Contracts\Auth\Registrar;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Lang;
use Mail;
@@ -29,8 +29,8 @@ use Mail;
*
* @author Ladybird
*/
-class AuthController extends Controller
-{
+class AuthController extends Controller {
+
use AuthenticatesAndRegistersUsers;
/* to redirect after login */
@@ -50,12 +50,9 @@ class AuthController extends Controller
*
* @return void
*/
- public function __construct(Guard $auth, Registrar $registrar, PhpMailController $PhpMailController)
- {
+ public function __construct(PhpMailController $PhpMailController) {
$this->PhpMailController = $PhpMailController;
SettingsController::smtp();
- $this->auth = $auth;
- $this->registrar = $registrar;
$this->middleware('guest', ['except' => 'getLogout']);
}
@@ -64,8 +61,7 @@ class AuthController extends Controller
*
* @return type Response
*/
- public function getRegister()
- {
+ public function getRegister() {
// Event for login
\Event::fire(new \App\Events\FormRegisterEvent());
if (Auth::user()) {
@@ -87,32 +83,40 @@ class AuthController extends Controller
*
* @return type Response
*/
- public function postRegister(User $user, RegisterRequest $request)
- {
+ public function postRegister(User $user, RegisterRequest $request) {
// Event for login
\Event::fire(new \App\Events\LoginEvent($request));
-
$password = Hash::make($request->input('password'));
$user->password = $password;
$name = $request->input('full_name');
$user->user_name = $name;
$user->email = $request->input('email');
- // $user->first_name = $request->input('first_name');
- // $user->last_nmae = $request->input('last_nmae');
- // $user->phone_number = $request->input('phone_number');
- // $user->company = $request->input('company');
+
$user->role = 'user';
$code = str_random(60);
$user->remember_token = $code;
$user->save();
- // send mail for successful registration
- // $mail = Mail::send('auth.activate', array('link' => url('getmail', $code), 'username' => $name), function ($message) use ($user) {
- // $message->to($user->email, $user->full_name)->subject('active your account');
- // });
- $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $name, 'email' => $request->input('email')], $message = ['subject' => 'password', 'scenario' => 'registration-notification'], $template_variables = ['user' => $name, 'email_address' => $request->input('email'), 'password_reset_link' => url('password/reset/'.$code)]);
+ $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $name, 'email' => $request->input('email')], $message = ['subject' => 'Activate your Account', 'scenario' => 'registration'], $template_variables = ['user' => $name, 'email_address' => $request->input('email'), 'password_reset_link' => url('account/activate/' . $code)]);
- return redirect('home')->with('success', 'Activate Your Account ! Click on Link that send to your mail');
+ return redirect('home')->with('success', Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail'));
+ }
+
+ /**
+ * Function to activate account
+ * @param type $token
+ * @return type redirect
+ */
+ public function accountActivate($token) {
+ $user = User::where('remember_token', '=', $token)->first();
+ if ($user) {
+ $user->active = 1;
+ $user->remember_token = NULL;
+ $user->save();
+ return redirect('/auth/login')->with('status', 'Acount activated. Login to start');
+ } else {
+ return redirect('/auth/login')->with('fails', 'Invalid Token');
+ }
}
/**
@@ -123,8 +127,7 @@ class AuthController extends Controller
*
* @return type Response
*/
- public function getMail($token, User $user)
- {
+ public function getMail($token, User $user) {
$user = $user->where('remember_token', $token)->where('active', 0)->first();
if ($user) {
$user->active = 1;
@@ -141,8 +144,7 @@ class AuthController extends Controller
*
* @return type Response
*/
- public function getLogin()
- {
+ public function getLogin() {
if (Auth::user()) {
if (Auth::user()->role == 'admin' || Auth::user()->role == 'agent') {
return \Redirect::route('dashboard');
@@ -161,37 +163,66 @@ class AuthController extends Controller
*
* @return type Response
*/
- public function postLogin(LoginRequest $request)
- {
+ public function postLogin(LoginRequest $request) {
// Set login attempts and login time
- $loginAttempts = 1;
+ $value = $_SERVER['REMOTE_ADDR'];
$usernameinput = $request->input('email');
$password = $request->input('password');
$field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_name';
+ $result = $this->confirmIPAddress($value, $usernameinput);
+ // If attempts > 3 and time < 30 minutes
+ $security = Security::whereId('1')->first();
+ //dd($security->lockout_message);
+ if ($result == 1) {
+ return redirect()->back()->withErrors('email', 'Incorrect details')->with('error', $security->lockout_message);
+ }
+ //dd($request->input('email'));
+ $check_active = User::where('email', '=', $request->input('email'))->orwhere('user_name', '=', $request->input('email'))->first();
+ if (!$check_active) {
+ return redirect()->back()
+ ->withInput($request->only('email', 'remember'))
+ ->withErrors([
+ 'email' => $this->getFailedLoginMessage(),
+ 'password' => $this->getFailedLoginMessage(),
+ ])->with('error', Lang::get('lang.this_account_is_currently_inactive'));
+ }
+ if ($check_active->active == 0) {
+ return redirect()->back()
+ ->withInput($request->only('email', 'remember'))
+ ->withErrors([
+ 'email' => $this->getFailedLoginMessage(),
+ 'password' => $this->getFailedLoginMessage(),
+ ])->with('error', Lang::get('lang.this_account_is_currently_inactive'));
+ }
+ $loginAttempts = 1;
// If session has login attempts, retrieve attempts counter and attempts time
if (\Session::has('loginAttempts')) {
$loginAttempts = \Session::get('loginAttempts');
$loginAttemptTime = \Session::get('loginAttemptTime');
+ $this->addLoginAttempt($value, $usernameinput);
// $credentials = $request->only('email', 'password');
$usernameinput = $request->input('email');
$password = $request->input('password');
$field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_name';
// If attempts > 3 and time < 10 minutes
- if ($loginAttempts > 4 && (time() - $loginAttemptTime <= 600)) {
- return redirect()->back()->withErrors('email', 'incorrect email')->with('error', 'Maximum login attempts reached. Try again in a while');
- }
+// if ($loginAttempts > $security->backlist_threshold && (time() - $loginAttemptTime <= ($security->lockout_period * 60))) {
+//
+// return redirect()->back()->withErrors('email', 'incorrect email')->with('error', $security->lockout_message);
+// }
// If time > 10 minutes, reset attempts counter and time in session
- if (time() - $loginAttemptTime > 600) {
+ if (time() - $loginAttemptTime > ($security->lockout_period * 60)) {
\Session::put('loginAttempts', 1);
\Session::put('loginAttemptTime', time());
}
} else { // If no login attempts stored, init login attempts and time
\Session::put('loginAttempts', $loginAttempts);
\Session::put('loginAttemptTime', time());
+ $this->clearLoginAttempts($value, $usernameinput);
}
// If auth ok, redirect to restricted area
\Session::put('loginAttempts', $loginAttempts + 1);
- if ($this->auth->attempt([$field => $usernameinput, 'password' => $password], $request->has('remember'))) {
+ \Event::fire('auth.login.event', []); //added 5/5/2016
+ if (Auth::Attempt([$field => $usernameinput, 'password' => $password], $request->has('remember'))) {
if (Auth::user()->role == 'user') {
return \Redirect::route('/');
} else {
@@ -202,19 +233,89 @@ class AuthController extends Controller
return redirect()->back()
->withInput($request->only('email', 'remember'))
->withErrors([
- 'email' => $this->getFailedLoginMessage(),
+ 'email' => $this->getFailedLoginMessage(),
'password' => $this->getFailedLoginMessage(),
- ])->with('error', Lang::get('lang.invalid'));
+ ])->with('error', Lang::get('lang.invalid'));
// Increment login attempts
}
+ /**
+ * Add login attempt.
+ *
+ * @param type IPaddress $value
+ *
+ * @return type Response
+ */
+ public function addLoginAttempt($value, $field) {
+ $result = DB::table('login_attempts')->where('IP', '=', $value)->first();
+ $data = $result;
+ $security = Security::whereId('1')->first();
+ $apt = $security->backlist_threshold;
+ if ($data) {
+ $attempts = $data->Attempts + 1;
+ if ($attempts == $apt) {
+ $result = DB::select('UPDATE login_attempts SET Attempts=' . $attempts . ", LastLogin=NOW() WHERE IP = '$value' OR User = '$field'");
+ } else {
+ $result = DB::table('login_attempts')->where('IP', '=', $value)->orWhere('User', '=', $field)->update(['Attempts' => $attempts]);
+ // $result = DB::select("UPDATE login_attempts SET Attempts=".$attempts." WHERE IP = '$value' OR User = '$field'");
+ }
+ } else {
+ $result = DB::select("INSERT INTO login_attempts (Attempts,User,IP,LastLogin) values (1,'$field','$value', NOW())");
+ }
+ }
+
+ /**
+ * Clear login attempt.
+ *
+ * @param type IPaddress $value
+ *
+ * @return type Response
+ */
+ public function clearLoginAttempts($value, $field) {
+ $data = DB::table('login_attempts')->where('IP', '=', $value)->orWhere('User', '=', $field)->update(['attempts' => '0']);
+
+ return $data;
+ }
+
+ /**
+ * Confiem IP.
+ *
+ * @param type IPaddress $value
+ *
+ * @return type Response
+ */
+ public function confirmIPAddress($value, $field) {
+ $security = Security::whereId('1')->first();
+ $time = $security->lockout_period;
+ $max_attempts = $security->backlist_threshold;
+ $table = 'login_attempts';
+ $result = DB::select('SELECT Attempts, (CASE when LastLogin is not NULL and DATE_ADD(LastLogin, INTERVAL ' . $time . ' MINUTE)>NOW() then 1 else 0 end) as Denied ' .
+ ' FROM ' . $table . " WHERE IP = '$value' OR User = '$field'");
+ $data = $result;
+ //Verify that at least one login attempt is in database
+ if (!$data) {
+ return 0;
+ }
+ if ($data[0]->Attempts >= $max_attempts) {
+ if ($data[0]->Denied == 1) {
+ return 1;
+ } else {
+ $this->clearLoginAttempts($value, $field);
+
+ return 0;
+ }
+ }
+
+ return 0;
+ }
+
/**
* Get Failed login message.
*
* @return type string
*/
- protected function getFailedLoginMessage()
- {
- return 'This Field do not match our records.';
+ protected function getFailedLoginMessage() {
+ return Lang::get('lang.this_field_do_not_match_our_records');
}
+
}
diff --git a/app/Http/Controllers/Auth/PasswordController.php b/app/Http/Controllers/Auth/PasswordController.php
index 75140a67c..6db73113b 100644
--- a/app/Http/Controllers/Auth/PasswordController.php
+++ b/app/Http/Controllers/Auth/PasswordController.php
@@ -9,9 +9,7 @@ use App\Http\Controllers\Controller;
// request
use App\User;
// model
-use Illuminate\Contracts\Auth\Guard;
// classes
-use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
@@ -27,16 +25,11 @@ class PasswordController extends Controller
/**
* Create a new password controller instance.
*
- * @param \Illuminate\Contracts\Auth\Guard $auth
- * @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
- *
* @return void
*/
- public function __construct(Guard $auth, PasswordBroker $passwords, PhpMailController $PhpMailController)
+ public function __construct(PhpMailController $PhpMailController)
{
$this->PhpMailController = $PhpMailController;
- $this->auth = $auth;
- $this->passwords = $passwords;
$this->middleware('guest');
SettingsController::smtp();
}
@@ -73,12 +66,11 @@ class PasswordController extends Controller
} else {
$create_password_reset = \DB::table('password_resets')->insert(['email' => $user->email, 'token' => $code, 'created_at' => $date]);
}
-
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $user->user_name, 'email' => $user->email], $message = ['subject' => 'Your Password Reset Link', 'scenario' => 'reset-password'], $template_variables = ['user' => $user->user_name, 'email_address' => $user->email, 'password_reset_link' => url('password/reset/'.$code)]);
- return redirect()->back()->with('status', 'We have e-mailed your password reset link!');
+ return redirect()->back()->with('status', Lang::get('lang.we_have_e-mailed_your_password_reset_link'));
} else {
- return redirect()->back()->with('errors', "We can't find a user with that e-mail address.");
+ return redirect()->back()->with('errors', Lang::get("lang.we_can't_find_a_user_with_that_e-mail_address"));
}
}
}
diff --git a/app/Http/Controllers/Client/helpdesk/ClientTicketController.php b/app/Http/Controllers/Client/helpdesk/ClientTicketController.php
index 66eb363c3..267579127 100644
--- a/app/Http/Controllers/Client/helpdesk/ClientTicketController.php
+++ b/app/Http/Controllers/Client/helpdesk/ClientTicketController.php
@@ -3,7 +3,7 @@
namespace App\Http\Controllers\Client\helpdesk;
// controllers
-use App\Http\Controllers\Common\SettingsController;
+use App\Http\Controllers\Agent\helpdesk\TicketWorkflowController;
use App\Http\Controllers\Controller;
// requests
use App\Model\helpdesk\Ticket\Ticket_Thread;
@@ -12,14 +12,14 @@ use App\Model\helpdesk\Ticket\Tickets;
use App\User;
use Auth;
// classes
-use Exception;
use Illuminate\Http\Request;
use Input;
+use Lang;
/**
* TicketController2.
*
- * @author Ladybird
+ * @author Ladybird
*/
class ClientTicketController extends Controller
{
@@ -28,11 +28,12 @@ class ClientTicketController extends Controller
*
* @return type response
*/
- public function __construct()
+ public function __construct(TicketWorkflowController $TicketWorkflowController)
{
- SettingsController::smtp();
+ $this->TicketWorkflowController = $TicketWorkflowController;
// $this->middleware('auth');
// $this->middleware('role.user');
+ $this->middleware('board');
}
/**
@@ -56,30 +57,35 @@ class ClientTicketController extends Controller
* @return type view
*/
public function reply($id, Request $request)
- {
- $comment = $request->input('comment');
- if ($comment != null) {
- $tickets = Tickets::where('id', '=', $id)->first();
- $tickets->closed_at = null;
- $tickets->closed = 0;
- $tickets->reopened_at = date('Y-m-d H:i:s');
- $tickets->reopened = 1;
- $tickets->isanswered = 0;
- $threads = new Ticket_Thread();
- $threads->user_id = Auth::user()->id;
- $threads->ticket_id = $tickets->id;
- $threads->poster = 'client';
- $threads->body = $comment;
- try {
- $threads->save();
- $tickets->save();
+ {
+ $tickets = Tickets::where('id', '=', $id)->first();
+ $thread = Ticket_Thread::where('ticket_id', '=', $tickets->id)->first();
- return \Redirect::back()->with('success1', 'Successfully replied');
- } catch (Exception $e) {
- return \Redirect::back()->with('fails1', $e->errorInfo[2]);
- }
- } else {
- return \Redirect::back()->with('fails1', 'Please fill some data!');
- }
+ $subject = $thread->title.'[#'.$tickets->ticket_number.']';
+ $body = $request->input('comment');
+
+ $user_cred = User::where('id', '=', $tickets->user_id)->first();
+
+ $fromaddress = $user_cred->email;
+ $fromname = $user_cred->user_name;
+ $phone = '';
+ $phonecode = '';
+ $mobile_number = '';
+
+ $helptopic = $tickets->help_topic_id;
+ $sla = $tickets->sla;
+ $priority = $tickets->priority_id;
+ $source = $tickets->source;
+ $collaborator = '';
+ $dept = $tickets->dept_id;
+ $assign = $tickets->assigned_to;
+ $form_data = null;
+ $team_assign = null;
+ $ticket_status = null;
+ $auto_response = 0;
+
+ $this->TicketWorkflowController->workflow($fromaddress, $fromname, $subject, $body, $phone, $phonecode, $mobile_number, $helptopic, $sla, $priority, $source, $collaborator, $dept, $assign, $team_assign, $ticket_status, $form_data, $auto_response);
+
+ return \Redirect::back()->with('success1', Lang::get('lang.successfully_replied'));
}
}
diff --git a/app/Http/Controllers/Client/helpdesk/EmailController.php b/app/Http/Controllers/Client/helpdesk/EmailController.php
deleted file mode 100644
index ef1687bbd..000000000
--- a/app/Http/Controllers/Client/helpdesk/EmailController.php
+++ /dev/null
@@ -1,83 +0,0 @@
-
- */
-class EmailController extends Controller
-{
- /**
- * post port.
- *
- * @return string
- */
- public static function port()
- {
- $port = Emails::where('id', '=', '1')->first();
- $portvalue = $port->option_value;
-
- return $portvalue;
- }
-
- /**
- * post host.
- *
- * @return string
- */
- public static function host()
- {
- $host = Option::where('option_name', '=', 'host')->first();
- $hostvalue = $host->option_value;
-
- return $hostvalue;
- }
-
- /**
- * post username.
- *
- * @return string
- */
- public static function username()
- {
- $username = Option::where('option_name', '=', 'username')->first();
- $uservalue = $username->option_value;
-
- return $uservalue;
- }
-
- /**
- * post passowrd.
- *
- * @return string
- */
- public static function password()
- {
- $password = Option::where('option_name', '=', 'password')->first();
- $passvalue = $password->option_value;
-
- return $passvalue;
- }
-
- /**
- * post encryption.
- *
- * @return string
- */
- public static function encryption()
- {
- $encryption = Option::where('option_name', '=', 'encryption')->first();
- $encryptvalue = $encryption->option_value;
-
- return $encryptvalue;
- }
-}
diff --git a/app/Http/Controllers/Client/helpdesk/FormController.php b/app/Http/Controllers/Client/helpdesk/FormController.php
index 544df7963..ce49a6bd6 100644
--- a/app/Http/Controllers/Client/helpdesk/FormController.php
+++ b/app/Http/Controllers/Client/helpdesk/FormController.php
@@ -4,7 +4,6 @@ namespace App\Http\Controllers\Client\helpdesk;
// controllers
use App\Http\Controllers\Agent\helpdesk\TicketWorkflowController;
-use App\Http\Controllers\Common\SettingsController;
use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\ClientRequest;
@@ -18,13 +17,15 @@ use App\Model\helpdesk\Ticket\Ticket_attachments;
use App\Model\helpdesk\Ticket\Ticket_source;
use App\Model\helpdesk\Ticket\Ticket_Thread;
use App\Model\helpdesk\Ticket\Tickets;
+use App\Model\helpdesk\Utility\CountryCode;
use App\User;
use Exception;
// classes
use Form;
+use GeoIP;
use Illuminate\Http\Request;
use Input;
-use Mail;
+use Lang;
use Redirect;
/**
@@ -32,18 +33,16 @@ use Redirect;
*
* @author Ladybird
*/
-class FormController extends Controller
-{
+class FormController extends Controller {
+
/**
* Create a new controller instance.
* Constructor to check.
*
* @return void
*/
- public function __construct(TicketWorkflowController $TicketWorkflowController)
- {
- // mail smtp settings
-// SettingsController::smtp();
+ public function __construct(TicketWorkflowController $TicketWorkflowController) {
+ $this->middleware('board');
// creating a TicketController instance
$this->TicketWorkflowController = $TicketWorkflowController;
}
@@ -55,15 +54,17 @@ class FormController extends Controller
*
* @return type
*/
- public function getForm(Help_topic $topic)
- {
+ public function getForm(Help_topic $topic, CountryCode $code) {
if (\Config::get('database.install') == '%0%') {
return \Redirect::route('license');
}
+ $location = GeoIP::getLocation('');
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
if (System::first()->status == 1) {
$topics = $topic->get();
+ $codes = $code->get();
- return view('themes.default1.client.helpdesk.form', compact('topics'));
+ return view('themes.default1.client.helpdesk.form', compact('topics', 'codes'))->with('phonecode', $phonecode->phonecode);
} else {
return \Redirect::route('home');
}
@@ -77,14 +78,13 @@ class FormController extends Controller
*
* @return type string
*/
- public function postForm($id, Help_topic $topic)
- {
- // dd($id);
+ public function postForm($id, Help_topic $topic) {
if ($id != 0) {
$helptopic = $topic->where('id', '=', $id)->first();
$custom_form = $helptopic->custom_form;
$values = Fields::where('forms_id', '=', $custom_form)->get();
if (!$values) {
+
}
if ($values) {
foreach ($values as $value) {
@@ -93,29 +93,29 @@ class FormController extends Controller
$value = explode(',', $data);
echo '';
foreach ($value as $option) {
- echo ''.$option.' ';
+ echo '' . $option . ' ';
}
echo ' ';
} elseif ($value->type == 'radio') {
$type2 = $value->value;
$val = explode(',', $type2);
- echo ''.$value->label.'     '.$val[0].'
-     '.$val[1].'';
+ echo '' . $value->label . '     ' . $val[0] . '
+     ' . $val[1] . '';
} elseif ($value->type == 'textarea') {
$type3 = $value->value;
$v = explode(',', $type3);
//dd($v);
if (array_key_exists(1, $v)) {
- echo ''.$value->label.' ';
+ echo '' . $value->label . ' ';
} else {
- echo ''.$value->label.' ';
+ echo '' . $value->label . ' ';
}
} elseif ($value->type == 'checkbox') {
$type4 = $value->value;
$check = explode(',', $type4);
- echo ''.$value->label.'      '.$check[0].'   '.$check[1].' ';
+ echo '' . $value->label . '      ' . $check[0] . '   ' . $check[1] . ' ';
} else {
- echo ''.$value->label.' ';
+ echo '' . $value->label . ' ';
}
}
}
@@ -130,8 +130,8 @@ class FormController extends Controller
* @param type Request $request
* @param type User $user
*/
- public function postedForm(User $user, ClientRequest $request, Ticket $ticket_settings, Ticket_source $ticket_source, Ticket_attachments $ta)
- {
+ public function postedForm(User $user, ClientRequest $request, Ticket $ticket_settings, Ticket_source $ticket_source, Ticket_attachments $ta, CountryCode $code) {
+
$form_extras = $request->except('Name', 'Phone', 'Email', 'Subject', 'Details', 'helptopic', '_wysihtml5_mode', '_token');
$name = $request->input('Name');
@@ -139,24 +139,46 @@ class FormController extends Controller
$email = $request->input('Email');
$subject = $request->input('Subject');
$details = $request->input('Details');
-
+ $phonecode = $request->input('Code');
$System = System::where('id', '=', 1)->first();
$departments = Department::where('id', '=', $System->department)->first();
$department = $departments->id;
-
+ $mobile_number = $request->input('Mobile');
$status = $ticket_settings->first()->status;
$helptopic = $ticket_settings->first()->help_topic;
$sla = $ticket_settings->first()->sla;
$priority = $ticket_settings->first()->priority;
$source = $ticket_source->where('name', '=', 'web')->first()->id;
$attachments = $request->file('attachment');
-
$collaborator = null;
$assignto = null;
$auto_response = 0;
$team_assign = null;
+ if ($phone != null || $mobile_number != null) {
+ $location = GeoIP::getLocation();
+ $geoipcode = $code->where('iso', '=', $location['isoCode'])->first();
+ if ($phonecode == null) {
+ $data = [
+ 'fails' => Lang::get('lang.country-code-required-error'),
+ 'phonecode' => $geoipcode->phonecode,
+ 'country_code_error' => 1,
+ ];
- $result = $this->TicketWorkflowController->workflow($email, $name, $subject, $details, $phone, $helptopic, $sla, $priority, $source, $collaborator, $department, $assignto, $team_assign, $status, $form_extras, $auto_response);
+ return Redirect::back()->with($data)->withInput($request->except('password'));
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $phonecode)->get();
+ if (!count($code)) {
+ $data = [
+ 'fails' => Lang::get('lang.incorrect-country-code-error'),
+ 'phonecode' => $geoipcode->phonecode,
+ 'country_code_error' => 1,
+ ];
+
+ return Redirect::back()->with($data)->withInput($request->except('password'));
+ }
+ }
+ }
+ $result = $this->TicketWorkflowController->workflow($email, $name, $subject, $details, $phone, $phonecode, $mobile_number, $helptopic, $sla, $priority, $source, $collaborator, $department, $assignto, $team_assign, $status, $form_extras, $auto_response);
if ($result[1] == 1) {
$ticketId = Tickets::where('ticket_number', '=', $result[0])->first();
@@ -174,7 +196,7 @@ class FormController extends Controller
}
}
- return Redirect::route('guest.getform')->with('success', 'Ticket has been created successfully, your ticket number is '.$result[0].' Please save this for future reference.');
+ return Redirect::back()->with('success', Lang::get('lang.Ticket-has-been-created-successfully-your-ticket-number-is') . ' ' . $result[0] . '. ' . Lang::get('lang.Please-save-this-for-future-reference'));
}
}
@@ -185,30 +207,68 @@ class FormController extends Controller
*
* @return type view
*/
- public function post_ticket_reply($id, Request $request)
- {
- $comment = $request->input('comment');
- if ($comment != null) {
- $tickets = Tickets::where('id', '=', $id)->first();
- $threads = new Ticket_Thread();
- $tickets->closed_at = null;
- $tickets->closed = 0;
- $tickets->reopened_at = date('Y-m-d H:i:s');
- $tickets->reopened = 1;
- $threads->user_id = $tickets->user_id;
- $threads->ticket_id = $tickets->id;
- $threads->poster = 'client';
- $threads->body = $comment;
- try {
- $threads->save();
- $tickets->save();
+ public function post_ticket_reply($id, Request $request) {
+ try {
+ if ($comment != null) {
+ $tickets = Tickets::where('id', '=', $id)->first();
+ $thread = Ticket_Thread::where('ticket_id', '=', $tickets->id)->first();
- return \Redirect::back()->with('success1', 'Successfully replied');
- } catch (Exception $e) {
- return \Redirect::back()->with('fails1', $e->errorInfo[2]);
+ $subject = $thread->title . '[#' . $tickets->ticket_number . ']';
+ $body = $request->input('comment');
+
+ $user_cred = User::where('id', '=', $tickets->user_id)->first();
+
+ $fromaddress = $user_cred->email;
+ $fromname = $user_cred->user_name;
+ $phone = '';
+ $phonecode = '';
+ $mobile_number = '';
+
+ $helptopic = $tickets->help_topic_id;
+ $sla = $tickets->sla;
+ $priority = $tickets->priority_id;
+ $source = $tickets->source;
+ $collaborator = '';
+ $dept = $tickets->dept_id;
+ $assign = $tickets->assigned_to;
+ $form_data = null;
+ $team_assign = null;
+ $ticket_status = null;
+ $auto_response = 0;
+
+ $this->TicketWorkflowController->workflow($fromaddress, $fromname, $subject, $body, $phone, $phonecode, $mobile_number, $helptopic, $sla, $priority, $source, $collaborator, $dept, $assign, $team_assign, $ticket_status, $form_data, $auto_response);
+
+ return \Redirect::back()->with('success1', Lang::get('lang.successfully_replied'));
+ } else {
+ return \Redirect::back()->with('fails1', Lang::get('lang.please_fill_some_data'));
}
- } else {
- return \Redirect::back()->with('fails1', 'Please fill some data!');
+ } catch (Exception $e) {
+ return \Redirect::back()->with('fails1', $e->getMessage());
}
+//
+// $comment = $request->input('comment');
+// if ($comment != null) {
+// $tickets = Tickets::where('id', '=', $id)->first();
+// $threads = new Ticket_Thread();
+// $tickets->closed_at = null;
+// $tickets->closed = 0;
+// $tickets->reopened_at = date('Y-m-d H:i:s');
+// $tickets->reopened = 1;
+// $threads->user_id = $tickets->user_id;
+// $threads->ticket_id = $tickets->id;
+// $threads->poster = 'client';
+// $threads->body = $comment;
+// try {
+// $threads->save();
+// $tickets->save();
+//
+// return \Redirect::back()->with('success1', Lang::get('lang.successfully_replied'));
+// } catch (Exception $e) {
+// return \Redirect::back()->with('fails1', $e->getMessage());
+// }
+// } else {
+// return \Redirect::back()->with('fails1', Lang::get('lang.please_fill_some_data'));
+// }
}
+
}
diff --git a/app/Http/Controllers/Client/helpdesk/GuestController.php b/app/Http/Controllers/Client/helpdesk/GuestController.php
index 9fcb4e228..054de9069 100644
--- a/app/Http/Controllers/Client/helpdesk/GuestController.php
+++ b/app/Http/Controllers/Client/helpdesk/GuestController.php
@@ -4,25 +4,27 @@ namespace App\Http\Controllers\Client\helpdesk;
// controllers
use App\Http\Controllers\Common\PhpMailController;
-use App\Http\Controllers\Common\SettingsController;
use App\Http\Controllers\Controller;
// requests
-use App\Http\Requests\helpdesk\CheckTicket;
use App\Http\Requests\helpdesk\ProfilePassword;
use App\Http\Requests\helpdesk\ProfileRequest;
use App\Http\Requests\helpdesk\TicketRequest;
-// models
use App\Model\helpdesk\Manage\Help_topic;
+// models
use App\Model\helpdesk\Settings\Company;
use App\Model\helpdesk\Settings\System;
use App\Model\helpdesk\Ticket\Ticket_Thread;
use App\Model\helpdesk\Ticket\Tickets;
+use App\Model\helpdesk\Utility\CountryCode;
use App\User;
-// classes
use Auth;
+// classes
use Exception;
+use GeoIP;
use Hash;
+use Illuminate\Http\Request;
use Input;
+use Lang;
/**
* GuestController.
@@ -38,23 +40,25 @@ class GuestController extends Controller
*/
public function __construct(PhpMailController $PhpMailController)
{
+ $this->middleware('board');
$this->PhpMailController = $PhpMailController;
- SettingsController::smtp();
// checking authentication
$this->middleware('auth');
}
- /**
- * Get profile.
- *
- * @return type Response
- */
- public function getProfile()
- {
- $user = Auth::user();
+ /**
+ * Get profile.
+ *
+ * @return type Response
+ */
+ public function getProfile(CountryCode $code)
+ {
+ $user = Auth::user();
+ $location = GeoIP::getLocation('');
+ $phonecode = $code->where('iso', '=', $location['isoCode'])->first();
- return view('themes.default1.client.helpdesk.profile', compact('user'));
- }
+ return view('themes.default1.client.helpdesk.profile', compact('user'))->with('phonecode', $phonecode->phonecode);
+ }
/**
* Save profile data.
@@ -89,12 +93,24 @@ class GuestController extends Controller
Input::file('profile_pic')->move($destinationPath, $fileName);
$user->profile_pic = $fileName;
} else {
+ if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) {
+ return redirect()->back()->with(['fails1' => Lang::get('lang.country-code-required-error'),
+ 'country_code' => 1, ])->withInput();
+ } else {
+ $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get();
+ if (!count($code)) {
+ return redirect()->back()->with(['fails1' => Lang::get('lang.incorrect-country-code-error'),
+ 'country_code' => 1, ])->withInput();
+ } else {
+ $user->country_code = $request->input('country_code');
+ }
+ }
$user->fill($request->except('profile_pic', 'gender'))->save();
- return redirect()->back()->with('success1', 'Profile Updated sucessfully');
+ return redirect()->back()->with('success1', Lang::get('lang.profile_updated_sucessfully'));
}
if ($user->fill($request->except('profile_pic'))->save()) {
- return redirect()->back()->with('success1', 'Profile Updated sucessfully');
+ return redirect()->back()->with('success1', Lang::get('lang.profile_updated_sucessfully'));
}
}
@@ -195,12 +211,12 @@ class GuestController extends Controller
try {
$user->save();
- return redirect()->back()->with('success2', 'Password Updated sucessfully');
+ return redirect()->back()->with('success2', Lang::get('lang.password_updated_sucessfully'));
} catch (Exception $e) {
- return redirect()->back()->with('fails2', $e->errorInfo[2]);
+ return redirect()->back()->with('fails2', $e->getMessage());
}
} else {
- return redirect()->back()->with('fails2', 'Password was not Updated. Incorrect old password');
+ return redirect()->back()->with('fails2', Lang::get('lang.password_was_not_updated_incorrect_old_password'));
}
}
@@ -250,26 +266,33 @@ class GuestController extends Controller
*
* @return type Response
*/
- public function PostCheckTicket()
+ public function PostCheckTicket(Request $request)
{
- $Email = \Input::get('email');
- $Ticket_number = \Input::get('ticket_number');
-
+ $validator = \Validator::make($request->all(), [
+ 'email' => 'required|email',
+ 'ticket_number' => 'required',
+ ]);
+ if ($validator->fails()) {
+ return redirect()->back()
+ ->withErrors($validator)
+ ->withInput()
+ ->with('check', '1');
+ }
+ $Email = $request->input('email');
+ $Ticket_number = $request->input('ticket_number');
$ticket = Tickets::where('ticket_number', '=', $Ticket_number)->first();
if ($ticket == null) {
- return \Redirect::route('form')->with('fails', 'There is no such Ticket Number');
+ return \Redirect::route('form')->with('fails', Lang::get('lang.there_is_no_such_ticket_number'));
} else {
$userId = $ticket->user_id;
$user = User::where('id', '=', $userId)->first();
-
if ($user->role == 'user') {
$username = $user->user_name;
} else {
$username = $user->first_name.' '.$user->last_name;
}
-
if ($user->email != $Email) {
- return \Redirect::route('form')->with('fails', "Email didn't match with Ticket Number");
+ return \Redirect::route('form')->with('fails', Lang::get("lang.email_didn't_match_with_ticket_number"));
} else {
$code = $ticket->id;
$code = \Crypt::encrypt($code);
@@ -281,7 +304,7 @@ class GuestController extends Controller
);
return \Redirect::back()
- ->with('success', 'We have sent you a link by Email. Please click on that link to view ticket');
+ ->with('success', Lang::get('lang.we_have_sent_you_a_link_by_email_please_click_on_that_link_to_view_ticket'));
}
}
}
diff --git a/app/Http/Controllers/Client/helpdesk/UnAuthController.php b/app/Http/Controllers/Client/helpdesk/UnAuthController.php
new file mode 100644
index 000000000..51c38e64e
--- /dev/null
+++ b/app/Http/Controllers/Client/helpdesk/UnAuthController.php
@@ -0,0 +1,278 @@
+
+ */
+class UnAuthController extends Controller
+{
+ /**
+ * Create a new controller instance.
+ *
+ * @return type void
+ */
+ public function __construct(PhpMailController $PhpMailController)
+ {
+ $this->middleware('board');
+ $this->PhpMailController = $PhpMailController;
+ }
+
+ /**
+ * Post Check ticket.
+ *
+ * @param type CheckTicket $request
+ * @param type User $user
+ * @param type Tickets $ticket
+ * @param type Ticket_Thread $thread
+ *
+ * @return type Response
+ */
+ public function PostCheckTicket(Request $request)
+ {
+ try {
+ $validator = \Validator::make($request->all(), [
+ 'email_address' => 'required|email',
+ 'ticket_number' => 'required',
+ ]);
+ if ($validator->fails()) {
+ return redirect()->back()
+ ->withErrors($validator)
+ ->withInput()
+ ->with('check', '1');
+ }
+ $email = $request->input('email_address');
+ $ticket_number = $request->input('ticket_number');
+ // get user details
+ $user_details = User::where('email', '=', $email)->first();
+ // get ticket details
+ $ticket = Tickets::where('ticket_number', '=', $ticket_number)->first();
+ if ($ticket == null) {
+ return \Redirect::route('form')->with('fails', Lang::get('lang.there_is_no_such_ticket_number'));
+ }
+ if ($ticket->user_id == $user_details->id) {
+ if ($user_details->role == 'user') {
+ $username = $user_details->user_name;
+ } else {
+ $username = $user_details->first_name.' '.$user_details->last_name;
+ }
+ // check for preentered ticket token
+ $ticket_token = TicketToken::where('ticket_id', '=', $ticket->id)->first();
+ if ($ticket_token) {
+ $token = $this->generate_random_ticket_token();
+ $hashed_token = \Hash::make($token);
+ $ticket_token->token = $hashed_token;
+ $ticket_token->save();
+ } else {
+ $ticket_token = new TicketToken();
+ $ticket_token->ticket_id = $ticket->id;
+ $token = $this->generate_random_ticket_token();
+ $hashed_token = \Hash::make($token);
+ $ticket_token->token = $hashed_token;
+ $ticket_token->save();
+ }
+ try {
+ $this->PhpMailController->sendmail(
+ $from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $username, 'email' => $user_details->email], $message = ['subject' => 'Ticket link Request ['.$ticket_number.']', 'scenario' => 'check-ticket'], $template_variables = ['user' => $username, 'ticket_link_with_number' => url('show-ticket/'.$ticket->id.'/'.$token)]
+ );
+ } catch (\Exception $e) {
+ }
+
+ return redirect()->back()
+ ->with('success', Lang::get('lang.we_have_sent_you_a_link_by_email_please_click_on_that_link_to_view_ticket'));
+ } else {
+ return \Redirect::route('form')->with('fails', Lang::get("lang.email_didn't_match_with_ticket_number"));
+ }
+ } catch (\Exception $e) {
+ return \Redirect::route('form')->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * generate random string token for ticket.
+ *
+ * @param type $length
+ *
+ * @return string
+ */
+ public function generate_random_ticket_token($length = 10)
+ {
+ $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ $charactersLength = strlen($characters);
+ $randomString = '';
+ for ($i = 0; $i < $length; $i++) {
+ $randomString .= $characters[rand(0, $charactersLength - 1)];
+ }
+
+ return $randomString;
+ }
+
+ /**
+ * function to check the ticket without loggin In.
+ *
+ * @param type $ticket_id
+ * @param type $token
+ *
+ * @return type view
+ */
+ public function showTicketCode($ticket_id, $token)
+ {
+ try {
+ $check_token = TicketToken::where('ticket_id', '=', $ticket_id)->first();
+ if (Hash::check($token, $check_token->token) == true) {
+ $token_time = CommonSettings::where('option_name', '=', 'ticket_token_time_duration')->first();
+ $time = $token_time->option_value;
+ $new_time = date_add($check_token->updated_at, date_interval_create_from_date_string($time.' Hours'));
+ if (date('Y-m-d H:i:s') > $new_time) {
+ return redirect()->route('form')->with('fails', Lang::get('lang.sorry_your_ticket_token_has_expired_please_try_to_resend_the_ticket_link_request'));
+ }
+ $tickets = Tickets::where('id', '=', $ticket_id)->first();
+
+ return view('themes.default1.client.helpdesk.unauth.showticket', compact('tickets', 'token'));
+ } else {
+ return redirect()->route('form')->with('fails', Lang::get('lang.sorry_you_are_not_allowed_token_expired'));
+ }
+ } catch (Exception $ex) {
+ return redirect()->route('form')->with('fails', $e->getMessage());
+ }
+ }
+
+ /**
+ * Store ratings of the user.
+ *
+ * @return type Redirect
+ */
+ public function rating($id, Request $request, \App\Model\helpdesk\Ratings\RatingRef $rating_ref)
+ {
+ foreach ($request->all() as $key => $value) {
+ if (strpos($key, '_') !== false) {
+ $ratName = str_replace('_', ' ', $key);
+ } else {
+ $ratName = $key;
+ }
+ $ratID = \App\Model\helpdesk\Ratings\Rating::where('name', '=', $ratName)->first();
+ $ratingrefs = $rating_ref->where('rating_id', '=', $ratID->id)->where('ticket_id', '=', $id)->first();
+ if ($ratingrefs !== null) {
+ $ratingrefs->rating_id = $ratID->id;
+ $ratingrefs->ticket_id = $id;
+
+ $ratingrefs->thread_id = '0';
+ $ratingrefs->rating_value = $value;
+ $ratingrefs->save();
+ } else {
+ $rating_ref->rating_id = $ratID->id;
+ $rating_ref->ticket_id = $id;
+
+ $rating_ref->thread_id = '0';
+ $rating_ref->rating_value = $value;
+ $rating_ref->save();
+ }
+ }
+
+ return redirect()->back()->with('Success', Lang::get('lang.thank_you_for_your_rating'));
+ }
+
+ /**
+ * Store Client rating about reply of agent quality.
+ *
+ * @return type Redirect
+ */
+ public function ratingReply($id, Request $request, \App\Model\helpdesk\Ratings\RatingRef $rating_ref)
+ {
+ foreach ($request->all() as $key => $value) {
+ $key1 = explode(',', $key);
+ if (strpos($key1[0], '_') !== false) {
+ $ratName = str_replace('_', ' ', $key1[0]);
+ } else {
+ $ratName = $key1[0];
+ }
+ $ratID = \App\Model\helpdesk\Ratings\Rating::where('name', '=', $ratName)->first();
+ $ratingrefs = $rating_ref->where('rating_id', '=', $ratID->id)->where('thread_id', '=', $key1[1])->first();
+ if ($ratingrefs !== null) {
+ $ratingrefs->rating_id = $ratID->id;
+ $ratingrefs->ticket_id = $id;
+ $ratingrefs->thread_id = $key1[1];
+ $ratingrefs->rating_value = $value;
+ $ratingrefs->save();
+ } else {
+ $rating_ref->rating_id = $ratID->id;
+ $rating_ref->ticket_id = $id;
+ $rating_ref->thread_id = $key1[1];
+ $rating_ref->rating_value = $value;
+ $rating_ref->save();
+ }
+ }
+
+ return redirect()->back()->with('Success', Lang::get('lang.thank_you_for_your_rating'));
+ }
+
+ /**
+ * function to change the status of the ticket.
+ *
+ * @param type $status
+ * @param type $id
+ *
+ * @return string
+ */
+ public function changeStatus($status, $id)
+ {
+ $tickets = Tickets::where('id', '=', $id)->first();
+ $tickets->status = $status;
+ $ticket_status = Ticket_Status::where('id', '=', $status)->first();
+ if ($ticket_status->state == 'closed') {
+ $tickets->closed = $ticket_status->id;
+ $tickets->closed_at = date('Y-m-d H:i:s');
+ }
+ $tickets->save();
+ $ticket_thread = Ticket_Thread::where('ticket_id', '=', $ticket_status->id)->first();
+ $ticket_subject = $ticket_thread->title;
+
+ $user = User::where('id', '=', $tickets->user_id)->first();
+
+ $thread = new Ticket_Thread();
+ $thread->ticket_id = $tickets->id;
+ $thread->user_id = $tickets->user_id;
+ $thread->is_internal = 1;
+ $thread->body = $ticket_status->message.' '.$user->user_name;
+ $thread->save();
+
+ $email = $user->email;
+ $user_name = $user->user_name;
+
+ $ticket_number = $tickets->ticket_number;
+
+ $sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first();
+ if ($sending_emails == null) {
+ $from_email = $this->system_mail();
+ } else {
+ $from_email = $sending_emails->id;
+ }
+ try {
+ $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $tickets->dept_id), $to = ['name' => $user_name, 'email' => $email], $message = ['subject' => $ticket_subject.'[#'.$ticket_number.']', 'scenario' => 'close-ticket'], $template_variables = ['ticket_number' => $ticket_number]);
+ } catch (\Exception $e) {
+ return 0;
+ }
+
+ return Lang::get('lang.your_ticket_has_been').' '.$ticket_status->state;
+ }
+}
diff --git a/app/Http/Controllers/Client/helpdesk/WelcomepageController.php b/app/Http/Controllers/Client/helpdesk/WelcomepageController.php
index 04ef25a02..3b84bd272 100644
--- a/app/Http/Controllers/Client/helpdesk/WelcomepageController.php
+++ b/app/Http/Controllers/Client/helpdesk/WelcomepageController.php
@@ -15,15 +15,18 @@ use Redirect;
*
* @author Ladybird
*/
-class WelcomepageController extends Controller
-{
+class WelcomepageController extends Controller {
+
+ public function __construct() {
+// $this->middleware('board');
+ }
+
/**
* Display a listing of the resource.
*
* @return Response
*/
- public function get(System $note)
- {
+ public function get(System $note) {
if (Config::get('database.install') == '%0%') {
return Redirect::route('licence');
}
@@ -35,12 +38,12 @@ class WelcomepageController extends Controller
return view('themes.default1.client.guest-user.guest', compact('heading', 'content'));
}
- public function index()
- {
+ public function index() {
if (Config::get('database.install') == '%0%') {
return Redirect::route('licence');
}
return view('themes.default1.client.helpdesk.guest-user.index');
}
+
}
diff --git a/app/Http/Controllers/Client/kb/UserController.php b/app/Http/Controllers/Client/kb/UserController.php
index 2ecf9da39..ac1d6f893 100644
--- a/app/Http/Controllers/Client/kb/UserController.php
+++ b/app/Http/Controllers/Client/kb/UserController.php
@@ -20,6 +20,7 @@ use Auth;
use Config;
use Hash;
use Illuminate\Http\Request;
+use Lang;
use Mail;
use Redirect;
@@ -27,6 +28,7 @@ class UserController extends Controller
{
public function __construct()
{
+ $this->middleware('board');
//$this->middleware('auth');
//SettingsController::language();
// $this->port();
@@ -45,8 +47,14 @@ class UserController extends Controller
{
$settings = $settings->first();
$pagination = $settings->pagination;
- // $article = $article->where('status', '1');
- // $article = $article->where('type', '1');
+ if (Auth::check()) {
+ if (\Auth::user()->role == 'user') {
+ $article = $article->where('status', '1');
+ }
+ } else {
+ $article = $article->where('status', '1');
+ }
+ $article = $article->where('type', '1');
$article = $article->paginate($pagination);
// dd($article);
$article->setPath('article-list');
@@ -78,14 +86,26 @@ class UserController extends Controller
return $excerpt;
}
+ /**
+ * function to search an article.
+ *
+ * @param \App\Http\Requests\kb\SearchRequest $request
+ * @param \App\Model\kb\Category $category
+ * @param \App\Model\kb\Article $article
+ * @param \App\Model\kb\Settings $settings
+ *
+ * @return type view
+ */
public function search(SearchRequest $request, Category $category, Article $article, Settings $settings)
{
$settings = $settings->first();
$pagination = $settings->pagination;
$search = $request->input('s');
- $result = $article->search($search)->paginate($pagination);
+ $result = $article->where('name', 'LIKE', '%'.$search.'%')
+ ->orWhere('slug', 'LIKE', '%'.$search.'%')
+ ->orWhere('description', 'LIKE', '%'.$search.'%')
+ ->paginate($pagination);
$result->setPath('search');
- //dd($result);
$categorys = $category->get();
return view('themes.default1.client.kb.article-list.search', compact('categorys', 'result'));
@@ -103,11 +123,22 @@ class UserController extends Controller
$tz = \App\Model\helpdesk\Utility\Timezones::where('id', $tz)->first()->name;
date_default_timezone_set($tz);
$date = \Carbon\Carbon::now()->toDateTimeString();
- $arti = $article->where('slug', $slug)->where('status', '1')->where('type', '1')->where('publish_time', '<', $date)->first();
+ $arti = $article->where('slug', $slug);
+ if (Auth::check()) {
+ if (\Auth::user()->role == 'user') {
+ $arti = $arti->where('status', '1');
+ }
+ } else {
+ $arti = $arti->where('status', '1');
+ }
+ $arti = $arti->where('type', '1');
+ $arti = $arti->where('publish_time', '<', $date);
+ $arti = $arti->first();
+
if ($arti) {
return view('themes.default1.client.kb.article-list.show', compact('arti'));
} else {
- return redirect()->back()->with('fails', 'No records on publish time');
+ return redirect()->back()->with('fails', Lang::get('lang.no_records_on_publish_time'));
}
}
@@ -183,12 +214,12 @@ class UserController extends Controller
//echo $message;
//echo $contact->email;
$mail = Mail::send('themes.default1.client.kb.article-list.contact-details', ['name' => $name, 'email' => $email, 'subject' => $subject, 'details' => $details], function ($message) use ($contact) {
- $message->to($contact->email, $contact->name)->subject('Contact');
- });
+ $message->to($contact->email, $contact->name)->subject('Contact');
+ });
if ($mail) {
- return redirect('contact')->with('success', 'Your details send to System');
+ return redirect('contact')->with('success', Lang::get('lang.your_details_send_to_system'));
} else {
- return redirect('contact')->with('fails', 'Your details can not send to System');
+ return redirect('contact')->with('fails', Lang::get('lang.your_details_can_not_send_to_system'));
}
}
@@ -213,9 +244,9 @@ class UserController extends Controller
$id = $article->id;
$comment->article_id = $id;
if ($comment->fill($request->input())->save()) {
- return Redirect::back()->with('success', 'Your comment posted');
+ return Redirect::back()->with('success', Lang::get('lang.your_comment_posted'));
} else {
- return Redirect::back()->with('fails', 'Sorry not processed');
+ return Redirect::back()->with('fails', Lang::get('lang.sorry_not_processed'));
}
}
@@ -314,10 +345,10 @@ class UserController extends Controller
} else {
$user->fill($request->except('profile_pic', 'gender'))->save();
- return redirect('guest')->with('success', 'Profile Updated sucessfully');
+ return redirect('guest')->with('success', Lang::get('lang.profile_updated_sucessfully'));
}
if ($user->fill($request->except('profile_pic'))->save()) {
- return redirect('guest')->with('success', 'Profile Updated sucessfully');
+ return redirect('guest')->with('success', Lang::get('lang.sorry_not_proprofile_updated_sucessfullycessed'));
}
}
@@ -329,9 +360,9 @@ class UserController extends Controller
$user->password = Hash::make($request->input('new_password'));
$user->save();
- return redirect()->back()->with('success', 'Password Updated sucessfully');
+ return redirect()->back()->with('success', Lang::get('lang.password_updated_sucessfully'));
} else {
- return redirect()->back()->with('fails', 'Password was not Updated');
+ return redirect()->back()->with('fails', Lang::get('lang.password_was_not_updated'));
}
}
}
diff --git a/app/Http/Controllers/Common/ApiSettings.php b/app/Http/Controllers/Common/ApiSettings.php
new file mode 100644
index 000000000..ce0a26b22
--- /dev/null
+++ b/app/Http/Controllers/Common/ApiSettings.php
@@ -0,0 +1,116 @@
+middleware('auth', ['except' => ['ticketDetailEvent', 'postHook', 'postForm']]);
+ $this->middleware('roles', ['except' => ['ticketDetailEvent', 'postHook', 'postForm']]);
+
+ $api = new ApiSetting();
+ $this->api = $api;
+ }
+
+ public function show()
+ {
+ try {
+ $details = [];
+ $ticket_detail = '';
+ $settings = $this->api;
+ if ($settings->get()->count() > 0) {
+ $details = $this->api->lists('value', 'key')->toArray();
+ }
+ if (array_key_exists('ticket_detail', $details)) {
+ $ticket_detail = $details['ticket_detail'];
+ }
+
+ return view('themes.default1.common.api.settings', compact('ticket_detail'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ public function postSettings(Request $request)
+ {
+ $this->validate($request, [
+ 'ticket_detail' => 'url',
+ ]);
+ try {
+ $settings = $this->api;
+ if ($settings->get()->count() > 0) {
+ foreach ($settings->get() as $set) {
+ $set->delete();
+ }
+ }
+ foreach ($request->except('_token') as $key => $value) {
+ $settings->create(['key' => $key, 'value' => $value]);
+ }
+
+ return redirect()->back()->with('success', 'Updated Successfully');
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ public function ticketDetailEvent($detail)
+ {
+ try {
+ $ticket = new Tickets();
+ $ticketid = $detail->ticket_id;
+ $data = $ticket
+ ->join('ticket_thread', function ($join) use ($ticketid) {
+ $join->on('tickets.id', '=', 'ticket_thread.ticket_id')
+ ->where('ticket_thread.ticket_id', '=', $ticketid);
+ })
+ ->join('users', 'ticket_thread.user_id', '=', 'users.id')
+ ->select('ticket_thread.title', 'ticket_thread.body', 'users.first_name', 'users.last_name', 'users.email', 'ticket_thread.created_at')
+ ->get()
+ ->toJson();
+ $this->postHook($data);
+ } catch (Exception $ex) {
+ dd($ex);
+ throw new Exception($ex->getMessage());
+ }
+ }
+
+ public function postHook($data)
+ {
+ try {
+ $set = $this->api->where('key', 'ticket_detail')->first();
+ if ($set) {
+ if ($set->value) {
+ $this->postForm($data, $set->value);
+ }
+ }
+ } catch (Exception $ex) {
+ dd($ex);
+ throw new Exception($ex->getMessage());
+ }
+ }
+
+ public function postForm($data, $url)
+ {
+ try {
+ $post_data = [
+ 'data' => $data,
+ ];
+ $upgrade_controller = new \App\Http\Controllers\Update\UpgradeController();
+ $upgrade_controller->postCurl($url, $post_data);
+ Log::info('ticket details has send to : '.$url.' and details are : '.$data);
+ } catch (Exception $ex) {
+ throw new Exception($ex->getMessage());
+ }
+ }
+}
diff --git a/app/Http/Controllers/Common/NotificationController.php b/app/Http/Controllers/Common/NotificationController.php
index 14034e9d9..635b8e2ed 100644
--- a/app/Http/Controllers/Common/NotificationController.php
+++ b/app/Http/Controllers/Common/NotificationController.php
@@ -26,9 +26,8 @@ class NotificationController extends Controller
{
$notifications = UserNotification::join('notifications', 'user_notification.notification_id', '=', 'notifications.id')
->join('notification_types', 'notifications.type_id', '=', 'notification_types.id')
- ->where('user_notification.is_read', '=', '0')
->where('user_notification.user_id', '=', \Auth::user()->id)
- ->get();
+ ->paginate(10);
return $notifications;
}
@@ -41,7 +40,7 @@ class NotificationController extends Controller
}
//dd($forwhome);
//system notification
- $notification = new Notification();
+ $notification = new Notification();
$UN = new UserNotification();
$notify = $notification->create(['model_id' => $model_id, 'userid_created' => $userid_created, 'type_id' => $type_id]);
diff --git a/app/Http/Controllers/Common/PhpMailController.php b/app/Http/Controllers/Common/PhpMailController.php
index aacff6c2f..1ce415d17 100644
--- a/app/Http/Controllers/Common/PhpMailController.php
+++ b/app/Http/Controllers/Common/PhpMailController.php
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Common;
use App\Http\Controllers\Controller;
+use App\Model\Common\TemplateType;
use App\Model\helpdesk\Agent\Department;
use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Settings\Company;
@@ -10,10 +11,9 @@ use App\Model\helpdesk\Settings\Email;
use App\User;
use Auth;
-class PhpMailController extends Controller
-{
- public function fetch_smtp_details($id)
- {
+class PhpMailController extends Controller {
+
+ public function fetch_smtp_details($id) {
$emails = Emails::where('id', '=', $id)->first();
if ($emails->sending_status == 1) {
return $emails;
@@ -29,8 +29,7 @@ class PhpMailController extends Controller
*
* @return Mail
*/
- public function sendmail($from, $to, $message, $template_variables)
- {
+ public function sendmail($from, $to, $message, $template_variables) {
// dd($from);
$from_address = $this->fetch_smtp_details($from);
if ($from_address == null) {
@@ -43,6 +42,7 @@ class PhpMailController extends Controller
$smtpsecure = $from_address->sending_encryption;
$host = $from_address->sending_host;
$port = $from_address->sending_port;
+ $protocol = $from_address->sending_protocol;
if (isset($to['email'])) {
$recipants = $to['email'];
@@ -64,11 +64,11 @@ class PhpMailController extends Controller
} else {
$bc = null;
}
- if (isset($message['subject'])) {
- $subject = $message['subject'];
- } else {
- $subject = null;
- }
+// if (isset($message['subject'])) {
+// $subject = $message['subject'];
+// } else {
+// $subject = null;
+// }
if (isset($message['body'])) {
$content = $message['body'];
} else {
@@ -182,11 +182,28 @@ class PhpMailController extends Controller
$path2 = \Config::get('view.paths');
- $directory = $path2[0].DIRECTORY_SEPARATOR.'emails'.DIRECTORY_SEPARATOR.$status->template.DIRECTORY_SEPARATOR;
+// $directory = $path2[0].DIRECTORY_SEPARATOR.'emails'.DIRECTORY_SEPARATOR.$status->template.DIRECTORY_SEPARATOR;
+//
+// $handle = fopen($directory.$template.'.blade.php', 'r');
+// $contents = fread($handle, filesize($directory.$template.'.blade.php'));
+// fclose($handle);
- $handle = fopen($directory.$template.'.blade.php', 'r');
- $contents = fread($handle, filesize($directory.$template.'.blade.php'));
- fclose($handle);
+ $template = TemplateType::where('name', '=', $template)->first();
+
+ $set = \App\Model\Common\TemplateSet::where('name', '=', $status->template)->first();
+
+ if (isset($set['id'])) {
+ $template_data = \App\Model\Common\Template::where('set_id', '=', $set->id)->where('type', '=', $template->id)->first();
+ $contents = $template_data->message;
+ if ($template_data->subject) {
+ $subject = $template_data->subject;
+ } else {
+ $subject = $message['subject'];
+ }
+ } else {
+ $contents = null;
+ $subject = null;
+ }
$variables = ['{!!$user!!}', '{!!$agent!!}', '{!!$ticket_number!!}', '{!!$content!!}', '{!!$from!!}', '{!!$ticket_agent_name!!}', '{!!$ticket_client_name!!}', '{!!$ticket_client_email!!}', '{!!$ticket_body!!}', '{!!$ticket_assigner!!}', '{!!$ticket_link_with_number!!}', '{!!$system_error!!}', '{!!$agent_sign!!}', '{!!$department_sign!!}', '{!!$password_reset_link!!}', '{!!$email_address!!}', '{!!$user_password!!}', '{!!$system_from!!}', '{!!$system_link!!}'];
@@ -203,22 +220,30 @@ class PhpMailController extends Controller
}
// dd($messagebody);
- //$mail->SMTPDebug = 3; // Enable verbose debug output
+ //$mail->SMTPDebug = 3; // Enable verbose debug output
+ if ($protocol == "smtp") {
- $mail->isSMTP(); // Set mailer to use SMTP
- $mail->Host = $host; // Specify main and backup SMTP servers
- $mail->SMTPAuth = true; // Enable SMTP authentication
- $mail->Username = $username; // SMTP username
- $mail->Password = $password; // SMTP password
- $mail->SMTPSecure = $smtpsecure; // Enable TLS encryption, `ssl` also accepted
- $mail->Port = $port; // TCP port to connect to
-
- $mail->setFrom($username, $fromname);
- $mail->addAddress($recipants); // Add a recipient
+ $mail->isSMTP(); // Set mailer to use SMTP
+ $mail->Host = $host; // Specify main and backup SMTP servers
+ $mail->SMTPAuth = true; // Enable SMTP authentication
+ $mail->Username = $username; // SMTP username
+ $mail->Password = $password; // SMTP password
+ $mail->SMTPSecure = $smtpsecure; // Enable TLS encryption, `ssl` also accepted
+ $mail->Port = $port; // TCP port to connect to
+ $mail->setFrom($username, $fromname);
+ } elseif ($protocol == "mail") {
+ $mail->IsSendmail(); // telling the class to use SendMail transport
+ if ($username == $fromname) {
+ $mail->setFrom($username);
+ } else {
+ $mail->setFrom($username, $fromname);
+ }
+ }
+ $mail->addAddress($recipants); // Add a recipient
// Name is optional
// $mail->addReplyTo('sada059@gmail.com', 'Information');
// Optional name
- $mail->isHTML(true); // Set email format to HTML
+ $mail->isHTML(true); // Set email format to HTML
if ($cc != null) {
foreach ($cc as $collaborator) {
//mail to collaborators
@@ -229,7 +254,7 @@ class PhpMailController extends Controller
}
}
- $mail->addBCC($bc);
+// $mail->addBCC($bc);
if ($attachment != null) {
$size = count($message['attachments']);
@@ -244,9 +269,9 @@ class PhpMailController extends Controller
$mail->Subject = $subject;
if ($template == 'ticket-reply-agent') {
$line = '---Reply above this line--- ';
- $mail->Body = $line.$messagebody;
+ $mail->Body = utf8_decode($line . $messagebody);
} else {
- $mail->Body = $messagebody;
+ $mail->Body = utf8_decode($messagebody);
}
// $mail->AltBody = $altbody;
@@ -267,8 +292,7 @@ class PhpMailController extends Controller
*
* @return MailNotification
*/
- public function sendEmail($from, $to, $message)
- {
+ public function sendEmail($from, $to, $message) {
// dd($from);
$from_address = $this->fetch_smtp_details($from);
@@ -394,8 +418,7 @@ class PhpMailController extends Controller
*
* @return type
*/
- public function company()
- {
+ public function company() {
$company = Company::Where('id', '=', '1')->first();
if ($company->company_name == null) {
$company = 'Support Center';
@@ -457,8 +480,7 @@ class PhpMailController extends Controller
*
* @return type integer
*/
- public function mailfrom($reg, $dept_id)
- {
+ public function mailfrom($reg, $dept_id) {
$email = Email::where('id', '=', '1')->first();
if ($reg == 1) {
return $email->sys_email;
@@ -471,4 +493,5 @@ class PhpMailController extends Controller
}
}
}
+
}
diff --git a/app/Http/Controllers/Common/SettingsController.php b/app/Http/Controllers/Common/SettingsController.php
index 967943430..c1c143074 100644
--- a/app/Http/Controllers/Common/SettingsController.php
+++ b/app/Http/Controllers/Common/SettingsController.php
@@ -19,6 +19,7 @@ use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Input;
+use Lang;
/**
* ***************************
@@ -130,9 +131,9 @@ class SettingsController extends Controller
try {
$widget->save();
- return redirect()->back()->with('success', $widget->name.' Saved Successfully');
+ return redirect()->back()->with('success', $widget->name.Lang::get('lang.saved_successfully'));
} catch (Exception $e) {
- return redirect()->back()->with('fails', $e->errorInfo[2]);
+ return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -461,7 +462,6 @@ class SettingsController extends Controller
public function GetPlugin()
{
$plugins = $this->fetchConfig();
- //dd($plugins);
return \Datatable::collection(new Collection($plugins))
->searchColumns('name')
@@ -683,24 +683,37 @@ class SettingsController extends Controller
{
$configs = $this->ReadConfigs();
//dd($configs);
- $plug = new Plugin();
- $plug = $plug->select('path', 'status')->orderBy('name')->get()->toArray();
- //$fields = [];
- if ($configs !== 'null') {
+ $plugs = new Plugin();
+ $fields = [];
+ $attributes = [];
+ if ($configs != 'null') {
foreach ($configs as $key => $config) {
$fields[$key] = include $config;
-
- if ($plug != null) {
- $fields[$key]['path'] = $plug[$key]['path'];
- $fields[$key]['status'] = $plug[$key]['status'];
- } else {
- $fields[$key]['path'] = $fields[$key]['name'];
- $fields[$key]['status'] = 0;
- }
}
-
- return $fields;
}
+ //dd($fields);
+ if (count($fields) > 0) {
+ foreach ($fields as $key => $field) {
+ $plug = $plugs->where('name', $field['name'])->select('path', 'status')->orderBy('name')->get()->toArray();
+ if ($plug) {
+ foreach ($plug as $i => $value) {
+ $attributes[$key]['path'] = $plug[$i]['path'];
+ $attributes[$key]['status'] = $plug[$i]['status'];
+ }
+ } else {
+ $attributes[$key]['path'] = $field['name'];
+ $attributes[$key]['status'] = 0;
+ }
+ $attributes[$key]['name'] = $field['name'];
+ $attributes[$key]['settings'] = $field['settings'];
+ $attributes[$key]['description'] = $field['description'];
+ $attributes[$key]['website'] = $field['website'];
+ $attributes[$key]['version'] = $field['version'];
+ $attributes[$key]['author'] = $field['author'];
+ }
+ }
+ //dd($attributes);
+ return $attributes;
}
public function DeletePlugin($slug)
@@ -730,7 +743,7 @@ class SettingsController extends Controller
$plug = $plugs->where('name', $slug)->first();
if (!$plug) {
$app = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
- $str = "'App\\Plugins\\$slug"."\\ServiceProvider',";
+ $str = "\n'App\\Plugins\\$slug"."\\ServiceProvider',";
$line_i_am_looking_for = 144;
$lines = file($app, FILE_IGNORE_NEW_LINES);
$lines[$line_i_am_looking_for] = $str;
@@ -744,7 +757,7 @@ class SettingsController extends Controller
$plug->status = 1;
$app = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
- $str = "'App\\Plugins\\$slug"."\\ServiceProvider',";
+ $str = "\n'App\\Plugins\\$slug"."\\ServiceProvider',";
$line_i_am_looking_for = 144;
$lines = file($app, FILE_IGNORE_NEW_LINES);
$lines[$line_i_am_looking_for] = $str;
@@ -755,7 +768,7 @@ class SettingsController extends Controller
/*
* remove service provider from app.php
*/
- $str = "'App\\Plugins\\$slug"."\\ServiceProvider',";
+ $str = "\n'App\\Plugins\\$slug"."\\ServiceProvider',";
$path_to_file = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
$file_contents = file_get_contents($path_to_file);
@@ -766,4 +779,8 @@ class SettingsController extends Controller
return redirect()->back()->with('success', 'Status has changed');
}
+
+ /*
+ *
+ */
}
diff --git a/app/Http/Controllers/Common/TemplateController.php b/app/Http/Controllers/Common/TemplateController.php
new file mode 100644
index 000000000..fcdd593d5
--- /dev/null
+++ b/app/Http/Controllers/Common/TemplateController.php
@@ -0,0 +1,258 @@
+middleware('auth');
+ $this->middleware('roles');
+
+ $template = new Template();
+ $this->template = $template;
+
+ $type = new TemplateType();
+ $this->type = $type;
+ }
+
+ /**
+ * get the list of templates.
+ *
+ * @return type view
+ */
+ public function index()
+ {
+ try {
+ return view('themes.default1.common.template.inbox');
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Show template
+ * This template to show a particular template.
+ *
+ * @param type $id
+ *
+ * @return type view
+ */
+ public function showTemplate($id)
+ {
+ try {
+ $templates = Template::where('set_id', '=', $id)->get();
+
+ return view('themes.default1.common.template.list-templates', compact('templates'));
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * This function is used to display chumper datatables of the template list.
+ *
+ * @param \Illuminate\Http\Request $request
+ *
+ * @return type datatable
+ */
+ public function GetTemplates(Request $request)
+ {
+ $id = $request->input('id');
+
+ return \Datatable::collection($this->template->where('set_id', '=', $id)->select('id', 'name', 'type')->get())
+ ->showColumns('name')
+ ->addColumn('type', function ($model) {
+ return $this->type->where('id', $model->type)->first()->name;
+ })
+ ->addColumn('action', function ($model) {
+ return 'id.'/edit')." class='btn btn-sm btn-primary'>Edit ";
+ })
+ ->searchColumns('name')
+ ->orderColumns('name')
+ ->make();
+ }
+
+ /**
+ * @return type view
+ */
+ public function create()
+ {
+ try {
+ $i = $this->template->orderBy('created_at', 'desc')->first()->id + 1;
+ $type = $this->type->lists('name', 'id')->toArray();
+
+ return view('themes.default1.common.template.create', compact('type'));
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * To store a set of templates.
+ *
+ * @param \App\Http\Requests\helpdesk\TemplateRequest $request
+ *
+ * @return type redirect
+ */
+ public function store(TemplateRequest $request)
+ {
+ try {
+ //dd($request);
+ $this->template->fill($request->input())->save();
+
+ return redirect('templates')->with('success', Lang::get('lang.template_saved_successfully'));
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ public function edit($id)
+ {
+ try {
+ $i = $this->template->orderBy('created_at', 'desc')->first()->id + 1;
+ $template = $this->template->where('id', $id)->first();
+ $type = $this->type->lists('name', 'id')->toArray();
+
+ return view('themes.default1.common.template.edit', compact('type', 'template'));
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ public function update($id, TemplateUdate $request)
+ {
+ try {
+ //dd($request);
+ $template = $this->template->where('id', $id)->first();
+ $template->fill($request->input())->save();
+
+ return redirect()->back()->with('success', Lang::get('lang.template_updated_successfully'));
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param int $id
+ *
+ * @return Response
+ */
+ public function destroy(Request $request)
+ {
+ try {
+ $ids = $request->input('select');
+ if (!empty($ids)) {
+ foreach ($ids as $id) {
+ $template = $this->template->where('id', $id)->first();
+ if ($template) {
+ $template->delete();
+ } else {
+ echo "
+
+ ".\Lang::get('message.alert').'!
+ ×
+ '.\Lang::get('message.no-record').'
+
';
+ }
+ }
+ echo "
+
+
+ ×
+ ".\Lang::get('message.deleted-successfully').'
+
';
+ } else {
+ echo "
+
+ ".\Lang::get('message.alert').'!
+ ×
+ '.\Lang::get('message.select-a-row').'
+
';
+ }
+ } catch (\Exception $e) {
+ echo "
+
+ ".\Lang::get('message.alert').'!
+ ×
+ '.$e->getMessage().'
+
';
+ }
+ }
+
+ public function show($id)
+ {
+ //dd($currency);
+ try {
+ if ($this->template->where('type', 3)->where('id', $id)->first()) {
+ $data = $this->template->where('type', 3)->where('id', $id)->first()->data;
+ $products = $this->product->where('id', '!=', 1)->take(4)->get();
+ if (count($products) > 0) {
+ $template = '';
+ foreach ($products as $product) {
+ //dd($this->checkPriceWithTaxClass($product->id, $currency));
+ $url = $product->shoping_cart_link;
+ $title = $product->name;
+ if ($product->description) {
+ $description = str_replace('', '', str_replace('', '', $product->description));
+ } else {
+ $description = '';
+ }
+ $currency = \Session::get('currency');
+ if ($this->price->where('product_id', $product->id)->where('currency', $currency)->first()) {
+ $product_currency = $this->price->where('product_id', $product->id)->where('currency', $currency)->first();
+ $code = $product_currency->currency;
+ $currency = $this->currency->where('code', $code)->first();
+ if ($currency->symbol) {
+ $currency = $currency->symbol;
+ } else {
+ $currency = $currency->code;
+ }
+ $price = \App\Http\Controllers\Front\CartController::calculateTax($product->id, $product_currency->currency, 1, 0, 1);
+
+ $subscription = $this->plan->where('id', $product_currency->subscription)->first()->name;
+ } else {
+ return redirect('/')->with('fails', \Lang::get('message.no-such-currency-in-system'));
+ }
+
+ $array1 = ['{{title}}', '{{currency}}', '{{price}}', '{{subscription}}', '{{feature}} ', '{{url}}'];
+ $array2 = [$title, $currency, $price, $subscription, $description, $url];
+ $template .= str_replace($array1, $array2, $data);
+ }
+
+ //dd($template);
+ return view('themes.default1.common.template.shoppingcart', compact('template'));
+ } else {
+ $template = 'No Products
';
+
+ return view('themes.default1.common.template.shoppingcart', compact('template'));
+ }
+ } else {
+ return redirect('/')->with('fails', 'no such record');
+ }
+ } catch (\Exception $e) {
+ dd($e);
+
+ return redirect('/')->with('fails', $e->getMessage());
+ }
+ }
+}
diff --git a/app/Http/Controllers/Common/TemplateSetController.php b/app/Http/Controllers/Common/TemplateSetController.php
new file mode 100644
index 000000000..34be24f7e
--- /dev/null
+++ b/app/Http/Controllers/Common/TemplateSetController.php
@@ -0,0 +1,151 @@
+tempcon = $tempcon;
+ }
+
+ /**
+ * get the list of template sets.
+ *
+ * @return type view
+ */
+ public function index()
+ {
+ try {
+ $sets = TemplateSet::all();
+
+ return view('themes.default1.common.template.sets', compact('sets'));
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function create()
+ {
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function store(TemplateSet $sets, TemplateSetRequest $request)
+ {
+ try {
+ $sets->name = $request->input('name');
+ $sets->save();
+ $templates = Template::where('set_id', '=', '1')->get();
+ foreach ($templates as $template) {
+ \DB::table('templates')->insert(['set_id' => $sets->id, 'name' => $template->name, 'variable' => $template->variable, 'type' => $template->type, 'subject' => $template->subject, 'message' => $template->message]);
+ }
+
+ return redirect('template-sets')->with('success', Lang::get('lang.you_have_created_a_new_template_set'));
+ } catch (Exception $ex) {
+ return redirect('template-sets')->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Display the specified resource.
+ *
+ * @param int $id
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function activateSet($id)
+ {
+ try {
+ if (strpos($id, '_') !== false) {
+ $ratName = str_replace('_', ' ', $id);
+ } else {
+ $ratName = $id;
+ }
+ \DB::table('settings_email')->update(['template' => $ratName]);
+
+ return \Redirect::back()->with('success', Lang::get('lang.you_have_successfully_activated_this_set'));
+ } catch (Exception $ex) {
+ return \Redirect::back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param int $id
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function show($id)
+ {
+ try {
+ $this->tempcon->showTemplate($id);
+ } catch (\Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param int $id
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function update(Request $request, $id)
+ {
+ //
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param int $id
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function destroy($id)
+ {
+ //
+ }
+
+ public function deleteSet($id)
+ {
+ try {
+ $templates = Template::where('set_id', '=', $id)->get();
+ foreach ($templates as $template) {
+ $template->delete();
+ }
+ TemplateSet::whereId($id)->delete();
+
+ return redirect()->back()->with('success', Lang::get('lang.template_set_deleted_successfully'));
+ } catch (Exception $ex) {
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+}
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index a5844f692..b49a22a37 100644
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -3,12 +3,13 @@
namespace App\Http\Controllers;
// classes
-use Illuminate\Foundation\Bus\DispatchesCommands;
+use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
+use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
-abstract class Controller extends BaseController
+class Controller extends BaseController
{
- use DispatchesCommands,
+ use AuthorizesRequests, DispatchesJobs,
ValidatesRequests;
}
diff --git a/app/Http/Controllers/Error/ErrorController.php b/app/Http/Controllers/Error/ErrorController.php
index 888164054..fa15002a9 100644
--- a/app/Http/Controllers/Error/ErrorController.php
+++ b/app/Http/Controllers/Error/ErrorController.php
@@ -8,7 +8,7 @@ use App\Http\Controllers\Controller;
/**
* ErrorController.
*
- * @author Ladybird
+ * @author Ladybird
*/
class ErrorController extends Controller
{
@@ -19,6 +19,6 @@ class ErrorController extends Controller
*/
public function error404()
{
- return view('404');
+ return view('errors.404');
}
}
diff --git a/app/Http/Controllers/Installer/helpdesk/InstallController.php b/app/Http/Controllers/Installer/helpdesk/InstallController.php
index 6f7061991..489cfbf64 100644
--- a/app/Http/Controllers/Installer/helpdesk/InstallController.php
+++ b/app/Http/Controllers/Installer/helpdesk/InstallController.php
@@ -15,6 +15,7 @@ use App\User;
// classes
use Artisan;
use Config;
+use DB;
use Exception;
use File;
use Hash;
@@ -303,10 +304,16 @@ class InstallController extends Controller
}
} catch (Exception $e) {
}
+ if ($request->input('dummy-data') == 'on') {
+ $path = base_path().'/DB/dummy-data.sql';
+ // dd($path);
+ DB::unprepared(file_get_contents($path));
+ } else {
+ // migrate database
+ Artisan::call('migrate', ['--force' => true]);
+ Artisan::call('db:seed', ['--force' => true]);
+ }
- // migrate database
- Artisan::call('migrate', ['--force' => true]);
- Artisan::call('db:seed', ['--force' => true]);
// create user
$firstname = $request->input('firstname');
$lastname = $request->input('Lastname');
@@ -391,6 +398,13 @@ class InstallController extends Controller
$content24 = File::get($path23);
$content23 = str_replace('"%smtplink%"', $smtpfilepath, $content23);
$content24 = str_replace("'%url%'", $lfmpath, $content24);
+ $link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
+ $pos = strpos($link, 'final');
+ $link = substr($link, 0, $pos);
+ $app_url = app_path('../config/app.php');
+ $datacontent2 = File::get($app_url);
+ $datacontent2 = str_replace('http://localhost', $link, $datacontent2);
+ File::put($app_url, $datacontent2);
File::put($path22, $content23);
File::put($path23, $content24);
try {
@@ -400,6 +414,7 @@ class InstallController extends Controller
Session::forget('step4');
Session::forget('step5');
Session::forget('step6');
+ Artisan::call('key:generate');
return View::make('themes/default1/installer/helpdesk/view6');
} catch (Exception $e) {
@@ -424,4 +439,30 @@ class InstallController extends Controller
return redirect('/auth/login');
}
}
+
+ public function changeFilePermission()
+ {
+ $path1 = base_path().DIRECTORY_SEPARATOR.'.env';
+ $path2 = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'database.php';
+ $path3 = base_path().DIRECTORY_SEPARATOR.'app'.DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php';
+ $path4 = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'lfm.php';
+ if (chmod($path1, 0644) && chmod($path2, 0644) && chmod($path3, 0644) && chmod($path4, 0644)) {
+ $f1 = substr(sprintf('%o', fileperms($path1)), -3);
+ $f2 = substr(sprintf('%o', fileperms($path2)), -3);
+ $f3 = substr(sprintf('%o', fileperms($path3)), -3);
+ $f4 = substr(sprintf('%o', fileperms($path4)), -3);
+ if ($f1 >= '644' && $f2 >= '644' && $f3 >= '644' && $f4 >= '644') {
+ return Redirect::back();
+ } else {
+ return Redirect::back()->with('fail_to_change', 'We are unable to change file permission on your server please try to change permission manually.');
+ }
+ } else {
+ return Redirect::back()->with('fail_to_change', 'We are unable to change file permission on your server please try to change permission manually.');
+ }
+ }
+
+ public function jsDisabled()
+ {
+ return view('themes/default1/installer/helpdesk/check-js')->with('url', $_SERVER['HTTP_REFERER']);
+ }
}
diff --git a/app/Http/Controllers/Update/UpgradeController.php b/app/Http/Controllers/Update/UpgradeController.php
new file mode 100644
index 000000000..f2552dca8
--- /dev/null
+++ b/app/Http/Controllers/Update/UpgradeController.php
@@ -0,0 +1,349 @@
+dir = $dir;
+ }
+
+ public function getLatestVersion()
+ {
+ $name = \Config::get('app.name');
+ //serial key should be encrypted data
+ $serial_key = Utility::encryptByFaveoPublicKey('O5Y647RJF8QHLDOE');
+ //order number should be encrypted data
+ $order_number = Utility::encryptByFaveoPublicKey('23540755');
+ $url = url('/');
+ //dd($url);
+ $post_data = [
+ 'serial_key' => $serial_key,
+ 'order_number' => $order_number,
+ 'name' => $name,
+ 'version' => Utility::getFileVersion(),
+ 'request_type' => 'check_update',
+ 'url' => $url,
+ ];
+ $url = 'http://www.faveohelpdesk.com/billing/verification';
+ if (str_contains($url, ' ')) {
+ $url = str_replace(' ', '%20', $url);
+ }
+ $curl = $this->postCurl($url, $post_data);
+ //dd($curl);
+ if (is_array($curl)) {
+ if (array_key_exists('status', $curl)) {
+ if ($curl['status'] == 'success') {
+ if (array_key_exists('version', $curl)) {
+ return $curl['version'];
+ }
+ }
+ }
+ }
+ }
+
+ public function downloadLatestCode()
+ {
+ $name = \Config::get('app.name');
+ $url = 'http://www.faveohelpdesk.com/billing/download-url';
+ if (str_contains($url, ' ')) {
+ $url = str_replace(' ', '%20', $url);
+ }
+ $data = [
+ 'name' => $name,
+ ];
+ $download = $this->postCurl($url, $data);
+
+ $url = $download['zipball_url'];
+
+ return $url;
+ }
+
+ public function saveLatestCodeAtTemp($download_url)
+ {
+ echo 'Downloading New Update
';
+ $context = stream_context_create(
+ [
+ 'http' => [
+ 'header' => 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
+ ],
+ ]
+ );
+
+ $newUpdate = file_get_contents($download_url, false, $context);
+ if (!is_dir("$this->dir/UPDATES/")) {
+ \File::makeDirectory($this->dir.'/UPDATES/', 0777);
+ }
+
+ $dlHandler = fopen($this->dir.'/UPDATES/'.'/faveo-helpdesk-master.zip', 'w');
+ if (!fwrite($dlHandler, $newUpdate)) {
+ echo 'Could not save new update. Operation aborted.
';
+ exit();
+ }
+ fclose($dlHandler);
+ echo 'Update Downloaded And Saved
';
+ }
+
+ public function doUpdate()
+ {
+ Artisan::call('down');
+ $update = $this->dir.'/UPDATES';
+ //Open The File And Do Stuff
+ $zipHandle = zip_open($update.'/faveo-helpdesk-master.zip');
+ //dd($update . '/faveo-' . $aV . '.zip');
+
+ echo '';
+ while ($aF = zip_read($zipHandle)) {
+ $thisFileName = zip_entry_name($aF);
+ $thisFileDir = dirname($thisFileName);
+
+ //Continue if its not a file
+ if (substr($thisFileName, -1, 1) == '/') {
+ continue;
+ }
+
+
+ //Make the directory if we need to...
+ if (!is_dir($update.'/'.$thisFileDir.'/')) {
+ \File::makeDirectory($update.'/'.$thisFileDir, 0775, true, true);
+ // mkdir($update.'/'. $thisFileDir, 0775);
+ echo 'Created Directory '.$thisFileDir.' ';
+ }
+
+ //Overwrite the file
+ if (!is_dir($update.'/'.$thisFileName)) {
+ echo ''.$thisFileName.'...........';
+ $contents = zip_entry_read($aF, zip_entry_filesize($aF));
+ $contents = str_replace("\r\n", "\n", $contents);
+ $updateThis = '';
+
+ //If we need to run commands, then do it.
+ if ($thisFileName == $thisFileDir.'/.env') {
+ if (is_file($update.'/'.$thisFileDir.'/.env')) {
+ unlink($update.'/'.$thisFileDir.'/.env');
+ unlink($update.'/'.$thisFileDir.'/config/database.php');
+ }
+ echo' EXECUTED ';
+ } else {
+ $updateThis = fopen($update.'/'.$thisFileName, 'w');
+ fwrite($updateThis, $contents);
+ fclose($updateThis);
+ unset($contents);
+ echo' UPDATED';
+ }
+ }
+ }
+ echo ' ';
+
+ Artisan::call('up');
+
+ return true;
+ }
+
+ public function copyToActualDirectory($latest_version)
+ {
+ $directory = "$this->dir/UPDATES";
+ $destination = $this->dir;
+// $destination = "/Applications/AMPPS/www/test/new";
+ $directories = \File::directories($directory);
+
+// echo "current directory => $directory ";
+// echo "Destination Directory => $destination ";
+ foreach ($directories as $source) {
+ $success = \File::copyDirectory($source, $destination);
+ echo '»
';
+ }
+
+ \File::deleteDirectory($directory);
+
+ $this->deleteBarNotification('new-version');
+
+ echo '» Faveo Updated to v'.Utility::getFileVersion().'
';
+ }
+
+ public function deleteBarNotification($key)
+ {
+ try {
+ $noti = new BarNotification();
+ $notifications = $noti->where('key', $key)->get();
+ foreach ($notifications as $notify) {
+ $notify->delete();
+ }
+ } catch (Exception $ex) {
+ dd($ex);
+ }
+ }
+
+ public function fileUpdate()
+ {
+ try {
+ if (Utility::getFileVersion() < Utility::getDatabaseVersion()) {
+ $url = url('file-upgrade');
+ //$string = "Your Database is outdated please upgrade Now ! ";
+ return view('themes.default1.update.file', compact('url'));
+ } else {
+ return redirect()->back();
+ }
+ } catch (Exception $ex) {
+ dd($ex);
+ }
+ }
+
+ public function fileUpgrading(Request $request)
+ {
+ try {
+ if (Utility::getFileVersion() < Utility::getDatabaseVersion()) {
+ $latest_version = $this->getLatestVersion();
+ //dd($latest_version);
+ $current_version = Utility::getFileVersion();
+ if ($latest_version != '') {
+ $_this = new self();
+
+ return view('themes.default1.update.test', compact('latest_version', 'current_version', 'request'));
+ } else {
+ return redirect()->back()->with('fails', 'Could not find latest realeases from repository.');
+ }
+ } else {
+ return redirect()->back();
+ }
+ } catch (Exception $ex) {
+ dd($ex);
+
+ return redirect()->back()->with('fails', $ex->getMessage());
+ }
+ }
+
+ public function testScroll()
+ {
+ $ex = 1000;
+ echo '';
+ for ($i = 0; $i < $ex; $i++) {
+ echo "updated ";
+ }
+ echo ' ';
+ }
+
+ public function fileUpgrading1(Request $request)
+ {
+ if (Utility::getFileVersion() < Utility::getDatabaseVersion()) {
+ $latest_version = $this->getLatestVersion();
+// dd($latest_version);
+ $current_version = Utility::getFileVersion();
+ //dd($current_version);
+ if ($latest_version != '') {
+ echo "CURRENT VERSION: $current_version
";
+ echo 'Reading Current Releases List
';
+ if ($latest_version > $current_version) {
+ echo 'New Update Found: v'.$latest_version.'
';
+ $found = true;
+ if (!is_file("$this->dir/UPDATES/faveo-helpdesk-master.zip")) {
+ if ($request->get('dodownload') == true) {
+ $download_url = $this->downloadLatestCode();
+ if ($download_url != null) {
+ $this->saveLatestCodeAtTemp($download_url);
+ } else {
+ echo 'Error in you network connection.
';
+ }
+ } else {
+ echo 'Latest code found. » Download Now?
';
+ exit();
+ }
+ } else {
+ echo 'Update already downloaded.
';
+ }
+ if ($request->get('doUpdate') == true) {
+ $updated = $this->doUpdate();
+ } else {
+ echo 'Update ready. » Install Now?
';
+ exit();
+ }
+
+ if ($updated == true) {
+ $this->copyToActualDirectory($latest_version);
+ } elseif ($found != true) {
+ echo '» No update is available.
';
+ }
+ } else {
+ echo 'Could not find latest realeases.
';
+ }
+ } else {
+ echo 'Could not find latest realeases from repository.
';
+ }
+ } else {
+ return redirect()->back();
+ }
+ }
+
+ public function getCurl($url)
+ {
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ //curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
+ curl_setopt($ch, CURLOPT_URL, $url);
+ if (curl_exec($ch) === false) {
+ echo 'Curl error: '.curl_error($ch);
+ }
+ $data = curl_exec($ch);
+ dd($data);
+ curl_close($ch);
+
+ return $data;
+ }
+
+ public function postCurl($url, $data)
+ {
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_URL, $url);
+ if (curl_exec($ch) === false) {
+ echo 'Curl error: '.curl_error($ch);
+ }
+ $data = curl_exec($ch);
+ curl_close($ch);
+
+ return json_decode($data, true);
+ }
+
+ public function databaseUpdate()
+ {
+ try {
+ if (Utility::getFileVersion() > Utility::getDatabaseVersion()) {
+ $url = url('database-upgrade');
+ //$string = "Your Database is outdated please upgrade Now ! ";
+ return view('themes.default1.update.database', compact('url'));
+ } else {
+ return redirect()->back();
+ }
+ } catch (Exception $ex) {
+ dd($ex);
+ }
+ }
+
+ public function databaseUpgrade()
+ {
+ try {
+ if (Utility::getFileVersion() > Utility::getDatabaseVersion()) {
+ Artisan::call('migrate', ['--force' => true]);
+
+ return redirect('dashboard')->with('success', 'Database updated');
+ } else {
+ return redirect()->back();
+ }
+ } catch (Exception $ex) {
+ dd($ex);
+ }
+ }
+}
diff --git a/app/Http/Controllers/Utility/LibraryController.php b/app/Http/Controllers/Utility/LibraryController.php
new file mode 100644
index 000000000..d99bcb408
--- /dev/null
+++ b/app/Http/Controllers/Utility/LibraryController.php
@@ -0,0 +1,129 @@
+where('id', '=', '1')->first()->version;
+ } else {
+ return 0;
+ }
+ } else {
+ return 0;
+ }
+ } catch (Exception $ex) {
+ return 0;
+ }
+ }
+
+ public static function isDatabaseSetup()
+ {
+ try {
+ if (Schema::hasTable('settings_system')) {
+ return true;
+ }
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+
+ public static function encryptByFaveoPublicKey($plaintext)
+ {
+ try {
+ // Compress the data to be sent
+ $plaintext = gzcompress($plaintext);
+
+ // Get the public Key of the recipient
+ $path = storage_path('app'.DIRECTORY_SEPARATOR.'faveo-public.key');
+ $key_content = file_get_contents($path);
+
+ //dd($path);
+ $publicKey = openssl_pkey_get_public($key_content);
+ //dd($publicKey);
+ $a_key = openssl_pkey_get_details($publicKey);
+
+ // Encrypt the data in small chunks and then combine and send it.
+ $chunkSize = ceil($a_key['bits'] / 8) - 11;
+ $output = '';
+
+ while ($plaintext) {
+ $chunk = substr($plaintext, 0, $chunkSize);
+ $plaintext = substr($plaintext, $chunkSize);
+ $encrypted = '';
+ if (!openssl_public_encrypt($chunk, $encrypted, $publicKey)) {
+ throw new Exception('Failed to encrypt data');
+ }
+ $output .= $encrypted;
+ }
+ openssl_free_key($publicKey);
+
+ // This is the final encrypted data to be sent to the recipient
+ $encrypted = $output;
+
+ return $encrypted;
+ } catch (Exception $ex) {
+ dd($ex);
+ }
+ }
+
+ public static function decryptByFaveoPrivateKey($encrypted)
+ {
+ try {
+ //$encrypted = p¥Ùn¿olÓ¥9)OÞݸÔvh§=Ìtt1rkC‰É§%YœfÐS\BâkHW€mùÌØg¹+VŠ¥²?áÙ{/<¶¡£e¡ˆr°(V)Öíàr„Ž]K9¤ÿÖ¡Åmž”üÈoò״µºŽ06¼e€rœ['4çhH¾ö:¨œ–S„œ¦,|¤ÇqÂrÈŸd+ml‡ uötφûóŽ&›áyÙ(ÆŒÁ$‘¥±Zj*îàÒöL‘ˆD†aÉö_§è¶°·V„Þú]%ÅR*B=žéršæñ*i+á±èç|c¹ÑߟF$;
+ // Get the private Key
+ $path = storage_path('app'.DIRECTORY_SEPARATOR.'faveo-private.key');
+ $key_content = file_get_contents($path);
+ if (!$privateKey = openssl_pkey_get_private($key_content)) {
+ die('Private Key failed');
+ }
+ $a_key = openssl_pkey_get_details($privateKey);
+
+ // Decrypt the data in the small chunks
+ $chunkSize = ceil($a_key['bits'] / 8);
+ $output = '';
+
+ while ($encrypted) {
+ $chunk = substr($encrypted, 0, $chunkSize);
+ $encrypted = substr($encrypted, $chunkSize);
+ $decrypted = '';
+ if (!openssl_private_decrypt($chunk, $decrypted, $privateKey)) {
+ die('Failed to decrypt data');
+ }
+ $output .= $decrypted;
+ }
+ openssl_free_key($privateKey);
+
+ // Uncompress the unencrypted data.
+ $output = gzuncompress($output);
+
+ echo ' Unencrypted Data: '.$output;
+ } catch (Exception $ex) {
+ dd($ex);
+ }
+ }
+}
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 7ee874d85..c76ffbf5b 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -15,13 +15,13 @@ class Kernel extends HttpKernel
* @var array
*/
protected $middleware = [
- 'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
- 'Illuminate\Cookie\Middleware\EncryptCookies',
- 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
- 'Illuminate\Session\Middleware\StartSession',
- 'Illuminate\View\Middleware\ShareErrorsFromSession',
- //'App\Http\Middleware\VerifyCsrfToken',
- 'App\Http\Middleware\LanguageMiddleware',
+ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
+ \App\Http\Middleware\EncryptCookies::class,
+ \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
+ \Illuminate\Session\Middleware\StartSession::class,
+ \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+ //\App\Http\Middleware\VerifyCsrfToken::class,
+ \App\Http\Middleware\LanguageMiddleware::class,
];
/**
@@ -30,14 +30,17 @@ class Kernel extends HttpKernel
* @var array
*/
protected $routeMiddleware = [
- 'auth' => 'App\Http\Middleware\Authenticate',
- 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
- 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
- 'roles' => 'App\Http\Middleware\CheckRole',
- 'role.agent' => 'App\Http\Middleware\CheckRoleAgent',
- 'role.user' => 'App\Http\Middleware\CheckRoleUser',
- 'api' => 'App\Http\Middleware\ApiKey',
+ 'auth' => \App\Http\Middleware\Authenticate::class,
+ 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
+ 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
+ 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+ 'roles' => \App\Http\Middleware\CheckRole::class,
+ 'role.agent' => \App\Http\Middleware\CheckRoleAgent::class,
+ 'role.user' => \App\Http\Middleware\CheckRoleUser::class,
+ 'api' => \App\Http\Middleware\ApiKey::class,
'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class,
+ 'update' => \App\Http\Middleware\CheckUpdate::class,
+ 'board' => \App\Http\Middleware\CheckBoard::class,
];
}
diff --git a/app/Http/Middleware/CheckBoard.php b/app/Http/Middleware/CheckBoard.php
new file mode 100644
index 000000000..ef53cc3df
--- /dev/null
+++ b/app/Http/Middleware/CheckBoard.php
@@ -0,0 +1,43 @@
+
+ */
+class CheckBoard {
+
+ /**
+ * Handle an incoming request.
+ * @param \Illuminate\Http\Request $request
+ * @param \Closure $next
+ * @return type Mixed
+ */
+ public function handle($request, Closure $next) {
+ if ($this->checkBoard() == '1') {
+ return $next($request);
+ } else {
+ return redirect()->route('board.offline')->with('offline', 'the system seems to be offline please try later');
+ }
+ }
+
+ /**
+ * Function to get the system offline details
+ * @return type Mixed
+ */
+ public function checkBoard() {
+ $res = 0;
+ $system = new System;
+ if ($system->first()) {
+ $res = $system->first()->status;
+ }
+ return $res;
+ }
+
+}
diff --git a/app/Http/Middleware/CheckUpdate.php b/app/Http/Middleware/CheckUpdate.php
new file mode 100644
index 000000000..0dc37ffdc
--- /dev/null
+++ b/app/Http/Middleware/CheckUpdate.php
@@ -0,0 +1,125 @@
+process();
+ //dd($check);
+ if ($check == true) {
+ //$this->notificationBar();
+ $this->checkNewUpdate();
+ if (Utility::getFileVersion() > Utility::getDatabaseVersion()) {
+ return redirect('database-update');
+ }
+ if (Utility::getFileVersion() < Utility::getDatabaseVersion()) {
+ return redirect('file-update');
+ }
+ }
+ return $next($request);
+ }
+
+ public function notificationBar()
+ {
+ $notify = new BarNotification();
+ $path = base_path('UPDATES');
+ if (is_dir($path)) {
+ $notify->create(['key' => 'update-ready', 'value' => 'New version has downloaded, click here to update now']);
+ }
+ }
+
+ public function checkNewUpdate()
+ {
+ $notify = new BarNotification();
+ if(!\Schema::hasTable('bar_notifications')){
+ $url = url('database-upgrade');
+ //$string = "Your Database is outdated please upgrade Now ! ";
+ echo view('themes.default1.update.database', compact('url'));
+ exit;
+ }
+ $not = $notify->get();
+ if ($not->count() > 0) {
+ $now = \Carbon\Carbon::now();
+ $yesterday = \Carbon\Carbon::now(-24);
+ $notifications = $notify->whereBetween('created_at', [$yesterday, $now])->lists('value', 'key');
+ $todelete = $notify->where('created_at', '<', $yesterday)->get();
+ if ($todelete->count() > 0) {
+ foreach ($todelete as $delete) {
+ $delete->delete();
+ }
+ }
+ if (count($notifications) > 0) {
+ if (!array_key_exists('new-version', $notifications)) {
+ $check_version = $this->checkNewVersion();
+ if ($check_version == true) {
+ $notify->create(['key' => 'new-version', 'value' => 'new version found please click here to download ']);
+ }
+ } else {
+ $n = $notify->where('key', 'new-version')->first();
+ $last = $n->created_at;
+ $now = \Carbon\Carbon::now();
+ $difference = $now->diffInHours($last);
+ if ($difference >= 24) {
+ $n->delete();
+ $this->checkNewUpdate();
+ }
+ }
+ }
+ } else {
+ $check_version = $this->checkNewVersion();
+
+ if ($check_version == true) {
+ //dd('if');
+ $notify->create(['key' => 'new-version', 'value' => 'new version found please click here to download ', 'created_at' => \Carbon\Carbon::now()]);
+ } else {
+ //dd('else');
+ $notify->create(['key' => 'new-version', 'value' => '', 'created_at' => \Carbon\Carbon::now()]);
+ }
+ }
+ }
+
+ public function checkNewVersion()
+ {
+ $controller = new UpgradeController();
+ $version_from_billing = $controller->getLatestVersion();
+ $app_version = Utility::getFileVersion();
+ if ($version_from_billing > $app_version) {
+ return true;
+ }
+ }
+
+ public function process()
+ {
+ $notify = new BarNotification();
+ $not = $notify->get();
+ if ($not->count() > 0) {
+ $n = $notify->where('key', 'new-version')->first();
+
+ if ($n) {
+ $now = \Carbon\Carbon::now();
+ $yesterday = \Carbon\Carbon::now(-24);
+ $notifications = $notify->where('key', 'new-version')->whereBetween('created_at', [$yesterday, $now])->lists('value', 'key');
+ if ($notifications->count() > 0) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php
new file mode 100644
index 000000000..3aa15f8dd
--- /dev/null
+++ b/app/Http/Middleware/EncryptCookies.php
@@ -0,0 +1,17 @@
+auth->check()) {
- return new RedirectResponse(url('dashboard'));
+ return redirect(url('dashboard'));
}
return $next($request);
diff --git a/app/Http/Requests/helpdesk/AgentRequest.php b/app/Http/Requests/helpdesk/AgentRequest.php
index 44cf0b1f4..212a657ac 100644
--- a/app/Http/Requests/helpdesk/AgentRequest.php
+++ b/app/Http/Requests/helpdesk/AgentRequest.php
@@ -29,18 +29,18 @@ class AgentRequest extends Request
public function rules()
{
return [
- 'user_name' => 'required|unique:users',
- 'first_name' => 'required',
- 'last_name' => 'required',
+ 'user_name' => 'required|unique:users|max:30',
+ 'first_name' => 'required|max:30',
+ 'last_name' => 'required|max:30',
'email' => 'required|unique:users',
'active' => 'required',
// 'account_status' => 'required',
- 'assign_group' => 'required',
- 'primary_dpt' => 'required',
- 'agent_tzone' => 'required',
+ 'group' => 'required',
+ 'primary_department' => 'required',
+ 'agent_time_zone' => 'required',
// 'phone_number' => 'phone:IN',
// 'mobile' => 'phone:IN',
- 'team_id' => 'required',
+ 'team' => 'required',
];
}
}
diff --git a/app/Http/Requests/helpdesk/AgentUpdate.php b/app/Http/Requests/helpdesk/AgentUpdate.php
index fbe570559..63c1764f3 100644
--- a/app/Http/Requests/helpdesk/AgentUpdate.php
+++ b/app/Http/Requests/helpdesk/AgentUpdate.php
@@ -29,17 +29,16 @@ class AgentUpdate extends Request
public function rules()
{
return [
- 'first_name' => 'required',
- 'last_name' => 'required',
- 'email' => 'required|email',
- 'active' => 'required',
- 'role' => 'required',
- 'assign_group' => 'required',
- 'primary_dpt' => 'required',
- 'agent_tzone' => 'required',
- // 'phone_number' => 'phone:IN',
- // 'mobile' => 'phone:IN',
- 'team_id' => 'required',
+ 'user_name' => 'required|max:30',
+ 'first_name' => 'required|max:30',
+ 'last_name' => 'required|max:30',
+ 'email' => 'required|email',
+ 'active' => 'required',
+ 'role' => 'required',
+ 'group' => 'required',
+ 'primary_department' => 'required',
+ 'agent_time_zone' => 'required',
+ 'team' => 'required',
];
}
}
diff --git a/app/Http/Requests/helpdesk/CannedRequest.php b/app/Http/Requests/helpdesk/CannedRequest.php
index c6d0183ce..e2da49024 100644
--- a/app/Http/Requests/helpdesk/CannedRequest.php
+++ b/app/Http/Requests/helpdesk/CannedRequest.php
@@ -29,7 +29,7 @@ class CannedRequest extends Request
public function rules()
{
return [
- 'title' => 'required',
+ 'title' => 'required|min:2|max:50',
'message' => 'required',
];
}
diff --git a/app/Http/Requests/helpdesk/CannedUpdateRequest.php b/app/Http/Requests/helpdesk/CannedUpdateRequest.php
index da5bb968f..d3f4efa66 100644
--- a/app/Http/Requests/helpdesk/CannedUpdateRequest.php
+++ b/app/Http/Requests/helpdesk/CannedUpdateRequest.php
@@ -29,7 +29,7 @@ class CannedUpdateRequest extends Request
public function rules()
{
return [
- 'title' => 'required',
+ 'title' => 'required|min:2|max:50',
'message' => 'required',
];
}
diff --git a/app/Http/Requests/helpdesk/ClientRequest.php b/app/Http/Requests/helpdesk/ClientRequest.php
index 156fa9631..73abcec2b 100644
--- a/app/Http/Requests/helpdesk/ClientRequest.php
+++ b/app/Http/Requests/helpdesk/ClientRequest.php
@@ -30,7 +30,7 @@ class ClientRequest extends Request
{
return [
'Name' => 'required',
- 'Email' => 'required',
+ 'Email' => 'required|email',
'Subject' => 'required',
'Details' => 'required',
];
diff --git a/app/Http/Requests/helpdesk/CompanyRequest.php b/app/Http/Requests/helpdesk/CompanyRequest.php
index a65751ee5..1242264c1 100644
--- a/app/Http/Requests/helpdesk/CompanyRequest.php
+++ b/app/Http/Requests/helpdesk/CompanyRequest.php
@@ -29,8 +29,8 @@ class CompanyRequest extends Request
public function rules()
{
return [
- 'company_name' => 'required',
- 'website' => 'active_url',
+ 'company_name' => 'required|max:50',
+ 'website' => 'url',
'phone' => 'numeric',
'logo' => 'image',
];
diff --git a/app/Http/Requests/helpdesk/CreateTicketRequest.php b/app/Http/Requests/helpdesk/CreateTicketRequest.php
index 923724038..96391caa3 100644
--- a/app/Http/Requests/helpdesk/CreateTicketRequest.php
+++ b/app/Http/Requests/helpdesk/CreateTicketRequest.php
@@ -30,13 +30,13 @@ class CreateTicketRequest extends Request
{
return [
- 'email' => 'required|email',
- 'fullname' => 'required|min:3',
+ 'email' => 'required|email|max:60',
+ 'fullname' => 'required|min:3|max:40',
'helptopic' => 'required',
// 'dept' => 'required',
'sla' => 'required',
'subject' => 'required|min:5',
- 'body' => 'required|min:20',
+ 'body' => 'required|min:10',
'priority' => 'required',
];
}
diff --git a/app/Http/Requests/helpdesk/DepartmentRequest.php b/app/Http/Requests/helpdesk/DepartmentRequest.php
index 4974bccfb..b7d10d0ff 100644
--- a/app/Http/Requests/helpdesk/DepartmentRequest.php
+++ b/app/Http/Requests/helpdesk/DepartmentRequest.php
@@ -29,10 +29,7 @@ class DepartmentRequest extends Request
public function rules()
{
return [
- 'name' => 'required|unique:department',
- // 'outgoing_email' => 'required',
- // 'auto_response_email' => 'required',
- // 'group_id' => 'required',
+ 'name' => 'required|unique:department|max:30',
];
}
}
diff --git a/app/Http/Requests/helpdesk/DepartmentUpdate.php b/app/Http/Requests/helpdesk/DepartmentUpdate.php
index 1147ff13d..b177771c0 100644
--- a/app/Http/Requests/helpdesk/DepartmentUpdate.php
+++ b/app/Http/Requests/helpdesk/DepartmentUpdate.php
@@ -29,10 +29,7 @@ class DepartmentUpdate extends Request
public function rules()
{
return [
-
- // 'outgoing_email' => 'required',
- // 'auto_response_email' => 'required',
- // 'group_id' => 'required',
+ 'name' => 'required|max:30',
];
}
}
diff --git a/app/Http/Requests/helpdesk/DiagnosRequest.php b/app/Http/Requests/helpdesk/DiagnosRequest.php
new file mode 100644
index 000000000..0e02f7beb
--- /dev/null
+++ b/app/Http/Requests/helpdesk/DiagnosRequest.php
@@ -0,0 +1,38 @@
+
+ */
+class DiagnosRequest extends Request
+{
+ /**
+ * Determine if the user is authorized to make this request.
+ *
+ * @return bool
+ */
+ public function authorize()
+ {
+ return true;
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'from' => 'required',
+ 'to' => 'required|email',
+ 'subject' => 'required',
+ 'message' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/GroupRequest.php b/app/Http/Requests/helpdesk/GroupRequest.php
index 33a920dd2..e98d417de 100644
--- a/app/Http/Requests/helpdesk/GroupRequest.php
+++ b/app/Http/Requests/helpdesk/GroupRequest.php
@@ -29,7 +29,7 @@ class GroupRequest extends Request
public function rules()
{
return [
- 'name' => 'required|unique:groups',
+ 'name' => 'required|unique:groups|max:30',
];
}
}
diff --git a/app/Http/Requests/helpdesk/GroupUpdateRequest.php b/app/Http/Requests/helpdesk/GroupUpdateRequest.php
new file mode 100644
index 000000000..55d59617f
--- /dev/null
+++ b/app/Http/Requests/helpdesk/GroupUpdateRequest.php
@@ -0,0 +1,35 @@
+
+ */
+class GroupUpdateRequest extends Request
+{
+ /**
+ * Determine if the user is authorized to make this request.
+ *
+ * @return bool
+ */
+ public function authorize()
+ {
+ return true;
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'name' => 'required|max:30',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/HelptopicRequest.php b/app/Http/Requests/helpdesk/HelptopicRequest.php
index bc5f6b314..956e025ba 100644
--- a/app/Http/Requests/helpdesk/HelptopicRequest.php
+++ b/app/Http/Requests/helpdesk/HelptopicRequest.php
@@ -29,7 +29,7 @@ class HelptopicRequest extends Request
public function rules()
{
return [
- 'topic' => 'required|unique:help_topic',
+ 'topic' => 'required|unique:help_topic|max:50',
// 'parent_topic' => 'required',
// 'custom_form' => 'required',
'department' => 'required',
diff --git a/app/Http/Requests/helpdesk/HelptopicUpdate.php b/app/Http/Requests/helpdesk/HelptopicUpdate.php
index 7f4f0ce35..4b19dc4e8 100644
--- a/app/Http/Requests/helpdesk/HelptopicUpdate.php
+++ b/app/Http/Requests/helpdesk/HelptopicUpdate.php
@@ -29,12 +29,10 @@ class HelptopicUpdate extends Request
public function rules()
{
return [
- // 'parent_topic' => 'required',
- // 'custom_form' => 'required',
+ 'topic' => 'required|max:50',
'department' => 'required',
'priority' => 'required',
'sla_plan' => 'required',
- // 'auto_assign' => 'required',
];
}
}
diff --git a/app/Http/Requests/helpdesk/OrganizationRequest.php b/app/Http/Requests/helpdesk/OrganizationRequest.php
index be88a915e..ee74044ad 100644
--- a/app/Http/Requests/helpdesk/OrganizationRequest.php
+++ b/app/Http/Requests/helpdesk/OrganizationRequest.php
@@ -31,7 +31,7 @@ class OrganizationRequest extends Request
return [
'name' => 'required|unique:organization',
- 'website' => 'active_url',
+ 'website' => 'url',
// 'phone' => 'size:10',
];
}
diff --git a/app/Http/Requests/helpdesk/OrganizationUpdate.php b/app/Http/Requests/helpdesk/OrganizationUpdate.php
index 4e5ef0a07..6d4ea4f12 100644
--- a/app/Http/Requests/helpdesk/OrganizationUpdate.php
+++ b/app/Http/Requests/helpdesk/OrganizationUpdate.php
@@ -30,7 +30,7 @@ class OrganizationUpdate extends Request
{
return [
- 'website' => 'active_url',
+ 'website' => 'url',
// 'phone' => 'size:10',
];
}
diff --git a/app/Http/Requests/helpdesk/RatingRequest.php b/app/Http/Requests/helpdesk/RatingRequest.php
new file mode 100644
index 000000000..9a8f1deae
--- /dev/null
+++ b/app/Http/Requests/helpdesk/RatingRequest.php
@@ -0,0 +1,35 @@
+ 'required|unique:ratings|max:20',
+ 'display_order' => 'required|integer',
+ 'allow_modification' => 'required',
+ 'rating_scale' => 'required',
+ 'rating_area' => 'required',
+ 'restrict' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/RatingUpdateRequest.php b/app/Http/Requests/helpdesk/RatingUpdateRequest.php
new file mode 100644
index 000000000..2304be3fa
--- /dev/null
+++ b/app/Http/Requests/helpdesk/RatingUpdateRequest.php
@@ -0,0 +1,34 @@
+ 'required|max:20',
+ 'display_order' => 'required|integer',
+ 'allow_modification' => 'required',
+ 'rating_scale' => 'required',
+ 'restrict' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/SecurityRequest.php b/app/Http/Requests/helpdesk/SecurityRequest.php
new file mode 100644
index 000000000..f960a5205
--- /dev/null
+++ b/app/Http/Requests/helpdesk/SecurityRequest.php
@@ -0,0 +1,37 @@
+
+ */
+class SecurityRequest extends Request
+{
+ /**
+ * Determine if the user is authorized to make this request.
+ *
+ * @return bool
+ */
+ public function authorize()
+ {
+ return true;
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'lockout_message' => 'required',
+ 'backlist_threshold' => 'required|numeric',
+ 'lockout_period' => 'required|numeric',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/SlaRequest.php b/app/Http/Requests/helpdesk/SlaRequest.php
index 5eb65011f..a6c272bb1 100644
--- a/app/Http/Requests/helpdesk/SlaRequest.php
+++ b/app/Http/Requests/helpdesk/SlaRequest.php
@@ -29,7 +29,7 @@ class SlaRequest extends Request
public function rules()
{
return [
- 'name' => 'required|unique:sla_plan',
+ 'name' => 'required|unique:sla_plan|max:50',
'grace_period' => 'required',
];
}
diff --git a/app/Http/Requests/helpdesk/SlaUpdate.php b/app/Http/Requests/helpdesk/SlaUpdate.php
index 834631d5f..34087a964 100644
--- a/app/Http/Requests/helpdesk/SlaUpdate.php
+++ b/app/Http/Requests/helpdesk/SlaUpdate.php
@@ -29,6 +29,7 @@ class SlaUpdate extends Request
public function rules()
{
return [
+ 'name' => 'required|max:50',
'grace_period' => 'required',
];
}
diff --git a/app/Http/Requests/helpdesk/StatusRequest.php b/app/Http/Requests/helpdesk/StatusRequest.php
new file mode 100644
index 000000000..93d1aee46
--- /dev/null
+++ b/app/Http/Requests/helpdesk/StatusRequest.php
@@ -0,0 +1,33 @@
+ 'required',
+ 'sort' => 'required|numeric',
+ 'icon_class' => 'required',
+
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/SystemRequest.php b/app/Http/Requests/helpdesk/SystemRequest.php
index 49074a6bf..d42045fee 100644
--- a/app/Http/Requests/helpdesk/SystemRequest.php
+++ b/app/Http/Requests/helpdesk/SystemRequest.php
@@ -29,8 +29,7 @@ class SystemRequest extends Request
public function rules()
{
return [
-
- 'name' => '',
+ 'name' => 'max:50',
'url' => 'url',
];
}
diff --git a/app/Http/Requests/helpdesk/TeamRequest.php b/app/Http/Requests/helpdesk/TeamRequest.php
index 050c7e757..40e33d861 100644
--- a/app/Http/Requests/helpdesk/TeamRequest.php
+++ b/app/Http/Requests/helpdesk/TeamRequest.php
@@ -29,7 +29,7 @@ class TeamRequest extends Request
public function rules()
{
return [
- 'name' => 'required|unique:teams',
+ 'name' => 'required|unique:teams|max:30',
'status' => 'required',
];
}
diff --git a/app/Http/Requests/helpdesk/TeamUpdate.php b/app/Http/Requests/helpdesk/TeamUpdate.php
index 530aad77e..e5f2d8368 100644
--- a/app/Http/Requests/helpdesk/TeamUpdate.php
+++ b/app/Http/Requests/helpdesk/TeamUpdate.php
@@ -29,6 +29,8 @@ class TeamUpdate extends Request
public function rules()
{
return [
+ 'name' => 'required|max:30',
+ 'status' => 'required',
];
}
}
diff --git a/app/Http/Requests/helpdesk/TemplateRequest.php b/app/Http/Requests/helpdesk/TemplateRequest.php
index 065eb8dc6..47bfbf21e 100644
--- a/app/Http/Requests/helpdesk/TemplateRequest.php
+++ b/app/Http/Requests/helpdesk/TemplateRequest.php
@@ -30,9 +30,9 @@ class TemplateRequest extends Request
{
return [
'name' => 'required|unique:template',
- 'ban_status' => 'required',
- 'template_set_to_clone' => 'required',
- 'language' => 'required',
+// 'subject' => 'required',
+ 'type' => 'required',
+ 'message' => 'required',
];
}
}
diff --git a/app/Http/Requests/helpdesk/TemplateRequest2.php b/app/Http/Requests/helpdesk/TemplateRequest2.php
new file mode 100644
index 000000000..2aeec9497
--- /dev/null
+++ b/app/Http/Requests/helpdesk/TemplateRequest2.php
@@ -0,0 +1,38 @@
+
+ */
+class TemplateRequest2 extends Request
+{
+ /**
+ * Determine if the user is authorized to make this request.
+ *
+ * @return bool
+ */
+ public function authorize()
+ {
+ return true;
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'name' => 'required|unique:template',
+ 'ban_status' => 'required',
+ 'template_set_to_clone' => 'required',
+ 'language' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/TemplateSetRequest.php b/app/Http/Requests/helpdesk/TemplateSetRequest.php
new file mode 100644
index 000000000..7e06918a7
--- /dev/null
+++ b/app/Http/Requests/helpdesk/TemplateSetRequest.php
@@ -0,0 +1,30 @@
+ 'required|unique:template_sets',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/TemplateUdate.php b/app/Http/Requests/helpdesk/TemplateUdate.php
index 98150b262..1ec987923 100644
--- a/app/Http/Requests/helpdesk/TemplateUdate.php
+++ b/app/Http/Requests/helpdesk/TemplateUdate.php
@@ -29,10 +29,10 @@ class TemplateUdate extends Request
public function rules()
{
return [
-
- 'ban_status' => 'required',
- 'template_set_to_clone' => 'required',
- 'language' => 'required',
+ 'name' => 'required|max:60',
+// 'subject' => 'required',
+ 'type' => 'required',
+ 'message' => 'required',
];
}
}
diff --git a/app/Http/Requests/helpdesk/TemplateUdate2.php b/app/Http/Requests/helpdesk/TemplateUdate2.php
new file mode 100644
index 000000000..b827e6c23
--- /dev/null
+++ b/app/Http/Requests/helpdesk/TemplateUdate2.php
@@ -0,0 +1,38 @@
+
+ */
+class TemplateUdate2 extends Request
+{
+ /**
+ * Determine if the user is authorized to make this request.
+ *
+ * @return bool
+ */
+ public function authorize()
+ {
+ return true;
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+
+ 'ban_status' => 'required',
+ 'template_set_to_clone' => 'required',
+ 'language' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/WorkflowCloseRequest.php b/app/Http/Requests/helpdesk/WorkflowCloseRequest.php
new file mode 100644
index 000000000..42c907c9b
--- /dev/null
+++ b/app/Http/Requests/helpdesk/WorkflowCloseRequest.php
@@ -0,0 +1,33 @@
+ 'required|integer|min:1',
+ 'condition' => 'required|integer',
+ 'send_email' => 'required|integer',
+ 'status' => 'required|integer',
+ ];
+ }
+}
diff --git a/app/Http/Requests/helpdesk/WorkflowCreateRequest.php b/app/Http/Requests/helpdesk/WorkflowCreateRequest.php
index a1ca0c207..2c2fe18eb 100644
--- a/app/Http/Requests/helpdesk/WorkflowCreateRequest.php
+++ b/app/Http/Requests/helpdesk/WorkflowCreateRequest.php
@@ -29,7 +29,7 @@ class WorkflowCreateRequest extends Request
public function rules()
{
return [
- 'name' => 'required|unique:workflow_name,name',
+ 'name' => 'required|unique:workflow_name,name|max:50',
'execution_order' => 'required',
'target_channel' => 'required',
'rule' => 'required',
diff --git a/app/Http/Requests/helpdesk/WorkflowUpdateRequest.php b/app/Http/Requests/helpdesk/WorkflowUpdateRequest.php
index f514e66e4..8e7fe5a82 100644
--- a/app/Http/Requests/helpdesk/WorkflowUpdateRequest.php
+++ b/app/Http/Requests/helpdesk/WorkflowUpdateRequest.php
@@ -29,7 +29,7 @@ class WorkflowUpdateRequest extends Request
public function rules()
{
return [
- 'name' => 'required',
+ 'name' => 'required|max:50',
'execution_order' => 'required',
'target_channel' => 'required',
'rule' => 'required',
diff --git a/app/Http/Requests/kb/ArticleRequest.php b/app/Http/Requests/kb/ArticleRequest.php
index db58b9475..53216111b 100644
--- a/app/Http/Requests/kb/ArticleRequest.php
+++ b/app/Http/Requests/kb/ArticleRequest.php
@@ -25,7 +25,7 @@ class ArticleRequest extends Request
{
return [
'name' => 'required',
- 'slug' => 'required|unique:kb_article',
+ //'slug' => 'required|unique:kb_article',
'description' => 'required',
'category_id' => 'required',
];
diff --git a/app/Http/Requests/kb/ArticleUpdate.php b/app/Http/Requests/kb/ArticleUpdate.php
index 7d6394c64..c8c3526cd 100644
--- a/app/Http/Requests/kb/ArticleUpdate.php
+++ b/app/Http/Requests/kb/ArticleUpdate.php
@@ -23,9 +23,11 @@ class ArticleUpdate extends Request
*/
public function rules()
{
+ $id = $this->segments()[1];
+
return [
'name' => 'required',
- 'slug' => 'required',
+ 'slug' => 'required|unique:kb_article,slug,'.$id.',id',
'description' => 'required',
'category_id' => 'required',
];
diff --git a/app/Http/Requests/kb/CategoryRequest.php b/app/Http/Requests/kb/CategoryRequest.php
index cd8d5d87f..2e5a1f59b 100644
--- a/app/Http/Requests/kb/CategoryRequest.php
+++ b/app/Http/Requests/kb/CategoryRequest.php
@@ -24,7 +24,7 @@ class CategoryRequest extends Request
public function rules()
{
return [
- 'name' => 'required',
+ 'name' => 'required|max:250',
'slug' => 'required|unique:kb_category',
'description' => 'required',
];
diff --git a/app/Http/Requests/kb/CategoryUpdate.php b/app/Http/Requests/kb/CategoryUpdate.php
index ecb16752e..698ec894a 100644
--- a/app/Http/Requests/kb/CategoryUpdate.php
+++ b/app/Http/Requests/kb/CategoryUpdate.php
@@ -24,7 +24,7 @@ class CategoryUpdate extends Request
public function rules()
{
return [
- 'name' => 'required',
+ 'name' => 'required|max:250',
'slug' => 'required',
'description' => 'required',
];
diff --git a/app/Http/routes.php b/app/Http/routes.php
index 09322df2f..78c66ffb6 100644
--- a/app/Http/routes.php
+++ b/app/Http/routes.php
@@ -1,7 +1,5 @@
'Auth\AuthController',
- 'password' => 'Auth\PasswordController',
-]);
+Route::group(['middleware' => 'update'], function () {
+ Route::controllers([
+ 'auth' => 'Auth\AuthController',
+ 'password' => 'Auth\PasswordController',
+ ]);
+});
+
+Route::get('account/activate/{token}', ['as' => 'account.activate', 'uses' => 'Auth\AuthController@accountActivate']);
$router->get('getmail/{token}', 'Auth\AuthController@getMail');
-/*
- |-------------------------------------------------------------------------------
- | API Routes
- |-------------------------------------------------------------------------------
- | These routes are the API calls.
- |
- */
-// Route::group(['prefix' => 'api'], function () {
-// Route::get('/database-config',['as'=>'database-config','uses'=>'Api\v1\InstallerApiController@config_database']);
-// Route::get('/system-config',['as'=>'database-config','uses'=>'Api\v1\InstallerApiController@config_system']);
-// });
-
/*
|-------------------------------------------------------------------------------
| Admin Routes
@@ -39,15 +29,24 @@ $router->get('getmail/{token}', 'Auth\AuthController@getMail');
| Here is defining entire routes for the Admin Panel
|
*/
-Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
+Route::group(['middleware' => 'roles', 'middleware' => 'auth', 'middleware' => 'update'], function () {
//Notification marking
Route::post('mark-read/{id}', 'Common\NotificationController@markRead');
-
+ Breadcrumbs::register('notification.list', function ($breadcrumbs) {
+ $breadcrumbs->parent('dashboard');
+ $breadcrumbs->push('All Notifications', route('notification.list'));
+ });
Route::get('notifications-list', ['as' => 'notification.list', 'uses' => 'Common\NotificationController@show']);
Route::post('notification-delete/{id}', ['as' => 'notification.delete', 'uses' => 'Common\NotificationController@delete']);
-
+ Breadcrumbs::register('notification.settings', function ($breadcrumbs) {
+ $breadcrumbs->parent('setting');
+ $breadcrumbs->push('Notifications Settings', route('notification.settings'));
+ });
+ Route::get('settings-notification', ['as' => 'notification.settings', 'uses' => 'Admin\helpdesk\SettingsController@notificationSettings']);
+ Route::get('delete-read-notification', 'Admin\helpdesk\SettingsController@deleteReadNoti');
+ Route::post('delete-notification-log', 'Admin\helpdesk\SettingsController@deleteNotificationLog');
// resource is a function to process create,edit,read and delete
Route::resource('groups', 'Admin\helpdesk\GroupController'); // for group module, for CRUD
@@ -60,6 +59,36 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
Route::resource('emails', 'Admin\helpdesk\EmailsController'); // in emails module, for CRUD
Route::resource('banlist', 'Admin\helpdesk\BanlistController'); // in banlist module, for CRUD
+ Route::get('banlist/delete/{id}', ['as' => 'banlist.delete', 'uses' => 'Admin\helpdesk\BanlistController@delete']); // in banlist module, for CRUD
+ /*
+ * Templates
+ */
+ Breadcrumbs::register('template-sets.index', function ($breadcrumbs) {
+ $breadcrumbs->parent('setting');
+ $breadcrumbs->push('All Template sets', route('template-sets.index'));
+ });
+ Breadcrumbs::register('show.templates', function ($breadcrumbs) {
+ $page = App\Model\Common\Template::whereId(1)->first();
+ $breadcrumbs->parent('template-sets.index');
+ $breadcrumbs->push('All Templates', route('show.templates', $page->id));
+ });
+ Breadcrumbs::register('templates.edit', function ($breadcrumbs) {
+ $page = App\Model\Common\Template::whereId(1)->first();
+ $breadcrumbs->parent('show.templates');
+ $breadcrumbs->push('Edit Template', route('templates.edit', $page->id));
+ });
+ Route::resource('templates', 'Common\TemplateController');
+ Route::get('get-templates', 'Common\TemplateController@GetTemplates');
+ Route::get('templates-delete', 'Common\TemplateController@destroy');
+ Route::get('testmail/{id}', 'Common\TemplateController@mailtest');
+
+ Route::resource('template-sets', 'Common\TemplateSetController'); // in template module, for CRUD
+
+ Route::get('delete-sets/{id}', ['as' => 'sets.delete', 'uses' => 'Common\TemplateSetController@deleteSet']);
+
+ Route::get('show-template/{id}', ['as' => 'show.templates', 'uses' => 'Common\TemplateController@showTemplate']);
+
+ Route::get('activate-templateset/{name}', ['as' => 'active.template-set', 'uses' => 'Common\TemplateSetController@activateSet']);
Route::resource('template', 'Admin\helpdesk\TemplateController'); // in template module, for CRUD
@@ -77,9 +106,9 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
Route::get('delete-template/{template}/{path}', ['as' => 'templates.delete', 'uses' => 'Admin\helpdesk\TemplateController@deletetemplate']);
- Route::get('getdiagno', 'Admin\helpdesk\TemplateController@formDiagno'); // for getting form for diagnostic
+ Route::get('getdiagno', ['as' => 'getdiagno', 'uses' => 'Admin\helpdesk\TemplateController@formDiagno']); // for getting form for diagnostic
- Route::post('postdiagno', 'Admin\helpdesk\TemplateController@postDiagno'); // for getting form for diagnostic
+ Route::post('postdiagno', ['as' => 'postdiagno', 'uses' => 'Admin\helpdesk\TemplateController@postDiagno']); // for getting form for diagnostic
Route::resource('helptopic', 'Admin\helpdesk\HelptopicController'); // in helptopics module, for CRUD
@@ -97,40 +126,120 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
Route::get('agent-profile-page/{id}', ['as' => 'agent.profile.page', 'uses' => 'Admin\helpdesk\AgentController@agent_profile']);
- Route::get('getcompany', 'Admin\helpdesk\SettingsController@getcompany'); // direct to company setting page
+ Route::get('getcompany', ['as' => 'getcompany', 'uses' => 'Admin\helpdesk\SettingsController@getcompany']); // direct to company setting page
Route::patch('postcompany/{id}', 'Admin\helpdesk\SettingsController@postcompany'); // Updating the Company table with requests
Route::get('delete-logo', ['as' => 'delete.logo', 'uses' => 'Admin\helpdesk\SettingsController@deleteLogo']); // deleting a logo
- Route::get('getsystem', 'Admin\helpdesk\SettingsController@getsystem'); // direct to system setting page
+ Route::get('getsystem', ['as' => 'getsystem', 'uses' => 'Admin\helpdesk\SettingsController@getsystem']); // direct to system setting page
Route::patch('postsystem/{id}', 'Admin\helpdesk\SettingsController@postsystem'); // Updating the System table with requests
- Route::get('getticket', 'Admin\helpdesk\SettingsController@getticket'); // direct to ticket setting page
+ Route::get('getticket', ['as' => 'getticket', 'uses' => 'Admin\helpdesk\SettingsController@getticket']); // direct to ticket setting page
Route::patch('postticket/{id}', 'Admin\helpdesk\SettingsController@postticket'); // Updating the Ticket table with requests
- Route::get('getemail', 'Admin\helpdesk\SettingsController@getemail'); // direct to email setting page
+ Route::get('getemail', ['as' => 'getemail', 'uses' => 'Admin\helpdesk\SettingsController@getemail']); // direct to email setting page
Route::patch('postemail/{id}', 'Admin\helpdesk\SettingsController@postemail'); // Updating the Email table with requests
// Route::get('getaccess', 'Admin\helpdesk\SettingsController@getaccess'); // direct to access setting page
// Route::patch('postaccess/{id}', 'Admin\helpdesk\SettingsController@postaccess'); // Updating the Access table with requests
- Route::get('getresponder', 'Admin\helpdesk\SettingsController@getresponder'); // direct to responder setting page
+ Route::get('getresponder', ['as' => 'getresponder', 'uses' => 'Admin\helpdesk\SettingsController@getresponder']); // direct to responder setting page
Route::patch('postresponder/{id}', 'Admin\helpdesk\SettingsController@postresponder'); // Updating the Responder table with requests
- Route::get('getalert', 'Admin\helpdesk\SettingsController@getalert'); // direct to alert setting page
+ Route::get('getalert', ['as' => 'getalert', 'uses' => 'Admin\helpdesk\SettingsController@getalert']); // direct to alert setting page
Route::patch('postalert/{id}', 'Admin\helpdesk\SettingsController@postalert'); // Updating the Alert table with requests
+ // Templates
+ Breadcrumbs::register('security.index', function ($breadcrumbs) {
+ $breadcrumbs->parent('setting');
+ $breadcrumbs->push('Security', route('security.index'));
+ });
- Route::get('getratings', 'Admin\helpdesk\SettingsController@RatingSettings');
+// Templates > Upload Templates
+ Breadcrumbs::register('security.create', function ($breadcrumbs) {
+ $breadcrumbs->parent('security.index');
+ $breadcrumbs->push('Upload security', route('security.create'));
+ });
+
+// Templates > [Templates Name]
+ Breadcrumbs::register('security.show', function ($breadcrumbs, $photo) {
+ $breadcrumbs->parent('security.index');
+ $breadcrumbs->push($photo->title, route('security.show', $photo->id));
+ });
+
+// Templates > [Templates Name] > Edit Templates
+ Breadcrumbs::register('security.edit', function ($breadcrumbs, $photo) {
+ $breadcrumbs->parent('security.show', $photo);
+ $breadcrumbs->push('Edit security', route('security.edit', $photo->id));
+ });
+
+
+ Route::resource('security', 'Admin\helpdesk\SecurityController'); // direct to security setting page
+
+
+ Route::resource('close-workflow', 'Admin\helpdesk\CloseWrokflowController'); // direct to security setting page
+
+
+ Breadcrumbs::register('close-workflow.index', function ($breadcrumbs) {
+ $breadcrumbs->parent('setting');
+ $breadcrumbs->push('Close Ticket Workflow', route('close-workflow.index'));
+ });
+ Route::resource('close-workflow', 'Admin\helpdesk\CloseWrokflowController'); // direct to security setting page
+
+
+ Route::patch('security/{id}', ['as' => 'securitys.update', 'uses' => 'Admin\helpdesk\SecurityController@update']); // direct to security setting page
+ Breadcrumbs::register('statuss.index', function ($breadcrumbs) {
+ $breadcrumbs->parent('setting');
+ $breadcrumbs->push('All Status', route('statuss.index'));
+ });
+ Route::get('setting-status', ['as' => 'statuss.index', 'uses' => 'Admin\helpdesk\SettingsController@getStatuses']); // direct to status setting page
+
+ Route::patch('status-update/{id}', ['as' => 'statuss.update', 'uses' => 'Admin\helpdesk\SettingsController@editStatuses']);
+ Breadcrumbs::register('statuss.create', function ($breadcrumbs) {
+ $breadcrumbs->parent('setting');
+ $breadcrumbs->push('Create Status', route('statuss.create'));
+ });
+
+ Route::get('status/edit/{id}', ['as' => 'status.edit', 'uses' => 'Admin\helpdesk\SettingsController@getEditStatuses']);
+
+ Route::post('status-create', ['as' => 'statuss.create', 'uses' => 'Admin\helpdesk\SettingsController@createStatuses']);
+
+ Route::get('status-delete/{id}', ['as' => 'statuss.delete', 'uses' => 'Admin\helpdesk\SettingsController@deleteStatuses']);
+
+ Route::get('ticket/status/{id}/{state}', ['as' => 'statuss.state', 'uses' => 'Agent\helpdesk\TicketController@updateStatuses']);
+ Breadcrumbs::register('ratings.index', function ($breadcrumbs) {
+ $breadcrumbs->parent('setting');
+ $breadcrumbs->push('All Ratings', route('ratings.index'));
+ });
+ Route::get('getratings', ['as' => 'ratings.index', 'uses' => 'Admin\helpdesk\SettingsController@RatingSettings']);
Route::get('deleter/{rating}', ['as' => 'ratings.delete', 'uses' => 'Admin\helpdesk\SettingsController@RatingDelete']);
+ Breadcrumbs::register('rating.create', function ($breadcrumbs) {
+ $breadcrumbs->parent('ratings.index');
+ $breadcrumbs->push('Create Ratings', route('rating.create'));
+ });
+
+ Route::get('create-ratings', ['as' => 'rating.create', 'uses' => 'Admin\helpdesk\SettingsController@createRating']);
+
+ Route::post('store-ratings', ['as' => 'rating.store', 'uses' => 'Admin\helpdesk\SettingsController@storeRating']);
+
+ Breadcrumbs::register('rating.edit', function ($breadcrumbs) {
+ $page = App\Model\helpdesk\Ratings\Rating::whereId(1)->first();
+ $breadcrumbs->parent('ratings.index');
+ $breadcrumbs->push('Edit Ratings');
+ });
+
+ Route::get('editratings/{slug}', ['as' => 'rating.edit', 'uses' => 'Admin\helpdesk\SettingsController@editRatingSettings']);
+
Route::patch('postratings/{slug}', ['as' => 'settings.rating', 'uses' => 'Admin\helpdesk\SettingsController@PostRatingSettings']);
+ Route::get('remove-user-org/{id}', ['as' => 'removeuser.org', 'uses' => 'Agent\helpdesk\UserController@removeUserOrg']);
+
Route::get('admin-profile', 'Admin\helpdesk\ProfileController@getProfile'); /* User profile edit get */
Route::get('admin-profile-edit', 'Admin\helpdesk\ProfileController@getProfileedit'); /* Admin profile get */
@@ -139,15 +248,15 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
Route::patch('admin-profile-password', 'Admin\helpdesk\ProfileController@postProfilePassword'); /* Admin Profile Password Post */
- Route::get('widgets', 'Common\SettingsController@widgets'); /* get the create footer page for admin */
+ Route::get('widgets', ['as' => 'widgets', 'uses' => 'Common\SettingsController@widgets']); /* get the create footer page for admin */
Route::get('list-widget', 'Common\SettingsController@list_widget'); /* get the list widget page for admin */
Route::post('edit-widget/{id}', 'Common\SettingsController@edit_widget'); /* get the create footer page for admin */
- Route::get('social-buttons', 'Common\SettingsController@social_buttons'); /* get the create footer page for admin */
+ Route::get('social-buttons', ['as' => 'social.buttons', 'uses' => 'Common\SettingsController@social_buttons']); /* get the create footer page for admin */
- Route::get('list-social-buttons', 'Common\SettingsController@list_social_buttons'); /* get the list widget page for admin */
+ Route::get('list-social-buttons', ['as' => 'list.social.buttons', 'uses' => 'Common\SettingsController@list_social_buttons']); /* get the list widget page for admin */
Route::post('edit-widget/{id}', 'Common\SettingsController@edit_social_buttons'); /* get the create footer page for admin */
@@ -161,6 +270,10 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
Route::get('checkUpdate', ['as' => 'checkupdate', 'uses' => 'Common\SettingsController@getupdate']); /* get Check update */
+ Breadcrumbs::register('setting', function ($breadcrumbs) {
+ $breadcrumbs->push('Admin Panel', route('setting'));
+ });
+
Route::get('admin', ['as' => 'setting', 'uses' => 'Admin\helpdesk\SettingsController@settings']);
Route::get('plugins', ['as' => 'plugins', 'uses' => 'Common\SettingsController@Plugins']);
@@ -198,6 +311,7 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
Route::post('validating-email-settings', ['as' => 'validating.email.settings', 'uses' => 'Admin\helpdesk\EmailsController@validatingEmailSettings']); // route to check email input validation
Route::post('validating-email-settings-on-update/{id}', ['as' => 'validating.email.settings.update', 'uses' => 'Admin\helpdesk\EmailsController@validatingEmailSettingsUpdate']); // route to check email input validation
+
Route::get('workflow', ['as' => 'workflow', 'uses' => 'Admin\helpdesk\WorkflowController@index']);
Route::get('workflow-list', ['as' => 'workflow.list', 'uses' => 'Admin\helpdesk\WorkflowController@workFlowList']);
Route::get('workflow/create', ['as' => 'workflow.create', 'uses' => 'Admin\helpdesk\WorkflowController@create']);
@@ -206,6 +320,28 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
Route::post('workflow/update/{id}', ['as' => 'workflow.update', 'uses' => 'Admin\helpdesk\WorkflowController@update']);
Route::get('workflow/action-rule/{id}', ['as' => 'workflow.dept', 'uses' => 'Admin\helpdesk\WorkflowController@selectAction']);
Route::get('workflow/delete/{id}', ['as' => 'workflow.delete', 'uses' => 'Admin\helpdesk\WorkflowController@destroy']);
+
+ /*
+ * Api Settings
+ */
+ Route::get('api', ['as' => 'api.settings.get', 'uses' => 'Common\ApiSettings@show']);
+ Route::post('api', ['as' => 'api.settings.post', 'uses' => 'Common\ApiSettings@postSettings']);
+
+ /*
+ * Error and debugging
+ */
+ //route for showing error and debugging setting form page
+ Route::get('error-and-debugging-options', ['as' => 'err.debug.settings', 'uses' => 'Admin\helpdesk\ErrorAndDebuggingController@showSettings']);
+
+ //route for submit error and debugging setting form page
+ Route::post('post-settings', ['as' => 'post.error.debug.settings',
+ 'uses' => 'Admin\helpdesk\ErrorAndDebuggingController@postSettings']);
+
+ //route to error logs table page
+ Route::get('show-error-logs', [
+ 'as' => 'error.logs',
+ 'uses' => 'Admin\helpdesk\ErrorAndDebuggingController@showErrorLogs'
+ ]);
});
/*
@@ -216,14 +352,22 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
|
|
*/
-Route::group(['middleware' => 'role.agent', 'middleware' => 'auth'], function () {
-
+Route::group(['middleware' => 'role.agent', 'middleware' => 'auth', 'middleware' => 'update'], function () {
Route::post('chart-range/{date1}/{date2}', ['as' => 'post.chart', 'uses' => 'Agent\helpdesk\DashboardController@ChartData']);
Route::get('agen1', 'Agent\helpdesk\DashboardController@ChartData');
Route::post('chart-range', ['as' => 'post.chart', 'uses' => 'Agent\helpdesk\DashboardController@ChartData']);
+ Route::post('user-chart-range/{id}/{date1}/{date2}', ['as' => 'post.user.chart', 'uses' => 'Agent\helpdesk\DashboardController@userChartData']);
+
+ Route::get('user-agen/{id}', 'Agent\helpdesk\DashboardController@userChartData');
+
+ Route::get('user-agen1', 'Agent\helpdesk\DashboardController@userChartData');
+
+ Route::post('user-chart-range', ['as' => 'post.user.chart', 'uses' => 'Agent\helpdesk\DashboardController@userChartData']);
+
+
Route::resource('user', 'Agent\helpdesk\UserController'); /* User router is used to control the CRUD of user */
Route::get('user-list', ['as' => 'user.list', 'uses' => 'Agent\helpdesk\UserController@user_list']);
@@ -236,6 +380,11 @@ Route::group(['middleware' => 'role.agent', 'middleware' => 'auth'], function ()
Route::get('org/delete/{id}', ['as' => 'org.delete', 'uses' => 'Agent\helpdesk\OrganizationController@destroy']);
+ Route::get('org-chart/{id}', 'Agent\helpdesk\OrganizationController@orgChartData');
+
+// Route::post('org-chart-range', ['as' => 'post.org.chart', 'uses' => 'Agent\helpdesk\OrganizationController@orgChartData']);
+ Route::post('org-chart-range/{id}/{date1}/{date2}', ['as' => 'post.org.chart', 'uses' => 'Agent\helpdesk\OrganizationController@orgChartData']);
+
Route::get('profile', ['as' => 'profile', 'uses' => 'Agent\helpdesk\UserController@getProfile']); /* User profile get */
Route::get('profile-edit', ['as' => 'agent-profile-edit', 'uses' => 'Agent\helpdesk\UserController@getProfileedit']); /* User profile edit get */
@@ -280,8 +429,7 @@ Route::group(['middleware' => 'role.agent', 'middleware' => 'auth'], function ()
Route::get('/ticket/overdue', ['as' => 'overdue.ticket', 'uses' => 'Agent\helpdesk\TicketController@overdue_ticket_list']); /* Get Overdue Ticket */
- Route::get('/ticket/get-overdue', ['as' => 'get.overdue.ticket',
- 'uses' => 'Agent\helpdesk\TicketController@getOverdueTickets', ]);
+ Route::get('/ticket/get-overdue', ['as' => 'get.overdue.ticket', 'uses' => 'Agent\helpdesk\TicketController@getOverdueTickets']); /* Get Overdue Ticket */
Route::get('/ticket/closed', ['as' => 'closed.ticket', 'uses' => 'Agent\helpdesk\TicketController@closed_ticket_list']); /* Get Closed Ticket */
@@ -321,15 +469,18 @@ Route::group(['middleware' => 'role.agent', 'middleware' => 'auth'], function ()
Route::get('/aaaa', 'Client\helpdesk\GuestController@ticket_number');
- Route::get('trash', 'Agent\helpdesk\TicketController@trash'); /* To show Deleted Tickets */
+ Route::get('trash', ['as' => 'get-trash', 'uses' => 'Agent\helpdesk\TicketController@trash']); /* To show Deleted Tickets */
Route::get('/ticket/trash', ['as' => 'get.trash.ticket', 'uses' => 'Agent\helpdesk\TicketController@get_trash']); /* Get tickets in datatable */
- Route::get('unassigned', 'Agent\helpdesk\TicketController@unassigned'); /* To show Unassigned Tickets */
+ Route::get('unassigned', ['as' => 'unassigned', 'uses' => 'Agent\helpdesk\TicketController@unassigned']); /* To show Unassigned Tickets */
Route::get('/ticket/unassigned', ['as' => 'get.unassigned.ticket', 'uses' => 'Agent\helpdesk\TicketController@get_unassigned']); /* Get tickets in datatable */
-
- Route::get('dashboard', 'Agent\helpdesk\DashboardController@index'); /* To show dashboard pages */
+ Breadcrumbs::register('dashboard', function ($breadcrumbs) {
+ $breadcrumbs->parent('/');
+ $breadcrumbs->push('Dashboard', route('dashboard'));
+ });
+ Route::get('dashboard', ['as' => 'dashboard', 'uses' => 'Agent\helpdesk\DashboardController@index']); /* To show dashboard pages */
Route::get('agen', 'Agent\helpdesk\DashboardController@ChartData');
@@ -367,9 +518,9 @@ Route::group(['middleware' => 'role.agent', 'middleware' => 'auth'], function ()
Route::get('/{dept}/closed', ['as' => 'dept.closed.ticket', 'uses' => 'Agent\helpdesk\TicketController@deptclose']); // Closed
- Route::post('rating/{id}/{rating}', ['as' => 'ticket.rating', 'uses' => 'Agent\helpdesk\TicketController@rating']); /* Get overall Ratings */
+ Route::post('rating/{id}', ['as' => 'ticket.rating', 'uses' => 'Agent\helpdesk\TicketController@rating']); /* Get overall Ratings */
- Route::post('rating2/{id}/{rating}', ['as' => 'ticket.rating2', 'uses' => 'Agent\helpdesk\TicketController@ratingReply']); /* Get reply Ratings */
+ Route::post('rating2/{id}', ['as' => 'ticket.rating2', 'uses' => 'Agent\helpdesk\TicketController@ratingReply']); /* Get reply Ratings */
// To check and lock tickets
Route::get('check/lock/{id}', ['as' => 'lock', 'uses' => 'Agent\helpdesk\TicketController@checkLock']);
@@ -413,9 +564,8 @@ Route::POST('tickets/search/', function () {
return Illuminate\Support\Facades\Redirect::back()->with('contents', $models)->with('counts', $count);
});
Route::any('getdata', function () {
-
$term = Illuminate\Support\Str::lower(Input::get('term'));
- $data = Illuminate\Support\Facades\DB::table('tickets')->distinct()->select('ticket_number')->where('ticket_number', 'LIKE', $term.'%')->groupBy('ticket_number')->take(10)->get();
+ $data = Illuminate\Support\Facades\DB::table('tickets')->distinct()->select('ticket_number')->where('ticket_number', 'LIKE', $term . '%')->groupBy('ticket_number')->take(10)->get();
foreach ($data as $v) {
return [
'value' => $v->ticket_number,
@@ -432,24 +582,46 @@ Route::post('postedform', 'Client\helpdesk\FormController@postedForm'); /* post
Route::get('check', 'CheckController@getcheck'); //testing checkbox auto-populate
Route::post('postcheck/{id}', 'CheckController@postcheck');
-
+Breadcrumbs::register('home', function ($breadcrumbs) {
+ $breadcrumbs->push('Home', route('home'));
+});
Route::get('home', ['as' => 'home', 'uses' => 'Client\helpdesk\WelcomepageController@index']); //guest layout
-
+Breadcrumbs::register('/', function ($breadcrumbs) {
+ $breadcrumbs->push('Home', route('/'));
+});
Route::get('/', ['as' => '/', 'uses' => 'Client\helpdesk\WelcomepageController@index']);
-
+Breadcrumbs::register('form', function ($breadcrumbs) {
+ $breadcrumbs->push('Create Ticket', route('form'));
+});
Route::get('create-ticket', ['as' => 'form', 'uses' => 'Client\helpdesk\FormController@getForm']); //getform
Route::get('mytickets/{id}', ['as' => 'ticketinfo', 'uses' => 'Client\helpdesk\GuestController@singleThread']); //detail ticket information
-Route::post('checkmyticket', 'Client\helpdesk\GuestController@PostCheckTicket'); //ticket ckeck
-
+Route::post('checkmyticket', 'Client\helpdesk\UnAuthController@PostCheckTicket'); //ticket ckeck
+Breadcrumbs::register('check_ticket', function ($breadcrumbs, $id) {
+ $page = \App\Model\helpdesk\Ticket\Tickets::whereId(1)->first();
+ $breadcrumbs->parent('/');
+ $breadcrumbs->push('Check Ticket', route('check_ticket', $page->id));
+});
Route::get('check_ticket/{id}', ['as' => 'check_ticket', 'uses' => 'Client\helpdesk\GuestController@get_ticket_email']); //detail ticket information
+// show ticket via have a ticket
+Route::get('show-ticket/{id}/{code}', ['as' => 'show.ticket', 'uses' => 'Client\helpdesk\UnAuthController@showTicketCode']); //detail ticket information
+Breadcrumbs::register('show.ticket', function ($breadcrumbs) {
+ $breadcrumbs->push('Ticket', route('form'));
+});
+
//testing ckeditor
//===================================================================================
Route::group(['middleware' => 'role.user', 'middleware' => 'auth'], function () {
-
Route::get('client-profile', ['as' => 'client.profile', 'uses' => 'Client\helpdesk\GuestController@getProfile']); /* User profile get */
+ Breadcrumbs::register('client.profile', function ($breadcrumbs) {
+ $breadcrumbs->push('My Profile');
+ });
+
+ Breadcrumbs::register('ticket2', function ($breadcrumbs) {
+ $breadcrumbs->push('My Tickets', route('ticket2'));
+ });
Route::get('mytickets', ['as' => 'ticket2', 'uses' => 'Client\helpdesk\GuestController@getMyticket']);
Route::get('myticket/{id}', ['as' => 'ticket', 'uses' => 'Client\helpdesk\GuestController@thread']); /* Get my tickets */
@@ -474,10 +646,6 @@ Route::post('postcheck', 'Client\helpdesk\GuestController@PostCheckTicket'); /*
Route::get('postcheck', 'Client\helpdesk\GuestController@PostCheckTicket');
Route::post('post-ticket-reply/{id}', 'Client\helpdesk\FormController@post_ticket_reply');
-
-/* 404 page */
-// Route::get('404', 'error\ErrorController@error404');
-
/*
|============================================================
| Installer Routes
@@ -487,6 +655,7 @@ Route::post('post-ticket-reply/{id}', 'Client\helpdesk\FormController@post_ticke
*/
Route::get('/serial', ['as' => 'serialkey', 'uses' => 'Installer\helpdesk\InstallController@serialkey']);
Route::post('/CheckSerial/{id}', ['as' => 'CheckSerial', 'uses' => 'Installer\helpdesk\InstallController@PostSerialKey']);
+Route::get('/JavaScript-disabled', ['as' => 'js-disabled', 'uses' => 'Installer\helpdesk\InstallController@jsDisabled']);
Route::get('/step1', ['as' => 'licence', 'uses' => 'Installer\helpdesk\InstallController@licence']);
Route::post('/step1post', ['as' => 'postlicence', 'uses' => 'Installer\helpdesk\InstallController@licencecheck']);
Route::get('/step2', ['as' => 'prerequisites', 'uses' => 'Installer\helpdesk\InstallController@prerequisites']);
@@ -501,6 +670,7 @@ Route::post('/step6post', ['as' => 'postaccount', 'uses' => 'Installer\helpdesk\
Route::get('/final', ['as' => 'final', 'uses' => 'Installer\helpdesk\InstallController@finalize']);
Route::post('/finalpost', ['as' => 'postfinal', 'uses' => 'Installer\helpdesk\InstallController@finalcheck']);
Route::post('/postconnection', ['as' => 'postconnection', 'uses' => 'Installer\helpdesk\InstallController@postconnection']);
+Route::get('/change-file-permission', ['as' => 'change-permission', 'uses' => 'Installer\helpdesk\InstallController@changeFilePermission']);
/*
|=============================================================
@@ -511,44 +681,61 @@ Route::post('/postconnection', ['as' => 'postconnection', 'uses' => 'Installer\h
*/
Route::get('readmails', ['as' => 'readmails', 'uses' => 'Agent\helpdesk\MailController@readmails']);
Route::get('notification', ['as' => 'notification', 'uses' => 'Agent\helpdesk\NotificationController@send_notification']);
+Route::get('auto-close-tickets', ['as' => 'auto.close', 'uses' => 'Agent\helpdesk\TicketController@autoCloseTickets']);
/*
|=============================================================
| View all the Routes
|=============================================================
*/
-// Route::get('/aaa', function () {
-// $routeCollection = Route::getRoutes();
-// echo "";
-// echo '';
-// echo "HTTP Method ";
-// echo "Route ";
-// echo "Url ";
-// echo "Corresponding Action ";
-// echo ' ';
-// foreach ($routeCollection as $value) {
-// echo '';
-// echo ''.$value->getMethods()[0].' ';
-// echo ''.$value->getName().' ';
-// echo ''.$value->getPath().' ';
-// echo ''.$value->getActionName().' ';
-// echo ' ';
-// }
-// echo '
';
-// });
+//Route::get('/aaa', function () {
+// $routeCollection = Route::getRoutes();
+// echo "";
+// echo '';
+// echo "HTTP Method ";
+// echo "Route ";
+// echo "Url ";
+// echo "Corresponding Action ";
+// echo ' ';
+// foreach ($routeCollection as $value) {
+// echo '';
+// echo '' . $value->getMethods()[0] . ' ';
+// echo '' . $value->getName() . ' ';
+// echo '' . $value->getPath() . ' ';
+// echo '' . $value->getActionName() . ' ';
+// echo ' ';
+// }
+// echo '
';
+//});
/*
|=============================================================
| Error Routes
|=============================================================
*/
-Route::get('503', function () {
- return view('errors.503');
-});
-Route::get('404', function () {
- return view('errors.404');
+Route::get('500', ['as' => 'error500', function () {
+return view('errors.500');
+}]);
+
+Breadcrumbs::register('error500', function ($breadcrumbs) {
+ $breadcrumbs->push('500');
});
+Route::get('404', ['as' => 'error404', function () {
+return view('errors.404');
+}]);
+
+Breadcrumbs::register('error404', function ($breadcrumbs) {
+ $breadcrumbs->push('404');
+});
+
+Route::get('board-offline', ['as' => 'board.offline', function () {
+return view('errors.offline');
+}]);
+
+Breadcrumbs::register('board.offline', function ($breadcrumbs) {
+ $breadcrumbs->push('Board Offline');
+});
/*
|=============================================================
| Test mail Routes
@@ -607,14 +794,42 @@ $router->get('direct', function () {
/* post the comment from show page */
$router->post('postcomment/{slug}', ['as' => 'postcomment', 'uses' => 'Client\kb\UserController@postComment']);
/* get the article list */
+Breadcrumbs::register('article-list', function ($breadcrumbs) {
+ $breadcrumbs->push('Article List', route('article-list'));
+});
$router->get('article-list', ['as' => 'article-list', 'uses' => 'Client\kb\UserController@getArticle']);
// /* get search values */
$router->get('search', ['as' => 'search', 'uses' => 'Client\kb\UserController@search']);
+Breadcrumbs::register('search', function ($breadcrumbs) {
+ $breadcrumbs->push('Knowledge-base', route('home'));
+ $breadcrumbs->push('Search Result');
+});
+
/* get the selected article */
$router->get('show/{slug}', ['as' => 'show', 'uses' => 'Client\kb\UserController@show']);
+Breadcrumbs::register('show', function ($breadcrumbs) {
+ $breadcrumbs->push('Knowledge-base', route('home'));
+ $breadcrumbs->push('Article List', route('article-list'));
+ $breadcrumbs->push('Article');
+});
+
+
$router->get('category-list', ['as' => 'category-list', 'uses' => 'Client\kb\UserController@getCategoryList']);
+Breadcrumbs::register('category-list', function ($breadcrumbs) {
+ $breadcrumbs->push('Category List', route('category-list'));
+});
/* get the categories with article */
$router->get('category-list/{id}', ['as' => 'categorylist', 'uses' => 'Client\kb\UserController@getCategory']);
+Breadcrumbs::register('categorylist', function ($breadcrumbs) {
+ $breadcrumbs->push('Category List', route('category-list'));
+ $breadcrumbs->push('Category');
+});
+
+Route::post('show/rating/{id}', ['as' => 'show.rating', 'uses' => 'Client\helpdesk\UnauthController@rating']); /* Get overall Ratings */
+
+Route::post('show/rating2/{id}', ['as' => 'show.rating2', 'uses' => 'Client\helpdesk\UnauthController@ratingReply']); /* Get reply Ratings */
+
+Route::get('show/change-status/{status}/{id}', ['as' => 'show.change.status', 'uses' => 'Client\helpdesk\UnauthController@changeStatus']); /* Get reply Ratings */
/* get the home page */
$router->get('knowledgebase', ['as' => 'home', 'uses' => 'Client\kb\UserController@home']);
/* get the faq value to user */
@@ -625,6 +840,9 @@ $router->get('contact', ['as' => 'contact', 'uses' => 'Client\kb\UserController@
$router->post('post-contact', ['as' => 'post-contact', 'uses' => 'Client\kb\UserController@postContact']);
//to get the value for page content
$router->get('pages/{name}', ['as' => 'pages', 'uses' => 'Client\kb\UserController@getPage']);
+Breadcrumbs::register('pages', function ($breadcrumbs) {
+ $breadcrumbs->push('Pages');
+});
//profile
// $router->get('client-profile',['as' => 'client-profile', 'uses' => 'Client\kb\UserController@clientProfile']);
// Route::patch('client-profile-edit',['as' => 'client-profile-edit', 'uses' => 'Client\kb\UserController@postClientProfile']);
@@ -646,7 +864,6 @@ Route::get('/reportdata', 'HomeController@pushdata');
Route::group(['prefix' => 'api/v1'], function () {
Route::post('register', 'Api\v1\TokenAuthController@register');
Route::post('authenticate', 'Api\v1\TokenAuthController@authenticate');
- Route::post('forgot', 'Api\v1\TokenAuthController@forgotPassword');
Route::get('authenticate/user', 'Api\v1\TokenAuthController@getAuthenticatedUser');
Route::get('/database-config', ['as' => 'database-config', 'uses' => 'Api\v1\InstallerApiController@config_database']);
@@ -656,7 +873,6 @@ Route::group(['prefix' => 'api/v1'], function () {
* Helpdesk
*/
Route::group(['prefix' => 'helpdesk'], function () {
-
Route::post('create', 'Api\v1\ApiController@createTicket');
Route::post('reply', 'Api\v1\ApiController@ticketReply');
Route::post('edit', 'Api\v1\ApiController@editTicket');
@@ -696,7 +912,6 @@ Route::group(['prefix' => 'api/v1'], function () {
Route::post('collaborator/remove', 'Api\v1\ApiController@deleteCollaborator');
Route::post('collaborator/get-ticket', 'Api\v1\ApiController@getCollaboratorForTicket');
Route::get('my-tickets-user', 'Api\v1\ApiController@getMyTicketsUser');
- Route::get('dependency', 'Api\v1\ApiController@dependency');
});
/*
@@ -731,10 +946,25 @@ Route::group(['prefix' => 'api/v1'], function () {
Route::get('ticket/my', 'Api\v1\TestController@myTickets');
Route::get('ticket', 'Api\v1\TestController@getTicketById');
/*
- * Newly added
- */
+ * Newly added
+ */
Route::get('ticket/customers-custom', 'Api\v1\TestController@getCustomersWith');
Route::get('generate/token', 'Api\v1\TestController@generateToken');
Route::get('get/user', 'Api\v1\TestController@getAuthUser');
});
+/*
+ * Update module
+ */
+Route::get('database-update', ['as' => 'database.update', 'uses' => 'Update\UpgradeController@databaseUpdate']);
+Route::get('database-upgrade', ['as' => 'database.upgrade', 'uses' => 'Update\UpgradeController@databaseUpgrade']);
+Route::get('file-update', ['as' => 'file.update', 'uses' => 'Update\UpgradeController@fileUpdate']);
+Route::get('file-upgrade', ['as' => 'file.upgrade', 'uses' => 'Update\UpgradeController@fileUpgrading']);
+
+/*
+ * Webhook
+ */
+\Event::listen('ticket.details', function ($details) {
+ $api_control = new \App\Http\Controllers\Common\ApiSettings();
+ $api_control->ticketDetailEvent($details);
+});
diff --git a/app/Jobs/Job.php b/app/Jobs/Job.php
new file mode 100644
index 000000000..55ece29ac
--- /dev/null
+++ b/app/Jobs/Job.php
@@ -0,0 +1,21 @@
+attach()->delete();
parent::delete();
}
+
+// public function setTitleAttribute($value) {
+// $this->attributes['title'] = str_replace('"', "'", $value);
+// }
+
+ public function getTitleAttribute($value) {
+ return str_replace('"', "'", $value);
+ }
}
diff --git a/app/Model/helpdesk/Ticket/Ticket_source.php b/app/Model/helpdesk/Ticket/Ticket_source.php
index 46d5fa0e7..b54289c84 100644
--- a/app/Model/helpdesk/Ticket/Ticket_source.php
+++ b/app/Model/helpdesk/Ticket/Ticket_source.php
@@ -2,9 +2,9 @@
namespace App\Model\helpdesk\Ticket;
-use Illuminate\Database\Eloquent\Model;
+use App\BaseModel;
-class Ticket_source extends Model
+class Ticket_source extends BaseModel
{
public $timestamps = false;
protected $table = 'ticket_source';
diff --git a/app/Model/helpdesk/Ticket/Tickets.php b/app/Model/helpdesk/Ticket/Tickets.php
index 423f90642..96259aab8 100644
--- a/app/Model/helpdesk/Ticket/Tickets.php
+++ b/app/Model/helpdesk/Ticket/Tickets.php
@@ -2,9 +2,9 @@
namespace App\Model\helpdesk\Ticket;
-use Illuminate\Database\Eloquent\Model;
+use App\BaseModel;
-class Tickets extends Model
+class Tickets extends BaseModel
{
protected $table = 'tickets';
protected $fillable = ['id', 'ticket_number', 'num_sequence', 'user_id', 'priority_id', 'sla', 'help_topic_id', 'max_open_ticket', 'captcha', 'status', 'lock_by', 'lock_at', 'source', 'isoverdue', 'reopened', 'isanswered', 'is_deleted', 'closed', 'is_transfer', 'transfer_at', 'reopened_at', 'duedate', 'closed_at', 'last_message_at', 'last_response_at', 'created_at', 'updated_at'];
diff --git a/app/Model/helpdesk/Utility/CountryCode.php b/app/Model/helpdesk/Utility/CountryCode.php
new file mode 100644
index 000000000..fbce3ecb4
--- /dev/null
+++ b/app/Model/helpdesk/Utility/CountryCode.php
@@ -0,0 +1,11 @@
+app->bind(
- 'Illuminate\Contracts\Auth\Registrar', 'App\Services\Registrar'
- );
+ $this->app->bind('Illuminate\Contracts\Auth\Registrar');
}
public function boot()
@@ -27,7 +27,6 @@ class AppServiceProvider extends ServiceProvider
// Please note the different namespace
// and please add a \ in front of your classes in the global namespace
\Event::listen('cron.collectJobs', function () {
-
\Cron::add('example1', '* * * * *', function () {
$this->index();
@@ -36,12 +35,24 @@ class AppServiceProvider extends ServiceProvider
\Cron::add('example2', '*/2 * * * *', function () {
// Do some crazy things successfully every two minute
-
});
\Cron::add('disabled job', '0 * * * *', function () {
// Do some crazy things successfully every hour
}, false);
});
+
+ $this->composer();
+ }
+
+ public function composer()
+ {
+ View::composer('themes.default1.update.notification', function () {
+ $notification = new BarNotification();
+ $data = [
+ 'data' => $notification->get(),
+ ];
+ view()->share($data);
+ });
}
}
diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php
new file mode 100644
index 000000000..74de628bb
--- /dev/null
+++ b/app/Providers/AuthServiceProvider.php
@@ -0,0 +1,32 @@
+ 'App\Policies\ModelPolicy',
+ ];
+
+ /**
+ * Register any application authentication / authorization services.
+ *
+ * @param \Illuminate\Contracts\Auth\Access\Gate $gate
+ *
+ * @return void
+ */
+ public function boot(GateContract $gate)
+ {
+ parent::registerPolicies($gate);
+
+ //
+ }
+}
diff --git a/app/Providers/BusServiceProvider.php b/app/Providers/BusServiceProvider.php
deleted file mode 100644
index dbec57a07..000000000
--- a/app/Providers/BusServiceProvider.php
+++ /dev/null
@@ -1,35 +0,0 @@
-mapUsing(function ($command) {
- return Dispatcher::simpleMapping(
- $command, 'App\Commands', 'App\Handlers\Commands'
- );
- });
- }
-
- /**
- * Register any application services.
- *
- * @return void
- */
- public function register()
- {
- //
- }
-}
diff --git a/app/Providers/ConfigServiceProvider.php b/app/Providers/ConfigServiceProvider.php
index 3069f4cc6..1624f51d1 100644
--- a/app/Providers/ConfigServiceProvider.php
+++ b/app/Providers/ConfigServiceProvider.php
@@ -18,7 +18,7 @@ class ConfigServiceProvider extends ServiceProvider
public function register()
{
config([
- //
+ 'lfm.images_url' => url('photos').'/',
]);
}
}
diff --git a/app/Services/Registrar.php b/app/Services/Registrar.php
deleted file mode 100644
index e43cc2aaf..000000000
--- a/app/Services/Registrar.php
+++ /dev/null
@@ -1,42 +0,0 @@
- 'required|max:255',
- 'email' => 'required|email|max:255|unique:users',
- 'password' => 'required|confirmed|min:6',
- ]);
- }
-
- /**
- * Create a new user instance after a valid registration.
- *
- * @param array $data
- *
- * @return User
- */
- public function create(array $data)
- {
- return User::create([
- 'name' => $data['name'],
- 'email' => $data['email'],
- 'password' => bcrypt($data['password']),
- ]);
- }
-}
diff --git a/app/User.php b/app/User.php
index 66f2a1c07..f4e6ecbe1 100644
--- a/app/User.php
+++ b/app/User.php
@@ -28,7 +28,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
protected $fillable = ['user_name', 'email', 'password', 'active', 'first_name', 'last_name', 'ban', 'ext', 'mobile', 'profile_pic',
'phone_number', 'company', 'agent_sign', 'account_type', 'account_status',
'assign_group', 'primary_dpt', 'agent_tzone', 'daylight_save', 'limit_access',
- 'directory_listing', 'vacation_mode', 'role', 'internal_note', ];
+ 'directory_listing', 'vacation_mode', 'role', 'internal_note', 'country_code', ];
/**
* The attributes excluded from the model's JSON form.
@@ -39,6 +39,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
public function getProfilePicAttribute($value)
{
+ //$n =1;
if (!$value) {
return \Gravatar::src($this->attributes['email']);
} else {
diff --git a/vendor/symfony/console/Symfony/Component/Console/Tests/Fixtures/input_definition_1.txt b/bootstrap()
similarity index 100%
rename from vendor/symfony/console/Symfony/Component/Console/Tests/Fixtures/input_definition_1.txt
rename to bootstrap()
diff --git a/bootstrap/app.php b/bootstrap/app.php
index d4889b4a8..1788a356b 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -12,7 +12,7 @@
*/
$app = new Illuminate\Foundation\Application(
- realpath(__DIR__.'/../')
+ realpath(__DIR__.'/../')
);
/*
@@ -27,15 +27,18 @@ $app = new Illuminate\Foundation\Application(
*/
$app->singleton(
- 'Illuminate\Contracts\Http\Kernel', 'App\Http\Kernel'
+ 'Illuminate\Contracts\Http\Kernel',
+ 'App\Http\Kernel'
);
$app->singleton(
- 'Illuminate\Contracts\Console\Kernel', 'App\Console\Kernel'
+ 'Illuminate\Contracts\Console\Kernel',
+ 'App\Console\Kernel'
);
$app->singleton(
- 'Illuminate\Contracts\Debug\ExceptionHandler', 'App\Exceptions\Handler'
+ 'Illuminate\Contracts\Debug\ExceptionHandler',
+ 'App\Exceptions\Handler'
);
/*
diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore
new file mode 100644
index 000000000..d6b7ef32c
--- /dev/null
+++ b/bootstrap/cache/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/A/B/C/abc.dat b/bootstrapWith()
similarity index 100%
rename from vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/A/B/C/abc.dat
rename to bootstrapWith()
diff --git a/vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/A/B/ab.dat b/build()
similarity index 100%
rename from vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/A/B/ab.dat
rename to build()
diff --git a/composer.json b/composer.json
index 65f96c673..9bb58660a 100644
--- a/composer.json
+++ b/composer.json
@@ -1,60 +1,67 @@
{
- "name": "laravel/laravel",
- "description": "The Laravel Framework.",
- "keywords": ["framework", "laravel"],
- "license": "MIT",
- "type": "project",
- "require": {
- "laravel/framework": "5.0.*",
+ "name": "laravel/laravel",
+ "description": "The Laravel Framework.",
+ "keywords": [
+ "framework",
+ "laravel"
+ ],
+ "license": "MIT",
+ "type": "project",
+ "require": {
+ "laravel/framework": "5.2.*",
"illuminate/html": "5.*",
"vsmoraes/laravel-pdf": "1.0.1",
"propaganistas/laravel-phone": "~2.0",
"bugsnag/bugsnag-laravel": "1.*",
- "filp/whoops": "~1.0",
- "thomaswelton/laravel-gravatar": "~1.0",
- "php-imap/php-imap": "~2.0",
- "neitanod/forceutf8": "dev-master",
- "nicolaslopezj/searchable": "1.*",
- "chumper/datatable": "dev-develop",
+ "filp/whoops": "~1.0",
+ "thomaswelton/laravel-gravatar": "~1.0",
+ "php-imap/php-imap": "~2.0",
+ "neitanod/forceutf8": "dev-master",
+ "nicolaslopezj/searchable": "1.*",
+ "chumper/datatable": "dev-develop",
"chumper/zipper": "0.6.x",
"phpmailer/phpmailer": "^5.2",
- "bestmomo/filemanager": "1.1.*",
- "unisharp/laravel-filemanager": "^1.1",
- "tymon/jwt-auth": "0.5.*"
-
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0",
- "phpspec/phpspec": "~2.1"
- },
- "autoload": {
- "classmap": [
- "database"
- ],
- "psr-4": {
- "App\\": "app/"
- }
- },
- "autoload-dev": {
- "classmap": [
- "tests/TestCase.php"
- ]
- },
- "scripts": {
- "post-install-cmd": [
- "php artisan clear-compiled",
- "php artisan optimize"
- ],
- "post-update-cmd": [
- "php artisan clear-compiled",
- "php artisan optimize"
- ],
- "post-create-project-cmd": [
- "php -r \"copy('.env.example', '.env');\"",
- "php artisan key:generate"
- ]
- },
- "config": {
- "preferred-install": "dist"
- }
+ "bestmomo/filemanager": "1.1.*",
+ "unisharp/laravel-filemanager": "^1.1",
+ "tymon/jwt-auth": "0.5.*",
+ "php": ">=5.5.9",
+ "davejamesmiller/laravel-breadcrumbs": "^3.0",
+ "torann/geoip": "0.2.*@dev"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0",
+ "phpspec/phpspec": "~2.1",
+ "symfony/dom-crawler": "~3.0",
+ "symfony/css-selector": "~3.0"
+ },
+ "autoload": {
+ "classmap": [
+ "database"
+ ],
+ "psr-4": {
+ "App\\": "app/"
+ }
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/TestCase.php"
+ ]
+ },
+ "scripts": {
+ "post-install-cmd": [
+ "php artisan clear-compiled",
+ "php artisan optimize"
+ ],
+ "post-update-cmd": [
+ "php artisan clear-compiled",
+ "php artisan optimize"
+ ],
+ "post-create-project-cmd": [
+ "php -r \"copy('.env.example', '.env');\"",
+ "php artisan key:generate"
+ ]
+ },
+ "config": {
+ "preferred-install": "dist"
+ }
}
diff --git a/composer.lock b/composer.lock
index 14a7c2adf..073957280 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "77055e04235fef4940d7e4ab56d91356",
- "content-hash": "9707fb7ef4de713ed9c2098dba1f3634",
+ "hash": "e51c1ad8912f7cb6a59d9428bbe95b75",
+ "content-hash": "84f34aa1a93f40796f44b7e7880151ac",
"packages": [
{
"name": "bestmomo/filemanager",
- "version": "V1.1.4",
+ "version": "1.1.5",
"source": {
"type": "git",
"url": "https://github.com/bestmomo/filemanager.git",
- "reference": "9d93d34345c0bcbfb93cdd9e0f2d6a14b12f118a"
+ "reference": "67deee4d70c9b3691701ee65029437e0148cf5dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bestmomo/filemanager/zipball/9d93d34345c0bcbfb93cdd9e0f2d6a14b12f118a",
- "reference": "9d93d34345c0bcbfb93cdd9e0f2d6a14b12f118a",
+ "url": "https://api.github.com/repos/bestmomo/filemanager/zipball/67deee4d70c9b3691701ee65029437e0148cf5dc",
+ "reference": "67deee4d70c9b3691701ee65029437e0148cf5dc",
"shasum": ""
},
"require": {
@@ -49,20 +49,20 @@
],
"description": "To add filemanager to Laravel 5.1",
"homepage": "http://github.com/bestmomo/filemanager",
- "time": "2016-02-20 12:31:16"
+ "time": "2016-04-29 16:57:05"
},
{
"name": "bugsnag/bugsnag",
- "version": "v2.6.1",
+ "version": "v2.7.1",
"source": {
"type": "git",
"url": "https://github.com/bugsnag/bugsnag-php.git",
- "reference": "76e628b9f5b0fb4766c3ca2451207a1c4159225d"
+ "reference": "203940434caee84105f334dd17a91480343ea64a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bugsnag/bugsnag-php/zipball/76e628b9f5b0fb4766c3ca2451207a1c4159225d",
- "reference": "76e628b9f5b0fb4766c3ca2451207a1c4159225d",
+ "url": "https://api.github.com/repos/bugsnag/bugsnag-php/zipball/203940434caee84105f334dd17a91480343ea64a",
+ "reference": "203940434caee84105f334dd17a91480343ea64a",
"shasum": ""
},
"require": {
@@ -97,20 +97,20 @@
"logging",
"tracking"
],
- "time": "2016-01-28 17:35:26"
+ "time": "2016-06-02 22:05:00"
},
{
"name": "bugsnag/bugsnag-laravel",
- "version": "v1.6.3",
+ "version": "v1.6.4",
"source": {
"type": "git",
"url": "https://github.com/bugsnag/bugsnag-laravel.git",
- "reference": "13bc98495ae9c1baea8a78619556beff9452222b"
+ "reference": "a354622693b2f9d2907bf28405e4f47715f995b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bugsnag/bugsnag-laravel/zipball/13bc98495ae9c1baea8a78619556beff9452222b",
- "reference": "13bc98495ae9c1baea8a78619556beff9452222b",
+ "url": "https://api.github.com/repos/bugsnag/bugsnag-laravel/zipball/a354622693b2f9d2907bf28405e4f47715f995b4",
+ "reference": "a354622693b2f9d2907bf28405e4f47715f995b4",
"shasum": ""
},
"require": {
@@ -144,7 +144,7 @@
"logging",
"tracking"
],
- "time": "2016-01-08 20:01:35"
+ "time": "2016-03-09 19:00:14"
},
{
"name": "chumper/datatable",
@@ -252,35 +252,29 @@
},
{
"name": "classpreloader/classpreloader",
- "version": "1.4.0",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/ClassPreloader/ClassPreloader.git",
- "reference": "b76f3f4f603ebbe7e64351a7ef973431ddaf7b27"
+ "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/b76f3f4f603ebbe7e64351a7ef973431ddaf7b27",
- "reference": "b76f3f4f603ebbe7e64351a7ef973431ddaf7b27",
+ "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/9b10b913c2bdf90c3d2e0d726b454fb7f77c552a",
+ "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a",
"shasum": ""
},
"require": {
- "nikic/php-parser": "~1.3",
- "php": ">=5.3.3",
- "symfony/console": "~2.1",
- "symfony/filesystem": "~2.1",
- "symfony/finder": "~2.1"
+ "nikic/php-parser": "^1.0|^2.0",
+ "php": ">=5.5.9"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "phpunit/phpunit": "^4.8|^5.0"
},
- "bin": [
- "classpreloader.php"
- ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -299,7 +293,7 @@
},
{
"name": "Graham Campbell",
- "email": "graham@cachethq.io"
+ "email": "graham@alt-three.com"
}
],
"description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case",
@@ -308,63 +302,56 @@
"class",
"preload"
],
- "time": "2015-05-26 10:57:51"
+ "time": "2015-11-09 22:51:51"
},
{
- "name": "danielstjules/stringy",
- "version": "1.10.0",
+ "name": "davejamesmiller/laravel-breadcrumbs",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/danielstjules/Stringy.git",
- "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b"
+ "url": "https://github.com/davejamesmiller/laravel-breadcrumbs.git",
+ "reference": "5a5d5d1b1f5780359604f7fde11bbf810ff3e9e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/4749c205db47ee5b32e8d1adf6d9aff8db6caf3b",
- "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b",
+ "url": "https://api.github.com/repos/davejamesmiller/laravel-breadcrumbs/zipball/5a5d5d1b1f5780359604f7fde11bbf810ff3e9e4",
+ "reference": "5a5d5d1b1f5780359604f7fde11bbf810ff3e9e4",
"shasum": ""
},
"require": {
- "ext-mbstring": "*",
- "php": ">=5.3.0"
+ "illuminate/support": "5.*",
+ "illuminate/view": "5.*",
+ "php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "mockery/mockery": "0.9.*",
+ "orchestra/testbench": "3.0.*",
+ "phpunit/phpunit": "4.*",
+ "satooshi/php-coveralls": "0.6.*"
},
"type": "library",
"autoload": {
"psr-4": {
- "Stringy\\": "src/"
- },
- "files": [
- "src/Create.php"
- ]
+ "DaveJamesMiller\\Breadcrumbs\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "MIT License"
],
"authors": [
{
- "name": "Daniel St. Jules",
- "email": "danielst.jules@gmail.com",
- "homepage": "http://www.danielstjules.com"
+ "name": "Dave James Miller",
+ "email": "dave@davejamesmiller.com",
+ "homepage": "http://davejamesmiller.com/"
}
],
- "description": "A string manipulation library with multibyte support",
- "homepage": "https://github.com/danielstjules/Stringy",
+ "description": "A simple Laravel-style way to create breadcrumbs in Laravel 4+.",
+ "homepage": "https://github.com/davejamesmiller/laravel-breadcrumbs",
"keywords": [
- "UTF",
- "helpers",
- "manipulation",
- "methods",
- "multibyte",
- "string",
- "utf-8",
- "utility",
- "utils"
+ "laravel"
],
- "time": "2015-07-23 00:54:12"
+ "time": "2015-02-08 21:44:39"
},
{
"name": "dnoegel/php-xdg-base-dir",
@@ -566,17 +553,68 @@
"time": "2015-06-29 05:42:04"
},
{
- "name": "giggsey/libphonenumber-for-php",
- "version": "7.2.6",
+ "name": "geoip2/geoip2",
+ "version": "v2.4.1",
"source": {
"type": "git",
- "url": "https://github.com/giggsey/libphonenumber-for-php.git",
- "reference": "8b3d1ee4ca4badef2b4d0286b4518ad11456ab71"
+ "url": "https://github.com/maxmind/GeoIP2-php.git",
+ "reference": "241e4442e0469d70043805ef699290616d53ce41"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/8b3d1ee4ca4badef2b4d0286b4518ad11456ab71",
- "reference": "8b3d1ee4ca4badef2b4d0286b4518ad11456ab71",
+ "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/241e4442e0469d70043805ef699290616d53ce41",
+ "reference": "241e4442e0469d70043805ef699290616d53ce41",
+ "shasum": ""
+ },
+ "require": {
+ "maxmind-db/reader": "~1.0",
+ "maxmind/web-service-common": "~0.2",
+ "php": ">=5.3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.2.*",
+ "squizlabs/php_codesniffer": "2.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GeoIp2\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory J. Oschwald",
+ "email": "goschwald@maxmind.com",
+ "homepage": "http://www.maxmind.com/"
+ }
+ ],
+ "description": "MaxMind GeoIP2 PHP API",
+ "homepage": "https://github.com/maxmind/GeoIP2-php",
+ "keywords": [
+ "IP",
+ "geoip",
+ "geoip2",
+ "geolocation",
+ "maxmind"
+ ],
+ "time": "2016-06-10 22:32:01"
+ },
+ {
+ "name": "giggsey/libphonenumber-for-php",
+ "version": "7.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/giggsey/libphonenumber-for-php.git",
+ "reference": "0aac9dd96f384fea7f33c9d4e63fd80fe73c23c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/0aac9dd96f384fea7f33c9d4e63fd80fe73c23c9",
+ "reference": "0aac9dd96f384fea7f33c9d4e63fd80fe73c23c9",
"shasum": ""
},
"require": {
@@ -626,20 +664,20 @@
"phonenumber",
"validation"
],
- "time": "2016-02-25 16:42:28"
+ "time": "2016-06-01 11:10:16"
},
{
"name": "guzzlehttp/psr7",
- "version": "1.2.3",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b"
+ "reference": "31382fef2889136415751badebbd1cb022a4ed72"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/2e89629ff057ebb49492ba08e6995d3a6a80021b",
- "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/31382fef2889136415751badebbd1cb022a4ed72",
+ "reference": "31382fef2889136415751badebbd1cb022a4ed72",
"shasum": ""
},
"require": {
@@ -684,7 +722,7 @@
"stream",
"uri"
],
- "time": "2016-02-18 21:54:00"
+ "time": "2016-04-13 19:56:01"
},
{
"name": "illuminate/html",
@@ -734,16 +772,16 @@
},
{
"name": "intervention/image",
- "version": "2.3.5",
+ "version": "2.3.7",
"source": {
"type": "git",
"url": "https://github.com/Intervention/image.git",
- "reference": "9f29360b8ab94585cb9e80cf9045abd5b85feb89"
+ "reference": "22088b04728a039bd1fc32f7e79a89a118b78698"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Intervention/image/zipball/9f29360b8ab94585cb9e80cf9045abd5b85feb89",
- "reference": "9f29360b8ab94585cb9e80cf9045abd5b85feb89",
+ "url": "https://api.github.com/repos/Intervention/image/zipball/22088b04728a039bd1fc32f7e79a89a118b78698",
+ "reference": "22088b04728a039bd1fc32f7e79a89a118b78698",
"shasum": ""
},
"require": {
@@ -792,49 +830,7 @@
"thumbnail",
"watermark"
],
- "time": "2016-01-02 19:15:13"
- },
- {
- "name": "ircmaxell/password-compat",
- "version": "v1.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/ircmaxell/password_compat.git",
- "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c",
- "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "4.*"
- },
- "type": "library",
- "autoload": {
- "files": [
- "lib/password.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Anthony Ferrara",
- "email": "ircmaxell@php.net",
- "homepage": "http://blog.ircmaxell.com"
- }
- ],
- "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash",
- "homepage": "https://github.com/ircmaxell/password_compat",
- "keywords": [
- "hashing",
- "password"
- ],
- "time": "2014-11-20 16:49:30"
+ "time": "2016-04-26 14:08:40"
},
{
"name": "jakub-onderka/php-console-color",
@@ -982,49 +978,81 @@
"time": "2015-12-05 17:17:57"
},
{
- "name": "laravel/framework",
- "version": "v5.0.35",
+ "name": "julien-c/iso3166",
+ "version": "2.0.1",
"source": {
"type": "git",
- "url": "https://github.com/laravel/framework.git",
- "reference": "37151cf533f468e2227605e4b9ac596154f6b92b"
+ "url": "https://github.com/julien-c/iso3166.git",
+ "reference": "d7bd56333a1ed901fbc41d5a5c92d88a2a6cb88c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/37151cf533f468e2227605e4b9ac596154f6b92b",
- "reference": "37151cf533f468e2227605e4b9ac596154f6b92b",
+ "url": "https://api.github.com/repos/julien-c/iso3166/zipball/d7bd56333a1ed901fbc41d5a5c92d88a2a6cb88c",
+ "reference": "d7bd56333a1ed901fbc41d5a5c92d88a2a6cb88c",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Iso3166\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Julien Chaumond",
+ "email": "chaumond@gmail.com"
+ }
+ ],
+ "description": "ISO 3166-1 alpha-2 mapping",
+ "time": "2015-12-15 15:40:03"
+ },
+ {
+ "name": "laravel/framework",
+ "version": "v5.2.37",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/framework.git",
+ "reference": "bf199036b0e222a27e2133d841aee0d4238f804d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/bf199036b0e222a27e2133d841aee0d4238f804d",
+ "reference": "bf199036b0e222a27e2133d841aee0d4238f804d",
"shasum": ""
},
"require": {
- "classpreloader/classpreloader": "~1.2",
- "danielstjules/stringy": "~1.8",
+ "classpreloader/classpreloader": "~3.0",
"doctrine/inflector": "~1.0",
"ext-mbstring": "*",
- "ext-mcrypt": "*",
"ext-openssl": "*",
- "ircmaxell/password-compat": "~1.0",
- "jeremeamia/superclosure": "~2.0",
+ "jeremeamia/superclosure": "~2.2",
"league/flysystem": "~1.0",
"monolog/monolog": "~1.11",
"mtdowling/cron-expression": "~1.0",
- "nesbot/carbon": "~1.0",
- "php": ">=5.4.0",
- "psy/psysh": "0.4.*",
+ "nesbot/carbon": "~1.20",
+ "paragonie/random_compat": "~1.4",
+ "php": ">=5.5.9",
+ "psy/psysh": "0.7.*",
"swiftmailer/swiftmailer": "~5.1",
- "symfony/console": "2.6.*",
- "symfony/debug": "2.6.*",
- "symfony/finder": "2.6.*",
- "symfony/http-foundation": "2.6.*",
- "symfony/http-kernel": "2.6.*",
- "symfony/process": "2.6.*",
- "symfony/routing": "2.6.*",
- "symfony/security-core": "2.6.*",
- "symfony/translation": "2.6.*",
- "symfony/var-dumper": "2.6.*",
- "vlucas/phpdotenv": "~1.0"
+ "symfony/console": "2.8.*|3.0.*",
+ "symfony/debug": "2.8.*|3.0.*",
+ "symfony/finder": "2.8.*|3.0.*",
+ "symfony/http-foundation": "2.8.*|3.0.*",
+ "symfony/http-kernel": "2.8.*|3.0.*",
+ "symfony/polyfill-php56": "~1.0",
+ "symfony/process": "2.8.*|3.0.*",
+ "symfony/routing": "2.8.*|3.0.*",
+ "symfony/translation": "2.8.*|3.0.*",
+ "symfony/var-dumper": "2.8.*|3.0.*",
+ "vlucas/phpdotenv": "~2.2"
},
"replace": {
"illuminate/auth": "self.version",
+ "illuminate/broadcasting": "self.version",
"illuminate/bus": "self.version",
"illuminate/cache": "self.version",
"illuminate/config": "self.version",
@@ -1037,7 +1065,6 @@
"illuminate/events": "self.version",
"illuminate/exception": "self.version",
"illuminate/filesystem": "self.version",
- "illuminate/foundation": "self.version",
"illuminate/hashing": "self.version",
"illuminate/http": "self.version",
"illuminate/log": "self.version",
@@ -1054,27 +1081,32 @@
"illuminate/view": "self.version"
},
"require-dev": {
- "aws/aws-sdk-php": "~2.4",
- "iron-io/iron_mq": "~1.5",
- "mockery/mockery": "~0.9",
+ "aws/aws-sdk-php": "~3.0",
+ "mockery/mockery": "~0.9.4",
"pda/pheanstalk": "~3.0",
- "phpunit/phpunit": "~4.0",
- "predis/predis": "~1.0"
+ "phpunit/phpunit": "~4.1",
+ "predis/predis": "~1.0",
+ "symfony/css-selector": "2.8.*|3.0.*",
+ "symfony/dom-crawler": "2.8.*|3.0.*"
},
"suggest": {
- "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~2.4).",
+ "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).",
"doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).",
- "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers (~5.0).",
- "iron-io/iron_mq": "Required to use the iron queue driver (~1.5).",
- "league/flysystem-aws-s3-v2": "Required to use the Flysystem S3 driver (~1.0).",
+ "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).",
+ "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).",
"league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).",
"pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).",
- "predis/predis": "Required to use the redis cache and queue drivers (~1.0)."
+ "predis/predis": "Required to use the redis cache and queue drivers (~1.0).",
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).",
+ "symfony/css-selector": "Required to use some of the crawler integration testing tools (2.8.*|3.0.*).",
+ "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (2.8.*|3.0.*).",
+ "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "5.2-dev"
}
},
"autoload": {
@@ -1105,20 +1137,20 @@
"framework",
"laravel"
],
- "time": "2016-02-02 14:55:52"
+ "time": "2016-06-10 22:38:47"
},
{
"name": "league/flysystem",
- "version": "1.0.17",
+ "version": "1.0.24",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "02f5b6c9a8b9278c8381e3361e7bd9d641c740ca"
+ "reference": "9aca859a303fdca30370f42b8c611d9cf0dedf4b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/02f5b6c9a8b9278c8381e3361e7bd9d641c740ca",
- "reference": "02f5b6c9a8b9278c8381e3361e7bd9d641c740ca",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9aca859a303fdca30370f42b8c611d9cf0dedf4b",
+ "reference": "9aca859a303fdca30370f42b8c611d9cf0dedf4b",
"shasum": ""
},
"require": {
@@ -1188,20 +1220,113 @@
"sftp",
"storage"
],
- "time": "2016-02-19 15:35:38"
+ "time": "2016-06-03 19:11:39"
},
{
- "name": "monolog/monolog",
- "version": "1.17.2",
+ "name": "maxmind-db/reader",
+ "version": "v1.1.0",
"source": {
"type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24"
+ "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
+ "reference": "1383655533aa2f13a990b27b075fdde8b7bdd5ff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
- "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/1383655533aa2f13a990b27b075fdde8b7bdd5ff",
+ "reference": "1383655533aa2f13a990b27b075fdde8b7bdd5ff",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.2.*",
+ "satooshi/php-coveralls": "dev-master",
+ "squizlabs/php_codesniffer": "2.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "MaxMind": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory J. Oschwald",
+ "email": "goschwald@maxmind.com",
+ "homepage": "http://www.maxmind.com/"
+ }
+ ],
+ "description": "MaxMind DB Reader API",
+ "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php",
+ "keywords": [
+ "database",
+ "geoip",
+ "geoip2",
+ "geolocation",
+ "maxmind"
+ ],
+ "time": "2016-01-04 15:38:11"
+ },
+ {
+ "name": "maxmind/web-service-common",
+ "version": "v0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maxmind/web-service-common-php.git",
+ "reference": "620a1a0ac7e9b6c20ea65bfd7c93367af6433d77"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/620a1a0ac7e9b6c20ea65bfd7c93367af6433d77",
+ "reference": "620a1a0ac7e9b6c20ea65bfd7c93367af6433d77",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "ext-json": "*",
+ "php": ">=5.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*",
+ "squizlabs/php_codesniffer": "2.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "MaxMind\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory Oschwald",
+ "email": "goschwald@maxmind.com"
+ }
+ ],
+ "description": "Internal MaxMind Web Service API",
+ "homepage": "https://github.com/maxmind/mm-web-service-api-php",
+ "time": "2016-06-10 22:22:39"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.19.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "5f56ed5212dc509c8dc8caeba2715732abb32dbf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5f56ed5212dc509c8dc8caeba2715732abb32dbf",
+ "reference": "5f56ed5212dc509c8dc8caeba2715732abb32dbf",
"shasum": ""
},
"require": {
@@ -1216,13 +1341,13 @@
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
+ "php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
"raven/raven": "^0.13",
"ruflin/elastica": ">=0.90 <3.0",
- "swiftmailer/swiftmailer": "~5.3",
- "videlalvaro/php-amqplib": "~2.4"
+ "swiftmailer/swiftmailer": "~5.3"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
@@ -1230,16 +1355,17 @@
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"raven/raven": "Allow sending log messages to a Sentry server",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
- "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.16.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -1265,7 +1391,7 @@
"logging",
"psr-3"
],
- "time": "2015-10-14 12:51:02"
+ "time": "2016-04-12 18:29:35"
},
{
"name": "mtdowling/cron-expression",
@@ -1444,16 +1570,16 @@
},
{
"name": "nicolaslopezj/searchable",
- "version": "1.7.3",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/nicolaslopezj/searchable.git",
- "reference": "347f76dbe76606fdd99689cb7a125eb2221a3ea1"
+ "reference": "60ead434bbd7b15614fcdb68ece5f637d507b05d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nicolaslopezj/searchable/zipball/347f76dbe76606fdd99689cb7a125eb2221a3ea1",
- "reference": "347f76dbe76606fdd99689cb7a125eb2221a3ea1",
+ "url": "https://api.github.com/repos/nicolaslopezj/searchable/zipball/60ead434bbd7b15614fcdb68ece5f637d507b05d",
+ "reference": "60ead434bbd7b15614fcdb68ece5f637d507b05d",
"shasum": ""
},
"require": {
@@ -1486,36 +1612,42 @@
"search",
"searchable"
],
- "time": "2016-01-27 20:51:18"
+ "time": "2016-06-08 16:30:09"
},
{
"name": "nikic/php-parser",
- "version": "v1.4.1",
+ "version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51"
+ "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51",
- "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/47b254ea51f1d6d5dc04b9b299e88346bf2369e3",
+ "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
- "php": ">=5.3"
+ "php": ">=5.4"
},
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "2.1-dev"
}
},
"autoload": {
- "files": [
- "lib/bootstrap.php"
- ]
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1531,20 +1663,20 @@
"parser",
"php"
],
- "time": "2015-09-19 14:15:08"
+ "time": "2016-04-19 13:41:41"
},
{
"name": "paragonie/random_compat",
- "version": "v1.2.0",
+ "version": "v1.4.1",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
- "reference": "b0e69d10852716b2ccbdff69c75c477637220790"
+ "reference": "c7e26a21ba357863de030f0b9e701c7d04593774"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/b0e69d10852716b2ccbdff69c75c477637220790",
- "reference": "b0e69d10852716b2ccbdff69c75c477637220790",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c7e26a21ba357863de030f0b9e701c7d04593774",
+ "reference": "c7e26a21ba357863de030f0b9e701c7d04593774",
"shasum": ""
},
"require": {
@@ -1579,7 +1711,7 @@
"pseudorandom",
"random"
],
- "time": "2016-02-06 03:52:05"
+ "time": "2016-03-18 20:34:03"
},
{
"name": "phenx/php-font-lib",
@@ -1661,16 +1793,16 @@
},
{
"name": "phpmailer/phpmailer",
- "version": "v5.2.14",
+ "version": "v5.2.16",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "e774bc9152de85547336e22b8926189e582ece95"
+ "reference": "1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e774bc9152de85547336e22b8926189e582ece95",
- "reference": "e774bc9152de85547336e22b8926189e582ece95",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a",
+ "reference": "1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a",
"shasum": ""
},
"require": {
@@ -1681,8 +1813,7 @@
"phpunit/phpunit": "4.7.*"
},
"suggest": {
- "league/oauth2-client": "Needed for XOAUTH2 authentication",
- "league/oauth2-google": "Needed for Gmail XOAUTH2"
+ "league/oauth2-google": "Needed for Google XOAUTH2 authentication"
},
"type": "library",
"autoload": {
@@ -1718,7 +1849,7 @@
}
],
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
- "time": "2015-11-01 10:15:28"
+ "time": "2016-06-06 09:09:37"
},
{
"name": "phpseclib/phpseclib",
@@ -1820,22 +1951,23 @@
},
{
"name": "propaganistas/laravel-phone",
- "version": "2.6.1",
+ "version": "2.7.4",
"source": {
"type": "git",
"url": "https://github.com/Propaganistas/Laravel-Phone.git",
- "reference": "ae7fb3c8acb4356a7c9a8fbe776e8aeed5535079"
+ "reference": "5fe3af2794433fa721c6bfdc0fffc7faebc56754"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/ae7fb3c8acb4356a7c9a8fbe776e8aeed5535079",
- "reference": "ae7fb3c8acb4356a7c9a8fbe776e8aeed5535079",
+ "url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/5fe3af2794433fa721c6bfdc0fffc7faebc56754",
+ "reference": "5fe3af2794433fa721c6bfdc0fffc7faebc56754",
"shasum": ""
},
"require": {
"giggsey/libphonenumber-for-php": "~7.0",
"illuminate/support": "~4.0|~5.0",
"illuminate/validation": "~4.0|~5.0",
+ "julien-c/iso3166": "~2.0",
"php": ">=5.4.0"
},
"require-dev": {
@@ -1870,7 +2002,7 @@
"phone",
"validation"
],
- "time": "2016-02-23 18:37:58"
+ "time": "2016-05-20 10:27:25"
},
{
"name": "psr/http-message",
@@ -1961,28 +2093,29 @@
},
{
"name": "psy/psysh",
- "version": "v0.4.4",
+ "version": "v0.7.2",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "489816db71649bd95b416e3ed9062d40528ab0ac"
+ "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/489816db71649bd95b416e3ed9062d40528ab0ac",
- "reference": "489816db71649bd95b416e3ed9062d40528ab0ac",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280",
+ "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280",
"shasum": ""
},
"require": {
"dnoegel/php-xdg-base-dir": "0.1",
"jakub-onderka/php-console-highlighter": "0.3.*",
- "nikic/php-parser": "~1.0",
- "php": ">=5.3.0",
- "symfony/console": "~2.3.10|~2.4.2|~2.5"
+ "nikic/php-parser": "^1.2.1|~2.0",
+ "php": ">=5.3.9",
+ "symfony/console": "~2.3.10|^2.4.2|~3.0",
+ "symfony/var-dumper": "~2.7|~3.0"
},
"require-dev": {
"fabpot/php-cs-fixer": "~1.5",
- "phpunit/phpunit": "~3.7|~4.0",
+ "phpunit/phpunit": "~3.7|~4.0|~5.0",
"squizlabs/php_codesniffer": "~2.0",
"symfony/finder": "~2.1|~3.0"
},
@@ -1998,15 +2131,15 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-develop": "0.4.x-dev"
+ "dev-develop": "0.8.x-dev"
}
},
"autoload": {
"files": [
"src/Psy/functions.php"
],
- "psr-0": {
- "Psy\\": "src/"
+ "psr-4": {
+ "Psy\\": "src/Psy/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2028,20 +2161,20 @@
"interactive",
"shell"
],
- "time": "2015-03-26 18:43:54"
+ "time": "2016-03-09 05:03:14"
},
{
"name": "swiftmailer/swiftmailer",
- "version": "v5.4.1",
+ "version": "v5.4.2",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421"
+ "reference": "d8db871a54619458a805229a057ea2af33c753e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421",
- "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/d8db871a54619458a805229a057ea2af33c753e8",
+ "reference": "d8db871a54619458a805229a057ea2af33c753e8",
"shasum": ""
},
"require": {
@@ -2081,31 +2214,30 @@
"mail",
"mailer"
],
- "time": "2015-06-06 14:19:39"
+ "time": "2016-05-01 08:45:47"
},
{
"name": "symfony/console",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/Console",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359"
+ "reference": "382fc9ed852edabd6133e34f8549d7a7d99db115"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/0e5e18ae09d3f5c06367759be940e9ed3f568359",
- "reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359",
+ "url": "https://api.github.com/repos/symfony/console/zipball/382fc9ed852edabd6133e34f8549d7a7d99db115",
+ "reference": "382fc9ed852edabd6133e34f8549d7a7d99db115",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.1"
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/process": "~2.8|~3.0"
},
"suggest": {
"psr/log": "For using the console logger",
@@ -2115,13 +2247,16 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\Console\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2139,50 +2274,46 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2015-07-26 09:08:40"
+ "time": "2016-06-06 15:08:35"
},
{
"name": "symfony/debug",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/Debug",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "fca5696e0c9787722baa8f2ad6940dfd7a6a6941"
+ "reference": "e67e1552dd7313df1cf6535cb606751899e0e727"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/fca5696e0c9787722baa8f2ad6940dfd7a6a6941",
- "reference": "fca5696e0c9787722baa8f2ad6940dfd7a6a6941",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/e67e1552dd7313df1cf6535cb606751899e0e727",
+ "reference": "e67e1552dd7313df1cf6535cb606751899e0e727",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
+ "php": ">=5.5.9",
"psr/log": "~1.0"
},
"conflict": {
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
},
"require-dev": {
- "symfony/class-loader": "~2.2",
- "symfony/http-foundation": "~2.1",
- "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2",
- "symfony/phpunit-bridge": "~2.7"
- },
- "suggest": {
- "symfony/http-foundation": "",
- "symfony/http-kernel": ""
+ "symfony/class-loader": "~2.8|~3.0",
+ "symfony/http-kernel": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\Debug\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2200,31 +2331,31 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "time": "2015-07-08 05:59:48"
+ "time": "2016-06-06 15:08:35"
},
{
"name": "symfony/event-dispatcher",
- "version": "v2.8.3",
+ "version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "78c468665c9568c3faaa9c416a7134308f2d85c3"
+ "reference": "0343b2cedd0edb26cdc791212a8eb645c406018b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/78c468665c9568c3faaa9c416a7134308f2d85c3",
- "reference": "78c468665c9568c3faaa9c416a7134308f2d85c3",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0343b2cedd0edb26cdc791212a8eb645c406018b",
+ "reference": "0343b2cedd0edb26cdc791212a8eb645c406018b",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
+ "php": ">=5.5.9"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~2.0,>=2.0.5|~3.0.0",
- "symfony/dependency-injection": "~2.6|~3.0.0",
- "symfony/expression-language": "~2.6|~3.0.0",
- "symfony/stopwatch": "~2.3|~3.0.0"
+ "symfony/config": "~2.8|~3.0",
+ "symfony/dependency-injection": "~2.8|~3.0",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/stopwatch": "~2.8|~3.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -2233,7 +2364,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.8-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2260,34 +2391,34 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2016-01-27 05:14:19"
+ "time": "2016-04-12 18:27:47"
},
{
- "name": "symfony/filesystem",
- "version": "v2.8.3",
+ "name": "symfony/finder",
+ "version": "v3.0.7",
"source": {
"type": "git",
- "url": "https://github.com/symfony/filesystem.git",
- "reference": "65cb36b6539b1d446527d60457248f30d045464d"
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "39e5f3d533d07b5416b9d7aad53a27f939d4f811"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/65cb36b6539b1d446527d60457248f30d045464d",
- "reference": "65cb36b6539b1d446527d60457248f30d045464d",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/39e5f3d533d07b5416b9d7aad53a27f939d4f811",
+ "reference": "39e5f3d533d07b5416b9d7aad53a27f939d4f811",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
+ "php": ">=5.5.9"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.8-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Component\\Filesystem\\": ""
+ "Symfony\\Component\\Finder\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2307,94 +2438,43 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Filesystem Component",
- "homepage": "https://symfony.com",
- "time": "2016-02-22 15:02:30"
- },
- {
- "name": "symfony/finder",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/Finder",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "203a10f928ae30176deeba33512999233181dd28"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/203a10f928ae30176deeba33512999233181dd28",
- "reference": "203a10f928ae30176deeba33512999233181dd28",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "~2.7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Finder\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
- "time": "2015-07-09 16:02:48"
+ "time": "2016-05-13 18:03:36"
},
{
"name": "symfony/http-foundation",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/HttpFoundation",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c"
+ "reference": "d268a643884f85e91d6ba11ca68de96833f3f6e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c",
- "reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d268a643884f85e91d6ba11ca68de96833f3f6e5",
+ "reference": "d268a643884f85e91d6ba11ca68de96833f3f6e5",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.1"
},
"require-dev": {
- "symfony/expression-language": "~2.4",
- "symfony/phpunit-bridge": "~2.7"
+ "symfony/expression-language": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\HttpFoundation\\": ""
},
- "classmap": [
- "Symfony/Component/HttpFoundation/Resources/stubs"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2413,47 +2493,48 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
- "time": "2015-07-22 10:08:40"
+ "time": "2016-06-06 11:33:26"
},
{
"name": "symfony/http-kernel",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/HttpKernel",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "cdd991d304fed833514dc44d6aafcf19397c26cb"
+ "reference": "97cc1c15e3406e7a2adf14ad6b0e41a04d4a6fc4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/cdd991d304fed833514dc44d6aafcf19397c26cb",
- "reference": "cdd991d304fed833514dc44d6aafcf19397c26cb",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/97cc1c15e3406e7a2adf14ad6b0e41a04d4a6fc4",
+ "reference": "97cc1c15e3406e7a2adf14ad6b0e41a04d4a6fc4",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
+ "php": ">=5.5.9",
"psr/log": "~1.0",
- "symfony/debug": "~2.6,>=2.6.2",
- "symfony/event-dispatcher": "~2.6,>=2.6.7",
- "symfony/http-foundation": "~2.5,>=2.5.4"
+ "symfony/debug": "~2.8|~3.0",
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/http-foundation": "~2.8|~3.0"
+ },
+ "conflict": {
+ "symfony/config": "<2.8"
},
"require-dev": {
- "symfony/browser-kit": "~2.3",
- "symfony/class-loader": "~2.1",
- "symfony/config": "~2.0,>=2.0.5",
- "symfony/console": "~2.3",
- "symfony/css-selector": "~2.0,>=2.0.5",
- "symfony/dependency-injection": "~2.2",
- "symfony/dom-crawler": "~2.0,>=2.0.5",
- "symfony/expression-language": "~2.4",
- "symfony/finder": "~2.0,>=2.0.5",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.0,>=2.0.5",
- "symfony/routing": "~2.2",
- "symfony/stopwatch": "~2.3",
- "symfony/templating": "~2.2",
- "symfony/translation": "~2.0,>=2.0.5",
- "symfony/var-dumper": "~2.6"
+ "symfony/browser-kit": "~2.8|~3.0",
+ "symfony/class-loader": "~2.8|~3.0",
+ "symfony/config": "~2.8|~3.0",
+ "symfony/console": "~2.8|~3.0",
+ "symfony/css-selector": "~2.8|~3.0",
+ "symfony/dependency-injection": "~2.8|~3.0",
+ "symfony/dom-crawler": "~2.8|~3.0",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/finder": "~2.8|~3.0",
+ "symfony/process": "~2.8|~3.0",
+ "symfony/routing": "~2.8|~3.0",
+ "symfony/stopwatch": "~2.8|~3.0",
+ "symfony/templating": "~2.8|~3.0",
+ "symfony/translation": "~2.8|~3.0",
+ "symfony/var-dumper": "~2.8|~3.0"
},
"suggest": {
"symfony/browser-kit": "",
@@ -2467,13 +2548,16 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\HttpKernel\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2491,20 +2575,79 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
- "time": "2016-01-14 10:11:16"
+ "time": "2016-06-06 16:52:35"
},
{
- "name": "symfony/polyfill-php56",
- "version": "v1.1.0",
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.2.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php56.git",
- "reference": "4d891fff050101a53a4caabb03277284942d1ad9"
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "dff51f72b0706335131b00a7f49606168c582594"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/4d891fff050101a53a4caabb03277284942d1ad9",
- "reference": "4d891fff050101a53a4caabb03277284942d1ad9",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594",
+ "reference": "dff51f72b0706335131b00a7f49606168c582594",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-php56",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php56.git",
+ "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/3edf57a8fbf9a927533344cef65ad7e1cf31030a",
+ "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a",
"shasum": ""
},
"require": {
@@ -2514,7 +2657,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1-dev"
+ "dev-master": "1.2-dev"
}
},
"autoload": {
@@ -2547,20 +2690,20 @@
"portable",
"shim"
],
- "time": "2016-01-20 09:13:37"
+ "time": "2016-05-18 14:26:46"
},
{
"name": "symfony/polyfill-util",
- "version": "v1.1.0",
+ "version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
- "reference": "8de62801aa12bc4dfcf85eef5d21981ae7bb3cc4"
+ "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/8de62801aa12bc4dfcf85eef5d21981ae7bb3cc4",
- "reference": "8de62801aa12bc4dfcf85eef5d21981ae7bb3cc4",
+ "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ef830ce3d218e622b221d6bfad42c751d974bf99",
+ "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99",
"shasum": ""
},
"require": {
@@ -2569,7 +2712,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1-dev"
+ "dev-master": "1.2-dev"
}
},
"autoload": {
@@ -2599,39 +2742,38 @@
"polyfill",
"shim"
],
- "time": "2016-01-20 09:13:37"
+ "time": "2016-05-18 14:26:46"
},
{
"name": "symfony/process",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/Process",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "57f1e88bb5dafa449b83f9f265b11d52d517b3e9"
+ "reference": "bf6e2d1fa8b93fdd7cca6b684c0ea213cf0255dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/57f1e88bb5dafa449b83f9f265b11d52d517b3e9",
- "reference": "57f1e88bb5dafa449b83f9f265b11d52d517b3e9",
+ "url": "https://api.github.com/repos/symfony/process/zipball/bf6e2d1fa8b93fdd7cca6b684c0ea213cf0255dd",
+ "reference": "bf6e2d1fa8b93fdd7cca6b684c0ea213cf0255dd",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "~2.7"
+ "php": ">=5.5.9"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\Process\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2649,52 +2791,58 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
- "time": "2015-06-30 16:10:16"
+ "time": "2016-06-06 11:33:26"
},
{
"name": "symfony/routing",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/Routing",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "0a1764d41bbb54f3864808c50569ac382b44d128"
+ "reference": "c780454838a1131adc756d737a4b4cc1d18f8c64"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/0a1764d41bbb54f3864808c50569ac382b44d128",
- "reference": "0a1764d41bbb54f3864808c50569ac382b44d128",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/c780454838a1131adc756d737a4b4cc1d18f8c64",
+ "reference": "c780454838a1131adc756d737a4b4cc1d18f8c64",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=5.5.9"
+ },
+ "conflict": {
+ "symfony/config": "<2.8"
},
"require-dev": {
"doctrine/annotations": "~1.0",
"doctrine/common": "~2.2",
"psr/log": "~1.0",
- "symfony/config": "~2.2",
- "symfony/expression-language": "~2.4",
- "symfony/http-foundation": "~2.3",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/yaml": "~2.0,>=2.0.5"
+ "symfony/config": "~2.8|~3.0",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/http-foundation": "~2.8|~3.0",
+ "symfony/yaml": "~2.8|~3.0"
},
"suggest": {
"doctrine/annotations": "For using the annotation loader",
"symfony/config": "For using the all-in-one router or any loader",
+ "symfony/dependency-injection": "For loading routes from a service",
"symfony/expression-language": "For using expression matching",
+ "symfony/http-foundation": "For using a Symfony Request object",
"symfony/yaml": "For using the YAML loader"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\Routing\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2718,97 +2866,34 @@
"uri",
"url"
],
- "time": "2015-07-09 16:02:48"
- },
- {
- "name": "symfony/security-core",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/Security/Core",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/security-core.git",
- "reference": "813cf2aaacccbbe1a4705aef8d4ac0d79d993a76"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/813cf2aaacccbbe1a4705aef8d4ac0d79d993a76",
- "reference": "813cf2aaacccbbe1a4705aef8d4ac0d79d993a76",
- "shasum": ""
- },
- "require": {
- "paragonie/random_compat": "~1.0",
- "php": ">=5.3.3"
- },
- "require-dev": {
- "ircmaxell/password-compat": "1.0.*",
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1",
- "symfony/expression-language": "~2.6",
- "symfony/http-foundation": "~2.4",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/translation": "~2.0,>=2.0.5",
- "symfony/validator": "~2.5,>=2.5.5"
- },
- "suggest": {
- "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5",
- "symfony/event-dispatcher": "",
- "symfony/expression-language": "For using the expression voter",
- "symfony/http-foundation": "",
- "symfony/validator": "For using the user password constraint"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Security\\Core\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Security Component - Core Library",
- "homepage": "https://symfony.com",
- "time": "2016-01-14 09:04:34"
+ "time": "2016-05-30 06:58:27"
},
{
"name": "symfony/translation",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/Translation",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "d84291215b5892834dd8ca8ee52f9cbdb8274904"
+ "reference": "2b0aacaa613c0ec1ad8046f972d8abdcb19c1db7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/d84291215b5892834dd8ca8ee52f9cbdb8274904",
- "reference": "d84291215b5892834dd8ca8ee52f9cbdb8274904",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/2b0aacaa613c0ec1ad8046f972d8abdcb19c1db7",
+ "reference": "2b0aacaa613c0ec1ad8046f972d8abdcb19c1db7",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/config": "<2.8"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~2.3,>=2.3.12",
- "symfony/intl": "~2.3",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/yaml": "~2.2"
+ "symfony/config": "~2.8|~3.0",
+ "symfony/intl": "~2.8|~3.0",
+ "symfony/yaml": "~2.8|~3.0"
},
"suggest": {
"psr/log": "To use logging capability in translator",
@@ -2818,13 +2903,16 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\Translation\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2842,28 +2930,28 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2015-07-08 05:59:48"
+ "time": "2016-06-06 11:33:26"
},
{
"name": "symfony/var-dumper",
- "version": "v2.6.13",
- "target-dir": "Symfony/Component/VarDumper",
+ "version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "5fba957a30161d8724aade093593cd22f815bea2"
+ "reference": "d8bb851da153d97abe7c2b71a65dee19f324bcf7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5fba957a30161d8724aade093593cd22f815bea2",
- "reference": "5fba957a30161d8724aade093593cd22f815bea2",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d8bb851da153d97abe7c2b71a65dee19f324bcf7",
+ "reference": "d8bb851da153d97abe7c2b71a65dee19f324bcf7",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "~2.7"
+ "twig/twig": "~1.20|~2.0"
},
"suggest": {
"ext-symfony_debug": ""
@@ -2871,16 +2959,19 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
"files": [
"Resources/functions/dump.php"
],
- "psr-0": {
+ "psr-4": {
"Symfony\\Component\\VarDumper\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2902,7 +2993,7 @@
"debug",
"dump"
],
- "time": "2015-07-01 10:03:42"
+ "time": "2016-05-24 10:03:10"
},
{
"name": "thomaswelton/gravatarlib",
@@ -3014,6 +3105,64 @@
],
"time": "2015-12-19 15:44:13"
},
+ {
+ "name": "torann/geoip",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Torann/laravel-geoip.git",
+ "reference": "f16f839160b1ab1fe41382e18ec9a32dd09b10fd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Torann/laravel-geoip/zipball/f16f839160b1ab1fe41382e18ec9a32dd09b10fd",
+ "reference": "f16f839160b1ab1fe41382e18ec9a32dd09b10fd",
+ "shasum": ""
+ },
+ "require": {
+ "geoip2/geoip2": "~2.1",
+ "illuminate/config": "~5.0",
+ "illuminate/console": "~5.0",
+ "illuminate/session": "~5.0",
+ "illuminate/support": "~5.0",
+ "monolog/monolog": "~1.11",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "~2.1",
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Torann\\GeoIP\\": "src/Torann/GeoIP"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD 2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Stainback",
+ "email": "daniel@lyften.com"
+ }
+ ],
+ "description": "Supports the two main GeoIP services (infoDB and Maxmind).",
+ "keywords": [
+ "geoip",
+ "geolocation",
+ "laravel",
+ "laravel 5",
+ "location"
+ ],
+ "time": "2015-06-30 16:13:35"
+ },
{
"name": "tymon/jwt-auth",
"version": "0.5.9",
@@ -3079,16 +3228,16 @@
},
{
"name": "unisharp/laravel-filemanager",
- "version": "1.2.0",
+ "version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/UniSharp/laravel-filemanager.git",
- "reference": "634f6b50a24fd61b50bde6a2bec6da9df0332f43"
+ "reference": "412f459c6b44895bae9a1439ae3126376c1f6669"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/UniSharp/laravel-filemanager/zipball/634f6b50a24fd61b50bde6a2bec6da9df0332f43",
- "reference": "634f6b50a24fd61b50bde6a2bec6da9df0332f43",
+ "url": "https://api.github.com/repos/UniSharp/laravel-filemanager/zipball/412f459c6b44895bae9a1439ae3126376c1f6669",
+ "reference": "412f459c6b44895bae9a1439ae3126376c1f6669",
"shasum": ""
},
"require": {
@@ -3096,6 +3245,10 @@
"intervention/image": "2.*",
"php": ">=5.5.0"
},
+ "suggest": {
+ "ext-gd": "to use GD library based image processing.",
+ "ext-imagick": "to use Imagick based image processing."
+ },
"type": "library",
"autoload": {
"psr-4": {
@@ -3121,42 +3274,48 @@
"CKEditor",
"file",
"filemanager",
+ "image",
"laravel",
"manager",
"tinymce",
"upload"
],
- "time": "2016-01-16 15:50:05"
+ "time": "2016-03-26 13:38:00"
},
{
"name": "vlucas/phpdotenv",
- "version": "v1.1.1",
+ "version": "v2.2.1",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa"
+ "reference": "63f37b9395e8041cd4313129c08ece896d06ca8e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa",
- "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/63f37b9395e8041cd4313129c08ece896d06ca8e",
+ "reference": "63f37b9395e8041cd4313129c08ece896d06ca8e",
"shasum": ""
},
"require": {
- "php": ">=5.3.2"
+ "php": ">=5.3.9"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "phpunit/phpunit": "^4.8 || ^5.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
"autoload": {
- "psr-0": {
- "Dotenv": "src/"
+ "psr-4": {
+ "Dotenv\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD"
+ "BSD-3-Clause-Attribution"
],
"authors": [
{
@@ -3166,13 +3325,12 @@
}
],
"description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
- "homepage": "http://github.com/vlucas/phpdotenv",
"keywords": [
"dotenv",
"env",
"environment"
],
- "time": "2015-05-30 15:59:26"
+ "time": "2016-04-15 10:48:49"
},
{
"name": "vsmoraes/laravel-pdf",
@@ -3276,38 +3434,87 @@
"time": "2015-06-14 21:17:01"
},
{
- "name": "phpdocumentor/reflection-docblock",
- "version": "2.0.4",
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=5.5"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
+ "phpunit/phpunit": "^4.6"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
- "psr-0": {
- "phpDocumentor": [
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2015-12-27 11:43:31"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "9270140b940ff02e58ec577c237274e92cd40cdd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd",
+ "reference": "9270140b940ff02e58ec577c237274e92cd40cdd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5",
+ "phpdocumentor/reflection-common": "^1.0@dev",
+ "phpdocumentor/type-resolver": "^0.2.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
"src/"
]
}
@@ -3319,10 +3526,58 @@
"authors": [
{
"name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
+ "email": "me@mikevanriel.com"
}
],
- "time": "2015-02-03 12:10:50"
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2016-06-10 09:48:41"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443",
+ "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2016-06-10 07:14:17"
},
{
"name": "phpspec/php-diff",
@@ -3360,16 +3615,16 @@
},
{
"name": "phpspec/phpspec",
- "version": "2.4.1",
+ "version": "2.5.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/phpspec.git",
- "reference": "5528ce1e93a1efa090c9404aba3395c329b4e6ed"
+ "reference": "385ecb015e97c13818074f1517928b24d4a26067"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/phpspec/zipball/5528ce1e93a1efa090c9404aba3395c329b4e6ed",
- "reference": "5528ce1e93a1efa090c9404aba3395c329b4e6ed",
+ "url": "https://api.github.com/repos/phpspec/phpspec/zipball/385ecb015e97c13818074f1517928b24d4a26067",
+ "reference": "385ecb015e97c13818074f1517928b24d4a26067",
"shasum": ""
},
"require": {
@@ -3434,36 +3689,36 @@
"testing",
"tests"
],
- "time": "2016-01-01 10:17:54"
+ "time": "2016-03-20 20:34:32"
},
{
"name": "phpspec/prophecy",
- "version": "v1.6.0",
+ "version": "v1.6.1",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "3c91bdf81797d725b14cb62906f9a4ce44235972"
+ "reference": "58a8137754bc24b25740d4281399a4a3596058e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3c91bdf81797d725b14cb62906f9a4ce44235972",
- "reference": "3c91bdf81797d725b14cb62906f9a4ce44235972",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0",
+ "reference": "58a8137754bc24b25740d4281399a4a3596058e0",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "~2.0",
- "sebastian/comparator": "~1.1",
- "sebastian/recursion-context": "~1.0"
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
+ "sebastian/comparator": "^1.1",
+ "sebastian/recursion-context": "^1.0"
},
"require-dev": {
- "phpspec/phpspec": "~2.0"
+ "phpspec/phpspec": "^2.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.5.x-dev"
+ "dev-master": "1.6.x-dev"
}
},
"autoload": {
@@ -3496,7 +3751,7 @@
"spy",
"stub"
],
- "time": "2016-02-15 07:46:21"
+ "time": "2016-06-07 08:13:47"
},
{
"name": "phpunit/php-code-coverage",
@@ -3650,21 +3905,24 @@
},
{
"name": "phpunit/php-timer",
- "version": "1.0.7",
+ "version": "1.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
+ "require-dev": {
+ "phpunit/phpunit": "~4|~5"
+ },
"type": "library",
"autoload": {
"classmap": [
@@ -3687,7 +3945,7 @@
"keywords": [
"timer"
],
- "time": "2015-06-21 08:01:12"
+ "time": "2016-05-12 18:03:57"
},
{
"name": "phpunit/php-token-stream",
@@ -3740,16 +3998,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "4.8.23",
+ "version": "4.8.26",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "6e351261f9cd33daf205a131a1ba61c6d33bd483"
+ "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6e351261f9cd33daf205a131a1ba61c6d33bd483",
- "reference": "6e351261f9cd33daf205a131a1ba61c6d33bd483",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc1d8cd5b5de11625979125c5639347896ac2c74",
+ "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74",
"shasum": ""
},
"require": {
@@ -3763,7 +4021,7 @@
"phpunit/php-code-coverage": "~2.1",
"phpunit/php-file-iterator": "~1.4",
"phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": ">=1.0.6",
+ "phpunit/php-timer": "^1.0.6",
"phpunit/phpunit-mock-objects": "~2.3",
"sebastian/comparator": "~1.1",
"sebastian/diff": "~1.2",
@@ -3808,7 +4066,7 @@
"testing",
"xunit"
],
- "time": "2016-02-11 14:56:33"
+ "time": "2016-05-17 03:09:28"
},
{
"name": "phpunit/phpunit-mock-objects",
@@ -3984,16 +4242,16 @@
},
{
"name": "sebastian/environment",
- "version": "1.3.5",
+ "version": "1.3.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf"
+ "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf",
- "reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
+ "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
"shasum": ""
},
"require": {
@@ -4030,7 +4288,7 @@
"environment",
"hhvm"
],
- "time": "2016-02-26 18:40:46"
+ "time": "2016-05-17 03:18:57"
},
{
"name": "sebastian/exporter",
@@ -4238,17 +4496,17 @@
"time": "2015-06-21 13:59:46"
},
{
- "name": "symfony/yaml",
- "version": "v3.0.3",
+ "name": "symfony/css-selector",
+ "version": "v3.1.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "b5ba64cd67ecd6887f63868fa781ca094bd1377c"
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "e17f386efef7258ac671c24e727673abd086b0cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/b5ba64cd67ecd6887f63868fa781ca094bd1377c",
- "reference": "b5ba64cd67ecd6887f63868fa781ca094bd1377c",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/e17f386efef7258ac671c24e727673abd086b0cf",
+ "reference": "e17f386efef7258ac671c24e727673abd086b0cf",
"shasum": ""
},
"require": {
@@ -4257,7 +4515,116 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony CssSelector Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-03-04 07:56:56"
+ },
+ {
+ "name": "symfony/dom-crawler",
+ "version": "v3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dom-crawler.git",
+ "reference": "12aa63fd41b060d2bee9a34623d29eda70bc8fe3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/12aa63fd41b060d2bee9a34623d29eda70bc8fe3",
+ "reference": "12aa63fd41b060d2bee9a34623d29eda70bc8fe3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "require-dev": {
+ "symfony/css-selector": "~2.8|~3.0"
+ },
+ "suggest": {
+ "symfony/css-selector": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DomCrawler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DomCrawler Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-05-13 15:49:09"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "eca51b7b65eb9be6af88ad7cc91685f1556f5c9a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/eca51b7b65eb9be6af88ad7cc91685f1556f5c9a",
+ "reference": "eca51b7b65eb9be6af88ad7cc91685f1556f5c9a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -4284,17 +4651,69 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2016-02-23 15:16:06"
+ "time": "2016-05-26 21:46:24"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
+ "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2015-08-24 13:29:44"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"neitanod/forceutf8": 20,
- "chumper/datatable": 20
+ "chumper/datatable": 20,
+ "torann/geoip": 20
},
"prefer-stable": false,
"prefer-lowest": false,
- "platform": [],
+ "platform": {
+ "php": ">=5.5.9"
+ },
"platform-dev": []
}
diff --git a/config/app.php b/config/app.php
index feeb9d77f..fd0f120fe 100644
--- a/config/app.php
+++ b/config/app.php
@@ -1,153 +1,141 @@
env('APP_ENV', 'production'),
/*
- |--------------------------------------------------------------------------
- | Application Debug Mode
- |--------------------------------------------------------------------------
- |
- | When your application is in debug mode, detailed error messages with
- | stack traces will be shown on every error that occurs within your
- | application. If disabled, a simple generic error page is shown.
- |
+ |--------------------------------------------------------------------------
+ | Application Debug Mode
+ |--------------------------------------------------------------------------
+ |
+ | When your application is in debug mode, detailed error messages with
+ | stack traces will be shown on every error that occurs within your
+ | application. If disabled, a simple generic error page is shown.
+ |
*/
-
'debug' => false,
-
/*
- |--------------------------------------------------------------------------
- | Error Log
- |--------------------------------------------------------------------------
- |
- | This error log will send email to faveo about the errors. So that before
- | reporting about the errors we at faveo will start solving the issues already.
- | The errors mails will never share your files or data. it will only share
- | the line number and error occured.
- | To dissable you may just change '%1%' to 0.
+ |--------------------------------------------------------------------------
+ | Error Log
+ |--------------------------------------------------------------------------
+ |
+ | This error log will send email to faveo about the errors. So that before
+ | reporting about the errors we at faveo will start solving the issues already.
+ | The errors mails will never share your files or data. it will only share
+ | the line number and error occured.
+ | To dissable you may just change '%1%' to 0.
*/
-
- 'ErrorLog' => '1',
-
+ 'ErrorLog' => '1',
/*
- |--------------------------------------------------------------------------
- | Application Version
- |--------------------------------------------------------------------------
- |
- | This tells about aplication current version.
- |
+ |--------------------------------------------------------------------------
+ | Application Version
+ |--------------------------------------------------------------------------
+ |
+ | This tells about aplication current version.
+ |
*/
-
- 'version' => 'Community 1.0.7.4',
-
+ 'version' => 'Community 1.0.7.5',
/*
- |--------------------------------------------------------------------------
- | Application URL
- |--------------------------------------------------------------------------
- |
- | This URL is used by the console to properly generate URLs when using
- | the Artisan command line tool. You should set this to the root of
- | your application so that it is used when running Artisan tasks.
- |
+ |--------------------------------------------------------------------------
+ | Application URL
+ |--------------------------------------------------------------------------
+ |
+ | This URL is used by the console to properly generate URLs when using
+ | the Artisan command line tool. You should set this to the root of
+ | your application so that it is used when running Artisan tasks.
+ |
*/
-
'url' => 'http://localhost',
-
/*
- |--------------------------------------------------------------------------
- | Application Timezone
- |--------------------------------------------------------------------------
- |
- | Here you may specify the default timezone for your application, which
- | will be used by the PHP date and date-time functions. We have gone
- | ahead and set this to a sensible default for you out of the box.
- |
+ |--------------------------------------------------------------------------
+ | Application Timezone
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the default timezone for your application, which
+ | will be used by the PHP date and date-time functions. We have gone
+ | ahead and set this to a sensible default for you out of the box.
+ |
*/
-
'timezone' => 'UTC',
-
/*
- |--------------------------------------------------------------------------
- | Application Locale Configuration
- |--------------------------------------------------------------------------
- |
- | The application locale determines the default locale that will be used
- | by the translation service provider. You are free to set this value
- | to any of the locales which will be supported by the application.
- |
+ |--------------------------------------------------------------------------
+ | Application Locale Configuration
+ |--------------------------------------------------------------------------
+ |
+ | The application locale determines the default locale that will be used
+ | by the translation service provider. You are free to set this value
+ | to any of the locales which will be supported by the application.
+ |
*/
-
'locale' => 'en',
-
/*
- |--------------------------------------------------------------------------
- | Application Fallback Locale
- |--------------------------------------------------------------------------
- |
- | The fallback locale determines the locale to use when the current one
- | is not available. You may change the value to correspond to any of
- | the language folders that are provided through your application.
- |
+ |--------------------------------------------------------------------------
+ | Application Fallback Locale
+ |--------------------------------------------------------------------------
+ |
+ | The fallback locale determines the locale to use when the current one
+ | is not available. You may change the value to correspond to any of
+ | the language folders that are provided through your application.
+ |
*/
-
'fallback_locale' => 'en',
-
/*
- |--------------------------------------------------------------------------
- | Encryption Key
- |--------------------------------------------------------------------------
- |
- | This key is used by the Illuminate encrypter service and should be set
- | to a random, 32 character string, otherwise these encrypted strings
- | will not be safe. Please do this before deploying an application!
- |
+ |--------------------------------------------------------------------------
+ | Encryption Key
+ |--------------------------------------------------------------------------
+ |
+ | This key is used by the Illuminate encrypter service and should be set
+ | to a random, 32 character string, otherwise these encrypted strings
+ | will not be safe. Please do this before deploying an application!
+ |
*/
-
- 'key' => env('APP_KEY', 'AEVQf2ecD6Czpw6r2jairFxbXohG72fH'),
-
+ 'key' => env('APP_KEY'),
'cipher' => MCRYPT_RIJNDAEL_128,
-
/*
- |--------------------------------------------------------------------------
- | Logging Configuration
- |--------------------------------------------------------------------------
- |
- | Here you may configure the log settings for your application. Out of
- | the box, Laravel uses the Monolog PHP logging library. This gives
- | you a variety of powerful log handlers / formatters to utilize.
- |
- | Available Settings: "single", "daily", "syslog", "errorlog"
- |
+ |--------------------------------------------------------------------------
+ | Logging Configuration
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure the log settings for your application. Out of
+ | the box, Laravel uses the Monolog PHP logging library. This gives
+ | you a variety of powerful log handlers / formatters to utilize.
+ |
+ | Available Settings: "single", "daily", "syslog", "errorlog"
+ |
*/
-
'log' => 'daily',
-
/*
- |--------------------------------------------------------------------------
- | Autoloaded Service Providers
- |--------------------------------------------------------------------------
- |
- | The service providers listed here will be automatically loaded on the
- | request to your application. Feel free to add your own services to
- | this array to grant expanded functionality to your applications.
- |
+ |---------------------------------------------------------------------------------
+ | Bugsnag error reporting
+ |-----------------------------------------------------------------------------------
+ |Accepts true or false as a value. It decides whether to send the error
+ |to FAVEO team when any exception/error occurs or not. True value of this variable will
+ |allow application to send error reports to FAVEO team's bugsnag log.
+ */
+ 'bugsnag_reporting' => true,
+ /*
+ |--------------------------------------------------------------------------
+ | Autoloaded Service Providers
+ |--------------------------------------------------------------------------
+ |
+ | The service providers listed here will be automatically loaded on the
+ | request to your application. Feel free to add your own services to
+ | this array to grant expanded functionality to your applications.
+ |
*/
-
'providers' => [
+ 'Illuminate\Broadcasting\BroadcastServiceProvider',
+ 'DaveJamesMiller\Breadcrumbs\ServiceProvider',
/*
- * Faveo Plugins
- */
+ */
/*
* Laravel Framework Service Providers...
*/
- 'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
'Illuminate\Bus\BusServiceProvider',
'Illuminate\Cache\CacheServiceProvider',
'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
- 'Illuminate\Routing\ControllerServiceProvider',
'Illuminate\Cookie\CookieServiceProvider',
'Illuminate\Database\DatabaseServiceProvider',
'Illuminate\Encryption\EncryptionServiceProvider',
@@ -169,85 +157,80 @@ return [
* Application Service Providers...
*/
'App\Providers\AppServiceProvider',
- 'App\Providers\BusServiceProvider',
- 'App\Providers\ConfigServiceProvider',
'App\Providers\EventServiceProvider',
'App\Providers\RouteServiceProvider',
+ 'App\Providers\ConfigServiceProvider',
'Propaganistas\LaravelPhone\LaravelPhoneServiceProvider',
'Bugsnag\BugsnagLaravel\BugsnagLaravelServiceProvider',
'Vsmoraes\Pdf\PdfServiceProvider',
'Thomaswelton\LaravelGravatar\LaravelGravatarServiceProvider',
'Chumper\Datatable\DatatableServiceProvider',
'Chumper\Zipper\ZipperServiceProvider',
- Bestmomo\Filemanager\FilemanagerServiceProvider::class,
- Unisharp\Laravelfilemanager\LaravelFilemanagerServiceProvider::class,
- Intervention\Image\ImageServiceProvider::class,
+ 'Bestmomo\Filemanager\FilemanagerServiceProvider',
+ 'Unisharp\Laravelfilemanager\LaravelFilemanagerServiceProvider',
+ 'Intervention\Image\ImageServiceProvider',
'Tymon\JWTAuth\Providers\JWTAuthServiceProvider',
-
+ 'Torann\GeoIP\GeoIPServiceProvider',
],
-
/*
- |--------------------------------------------------------------------------
- | Class Aliases
- |--------------------------------------------------------------------------
- |
- | This array of class aliases will be registered when this application
- | is started. However, feel free to register as many as you wish as
- | the aliases are "lazy" loaded so they don't hinder performance.
- |
+ |--------------------------------------------------------------------------
+ | Class Aliases
+ |--------------------------------------------------------------------------
+ |
+ | This array of class aliases will be registered when this application
+ | is started. However, feel free to register as many as you wish as
+ | the aliases are "lazy" loaded so they don't hinder performance.
+ |
*/
-
'aliases' => [
-
- 'App' => 'Illuminate\Support\Facades\App',
- 'Artisan' => 'Illuminate\Support\Facades\Artisan',
- 'Auth' => 'Illuminate\Support\Facades\Auth',
- 'Blade' => 'Illuminate\Support\Facades\Blade',
- 'Bus' => 'Illuminate\Support\Facades\Bus',
- 'Cache' => 'Illuminate\Support\Facades\Cache',
- 'Config' => 'Illuminate\Support\Facades\Config',
- 'Cookie' => 'Illuminate\Support\Facades\Cookie',
- 'Crypt' => 'Illuminate\Support\Facades\Crypt',
- 'DB' => 'Illuminate\Support\Facades\DB',
- 'Eloquent' => 'Illuminate\Database\Eloquent\Model',
- 'Event' => 'Illuminate\Support\Facades\Event',
- 'File' => 'Illuminate\Support\Facades\File',
- 'Hash' => 'Illuminate\Support\Facades\Hash',
- 'Input' => 'Illuminate\Support\Facades\Input',
- 'Inspiring' => 'Illuminate\Foundation\Inspiring',
- 'Lang' => 'Illuminate\Support\Facades\Lang',
- 'Log' => 'Illuminate\Support\Facades\Log',
- 'Mail' => 'Illuminate\Support\Facades\Mail',
- 'Password' => 'Illuminate\Support\Facades\Password',
- 'Queue' => 'Illuminate\Support\Facades\Queue',
- 'Redirect' => 'Illuminate\Support\Facades\Redirect',
- 'Redis' => 'Illuminate\Support\Facades\Redis',
- 'Request' => 'Illuminate\Support\Facades\Request',
- 'Response' => 'Illuminate\Support\Facades\Response',
- 'Route' => 'Illuminate\Support\Facades\Route',
- 'Schema' => 'Illuminate\Support\Facades\Schema',
- 'Session' => 'Illuminate\Support\Facades\Session',
- 'Storage' => 'Illuminate\Support\Facades\Storage',
- 'URL' => 'Illuminate\Support\Facades\URL',
- 'Validator' => 'Illuminate\Support\Facades\Validator',
- 'View' => 'Illuminate\Support\Facades\View',
- 'Form' => 'Illuminate\Html\FormFacade',
- 'HTML' => 'Illuminate\Html\HtmlFacade',
- 'phone' => 'The :attribute field contains an invalid number.',
- 'Bugsnag' => 'Bugsnag\BugsnagLaravel\BugsnagFacade',
- 'PDF' => 'Vsmoraes\Pdf\PdfFacade',
- 'Gravatar' => 'Thomaswelton\LaravelGravatar\Facades\Gravatar',
- 'UTC' => 'App\Http\Controllers\Agent\helpdesk\TicketController',
- 'Ttable' => 'App\Http\Controllers\Agent\helpdesk\TicketController', //to use getTable function.
- 'SMTPS' => 'App\Http\Controllers\HomeController',
- 'Datatable' => 'Chumper\Datatable\Facades\DatatableFacade',
- 'Zipper' => 'Chumper\Zipper\Zipper',
- 'Image' => Intervention\Image\Facades\Image::class,
- 'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth',
+ 'App' => 'Illuminate\Support\Facades\App',
+ 'Artisan' => 'Illuminate\Support\Facades\Artisan',
+ 'Auth' => 'Illuminate\Support\Facades\Auth',
+ 'Blade' => 'Illuminate\Support\Facades\Blade',
+ 'Cache' => 'Illuminate\Support\Facades\Cache',
+ 'Config' => 'Illuminate\Support\Facades\Config',
+ 'Cookie' => 'Illuminate\Support\Facades\Cookie',
+ 'Crypt' => 'Illuminate\Support\Facades\Crypt',
+ 'DB' => 'Illuminate\Support\Facades\DB',
+ 'Eloquent' => 'Illuminate\Database\Eloquent\Model',
+ 'Event' => 'Illuminate\Support\Facades\Event',
+ 'File' => 'Illuminate\Support\Facades\File',
+ 'Hash' => 'Illuminate\Support\Facades\Hash',
+ 'Input' => 'Illuminate\Support\Facades\Input',
+ 'Inspiring' => 'Illuminate\Foundation\Inspiring',
+ 'Lang' => 'Illuminate\Support\Facades\Lang',
+ 'Log' => 'Illuminate\Support\Facades\Log',
+ 'Mail' => 'Illuminate\Support\Facades\Mail',
+ 'Password' => 'Illuminate\Support\Facades\Password',
+ 'Queue' => 'Illuminate\Support\Facades\Queue',
+ 'Redirect' => 'Illuminate\Support\Facades\Redirect',
+ 'Redis' => 'Illuminate\Support\Facades\Redis',
+ 'Request' => 'Illuminate\Support\Facades\Request',
+ 'Response' => 'Illuminate\Support\Facades\Response',
+ 'Route' => 'Illuminate\Support\Facades\Route',
+ 'Schema' => 'Illuminate\Support\Facades\Schema',
+ 'Session' => 'Illuminate\Support\Facades\Session',
+ 'Storage' => 'Illuminate\Support\Facades\Storage',
+ 'URL' => 'Illuminate\Support\Facades\URL',
+ 'Validator' => 'Illuminate\Support\Facades\Validator',
+ 'View' => 'Illuminate\Support\Facades\View',
+ 'Form' => 'Illuminate\Html\FormFacade',
+ 'HTML' => 'Illuminate\Html\HtmlFacade',
+ 'phone' => 'The :attribute field contains an invalid number.',
+ 'Bugsnag' => 'Bugsnag\BugsnagLaravel\BugsnagFacade',
+ 'PDF' => 'Vsmoraes\Pdf\PdfFacade',
+ 'Gravatar' => 'Thomaswelton\LaravelGravatar\Facades\Gravatar',
+ 'UTC' => 'App\Http\Controllers\Agent\helpdesk\TicketController',
+ 'Ttable' => 'App\Http\Controllers\Agent\helpdesk\TicketController', //to use getTable function.
+ 'SMTPS' => 'App\Http\Controllers\HomeController',
+ 'Datatable' => 'Chumper\Datatable\Facades\DatatableFacade',
+ 'Zipper' => 'Chumper\Zipper\Zipper',
+ 'Image' => 'Intervention\Image\Facades\Image',
+ 'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth',
'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory',
-
+ 'Breadcrumbs' => 'DaveJamesMiller\Breadcrumbs\Facade',
+ 'GeoIP' => 'Torann\GeoIP\GeoIPFacade',
],
-
'token' => 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaXNzIjoiaHR0cDpcL1wvbG9jYWxob3N0XC9mYXZlby1oZWxwZGVzay1naXRodWJcL3B1YmxpY1wvYXBpXC92MVwvYXV0aGVudGljYXRlIiwiaWF0IjoxNDU1NzAyNDEyLCJleHAiOjE0NTU3MDYwMTIsIm5iZiI6MTQ1NTcwMjQxMiwianRpIjoiOTdlODg1ODNjOWQyNDIzNWQ4MzI3Y2ExNzI1NDY1MDQifQ.37E7H2kRCQuz5oBRkQLKhNNpaNXyk4FiEYS9RQ7HZPY',
-
- ];
+ 'name' => 'faveo helpdesk community',
+];
diff --git a/config/auth.php b/config/auth.php
index 147211188..cce68db2f 100644
--- a/config/auth.php
+++ b/config/auth.php
@@ -1,60 +1,96 @@
'eloquent',
+ |--------------------------------------------------------------------------
+ | Authentication Defaults
+ |--------------------------------------------------------------------------
+ |
+ | This option controls the default authentication "guard" and password
+ | reset options for your application. You may change these defaults
+ | as required, but they're a perfect start for most applications.
+ |
+ */
+ 'defaults' => [
+ 'guard' => 'web',
+ 'passwords' => 'users',
+ ],
/*
- |--------------------------------------------------------------------------
- | Authentication Model
- |--------------------------------------------------------------------------
- |
- | When using the "Eloquent" authentication driver, we need to know which
- | Eloquent model should be used to retrieve your users. Of course, it
- | is often just the "User" model but you may use whatever you like.
- |
- */
- 'model' => 'App\User',
+ |--------------------------------------------------------------------------
+ | Authentication Guards
+ |--------------------------------------------------------------------------
+ |
+ | Next, you may define every authentication guard for your application.
+ | Of course, a great default configuration has been defined for you
+ | here which uses session storage and the Eloquent user provider.
+ |
+ | All authentication drivers have a user provider. This defines how the
+ | users are actually retrieved out of your database or other storage
+ | mechanisms used by this application to persist your user's data.
+ |
+ | Supported: "session", "token"
+ |
+ */
+ 'guards' => [
+ 'web' => [
+ 'driver' => 'session',
+ 'provider' => 'users',
+ ],
+ 'api' => [
+ 'driver' => 'token',
+ 'provider' => 'users',
+ ],
+ ],
/*
- |--------------------------------------------------------------------------
- | Authentication Table
- |--------------------------------------------------------------------------
- |
- | When using the "Database" authentication driver, we need to know which
- | table should be used to retrieve your users. We have chosen a basic
- | default value but you may easily change it to any table you like.
- |
- */
- 'table' => 'users',
+ |--------------------------------------------------------------------------
+ | User Providers
+ |--------------------------------------------------------------------------
+ |
+ | All authentication drivers have a user provider. This defines how the
+ | users are actually retrieved out of your database or other storage
+ | mechanisms used by this application to persist your user's data.
+ |
+ | If you have multiple user tables or models you may configure multiple
+ | sources which represent each model / table. These sources may then
+ | be assigned to any extra authentication guards you have defined.
+ |
+ | Supported: "database", "eloquent"
+ |
+ */
+ 'providers' => [
+ 'users' => [
+ 'driver' => 'eloquent',
+ 'model' => App\User::class,
+ ],
+ // 'users' => [
+ // 'driver' => 'database',
+ // 'table' => 'users',
+ // ],
+ ],
/*
- |--------------------------------------------------------------------------
- | Password Reset Settings
- |--------------------------------------------------------------------------
- |
- | Here you may set the options for resetting passwords including the view
- | that is your password reset e-mail. You can also set the name of the
- | table that maintains all of the reset tokens for your application.
- |
- | The expire time is the number of minutes that the reset token should be
- | considered valid. This security feature keeps tokens short-lived so
- | they have less time to be guessed. You may change this as needed.
- |
- */
- 'password' => [
- 'email' => 'emails.password',
- 'table' => 'password_resets',
- 'expire' => 60,
+ |--------------------------------------------------------------------------
+ | Resetting Passwords
+ |--------------------------------------------------------------------------
+ |
+ | Here you may set the options for resetting passwords including the view
+ | that is your password reset e-mail. You may also set the name of the
+ | table that maintains all of the reset tokens for your application.
+ |
+ | You may specify multiple password reset configurations if you have more
+ | than one user table or model in the application and you want to have
+ | separate password reset settings based on the specific user types.
+ |
+ | The expire time is the number of minutes that the reset token should be
+ | considered valid. This security feature keeps tokens short-lived so
+ | they have less time to be guessed. You may change this as needed.
+ |
+ */
+ 'passwords' => [
+ 'users' => [
+ 'provider' => 'users',
+ 'email' => 'auth.emails.password',
+ 'table' => 'password_resets',
+ 'expire' => 60,
+ ],
],
];
diff --git a/config/breadcrumbs.php b/config/breadcrumbs.php
new file mode 100644
index 000000000..fb0caa445
--- /dev/null
+++ b/config/breadcrumbs.php
@@ -0,0 +1,7 @@
+ '_partials/breadcrumbs',
+
+];
diff --git a/config/broadcasting.php b/config/broadcasting.php
new file mode 100644
index 000000000..365ece00d
--- /dev/null
+++ b/config/broadcasting.php
@@ -0,0 +1,49 @@
+ env('BROADCAST_DRIVER', 'pusher'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Broadcast Connections
+ |--------------------------------------------------------------------------
+ |
+ | Here you may define all of the broadcast connections that will be used
+ | to broadcast events to other systems or over websockets. Samples of
+ | each available type of connection are provided inside this array.
+ |
+ */
+
+ 'connections' => [
+
+ 'pusher' => [
+ 'driver' => 'pusher',
+ 'key' => env('PUSHER_KEY'),
+ 'secret' => env('PUSHER_SECRET'),
+ 'app_id' => env('PUSHER_APP_ID'),
+ ],
+
+ 'redis' => [
+ 'driver' => 'redis',
+ 'connection' => 'default',
+ ],
+
+ 'log' => [
+ 'driver' => 'log',
+ ],
+
+ ],
+
+];
diff --git a/config/bugsnag.php b/config/bugsnag.php
index f58e0d051..dd4e3822d 100644
--- a/config/bugsnag.php
+++ b/config/bugsnag.php
@@ -1,7 +1,77 @@
'f27b54f858d9bff115b84ae438876380'
-// );
+ /*
+ |--------------------------------------------------------------------------
+ | API Key
+ |--------------------------------------------------------------------------
+ |
+ | You can find your API key on your Bugsnag dashboard.
+ |
+ | This api key points the Bugsnag notifier to the project in your account
+ | which should receive your application's uncaught exceptions.
+ |
+ */
+ 'api_key' => '280264db78f78f46e37169b2b65bed2d',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Notify Release Stages
+ |--------------------------------------------------------------------------
+ |
+ | Set which release stages should send notifications to Bugsnag.
+ |
+ | Example: array('development', 'production')
+ |
+ */
+ 'notify_release_stages' => env('BUGSNAG_NOTIFY_RELEASE_STAGES', null),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Endpoint
+ |--------------------------------------------------------------------------
+ |
+ | Set what server the Bugsnag notifier should send errors to. By default
+ | this is set to 'https://notify.bugsnag.com', but for Bugsnag Enterprise
+ | this should be the URL to your Bugsnag instance.
+ |
+ */
+ 'endpoint' => 'https://notify.bugsnag.com',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Filters
+ |--------------------------------------------------------------------------
+ |
+ | Use this if you want to ensure you don't send sensitive data such as
+ | passwords, and credit card numbers to our servers. Any keys which
+ | contain these strings will be filtered.
+ |
+ */
+ 'filters' => env('BUGSNAG_FILTERS', array('password')),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Proxy
+ |--------------------------------------------------------------------------
+ |
+ | If your server is behind a proxy server, you can configure this as well.
+ | Other than the host, none of these settings are mandatory.
+ |
+ | Note: Proxy configuration is only possible if the PHP cURL extension
+ | is installed.
+ |
+ | Example:
+ |
+ | 'proxy' => array(
+ | 'host' => 'bugsnag.com',
+ | 'port' => 42,
+ | 'user' => 'username',
+ | 'password' => 'password123'
+ | )
+ |
+ */
+ 'proxy' => env('BUGSNAG_PROXY', null)
+
+);
diff --git a/config/geoip.php b/config/geoip.php
new file mode 100644
index 000000000..23374b319
--- /dev/null
+++ b/config/geoip.php
@@ -0,0 +1,55 @@
+ 'maxmind',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Services settings
+ |--------------------------------------------------------------------------
+ |
+ | Service specific settings.
+ |
+ */
+
+ 'maxmind' => [
+ 'type' => env('GEOIP_DRIVER', 'database'), // database or web_service
+ 'user_id' => env('GEOIP_USER_ID'),
+ 'license_key' => env('GEOIP_LICENSE_KEY'),
+ 'database_path' => storage_path('app/geoip.mmdb'),
+ 'update_url' => 'https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz',
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Default Location
+ |--------------------------------------------------------------------------
+ |
+ | Return when a location is not found.
+ |
+ */
+
+ 'default_location' => [
+ 'ip' => '127.0.0.0',
+ 'isoCode' => 'IN',
+ 'country' => 'INDIA',
+ 'city' => 'Bangalore',
+ 'state' => 'KT',
+ 'postal_code' => '06510',
+ 'lat' => 41.31,
+ 'lon' => -72.92,
+ 'timezone' => 'America/New_York',
+ 'continent' => 'NA',
+ ],
+
+];
diff --git a/config/jwt.php b/config/jwt.php
index 3aaa414d4..8c0beab2a 100644
--- a/config/jwt.php
+++ b/config/jwt.php
@@ -127,8 +127,8 @@ return [
|
*/
'auth' => function ($app) {
- return new Tymon\JWTAuth\Providers\Auth\IlluminateAuthAdapter($app['auth']);
-},
+ return new Tymon\JWTAuth\Providers\Auth\IlluminateAuthAdapter($app['auth']);
+ },
/*
|--------------------------------------------------------------------------
| Storage Provider
@@ -138,7 +138,7 @@ return [
|
*/
'storage' => function ($app) {
- return new Tymon\JWTAuth\Providers\Storage\IlluminateCacheAdapter($app['cache']);
-},
+ return new Tymon\JWTAuth\Providers\Storage\IlluminateCacheAdapter($app['cache']);
+ },
],
];
diff --git a/config/mail.php b/config/mail.php
index 488be7a3e..063e62068 100644
--- a/config/mail.php
+++ b/config/mail.php
@@ -102,6 +102,4 @@ return [
| web and will instead be written to your application's logs files so
| you may inspect the message. This is great for local development.
|
- */
- 'pretend' => false,
-];
+ */];
diff --git a/database/migrations/2016_02_16_140450_create_emails_table.php b/database/migrations/2016_02_16_140450_create_emails_table.php
index 0aa0b3c7a..1f2f01cb2 100644
--- a/database/migrations/2016_02_16_140450_create_emails_table.php
+++ b/database/migrations/2016_02_16_140450_create_emails_table.php
@@ -32,6 +32,8 @@ class CreateEmailsTable extends Migration
$table->string('sending_port');
$table->string('sending_protocol');
$table->string('sending_encryption');
+ $table->string('smtp_validate');
+ $table->string('smtp_authentication');
$table->string('internal_notes');
$table->boolean('auto_response');
$table->boolean('fetching_status');
diff --git a/database/migrations/2016_02_16_140450_create_kb_article_table.php b/database/migrations/2016_02_16_140450_create_kb_article_table.php
index afb27bf7c..d7cd4a4c2 100644
--- a/database/migrations/2016_02_16_140450_create_kb_article_table.php
+++ b/database/migrations/2016_02_16_140450_create_kb_article_table.php
@@ -14,7 +14,7 @@ class CreateKbArticleTable extends Migration
{
Schema::create('kb_article', function (Blueprint $table) {
$table->increments('id');
- $table->string('name');
+ $table->text('name');
$table->string('slug');
$table->text('description', 65535);
$table->boolean('status');
diff --git a/database/migrations/2016_02_16_140450_create_settings_system_table.php b/database/migrations/2016_02_16_140450_create_settings_system_table.php
index 59b140c4c..a0b3ce02a 100644
--- a/database/migrations/2016_02_16_140450_create_settings_system_table.php
+++ b/database/migrations/2016_02_16_140450_create_settings_system_table.php
@@ -31,6 +31,7 @@ class CreateSettingsSystemTable extends Migration
$table->string('day_date_time');
$table->integer('time_zone')->unsigned()->nullable()->index('time_zone');
$table->string('content');
+ $table->string('version');
$table->timestamps();
});
}
diff --git a/database/migrations/2016_02_16_140450_create_settings_ticket_table.php b/database/migrations/2016_02_16_140450_create_settings_ticket_table.php
index 4087efcb6..789edc2d0 100644
--- a/database/migrations/2016_02_16_140450_create_settings_ticket_table.php
+++ b/database/migrations/2016_02_16_140450_create_settings_ticket_table.php
@@ -21,6 +21,7 @@ class CreateSettingsTicketTable extends Migration
$table->string('help_topic');
$table->string('max_open_ticket');
$table->string('collision_avoid');
+ $table->string('lock_ticket_frequency')->default(0);
$table->string('captcha');
$table->boolean('status');
$table->boolean('claim_response');
diff --git a/database/migrations/2016_02_16_140450_create_ticket_status_table.php b/database/migrations/2016_02_16_140450_create_ticket_status_table.php
index 68231e87c..88b603f5a 100644
--- a/database/migrations/2016_02_16_140450_create_ticket_status_table.php
+++ b/database/migrations/2016_02_16_140450_create_ticket_status_table.php
@@ -20,6 +20,8 @@ class CreateTicketStatusTable extends Migration
$table->string('message');
$table->integer('flags');
$table->integer('sort');
+ $table->integer('email_user');
+ $table->string('icon_class');
$table->string('properties');
$table->timestamps();
});
diff --git a/database/migrations/2016_02_16_140450_create_users_table.php b/database/migrations/2016_02_16_140450_create_users_table.php
index bd17eec08..5ec3e4f30 100644
--- a/database/migrations/2016_02_16_140450_create_users_table.php
+++ b/database/migrations/2016_02_16_140450_create_users_table.php
@@ -23,6 +23,7 @@ class CreateUsersTable extends Migration
$table->string('password', 60);
$table->integer('active');
$table->string('ext');
+ $table->integer('country_code');
$table->string('phone_number');
$table->string('mobile');
$table->text('agent_sign', 65535);
diff --git a/database/migrations/2016_03_31_061534_create_notification_types_table.php b/database/migrations/2016_03_31_061534_create_notification_types_table.php
index 8c5e1a08b..6eb703996 100644
--- a/database/migrations/2016_03_31_061534_create_notification_types_table.php
+++ b/database/migrations/2016_03_31_061534_create_notification_types_table.php
@@ -18,7 +18,7 @@ class CreateNotificationTypesTable extends Migration
$table->string('type');
$table->string('icon_class');
$table->timestamps();
- });
+ });
}
/**
diff --git a/database/migrations/2016_03_31_061740_create_user_notification_table.php b/database/migrations/2016_03_31_061740_create_user_notification_table.php
index b61a14574..15e0a5b77 100644
--- a/database/migrations/2016_03_31_061740_create_user_notification_table.php
+++ b/database/migrations/2016_03_31_061740_create_user_notification_table.php
@@ -18,7 +18,7 @@ class CreateUserNotificationTable extends Migration
$table->integer('user_id');
$table->integer('is_read');
$table->timestamps();
- });
+ });
}
/**
diff --git a/database/migrations/2016_04_18_115852_create_workflow_name_table.php b/database/migrations/2016_04_18_115852_create_workflow_name_table.php
index 76a41fa2a..06db5cd4a 100644
--- a/database/migrations/2016_04_18_115852_create_workflow_name_table.php
+++ b/database/migrations/2016_04_18_115852_create_workflow_name_table.php
@@ -20,7 +20,7 @@ class CreateWorkflowNameTable extends Migration
$table->string('target');
$table->text('internal_note');
$table->timestamps();
- });
+ });
}
/**
diff --git a/database/migrations/2016_04_18_115900_create_workflow_rule_table.php b/database/migrations/2016_04_18_115900_create_workflow_rule_table.php
index 7f0ca57c4..008d897bd 100644
--- a/database/migrations/2016_04_18_115900_create_workflow_rule_table.php
+++ b/database/migrations/2016_04_18_115900_create_workflow_rule_table.php
@@ -20,7 +20,7 @@ class CreateWorkflowRuleTable extends Migration
$table->string('matching_relation');
$table->text('matching_value');
$table->timestamps();
- });
+ });
Schema::table('workflow_rules', function (Blueprint $table) {
$table->foreign('workflow_id', 'workflow_rules_1')->references('id')->on('workflow_name')->onUpdate('NO ACTION')->onDelete('RESTRICT');
diff --git a/database/migrations/2016_04_18_115908_create_workflow_action_table.php b/database/migrations/2016_04_18_115908_create_workflow_action_table.php
index e27d00ffd..24b8471aa 100644
--- a/database/migrations/2016_04_18_115908_create_workflow_action_table.php
+++ b/database/migrations/2016_04_18_115908_create_workflow_action_table.php
@@ -18,10 +18,10 @@ class CreateWorkflowActionTable extends Migration
$table->string('condition');
$table->string('action');
$table->timestamps();
- });
+ });
Schema::table('workflow_action', function (Blueprint $table) {
- $table->foreign('workflow_id', 'workflow_action_1')->references('id')->on('workflow_name')->onUpdate('NO ACTION')->onDelete('RESTRICT');
- });
+ $table->foreign('workflow_id', 'workflow_action_1')->references('id')->on('workflow_name')->onUpdate('NO ACTION')->onDelete('RESTRICT');
+ });
}
/**
diff --git a/database/migrations/2016_05_10_102423_create_country_code_table.php b/database/migrations/2016_05_10_102423_create_country_code_table.php
new file mode 100644
index 000000000..31eb776ce
--- /dev/null
+++ b/database/migrations/2016_05_10_102423_create_country_code_table.php
@@ -0,0 +1,36 @@
+increments('id');
+ $table->char('iso', 2);
+ $table->string('name', 100);
+ $table->string('nicename', 100);
+ $table->char('iso3', 3);
+ $table->smallInteger('numcode');
+ $table->integer('phonecode');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('country_code');
+ }
+}
diff --git a/database/migrations/2016_05_10_102604_create_bar_notifications_table.php b/database/migrations/2016_05_10_102604_create_bar_notifications_table.php
new file mode 100644
index 000000000..c11bffd1a
--- /dev/null
+++ b/database/migrations/2016_05_10_102604_create_bar_notifications_table.php
@@ -0,0 +1,35 @@
+increments('id');
+ $table->string('key');
+ $table->string('value');
+ $table->timestamps();
+ });
+ $version = \Config::get('app.version');
+ $date = date('Y-m-d H:i:s');
+ //\DB::table('bar_notifications')->insert(['key'=>'new-install','value'=>"Congrates ! You have installed $version",'created_at'=>$date]);
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('bar_notifications');
+ }
+}
diff --git a/database/migrations/2016_05_11_105244_create_api_settings_table.php b/database/migrations/2016_05_11_105244_create_api_settings_table.php
new file mode 100644
index 000000000..bdc1270c4
--- /dev/null
+++ b/database/migrations/2016_05_11_105244_create_api_settings_table.php
@@ -0,0 +1,32 @@
+increments('id');
+ $table->string('key');
+ $table->string('value');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('api_settings');
+ }
+}
diff --git a/database/migrations/2016_05_19_055008_create_workflow_close_table.php b/database/migrations/2016_05_19_055008_create_workflow_close_table.php
new file mode 100644
index 000000000..c23098527
--- /dev/null
+++ b/database/migrations/2016_05_19_055008_create_workflow_close_table.php
@@ -0,0 +1,34 @@
+increments('id');
+ $table->integer('days');
+ $table->integer('condition');
+ $table->integer('send_email');
+ $table->integer('status');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('workflow_close');
+ }
+}
diff --git a/database/migrations/2016_06_02_072210_create_common_settings_table.php b/database/migrations/2016_06_02_072210_create_common_settings_table.php
new file mode 100644
index 000000000..68950bb19
--- /dev/null
+++ b/database/migrations/2016_06_02_072210_create_common_settings_table.php
@@ -0,0 +1,34 @@
+increments('id');
+ $table->string('option_name');
+ $table->string('option_value');
+ $table->string('status');
+ $table->string('optional_field');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('common_settings');
+ }
+}
diff --git a/database/migrations/2016_06_02_074913_create_login_attempts_table.php b/database/migrations/2016_06_02_074913_create_login_attempts_table.php
new file mode 100644
index 000000000..7c2273346
--- /dev/null
+++ b/database/migrations/2016_06_02_074913_create_login_attempts_table.php
@@ -0,0 +1,34 @@
+increments('id');
+ $table->string('User');
+ $table->string('IP');
+ $table->string('Attempts');
+ $table->datetime('LastLogin');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('login_attempts');
+ }
+}
diff --git a/database/migrations/2016_06_02_080005_create_ratings_table.php b/database/migrations/2016_06_02_080005_create_ratings_table.php
new file mode 100644
index 000000000..189a6861f
--- /dev/null
+++ b/database/migrations/2016_06_02_080005_create_ratings_table.php
@@ -0,0 +1,36 @@
+increments('id');
+ $table->string('name');
+ $table->integer('display_order');
+ $table->integer('allow_modification');
+ $table->integer('rating_scale');
+ $table->string('rating_area');
+ $table->string('restrict');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('ratings');
+ }
+}
diff --git a/database/migrations/2016_06_02_081020_create_rating_ref_table.php b/database/migrations/2016_06_02_081020_create_rating_ref_table.php
new file mode 100644
index 000000000..d4082ddd1
--- /dev/null
+++ b/database/migrations/2016_06_02_081020_create_rating_ref_table.php
@@ -0,0 +1,34 @@
+increments('id');
+ $table->integer('rating_id');
+ $table->integer('ticket_id');
+ $table->integer('thread_id');
+ $table->integer('rating_value');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('rating_ref');
+ }
+}
diff --git a/database/migrations/2016_06_02_090225_create_settings_security_table.php b/database/migrations/2016_06_02_090225_create_settings_security_table.php
new file mode 100644
index 000000000..abe4b99d1
--- /dev/null
+++ b/database/migrations/2016_06_02_090225_create_settings_security_table.php
@@ -0,0 +1,35 @@
+increments('id');
+ $table->string('lockout_message');
+ $table->integer('backlist_offender');
+ $table->integer('backlist_threshold');
+ $table->integer('lockout_period');
+ $table->integer('days_to_keep_logs');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('settings_security');
+ }
+}
diff --git a/database/migrations/2016_06_02_090628_create_templates_table.php b/database/migrations/2016_06_02_090628_create_templates_table.php
new file mode 100644
index 000000000..e19a9392c
--- /dev/null
+++ b/database/migrations/2016_06_02_090628_create_templates_table.php
@@ -0,0 +1,37 @@
+increments('id');
+ $table->string('name');
+ $table->string('variable');
+ $table->integer('type');
+ $table->string('subject');
+ $table->text('message');
+ $table->string('description');
+ $table->integer('set_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('templates');
+ }
+}
diff --git a/database/migrations/2016_06_02_094409_create_template_sets_table.php b/database/migrations/2016_06_02_094409_create_template_sets_table.php
new file mode 100644
index 000000000..e17f33ba4
--- /dev/null
+++ b/database/migrations/2016_06_02_094409_create_template_sets_table.php
@@ -0,0 +1,32 @@
+increments('id');
+ $table->string('name');
+ $table->integer('active');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('template_sets');
+ }
+}
diff --git a/database/migrations/2016_06_02_094420_create_template_types_table.php b/database/migrations/2016_06_02_094420_create_template_types_table.php
new file mode 100644
index 000000000..5e75360b1
--- /dev/null
+++ b/database/migrations/2016_06_02_094420_create_template_types_table.php
@@ -0,0 +1,31 @@
+increments('id');
+ $table->string('name');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('settings_types');
+ }
+}
diff --git a/database/migrations/2016_06_02_095357_create_ticket_token_table.php b/database/migrations/2016_06_02_095357_create_ticket_token_table.php
new file mode 100644
index 000000000..9df46c1cc
--- /dev/null
+++ b/database/migrations/2016_06_02_095357_create_ticket_token_table.php
@@ -0,0 +1,32 @@
+increments('id');
+ $table->integer('ticket_id');
+ $table->string('token');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::drop('ticket_token');
+ }
+}
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index 776579992..d40a87b8b 100644
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -1,21 +1,27 @@
$date_time_format]);
}
+ NotificationType::create(['id' => '1', 'message' => 'A new user is registered', 'type' => 'registration', 'icon_class' => 'fa fa-user']);
+ NotificationType::create(['id' => '2', 'message' => 'You have a new reply on this ticket', 'type' => 'reply', 'icon_class' => 'fa fa-envelope']);
+ NotificationType::create(['id' => '3', 'message' => 'A new ticket has been created', 'type' => 'new_ticket', 'icon_class' => 'fa fa-envelope']);
+ WorkflowClose::create(['id' => '1', 'days' => '2', 'condition' => '1', 'send_email' => '1', 'status' => '3']);
+
/* Date format */
$date_formats = [
'dd/mm/yyyy',
@@ -238,9 +252,9 @@ class DatabaseSeeder extends Seeder
Groups::create(['name' => 'Group B', 'group_status' => '1', 'can_create_ticket' => '1', 'can_edit_ticket' => '0', 'can_post_ticket' => '0', 'can_close_ticket' => '1', 'can_assign_ticket' => '1', 'can_transfer_ticket' => '1', 'can_delete_ticket' => '1', 'can_ban_email' => '1', 'can_manage_canned' => '1', 'can_view_agent_stats' => '1', 'department_access' => '1']);
Groups::create(['name' => 'Group C', 'group_status' => '1', 'can_create_ticket' => '0', 'can_edit_ticket' => '0', 'can_post_ticket' => '0', 'can_close_ticket' => '1', 'can_assign_ticket' => '0', 'can_transfer_ticket' => '0', 'can_delete_ticket' => '0', 'can_ban_email' => '0', 'can_manage_canned' => '0', 'can_view_agent_stats' => '0', 'department_access' => '0']);
/* Department */
- Department::create(['name' => 'Support', 'sla' => '1']);
- Department::create(['name' => 'Sales', 'sla' => '1']);
- Department::create(['name' => 'Operation', 'sla' => '1']);
+ Department::create(['name' => 'Support', 'type' => '1', 'sla' => '1']);
+ Department::create(['name' => 'Sales', 'type' => '1', 'sla' => '1']);
+ Department::create(['name' => 'Operation', 'type' => '1', 'sla' => '1']);
/* Helptopic */
help_topic::create(['topic' => 'Support query', 'department' => '1', 'ticket_status' => '1', 'priority' => '2', 'sla_plan' => '1', 'ticket_num_format' => '1', 'status' => '1', 'type' => '1', 'auto_response' => '0']);
help_topic::create(['topic' => 'Sales query', 'department' => '2', 'ticket_status' => '1', 'priority' => '2', 'sla_plan' => '1', 'ticket_num_format' => '1', 'status' => '0', 'type' => '1', 'auto_response' => '0']);
@@ -248,7 +262,7 @@ class DatabaseSeeder extends Seeder
/* Daily notification log */
Log_notification::create(['log' => 'NOT-1']);
/* System complete settings */
- Alert::create(['id' => '1', 'ticket_status' => '1', 'ticket_admin_email' => '1', 'assignment_status' => '1', 'assignment_assigned_status' => '1', 'assignment_assigned_agent' => '1']);
+ Alert::create(['id' => '1', 'ticket_status' => '1', 'ticket_admin_email' => '1', 'assignment_status' => '1', 'assignment_status' => '1', 'assignment_assigned_agent' => '1']);
Company::create(['id' => '1']);
Email::create(['id' => '1', 'template' => 'default', 'email_fetching' => '1', 'notification_cron' => '1', 'all_emails' => '1', 'email_collaborator' => '1', 'attachment' => '1']);
Responder::create(['id' => '1', 'new_ticket' => '1', 'agent_new_ticket' => '1']);
@@ -285,5 +299,1725 @@ class DatabaseSeeder extends Seeder
Widgets::create(['id' => '20', 'name' => 'instagram']);
/* Knowledge base setting */
Settings::create(['id' => 'id', 'pagination' => '10']);
- }
+ /* Counrty phone code and iso code */
+
+ CountryCode::create(['id' => '1',
+ 'iso' => 'AF',
+ 'name' => 'AFGHANISTAN',
+ 'nicename' => 'Afghanistan',
+ 'iso3' => 'AFG',
+ 'numcode' => '4',
+ 'phonecode' => '93', ]);
+ CountryCode::create(['id' => '2',
+ 'iso' => 'AL',
+ 'name' => 'ALBANIA',
+ 'nicename' => 'Albania',
+ 'iso3' => 'ALB',
+ 'numcode' => '8',
+ 'phonecode' => '355', ]);
+ CountryCode::create(['id' => '3',
+ 'iso' => 'DZ',
+ 'name' => 'ALGERIA',
+ 'nicename' => 'Algeria',
+ 'iso3' => 'DZA',
+ 'numcode' => '12',
+ 'phonecode' => '213', ]);
+ CountryCode::create(['id' => '4',
+ 'iso' => 'AS',
+ 'name' => 'AMERICAN SAMOA',
+ 'nicename' => 'American Samoa',
+ 'iso3' => 'ASM',
+ 'numcode' => '16',
+ 'phonecode' => '1684', ]);
+ CountryCode::create(['id' => '5',
+ 'iso' => 'AD',
+ 'name' => 'ANDORRA',
+ 'nicename' => 'Andorra',
+ 'iso3' => 'AND',
+ 'numcode' => '20',
+ 'phonecode' => '376', ]);
+ CountryCode::create(['id' => '6',
+ 'iso' => 'AO',
+ 'name' => 'ANGOLA',
+ 'nicename' => 'Angola',
+ 'iso3' => 'AGO',
+ 'numcode' => '24',
+ 'phonecode' => '244', ]);
+ CountryCode::create(['id' => '7',
+ 'iso' => 'AI',
+ 'name' => 'ANGUILLA',
+ 'nicename' => 'Anguilla',
+ 'iso3' => 'AIA',
+ 'numcode' => '660',
+ 'phonecode' => '1264', ]);
+ CountryCode::create(['id' => '8',
+ 'iso' => 'AQ',
+ 'name' => 'ANTARCTICA',
+ 'nicename' => 'Antarctica',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '0', ]);
+ CountryCode::create(['id' => '9',
+ 'iso' => 'AG',
+ 'name' => 'ANTIGUA AND BARBUDA',
+ 'nicename' => 'Antigua and Barbuda',
+ 'iso3' => 'ATG',
+ 'numcode' => '28',
+ 'phonecode' => '1268', ]);
+ CountryCode::create(['id' => '10',
+ 'iso' => 'AR',
+ 'name' => 'ARGENTINA',
+ 'nicename' => 'Argentina',
+ 'iso3' => 'ARG',
+ 'numcode' => '32',
+ 'phonecode' => '54', ]);
+ CountryCode::create(['id' => '11',
+ 'iso' => 'AM',
+ 'name' => 'ARMENIA',
+ 'nicename' => 'Armenia',
+ 'iso3' => 'ARM',
+ 'numcode' => '51',
+ 'phonecode' => '374', ]);
+ CountryCode::create(['id' => '12',
+ 'iso' => 'AW',
+ 'name' => 'ARUBA',
+ 'nicename' => 'Aruba',
+ 'iso3' => 'ABW',
+ 'numcode' => '533',
+ 'phonecode' => '297', ]);
+ CountryCode::create(['id' => '13',
+ 'iso' => 'AU',
+ 'name' => 'AUSTRALIA',
+ 'nicename' => 'Australia',
+ 'iso3' => 'AUS',
+ 'numcode' => '36',
+ 'phonecode' => '61', ]);
+ CountryCode::create(['id' => '14',
+ 'iso' => 'AT',
+ 'name' => 'AUSTRIA',
+ 'nicename' => 'Austria',
+ 'iso3' => 'AUT',
+ 'numcode' => '40',
+ 'phonecode' => '43', ]);
+ CountryCode::create(['id' => '15',
+ 'iso' => 'AZ',
+ 'name' => 'AZERBAIJAN',
+ 'nicename' => 'Azerbaijan',
+ 'iso3' => 'AZE',
+ 'numcode' => '31',
+ 'phonecode' => '994', ]);
+ CountryCode::create(['id' => '16',
+ 'iso' => 'BS',
+ 'name' => 'BAHAMAS',
+ 'nicename' => 'Bahamas',
+ 'iso3' => 'BHS',
+ 'numcode' => '44',
+ 'phonecode' => '1242', ]);
+ CountryCode::create(['id' => '17',
+ 'iso' => 'BH',
+ 'name' => 'BAHRAIN',
+ 'nicename' => 'Bahrain',
+ 'iso3' => 'BHR',
+ 'numcode' => '48',
+ 'phonecode' => '973', ]);
+ CountryCode::create(['id' => '18',
+ 'iso' => 'BD',
+ 'name' => 'BANGLADESH',
+ 'nicename' => 'Bangladesh',
+ 'iso3' => 'BGD',
+ 'numcode' => '50',
+ 'phonecode' => '880', ]);
+ CountryCode::create(['id' => '19',
+ 'iso' => 'BB',
+ 'name' => 'BARBADOS',
+ 'nicename' => 'Barbados',
+ 'iso3' => 'BRB',
+ 'numcode' => '52',
+ 'phonecode' => '1246', ]);
+ CountryCode::create(['id' => '20',
+ 'iso' => 'BY',
+ 'name' => 'BELARUS',
+ 'nicename' => 'Belarus',
+ 'iso3' => 'BLR',
+ 'numcode' => '112',
+ 'phonecode' => '375', ]);
+ CountryCode::create(['id' => '21',
+ 'iso' => 'BE',
+ 'name' => 'BELGIUM',
+ 'nicename' => 'Belgium',
+ 'iso3' => 'BEL',
+ 'numcode' => '56',
+ 'phonecode' => '32', ]);
+ CountryCode::create(['id' => '22',
+ 'iso' => 'BZ',
+ 'name' => 'BELIZE',
+ 'nicename' => 'Belize',
+ 'iso3' => 'BLZ',
+ 'numcode' => '84',
+ 'phonecode' => '501', ]);
+ CountryCode::create(['id' => '23',
+ 'iso' => 'BJ',
+ 'name' => 'BENIN',
+ 'nicename' => 'Benin',
+ 'iso3' => 'BEN',
+ 'numcode' => '204',
+ 'phonecode' => '229', ]);
+ CountryCode::create(['id' => '24',
+ 'iso' => 'BM',
+ 'name' => 'BERMUDA',
+ 'nicename' => 'Bermuda',
+ 'iso3' => 'BMU',
+ 'numcode' => '60',
+ 'phonecode' => '1441', ]);
+ CountryCode::create(['id' => '25',
+ 'iso' => 'BT',
+ 'name' => 'BHUTAN',
+ 'nicename' => 'Bhutan',
+ 'iso3' => 'BTN',
+ 'numcode' => '64',
+ 'phonecode' => '975', ]);
+ CountryCode::create(['id' => '26',
+ 'iso' => 'BO',
+ 'name' => 'BOLIVIA',
+ 'nicename' => 'Bolivia',
+ 'iso3' => 'BOL',
+ 'numcode' => '68',
+ 'phonecode' => '591', ]);
+ CountryCode::create(['id' => '27',
+ 'iso' => 'BA',
+ 'name' => 'BOSNIA AND HERZEGOVINA',
+ 'nicename' => 'Bosnia and Herzegovina',
+ 'iso3' => 'BIH',
+ 'numcode' => '70',
+ 'phonecode' => '387', ]);
+ CountryCode::create(['id' => '28',
+ 'iso' => 'BW',
+ 'name' => 'BOTSWANA',
+ 'nicename' => 'Botswana',
+ 'iso3' => 'BWA',
+ 'numcode' => '72',
+ 'phonecode' => '267', ]);
+ CountryCode::create(['id' => '29',
+ 'iso' => 'BV',
+ 'name' => 'BOUVET ISLAND',
+ 'nicename' => 'Bouvet Island',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '0', ]);
+ CountryCode::create(['id' => '30',
+ 'iso' => 'BR',
+ 'name' => 'BRAZIL',
+ 'nicename' => 'Brazil',
+ 'iso3' => 'BRA',
+ 'numcode' => '76',
+ 'phonecode' => '55', ]);
+ CountryCode::create(['id' => '31',
+ 'iso' => 'IO',
+ 'name' => 'BRITISH INDIAN OCEAN TERRITORY',
+ 'nicename' => 'British Indian Ocean Territory',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '246', ]);
+ CountryCode::create(['id' => '32',
+ 'iso' => 'BN',
+ 'name' => 'BRUNEI DARUSSALAM',
+ 'nicename' => 'Brunei Darussalam',
+ 'iso3' => 'BRN',
+ 'numcode' => '96',
+ 'phonecode' => '673', ]);
+ CountryCode::create(['id' => '33',
+ 'iso' => 'BG',
+ 'name' => 'BULGARIA',
+ 'nicename' => 'Bulgaria',
+ 'iso3' => 'BGR',
+ 'numcode' => '100',
+ 'phonecode' => '359', ]);
+ CountryCode::create(['id' => '34',
+ 'iso' => 'BF',
+ 'name' => 'BURKINA FASO',
+ 'nicename' => 'Burkina Faso',
+ 'iso3' => 'BFA',
+ 'numcode' => '854',
+ 'phonecode' => '226', ]);
+ CountryCode::create(['id' => '35',
+ 'iso' => 'BI',
+ 'name' => 'BURUNDI',
+ 'nicename' => 'Burundi',
+ 'iso3' => 'BDI',
+ 'numcode' => '108',
+ 'phonecode' => '257', ]);
+ CountryCode::create(['id' => '36',
+ 'iso' => 'KH',
+ 'name' => 'CAMBODIA',
+ 'nicename' => 'Cambodia',
+ 'iso3' => 'KHM',
+ 'numcode' => '116',
+ 'phonecode' => '855', ]);
+ CountryCode::create(['id' => '37',
+ 'iso' => 'CM',
+ 'name' => 'CAMEROON',
+ 'nicename' => 'Cameroon',
+ 'iso3' => 'CMR',
+ 'numcode' => '120',
+ 'phonecode' => '237', ]);
+ CountryCode::create(['id' => '38',
+ 'iso' => 'CA',
+ 'name' => 'CANADA',
+ 'nicename' => 'Canada',
+ 'iso3' => 'CAN',
+ 'numcode' => '124',
+ 'phonecode' => '1', ]);
+ CountryCode::create(['id' => '39',
+ 'iso' => 'CV',
+ 'name' => 'CAPE VERDE',
+ 'nicename' => 'Cape Verde',
+ 'iso3' => 'CPV',
+ 'numcode' => '132',
+ 'phonecode' => '238', ]);
+ CountryCode::create(['id' => '40',
+ 'iso' => 'KY',
+ 'name' => 'CAYMAN ISLANDS',
+ 'nicename' => 'Cayman Islands',
+ 'iso3' => 'CYM',
+ 'numcode' => '136',
+ 'phonecode' => '1345', ]);
+ CountryCode::create(['id' => '41',
+ 'iso' => 'CF',
+ 'name' => 'CENTRAL AFRICAN REPUBLIC',
+ 'nicename' => 'Central African Republic',
+ 'iso3' => 'CAF',
+ 'numcode' => '140',
+ 'phonecode' => '236', ]);
+ CountryCode::create(['id' => '42',
+ 'iso' => 'TD',
+ 'name' => 'CHAD',
+ 'nicename' => 'Chad',
+ 'iso3' => 'TCD',
+ 'numcode' => '148',
+ 'phonecode' => '235', ]);
+ CountryCode::create(['id' => '43',
+ 'iso' => 'CL',
+ 'name' => 'CHILE',
+ 'nicename' => 'Chile',
+ 'iso3' => 'CHL',
+ 'numcode' => '152',
+ 'phonecode' => '56', ]);
+ CountryCode::create(['id' => '44',
+ 'iso' => 'CN',
+ 'name' => 'CHINA',
+ 'nicename' => 'China',
+ 'iso3' => 'CHN',
+ 'numcode' => '156',
+ 'phonecode' => '86', ]);
+ CountryCode::create(['id' => '45',
+ 'iso' => 'CX',
+ 'name' => 'CHRISTMAS ISLAND',
+ 'nicename' => 'Christmas Island',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '61', ]);
+ CountryCode::create(['id' => '46',
+ 'iso' => 'CC',
+ 'name' => 'COCOS (KEELING) ISLANDS',
+ 'nicename' => 'Cocos (Keeling) Islands',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '672', ]);
+ CountryCode::create(['id' => '47',
+ 'iso' => 'CO',
+ 'name' => 'COLOMBIA',
+ 'nicename' => 'Colombia',
+ 'iso3' => 'COL',
+ 'numcode' => '170',
+ 'phonecode' => '57', ]);
+ CountryCode::create(['id' => '48',
+ 'iso' => 'KM',
+ 'name' => 'COMOROS',
+ 'nicename' => 'Comoros',
+ 'iso3' => 'COM',
+ 'numcode' => '174',
+ 'phonecode' => '269', ]);
+ CountryCode::create(['id' => '49',
+ 'iso' => 'CG',
+ 'name' => 'CONGO',
+ 'nicename' => 'Congo',
+ 'iso3' => 'COG',
+ 'numcode' => '178',
+ 'phonecode' => '242', ]);
+ CountryCode::create(['id' => '50',
+ 'iso' => 'CD',
+ 'name' => 'CONGO, THE DEMOCRATIC REPUBLIC OF THE',
+ 'nicename' => 'Congo, the Democratic Republic of the',
+ 'iso3' => 'COD',
+ 'numcode' => '180',
+ 'phonecode' => '242', ]);
+ CountryCode::create(['id' => '51',
+ 'iso' => 'CK',
+ 'name' => 'COOK ISLANDS',
+ 'nicename' => 'Cook Islands',
+ 'iso3' => 'COK',
+ 'numcode' => '184',
+ 'phonecode' => '682', ]);
+ CountryCode::create(['id' => '52',
+ 'iso' => 'CR',
+ 'name' => 'COSTA RICA',
+ 'nicename' => 'Costa Rica',
+ 'iso3' => 'CRI',
+ 'numcode' => '188',
+ 'phonecode' => '506', ]);
+ CountryCode::create(['id' => '53',
+ 'iso' => 'CI',
+ 'name' => 'COTE DIVOIRE',
+ 'nicename' => 'Cote DIvoire',
+ 'iso3' => 'CIV',
+ 'numcode' => '384',
+ 'phonecode' => '225', ]);
+ CountryCode::create(['id' => '54',
+ 'iso' => 'HR',
+ 'name' => 'CROATIA',
+ 'nicename' => 'Croatia',
+ 'iso3' => 'HRV',
+ 'numcode' => '191',
+ 'phonecode' => '385', ]);
+ CountryCode::create(['id' => '55',
+ 'iso' => 'CU',
+ 'name' => 'CUBA',
+ 'nicename' => 'Cuba',
+ 'iso3' => 'CUB',
+ 'numcode' => '192',
+ 'phonecode' => '53', ]);
+ CountryCode::create(['id' => '56',
+ 'iso' => 'CY',
+ 'name' => 'CYPRUS',
+ 'nicename' => 'Cyprus',
+ 'iso3' => 'CYP',
+ 'numcode' => '196',
+ 'phonecode' => '357', ]);
+ CountryCode::create(['id' => '57',
+ 'iso' => 'CZ',
+ 'name' => 'CZECH REPUBLIC',
+ 'nicename' => 'Czech Republic',
+ 'iso3' => 'CZE',
+ 'numcode' => '203',
+ 'phonecode' => '420', ]);
+ CountryCode::create(['id' => '58',
+ 'iso' => 'DK',
+ 'name' => 'DENMARK',
+ 'nicename' => 'Denmark',
+ 'iso3' => 'DNK',
+ 'numcode' => '208',
+ 'phonecode' => '45', ]);
+ CountryCode::create(['id' => '59',
+ 'iso' => 'DJ',
+ 'name' => 'DJIBOUTI',
+ 'nicename' => 'Djibouti',
+ 'iso3' => 'DJI',
+ 'numcode' => '262',
+ 'phonecode' => '253', ]);
+ CountryCode::create(['id' => '60',
+ 'iso' => 'DM',
+ 'name' => 'DOMINICA',
+ 'nicename' => 'Dominica',
+ 'iso3' => 'DMA',
+ 'numcode' => '212',
+ 'phonecode' => '1767', ]);
+ CountryCode::create(['id' => '61',
+ 'iso' => 'DO',
+ 'name' => 'DOMINICAN REPUBLIC',
+ 'nicename' => 'Dominican Republic',
+ 'iso3' => 'DOM',
+ 'numcode' => '214',
+ 'phonecode' => '1809', ]);
+ CountryCode::create(['id' => '62',
+ 'iso' => 'EC',
+ 'name' => 'ECUADOR',
+ 'nicename' => 'Ecuador',
+ 'iso3' => 'ECU',
+ 'numcode' => '218',
+ 'phonecode' => '593', ]);
+ CountryCode::create(['id' => '63',
+ 'iso' => 'EG',
+ 'name' => 'EGYPT',
+ 'nicename' => 'Egypt',
+ 'iso3' => 'EGY',
+ 'numcode' => '818',
+ 'phonecode' => '20', ]);
+ CountryCode::create(['id' => '64',
+ 'iso' => 'SV',
+ 'name' => 'EL SALVADOR',
+ 'nicename' => 'El Salvador',
+ 'iso3' => 'SLV',
+ 'numcode' => '222',
+ 'phonecode' => '503', ]);
+ CountryCode::create(['id' => '65',
+ 'iso' => 'GQ',
+ 'name' => 'EQUATORIAL GUINEA',
+ 'nicename' => 'Equatorial Guinea',
+ 'iso3' => 'GNQ',
+ 'numcode' => '226',
+ 'phonecode' => '240', ]);
+ CountryCode::create(['id' => '66',
+ 'iso' => 'ER',
+ 'name' => 'ERITREA',
+ 'nicename' => 'Eritrea',
+ 'iso3' => 'ERI',
+ 'numcode' => '232',
+ 'phonecode' => '291', ]);
+ CountryCode::create(['id' => '67',
+ 'iso' => 'EE',
+ 'name' => 'ESTONIA',
+ 'nicename' => 'Estonia',
+ 'iso3' => 'EST',
+ 'numcode' => '233',
+ 'phonecode' => '372', ]);
+ CountryCode::create(['id' => '68',
+ 'iso' => 'ET',
+ 'name' => 'ETHIOPIA',
+ 'nicename' => 'Ethiopia',
+ 'iso3' => 'ETH',
+ 'numcode' => '231',
+ 'phonecode' => '251', ]);
+ CountryCode::create(['id' => '69',
+ 'iso' => 'FK',
+ 'name' => 'FALKLAND ISLANDS (MALVINAS)',
+ 'nicename' => 'Falkland Islands (Malvinas)',
+ 'iso3' => 'FLK',
+ 'numcode' => '238',
+ 'phonecode' => '500', ]);
+ CountryCode::create(['id' => '70',
+ 'iso' => 'FO',
+ 'name' => 'FAROE ISLANDS',
+ 'nicename' => 'Faroe Islands',
+ 'iso3' => 'FRO',
+ 'numcode' => '234',
+ 'phonecode' => '298', ]);
+ CountryCode::create(['id' => '71',
+ 'iso' => 'FJ',
+ 'name' => 'FIJI',
+ 'nicename' => 'Fiji',
+ 'iso3' => 'FJI',
+ 'numcode' => '242',
+ 'phonecode' => '679', ]);
+ CountryCode::create(['id' => '72',
+ 'iso' => 'FI',
+ 'name' => 'FINLAND',
+ 'nicename' => 'Finland',
+ 'iso3' => 'FIN',
+ 'numcode' => '246',
+ 'phonecode' => '358', ]);
+ CountryCode::create(['id' => '73',
+ 'iso' => 'FR',
+ 'name' => 'FRANCE',
+ 'nicename' => 'France',
+ 'iso3' => 'FRA',
+ 'numcode' => '250',
+ 'phonecode' => '33', ]);
+ CountryCode::create(['id' => '74',
+ 'iso' => 'GF',
+ 'name' => 'FRENCH GUIANA',
+ 'nicename' => 'French Guiana',
+ 'iso3' => 'GUF',
+ 'numcode' => '254',
+ 'phonecode' => '594', ]);
+ CountryCode::create(['id' => '75',
+ 'iso' => 'PF',
+ 'name' => 'FRENCH POLYNESIA',
+ 'nicename' => 'French Polynesia',
+ 'iso3' => 'PYF',
+ 'numcode' => '258',
+ 'phonecode' => '689', ]);
+ CountryCode::create(['id' => '76',
+ 'iso' => 'TF',
+ 'name' => 'FRENCH SOUTHERN TERRITORIES',
+ 'nicename' => 'French Southern Territories',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '0', ]);
+ CountryCode::create(['id' => '77',
+ 'iso' => 'GA',
+ 'name' => 'GABON',
+ 'nicename' => 'Gabon',
+ 'iso3' => 'GAB',
+ 'numcode' => '266',
+ 'phonecode' => '241', ]);
+ CountryCode::create(['id' => '78',
+ 'iso' => 'GM',
+ 'name' => 'GAMBIA',
+ 'nicename' => 'Gambia',
+ 'iso3' => 'GMB',
+ 'numcode' => '270',
+ 'phonecode' => '220', ]);
+ CountryCode::create(['id' => '79',
+ 'iso' => 'GE',
+ 'name' => 'GEORGIA',
+ 'nicename' => 'Georgia',
+ 'iso3' => 'GEO',
+ 'numcode' => '268',
+ 'phonecode' => '995', ]);
+ CountryCode::create(['id' => '80',
+ 'iso' => 'DE',
+ 'name' => 'GERMANY',
+ 'nicename' => 'Germany',
+ 'iso3' => 'DEU',
+ 'numcode' => '276',
+ 'phonecode' => '49', ]);
+ CountryCode::create(['id' => '81',
+ 'iso' => 'GH',
+ 'name' => 'GHANA',
+ 'nicename' => 'Ghana',
+ 'iso3' => 'GHA',
+ 'numcode' => '288',
+ 'phonecode' => '233', ]);
+ CountryCode::create(['id' => '82',
+ 'iso' => 'GI',
+ 'name' => 'GIBRALTAR',
+ 'nicename' => 'Gibraltar',
+ 'iso3' => 'GIB',
+ 'numcode' => '292',
+ 'phonecode' => '350', ]);
+ CountryCode::create(['id' => '83',
+ 'iso' => 'GR',
+ 'name' => 'GREECE',
+ 'nicename' => 'Greece',
+ 'iso3' => 'GRC',
+ 'numcode' => '300',
+ 'phonecode' => '30', ]);
+ CountryCode::create(['id' => '84',
+ 'iso' => 'GL',
+ 'name' => 'GREENLAND',
+ 'nicename' => 'Greenland',
+ 'iso3' => 'GRL',
+ 'numcode' => '304',
+ 'phonecode' => '299', ]);
+ CountryCode::create(['id' => '85',
+ 'iso' => 'GD',
+ 'name' => 'GRENADA',
+ 'nicename' => 'Grenada',
+ 'iso3' => 'GRD',
+ 'numcode' => '308',
+ 'phonecode' => '1473', ]);
+ CountryCode::create(['id' => '86',
+ 'iso' => 'GP',
+ 'name' => 'GUADELOUPE',
+ 'nicename' => 'Guadeloupe',
+ 'iso3' => 'GLP',
+ 'numcode' => '312',
+ 'phonecode' => '590', ]);
+ CountryCode::create(['id' => '87',
+ 'iso' => 'GU',
+ 'name' => 'GUAM',
+ 'nicename' => 'Guam',
+ 'iso3' => 'GUM',
+ 'numcode' => '316',
+ 'phonecode' => '1671', ]);
+ CountryCode::create(['id' => '88',
+ 'iso' => 'GT',
+ 'name' => 'GUATEMALA',
+ 'nicename' => 'Guatemala',
+ 'iso3' => 'GTM',
+ 'numcode' => '320',
+ 'phonecode' => '502', ]);
+ CountryCode::create(['id' => '89',
+ 'iso' => 'GN',
+ 'name' => 'GUINEA',
+ 'nicename' => 'Guinea',
+ 'iso3' => 'GIN',
+ 'numcode' => '324',
+ 'phonecode' => '224', ]);
+ CountryCode::create(['id' => '90',
+ 'iso' => 'GW',
+ 'name' => 'GUINEA-BISSAU',
+ 'nicename' => 'Guinea-Bissau',
+ 'iso3' => 'GNB',
+ 'numcode' => '624',
+ 'phonecode' => '245', ]);
+ CountryCode::create(['id' => '91',
+ 'iso' => 'GY',
+ 'name' => 'GUYANA',
+ 'nicename' => 'Guyana',
+ 'iso3' => 'GUY',
+ 'numcode' => '328',
+ 'phonecode' => '592', ]);
+ CountryCode::create(['id' => '92',
+ 'iso' => 'HT',
+ 'name' => 'HAITI',
+ 'nicename' => 'Haiti',
+ 'iso3' => 'HTI',
+ 'numcode' => '332',
+ 'phonecode' => '509', ]);
+ CountryCode::create(['id' => '93',
+ 'iso' => 'HM',
+ 'name' => 'HEARD ISLAND AND MCDONALD ISLANDS',
+ 'nicename' => 'Heard Island and Mcdonald Islands',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '0', ]);
+ CountryCode::create(['id' => '94',
+ 'iso' => 'VA',
+ 'name' => 'HOLY SEE (VATICAN CITY STATE)',
+ 'nicename' => 'Holy See (Vatican City State)',
+ 'iso3' => 'VAT',
+ 'numcode' => '336',
+ 'phonecode' => '39', ]);
+ CountryCode::create(['id' => '95',
+ 'iso' => 'HN',
+ 'name' => 'HONDURAS',
+ 'nicename' => 'Honduras',
+ 'iso3' => 'HND',
+ 'numcode' => '340',
+ 'phonecode' => '504', ]);
+ CountryCode::create(['id' => '96',
+ 'iso' => 'HK',
+ 'name' => 'HONG KONG',
+ 'nicename' => 'Hong Kong',
+ 'iso3' => 'HKG',
+ 'numcode' => '344',
+ 'phonecode' => '852', ]);
+ CountryCode::create(['id' => '97',
+ 'iso' => 'HU',
+ 'name' => 'HUNGARY',
+ 'nicename' => 'Hungary',
+ 'iso3' => 'HUN',
+ 'numcode' => '348',
+ 'phonecode' => '36', ]);
+ CountryCode::create(['id' => '98',
+ 'iso' => 'IS',
+ 'name' => 'ICELAND',
+ 'nicename' => 'Iceland',
+ 'iso3' => 'ISL',
+ 'numcode' => '352',
+ 'phonecode' => '354', ]);
+ CountryCode::create(['id' => '99',
+ 'iso' => 'IN',
+ 'name' => 'INDIA',
+ 'nicename' => 'India',
+ 'iso3' => 'IND',
+ 'numcode' => '356',
+ 'phonecode' => '91', ]);
+ CountryCode::create(['id' => '100',
+ 'iso' => 'ID',
+ 'name' => 'INDONESIA',
+ 'nicename' => 'Indonesia',
+ 'iso3' => 'IDN',
+ 'numcode' => '360',
+ 'phonecode' => '62', ]);
+ CountryCode::create(['id' => '101',
+ 'iso' => 'IR',
+ 'name' => 'IRAN, ISLAMIC REPUBLIC OF',
+ 'nicename' => 'Iran, Islamic Republic of',
+ 'iso3' => 'IRN',
+ 'numcode' => '364',
+ 'phonecode' => '98', ]);
+ CountryCode::create(['id' => '102',
+ 'iso' => 'IQ',
+ 'name' => 'IRAQ',
+ 'nicename' => 'Iraq',
+ 'iso3' => 'IRQ',
+ 'numcode' => '368',
+ 'phonecode' => '964', ]);
+ CountryCode::create(['id' => '103',
+ 'iso' => 'IE',
+ 'name' => 'IRELAND',
+ 'nicename' => 'Ireland',
+ 'iso3' => 'IRL',
+ 'numcode' => '372',
+ 'phonecode' => '353', ]);
+ CountryCode::create(['id' => '104',
+ 'iso' => 'IL',
+ 'name' => 'ISRAEL',
+ 'nicename' => 'Israel',
+ 'iso3' => 'ISR',
+ 'numcode' => '376',
+ 'phonecode' => '972', ]);
+ CountryCode::create(['id' => '105',
+ 'iso' => 'IT',
+ 'name' => 'ITALY',
+ 'nicename' => 'Italy',
+ 'iso3' => 'ITA',
+ 'numcode' => '380',
+ 'phonecode' => '39', ]);
+ CountryCode::create(['id' => '106',
+ 'iso' => 'JM',
+ 'name' => 'JAMAICA',
+ 'nicename' => 'Jamaica',
+ 'iso3' => 'JAM',
+ 'numcode' => '388',
+ 'phonecode' => '1876', ]);
+ CountryCode::create(['id' => '107',
+ 'iso' => 'JP',
+ 'name' => 'JAPAN',
+ 'nicename' => 'Japan',
+ 'iso3' => 'JPN',
+ 'numcode' => '392',
+ 'phonecode' => '81', ]);
+ CountryCode::create(['id' => '108',
+ 'iso' => 'JO',
+ 'name' => 'JORDAN',
+ 'nicename' => 'Jordan',
+ 'iso3' => 'JOR',
+ 'numcode' => '400',
+ 'phonecode' => '962', ]);
+ CountryCode::create(['id' => '109',
+ 'iso' => 'KZ',
+ 'name' => 'KAZAKHSTAN',
+ 'nicename' => 'Kazakhstan',
+ 'iso3' => 'KAZ',
+ 'numcode' => '398',
+ 'phonecode' => '7', ]);
+ CountryCode::create(['id' => '110',
+ 'iso' => 'KE',
+ 'name' => 'KENYA',
+ 'nicename' => 'Kenya',
+ 'iso3' => 'KEN',
+ 'numcode' => '404',
+ 'phonecode' => '254', ]);
+ CountryCode::create(['id' => '111',
+ 'iso' => 'KI',
+ 'name' => 'KIRIBATI',
+ 'nicename' => 'Kiribati',
+ 'iso3' => 'KIR',
+ 'numcode' => '296',
+ 'phonecode' => '686', ]);
+ CountryCode::create(['id' => '112',
+ 'iso' => 'KP',
+ 'name' => 'KOREA, DEMOCRATIC PEOPLES REPUBLIC OF',
+ 'nicename' => 'Korea, Democratic Peoples Republic of',
+ 'iso3' => 'PRK',
+ 'numcode' => '408',
+ 'phonecode' => '850', ]);
+ CountryCode::create(['id' => '113',
+ 'iso' => 'KR',
+ 'name' => 'KOREA, REPUBLIC OF',
+ 'nicename' => 'Korea, Republic of',
+ 'iso3' => 'KOR',
+ 'numcode' => '410',
+ 'phonecode' => '82', ]);
+ CountryCode::create(['id' => '114',
+ 'iso' => 'KW',
+ 'name' => 'KUWAIT',
+ 'nicename' => 'Kuwait',
+ 'iso3' => 'KWT',
+ 'numcode' => '414',
+ 'phonecode' => '965', ]);
+ CountryCode::create(['id' => '115',
+ 'iso' => 'KG',
+ 'name' => 'KYRGYZSTAN',
+ 'nicename' => 'Kyrgyzstan',
+ 'iso3' => 'KGZ',
+ 'numcode' => '417',
+ 'phonecode' => '996', ]);
+ CountryCode::create(['id' => '116',
+ 'iso' => 'LA',
+ 'name' => 'LAO PEOPLES DEMOCRATIC REPUBLIC',
+ 'nicename' => 'Lao Peoples Democratic Republic',
+ 'iso3' => 'LAO',
+ 'numcode' => '418',
+ 'phonecode' => '856', ]);
+ CountryCode::create(['id' => '117',
+ 'iso' => 'LV',
+ 'name' => 'LATVIA',
+ 'nicename' => 'Latvia',
+ 'iso3' => 'LVA',
+ 'numcode' => '428',
+ 'phonecode' => '371', ]);
+ CountryCode::create(['id' => '118',
+ 'iso' => 'LB',
+ 'name' => 'LEBANON',
+ 'nicename' => 'Lebanon',
+ 'iso3' => 'LBN',
+ 'numcode' => '422',
+ 'phonecode' => '961', ]);
+ CountryCode::create(['id' => '119',
+ 'iso' => 'LS',
+ 'name' => 'LESOTHO',
+ 'nicename' => 'Lesotho',
+ 'iso3' => 'LSO',
+ 'numcode' => '426',
+ 'phonecode' => '266', ]);
+ CountryCode::create(['id' => '120',
+ 'iso' => 'LR',
+ 'name' => 'LIBERIA',
+ 'nicename' => 'Liberia',
+ 'iso3' => 'LBR',
+ 'numcode' => '430',
+ 'phonecode' => '231', ]);
+ CountryCode::create(['id' => '121',
+ 'iso' => 'LY',
+ 'name' => 'LIBYAN ARAB JAMAHIRIYA',
+ 'nicename' => 'Libyan Arab Jamahiriya',
+ 'iso3' => 'LBY',
+ 'numcode' => '434',
+ 'phonecode' => '218', ]);
+ CountryCode::create(['id' => '122',
+ 'iso' => 'LI',
+ 'name' => 'LIECHTENSTEIN',
+ 'nicename' => 'Liechtenstein',
+ 'iso3' => 'LIE',
+ 'numcode' => '438',
+ 'phonecode' => '423', ]);
+ CountryCode::create(['id' => '123',
+ 'iso' => 'LT',
+ 'name' => 'LITHUANIA',
+ 'nicename' => 'Lithuania',
+ 'iso3' => 'LTU',
+ 'numcode' => '440',
+ 'phonecode' => '370', ]);
+ CountryCode::create(['id' => '124',
+ 'iso' => 'LU',
+ 'name' => 'LUXEMBOURG',
+ 'nicename' => 'Luxembourg',
+ 'iso3' => 'LUX',
+ 'numcode' => '442',
+ 'phonecode' => '352', ]);
+ CountryCode::create(['id' => '125',
+ 'iso' => 'MO',
+ 'name' => 'MACAO',
+ 'nicename' => 'Macao',
+ 'iso3' => 'MAC',
+ 'numcode' => '446',
+ 'phonecode' => '853', ]);
+ CountryCode::create(['id' => '126',
+ 'iso' => 'MK',
+ 'name' => 'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF',
+ 'nicename' => 'Macedonia, the Former Yugoslav Republic of',
+ 'iso3' => 'MKD',
+ 'numcode' => '807',
+ 'phonecode' => '389', ]);
+ CountryCode::create(['id' => '127',
+ 'iso' => 'MG',
+ 'name' => 'MADAGASCAR',
+ 'nicename' => 'Madagascar',
+ 'iso3' => 'MDG',
+ 'numcode' => '450',
+ 'phonecode' => '261', ]);
+ CountryCode::create(['id' => '128',
+ 'iso' => 'MW',
+ 'name' => 'MALAWI',
+ 'nicename' => 'Malawi',
+ 'iso3' => 'MWI',
+ 'numcode' => '454',
+ 'phonecode' => '265', ]);
+ CountryCode::create(['id' => '129',
+ 'iso' => 'MY',
+ 'name' => 'MALAYSIA',
+ 'nicename' => 'Malaysia',
+ 'iso3' => 'MYS',
+ 'numcode' => '458',
+ 'phonecode' => '60', ]);
+ CountryCode::create(['id' => '130',
+ 'iso' => 'MV',
+ 'name' => 'MALDIVES',
+ 'nicename' => 'Maldives',
+ 'iso3' => 'MDV',
+ 'numcode' => '462',
+ 'phonecode' => '960', ]);
+ CountryCode::create(['id' => '131',
+ 'iso' => 'ML',
+ 'name' => 'MALI',
+ 'nicename' => 'Mali',
+ 'iso3' => 'MLI',
+ 'numcode' => '466',
+ 'phonecode' => '223', ]);
+ CountryCode::create(['id' => '132',
+ 'iso' => 'MT',
+ 'name' => 'MALTA',
+ 'nicename' => 'Malta',
+ 'iso3' => 'MLT',
+ 'numcode' => '470',
+ 'phonecode' => '356', ]);
+ CountryCode::create(['id' => '133',
+ 'iso' => 'MH',
+ 'name' => 'MARSHALL ISLANDS',
+ 'nicename' => 'Marshall Islands',
+ 'iso3' => 'MHL',
+ 'numcode' => '584',
+ 'phonecode' => '692', ]);
+ CountryCode::create(['id' => '134',
+ 'iso' => 'MQ',
+ 'name' => 'MARTINIQUE',
+ 'nicename' => 'Martinique',
+ 'iso3' => 'MTQ',
+ 'numcode' => '474',
+ 'phonecode' => '596', ]);
+ CountryCode::create(['id' => '135',
+ 'iso' => 'MR',
+ 'name' => 'MAURITANIA',
+ 'nicename' => 'Mauritania',
+ 'iso3' => 'MRT',
+ 'numcode' => '478',
+ 'phonecode' => '222', ]);
+ CountryCode::create(['id' => '136',
+ 'iso' => 'MU',
+ 'name' => 'MAURITIUS',
+ 'nicename' => 'Mauritius',
+ 'iso3' => 'MUS',
+ 'numcode' => '480',
+ 'phonecode' => '230', ]);
+ CountryCode::create(['id' => '137',
+ 'iso' => 'YT',
+ 'name' => 'MAYOTTE',
+ 'nicename' => 'Mayotte',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '269', ]);
+ CountryCode::create(['id' => '138',
+ 'iso' => 'MX',
+ 'name' => 'MEXICO',
+ 'nicename' => 'Mexico',
+ 'iso3' => 'MEX',
+ 'numcode' => '484',
+ 'phonecode' => '52', ]);
+ CountryCode::create(['id' => '139',
+ 'iso' => 'FM',
+ 'name' => 'MICRONESIA, FEDERATED STATES OF',
+ 'nicename' => 'Micronesia, Federated States of',
+ 'iso3' => 'FSM',
+ 'numcode' => '583',
+ 'phonecode' => '691', ]);
+ CountryCode::create(['id' => '140',
+ 'iso' => 'MD',
+ 'name' => 'MOLDOVA, REPUBLIC OF',
+ 'nicename' => 'Moldova, Republic of',
+ 'iso3' => 'MDA',
+ 'numcode' => '498',
+ 'phonecode' => '373', ]);
+ CountryCode::create(['id' => '141',
+ 'iso' => 'MC',
+ 'name' => 'MONACO',
+ 'nicename' => 'Monaco',
+ 'iso3' => 'MCO',
+ 'numcode' => '492',
+ 'phonecode' => '377', ]);
+ CountryCode::create(['id' => '142',
+ 'iso' => 'MN',
+ 'name' => 'MONGOLIA',
+ 'nicename' => 'Mongolia',
+ 'iso3' => 'MNG',
+ 'numcode' => '496',
+ 'phonecode' => '976', ]);
+ CountryCode::create(['id' => '143',
+ 'iso' => 'MS',
+ 'name' => 'MONTSERRAT',
+ 'nicename' => 'Montserrat',
+ 'iso3' => 'MSR',
+ 'numcode' => '500',
+ 'phonecode' => '1664', ]);
+ CountryCode::create(['id' => '144',
+ 'iso' => 'MA',
+ 'name' => 'MOROCCO',
+ 'nicename' => 'Morocco',
+ 'iso3' => 'MAR',
+ 'numcode' => '504',
+ 'phonecode' => '212', ]);
+ CountryCode::create(['id' => '145',
+ 'iso' => 'MZ',
+ 'name' => 'MOZAMBIQUE',
+ 'nicename' => 'Mozambique',
+ 'iso3' => 'MOZ',
+ 'numcode' => '508',
+ 'phonecode' => '258', ]);
+ CountryCode::create(['id' => '146',
+ 'iso' => 'MM',
+ 'name' => 'MYANMAR',
+ 'nicename' => 'Myanmar',
+ 'iso3' => 'MMR',
+ 'numcode' => '104',
+ 'phonecode' => '95', ]);
+ CountryCode::create(['id' => '147',
+ 'iso' => 'NA',
+ 'name' => 'NAMIBIA',
+ 'nicename' => 'Namibia',
+ 'iso3' => 'NAM',
+ 'numcode' => '516',
+ 'phonecode' => '264', ]);
+ CountryCode::create(['id' => '148',
+ 'iso' => 'NR',
+ 'name' => 'NAURU',
+ 'nicename' => 'Nauru',
+ 'iso3' => 'NRU',
+ 'numcode' => '520',
+ 'phonecode' => '674', ]);
+ CountryCode::create(['id' => '149',
+ 'iso' => 'NP',
+ 'name' => 'NEPAL',
+ 'nicename' => 'Nepal',
+ 'iso3' => 'NPL',
+ 'numcode' => '524',
+ 'phonecode' => '977', ]);
+ CountryCode::create(['id' => '150',
+ 'iso' => 'NL',
+ 'name' => 'NETHERLANDS',
+ 'nicename' => 'Netherlands',
+ 'iso3' => 'NLD',
+ 'numcode' => '528',
+ 'phonecode' => '31', ]);
+ CountryCode::create(['id' => '151',
+ 'iso' => 'AN',
+ 'name' => 'NETHERLANDS ANTILLES',
+ 'nicename' => 'Netherlands Antilles',
+ 'iso3' => 'ANT',
+ 'numcode' => '530',
+ 'phonecode' => '599', ]);
+ CountryCode::create(['id' => '152',
+ 'iso' => 'NC',
+ 'name' => 'NEW CALEDONIA',
+ 'nicename' => 'New Caledonia',
+ 'iso3' => 'NCL',
+ 'numcode' => '540',
+ 'phonecode' => '687', ]);
+ CountryCode::create(['id' => '153',
+ 'iso' => 'NZ',
+ 'name' => 'NEW ZEALAND',
+ 'nicename' => 'New Zealand',
+ 'iso3' => 'NZL',
+ 'numcode' => '554',
+ 'phonecode' => '64', ]);
+ CountryCode::create(['id' => '154',
+ 'iso' => 'NI',
+ 'name' => 'NICARAGUA',
+ 'nicename' => 'Nicaragua',
+ 'iso3' => 'NIC',
+ 'numcode' => '558',
+ 'phonecode' => '505', ]);
+ CountryCode::create(['id' => '155',
+ 'iso' => 'NE',
+ 'name' => 'NIGER',
+ 'nicename' => 'Niger',
+ 'iso3' => 'NER',
+ 'numcode' => '562',
+ 'phonecode' => '227', ]);
+ CountryCode::create(['id' => '156',
+ 'iso' => 'NG',
+ 'name' => 'NIGERIA',
+ 'nicename' => 'Nigeria',
+ 'iso3' => 'NGA',
+ 'numcode' => '566',
+ 'phonecode' => '234', ]);
+ CountryCode::create(['id' => '157',
+ 'iso' => 'NU',
+ 'name' => 'NIUE',
+ 'nicename' => 'Niue',
+ 'iso3' => 'NIU',
+ 'numcode' => '570',
+ 'phonecode' => '683', ]);
+ CountryCode::create(['id' => '158',
+ 'iso' => 'NF',
+ 'name' => 'NORFOLK ISLAND',
+ 'nicename' => 'Norfolk Island',
+ 'iso3' => 'NFK',
+ 'numcode' => '574',
+ 'phonecode' => '672', ]);
+ CountryCode::create(['id' => '159',
+ 'iso' => 'MP',
+ 'name' => 'NORTHERN MARIANA ISLANDS',
+ 'nicename' => 'Northern Mariana Islands',
+ 'iso3' => 'MNP',
+ 'numcode' => '580',
+ 'phonecode' => '1670', ]);
+ CountryCode::create(['id' => '160',
+ 'iso' => 'NO',
+ 'name' => 'NORWAY',
+ 'nicename' => 'Norway',
+ 'iso3' => 'NOR',
+ 'numcode' => '578',
+ 'phonecode' => '47', ]);
+ CountryCode::create(['id' => '161',
+ 'iso' => 'OM',
+ 'name' => 'OMAN',
+ 'nicename' => 'Oman',
+ 'iso3' => 'OMN',
+ 'numcode' => '512',
+ 'phonecode' => '968', ]);
+ CountryCode::create(['id' => '162',
+ 'iso' => 'PK',
+ 'name' => 'PAKISTAN',
+ 'nicename' => 'Pakistan',
+ 'iso3' => 'PAK',
+ 'numcode' => '586',
+ 'phonecode' => '92', ]);
+ CountryCode::create(['id' => '163',
+ 'iso' => 'PW',
+ 'name' => 'PALAU',
+ 'nicename' => 'Palau',
+ 'iso3' => 'PLW',
+ 'numcode' => '585',
+ 'phonecode' => '680', ]);
+ CountryCode::create(['id' => '164',
+ 'iso' => 'PS',
+ 'name' => 'PALESTINIAN TERRITORY, OCCUPIED',
+ 'nicename' => 'Palestinian Territory, Occupied',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '970', ]);
+ CountryCode::create(['id' => '165',
+ 'iso' => 'PA',
+ 'name' => 'PANAMA',
+ 'nicename' => 'Panama',
+ 'iso3' => 'PAN',
+ 'numcode' => '591',
+ 'phonecode' => '507', ]);
+ CountryCode::create(['id' => '166',
+ 'iso' => 'PG',
+ 'name' => 'PAPUA NEW GUINEA',
+ 'nicename' => 'Papua New Guinea',
+ 'iso3' => 'PNG',
+ 'numcode' => '598',
+ 'phonecode' => '675', ]);
+ CountryCode::create(['id' => '167',
+ 'iso' => 'PY',
+ 'name' => 'PARAGUAY',
+ 'nicename' => 'Paraguay',
+ 'iso3' => 'PRY',
+ 'numcode' => '600',
+ 'phonecode' => '595', ]);
+ CountryCode::create(['id' => '168',
+ 'iso' => 'PE',
+ 'name' => 'PERU',
+ 'nicename' => 'Peru',
+ 'iso3' => 'PER',
+ 'numcode' => '604',
+ 'phonecode' => '51', ]);
+ CountryCode::create(['id' => '169',
+ 'iso' => 'PH',
+ 'name' => 'PHILIPPINES',
+ 'nicename' => 'Philippines',
+ 'iso3' => 'PHL',
+ 'numcode' => '608',
+ 'phonecode' => '63', ]);
+ CountryCode::create(['id' => '170',
+ 'iso' => 'PN',
+ 'name' => 'PITCAIRN',
+ 'nicename' => 'Pitcairn',
+ 'iso3' => 'PCN',
+ 'numcode' => '612',
+ 'phonecode' => '0', ]);
+ CountryCode::create(['id' => '171',
+ 'iso' => 'PL',
+ 'name' => 'POLAND',
+ 'nicename' => 'Poland',
+ 'iso3' => 'POL',
+ 'numcode' => '616',
+ 'phonecode' => '48', ]);
+ CountryCode::create(['id' => '172',
+ 'iso' => 'PT',
+ 'name' => 'PORTUGAL',
+ 'nicename' => 'Portugal',
+ 'iso3' => 'PRT',
+ 'numcode' => '620',
+ 'phonecode' => '351', ]);
+ CountryCode::create(['id' => '173',
+ 'iso' => 'PR',
+ 'name' => 'PUERTO RICO',
+ 'nicename' => 'Puerto Rico',
+ 'iso3' => 'PRI',
+ 'numcode' => '630',
+ 'phonecode' => '1787', ]);
+ CountryCode::create(['id' => '174',
+ 'iso' => 'QA',
+ 'name' => 'QATAR',
+ 'nicename' => 'Qatar',
+ 'iso3' => 'QAT',
+ 'numcode' => '634',
+ 'phonecode' => '974', ]);
+ CountryCode::create(['id' => '175',
+ 'iso' => 'RE',
+ 'name' => 'REUNION',
+ 'nicename' => 'Reunion',
+ 'iso3' => 'REU',
+ 'numcode' => '638',
+ 'phonecode' => '262', ]);
+ CountryCode::create(['id' => '176',
+ 'iso' => 'RO',
+ 'name' => 'ROMANIA',
+ 'nicename' => 'Romania',
+ 'iso3' => 'ROM',
+ 'numcode' => '642',
+ 'phonecode' => '40', ]);
+ CountryCode::create(['id' => '177',
+ 'iso' => 'RU',
+ 'name' => 'RUSSIAN FEDERATION',
+ 'nicename' => 'Russian Federation',
+ 'iso3' => 'RUS',
+ 'numcode' => '643',
+ 'phonecode' => '70', ]);
+ CountryCode::create(['id' => '178',
+ 'iso' => 'RW',
+ 'name' => 'RWANDA',
+ 'nicename' => 'Rwanda',
+ 'iso3' => 'RWA',
+ 'numcode' => '646',
+ 'phonecode' => '250', ]);
+ CountryCode::create(['id' => '179',
+ 'iso' => 'SH',
+ 'name' => 'SAINT HELENA',
+ 'nicename' => 'Saint Helena',
+ 'iso3' => 'SHN',
+ 'numcode' => '654',
+ 'phonecode' => '290', ]);
+ CountryCode::create(['id' => '180',
+ 'iso' => 'KN',
+ 'name' => 'SAINT KITTS AND NEVIS',
+ 'nicename' => 'Saint Kitts and Nevis',
+ 'iso3' => 'KNA',
+ 'numcode' => '659',
+ 'phonecode' => '1869', ]);
+ CountryCode::create(['id' => '181',
+ 'iso' => 'LC',
+ 'name' => 'SAINT LUCIA',
+ 'nicename' => 'Saint Lucia',
+ 'iso3' => 'LCA',
+ 'numcode' => '662',
+ 'phonecode' => '1758', ]);
+ CountryCode::create(['id' => '182',
+ 'iso' => 'PM',
+ 'name' => 'SAINT PIERRE AND MIQUELON',
+ 'nicename' => 'Saint Pierre and Miquelon',
+ 'iso3' => 'SPM',
+ 'numcode' => '666',
+ 'phonecode' => '508', ]);
+ CountryCode::create(['id' => '183',
+ 'iso' => 'VC',
+ 'name' => 'SAINT VINCENT AND THE GRENADINES',
+ 'nicename' => 'Saint Vincent and the Grenadines',
+ 'iso3' => 'VCT',
+ 'numcode' => '670',
+ 'phonecode' => '1784', ]);
+ CountryCode::create(['id' => '184',
+ 'iso' => 'WS',
+ 'name' => 'SAMOA',
+ 'nicename' => 'Samoa',
+ 'iso3' => 'WSM',
+ 'numcode' => '882',
+ 'phonecode' => '684', ]);
+ CountryCode::create(['id' => '185',
+ 'iso' => 'SM',
+ 'name' => 'SAN MARINO',
+ 'nicename' => 'San Marino',
+ 'iso3' => 'SMR',
+ 'numcode' => '674',
+ 'phonecode' => '378', ]);
+ CountryCode::create(['id' => '186',
+ 'iso' => 'ST',
+ 'name' => 'SAO TOME AND PRINCIPE',
+ 'nicename' => 'Sao Tome and Principe',
+ 'iso3' => 'STP',
+ 'numcode' => '678',
+ 'phonecode' => '239', ]);
+ CountryCode::create(['id' => '187',
+ 'iso' => 'SA',
+ 'name' => 'SAUDI ARABIA',
+ 'nicename' => 'Saudi Arabia',
+ 'iso3' => 'SAU',
+ 'numcode' => '682',
+ 'phonecode' => '966', ]);
+ CountryCode::create(['id' => '188',
+ 'iso' => 'SN',
+ 'name' => 'SENEGAL',
+ 'nicename' => 'Senegal',
+ 'iso3' => 'SEN',
+ 'numcode' => '686',
+ 'phonecode' => '221', ]);
+ CountryCode::create(['id' => '189',
+ 'iso' => 'CS',
+ 'name' => 'SERBIA AND MONTENEGRO',
+ 'nicename' => 'Serbia and Montenegro',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '381', ]);
+ CountryCode::create(['id' => '190',
+ 'iso' => 'SC',
+ 'name' => 'SEYCHELLES',
+ 'nicename' => 'Seychelles',
+ 'iso3' => 'SYC',
+ 'numcode' => '690',
+ 'phonecode' => '248', ]);
+ CountryCode::create(['id' => '191',
+ 'iso' => 'SL',
+ 'name' => 'SIERRA LEONE',
+ 'nicename' => 'Sierra Leone',
+ 'iso3' => 'SLE',
+ 'numcode' => '694',
+ 'phonecode' => '232', ]);
+ CountryCode::create(['id' => '192',
+ 'iso' => 'SG',
+ 'name' => 'SINGAPORE',
+ 'nicename' => 'Singapore',
+ 'iso3' => 'SGP',
+ 'numcode' => '702',
+ 'phonecode' => '65', ]);
+ CountryCode::create(['id' => '193',
+ 'iso' => 'SK',
+ 'name' => 'SLOVAKIA',
+ 'nicename' => 'Slovakia',
+ 'iso3' => 'SVK',
+ 'numcode' => '703',
+ 'phonecode' => '421', ]);
+ CountryCode::create(['id' => '194',
+ 'iso' => 'SI',
+ 'name' => 'SLOVENIA',
+ 'nicename' => 'Slovenia',
+ 'iso3' => 'SVN',
+ 'numcode' => '705',
+ 'phonecode' => '386', ]);
+ CountryCode::create(['id' => '195',
+ 'iso' => 'SB',
+ 'name' => 'SOLOMON ISLANDS',
+ 'nicename' => 'Solomon Islands',
+ 'iso3' => 'SLB',
+ 'numcode' => '90',
+ 'phonecode' => '677', ]);
+ CountryCode::create(['id' => '196',
+ 'iso' => 'SO',
+ 'name' => 'SOMALIA',
+ 'nicename' => 'Somalia',
+ 'iso3' => 'SOM',
+ 'numcode' => '706',
+ 'phonecode' => '252', ]);
+ CountryCode::create(['id' => '197',
+ 'iso' => 'ZA',
+ 'name' => 'SOUTH AFRICA',
+ 'nicename' => 'South Africa',
+ 'iso3' => 'ZAF',
+ 'numcode' => '710',
+ 'phonecode' => '27', ]);
+ CountryCode::create(['id' => '198',
+ 'iso' => 'GS',
+ 'name' => 'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS',
+ 'nicename' => 'South Georgia and the South Sandwich Islands',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '0', ]);
+ CountryCode::create(['id' => '199',
+ 'iso' => 'ES',
+ 'name' => 'SPAIN',
+ 'nicename' => 'Spain',
+ 'iso3' => 'ESP',
+ 'numcode' => '724',
+ 'phonecode' => '34', ]);
+ CountryCode::create(['id' => '200',
+ 'iso' => 'LK',
+ 'name' => 'SRI LANKA',
+ 'nicename' => 'Sri Lanka',
+ 'iso3' => 'LKA',
+ 'numcode' => '144',
+ 'phonecode' => '94', ]);
+ CountryCode::create(['id' => '201',
+ 'iso' => 'SD',
+ 'name' => 'SUDAN',
+ 'nicename' => 'Sudan',
+ 'iso3' => 'SDN',
+ 'numcode' => '736',
+ 'phonecode' => '249', ]);
+ CountryCode::create(['id' => '202',
+ 'iso' => 'SR',
+ 'name' => 'SURINAME',
+ 'nicename' => 'Suriname',
+ 'iso3' => 'SUR',
+ 'numcode' => '740',
+ 'phonecode' => '597', ]);
+ CountryCode::create(['id' => '203',
+ 'iso' => 'SJ',
+ 'name' => 'SVALBARD AND JAN MAYEN',
+ 'nicename' => 'Svalbard and Jan Mayen',
+ 'iso3' => 'SJM',
+ 'numcode' => '744',
+ 'phonecode' => '47', ]);
+ CountryCode::create(['id' => '204',
+ 'iso' => 'SZ',
+ 'name' => 'SWAZILAND',
+ 'nicename' => 'Swaziland',
+ 'iso3' => 'SWZ',
+ 'numcode' => '748',
+ 'phonecode' => '268', ]);
+ CountryCode::create(['id' => '205',
+ 'iso' => 'SE',
+ 'name' => 'SWEDEN',
+ 'nicename' => 'Sweden',
+ 'iso3' => 'SWE',
+ 'numcode' => '752',
+ 'phonecode' => '46', ]);
+ CountryCode::create(['id' => '206',
+ 'iso' => 'CH',
+ 'name' => 'SWITZERLAND',
+ 'nicename' => 'Switzerland',
+ 'iso3' => 'CHE',
+ 'numcode' => '756',
+ 'phonecode' => '41', ]);
+ CountryCode::create(['id' => '207',
+ 'iso' => 'SY',
+ 'name' => 'SYRIAN ARAB REPUBLIC',
+ 'nicename' => 'Syrian Arab Republic',
+ 'iso3' => 'SYR',
+ 'numcode' => '760',
+ 'phonecode' => '963', ]);
+ CountryCode::create(['id' => '208',
+ 'iso' => 'TW',
+ 'name' => 'TAIWAN, PROVINCE OF CHINA',
+ 'nicename' => 'Taiwan, Province of China',
+ 'iso3' => 'TWN',
+ 'numcode' => '158',
+ 'phonecode' => '886', ]);
+ CountryCode::create(['id' => '209',
+ 'iso' => 'TJ',
+ 'name' => 'TAJIKISTAN',
+ 'nicename' => 'Tajikistan',
+ 'iso3' => 'TJK',
+ 'numcode' => '762',
+ 'phonecode' => '992', ]);
+ CountryCode::create(['id' => '210',
+ 'iso' => 'TZ',
+ 'name' => 'TANZANIA, UNITED REPUBLIC OF',
+ 'nicename' => 'Tanzania, United Republic of',
+ 'iso3' => 'TZA',
+ 'numcode' => '834',
+ 'phonecode' => '255', ]);
+ CountryCode::create(['id' => '211',
+ 'iso' => 'TH',
+ 'name' => 'THAILAND',
+ 'nicename' => 'Thailand',
+ 'iso3' => 'THA',
+ 'numcode' => '764',
+ 'phonecode' => '66', ]);
+ CountryCode::create(['id' => '212',
+ 'iso' => 'TL',
+ 'name' => 'TIMOR-LESTE',
+ 'nicename' => 'Timor-Leste',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '670', ]);
+ CountryCode::create(['id' => '213',
+ 'iso' => 'TG',
+ 'name' => 'TOGO',
+ 'nicename' => 'Togo',
+ 'iso3' => 'TGO',
+ 'numcode' => '768',
+ 'phonecode' => '228', ]);
+ CountryCode::create(['id' => '214',
+ 'iso' => 'TK',
+ 'name' => 'TOKELAU',
+ 'nicename' => 'Tokelau',
+ 'iso3' => 'TKL',
+ 'numcode' => '772',
+ 'phonecode' => '690', ]);
+ CountryCode::create(['id' => '215',
+ 'iso' => 'TO',
+ 'name' => 'TONGA',
+ 'nicename' => 'Tonga',
+ 'iso3' => 'TON',
+ 'numcode' => '776',
+ 'phonecode' => '676', ]);
+ CountryCode::create(['id' => '216',
+ 'iso' => 'TT',
+ 'name' => 'TRINIDAD AND TOBAGO',
+ 'nicename' => 'Trinidad and Tobago',
+ 'iso3' => 'TTO',
+ 'numcode' => '780',
+ 'phonecode' => '1868', ]);
+ CountryCode::create(['id' => '217',
+ 'iso' => 'TN',
+ 'name' => 'TUNISIA',
+ 'nicename' => 'Tunisia',
+ 'iso3' => 'TUN',
+ 'numcode' => '788',
+ 'phonecode' => '216', ]);
+ CountryCode::create(['id' => '218',
+ 'iso' => 'TR',
+ 'name' => 'TURKEY',
+ 'nicename' => 'Turkey',
+ 'iso3' => 'TUR',
+ 'numcode' => '792',
+ 'phonecode' => '90', ]);
+ CountryCode::create(['id' => '219',
+ 'iso' => 'TM',
+ 'name' => 'TURKMENISTAN',
+ 'nicename' => 'Turkmenistan',
+ 'iso3' => 'TKM',
+ 'numcode' => '795',
+ 'phonecode' => '7370', ]);
+ CountryCode::create(['id' => '220',
+ 'iso' => 'TC',
+ 'name' => 'TURKS AND CAICOS ISLANDS',
+ 'nicename' => 'Turks and Caicos Islands',
+ 'iso3' => 'TCA',
+ 'numcode' => '796',
+ 'phonecode' => '1649', ]);
+ CountryCode::create(['id' => '221',
+ 'iso' => 'TV',
+ 'name' => 'TUVALU',
+ 'nicename' => 'Tuvalu',
+ 'iso3' => 'TUV',
+ 'numcode' => '798',
+ 'phonecode' => '688', ]);
+ CountryCode::create(['id' => '222',
+ 'iso' => 'UG',
+ 'name' => 'UGANDA',
+ 'nicename' => 'Uganda',
+ 'iso3' => 'UGA',
+ 'numcode' => '800',
+ 'phonecode' => '256', ]);
+ CountryCode::create(['id' => '223',
+ 'iso' => 'UA',
+ 'name' => 'UKRAINE',
+ 'nicename' => 'Ukraine',
+ 'iso3' => 'UKR',
+ 'numcode' => '804',
+ 'phonecode' => '380', ]);
+ CountryCode::create(['id' => '224',
+ 'iso' => 'AE',
+ 'name' => 'UNITED ARAB EMIRATES',
+ 'nicename' => 'United Arab Emirates',
+ 'iso3' => 'ARE',
+ 'numcode' => '784',
+ 'phonecode' => '971', ]);
+ CountryCode::create(['id' => '225',
+ 'iso' => 'GB',
+ 'name' => 'UNITED KINGDOM',
+ 'nicename' => 'United Kingdom',
+ 'iso3' => 'GBR',
+ 'numcode' => '826',
+ 'phonecode' => '44', ]);
+ CountryCode::create(['id' => '226',
+ 'iso' => 'US',
+ 'name' => 'UNITED STATES',
+ 'nicename' => 'United States',
+ 'iso3' => 'USA',
+ 'numcode' => '840',
+ 'phonecode' => '1', ]);
+ CountryCode::create(['id' => '227',
+ 'iso' => 'UM',
+ 'name' => 'UNITED STATES MINOR OUTLYING ISLANDS',
+ 'nicename' => 'United States Minor Outlying Islands',
+ 'iso3' => 'NULL',
+ 'numcode' => 'NULL',
+ 'phonecode' => '1', ]);
+ CountryCode::create(['id' => '228',
+ 'iso' => 'UY',
+ 'name' => 'URUGUAY',
+ 'nicename' => 'Uruguay',
+ 'iso3' => 'URY',
+ 'numcode' => '858',
+ 'phonecode' => '598', ]);
+ CountryCode::create(['id' => '229',
+ 'iso' => 'UZ',
+ 'name' => 'UZBEKISTAN',
+ 'nicename' => 'Uzbekistan',
+ 'iso3' => 'UZB',
+ 'numcode' => '860',
+ 'phonecode' => '998', ]);
+ CountryCode::create(['id' => '230',
+ 'iso' => 'VU',
+ 'name' => 'VANUATU',
+ 'nicename' => 'Vanuatu',
+ 'iso3' => 'VUT',
+ 'numcode' => '548',
+ 'phonecode' => '678', ]);
+ CountryCode::create(['id' => '231',
+ 'iso' => 'VE',
+ 'name' => 'VENEZUELA',
+ 'nicename' => 'Venezuela',
+ 'iso3' => 'VEN',
+ 'numcode' => '862',
+ 'phonecode' => '58', ]);
+ CountryCode::create(['id' => '232',
+ 'iso' => 'VN',
+ 'name' => 'VIET NAM',
+ 'nicename' => 'Viet Nam',
+ 'iso3' => 'VNM',
+ 'numcode' => '704',
+ 'phonecode' => '84', ]);
+ CountryCode::create(['id' => '233',
+ 'iso' => 'VG',
+ 'name' => 'VIRGIN ISLANDS, BRITISH',
+ 'nicename' => 'Virgin Islands, British',
+ 'iso3' => 'VGB',
+ 'numcode' => '92',
+ 'phonecode' => '1284', ]);
+ CountryCode::create(['id' => '234',
+ 'iso' => 'VI',
+ 'name' => 'VIRGIN ISLANDS, U.S.',
+ 'nicename' => 'Virgin Islands, U.s.',
+ 'iso3' => 'VIR',
+ 'numcode' => '850',
+ 'phonecode' => '1340', ]);
+ CountryCode::create(['id' => '235',
+ 'iso' => 'WF',
+ 'name' => 'WALLIS AND FUTUNA',
+ 'nicename' => 'Wallis and Futuna',
+ 'iso3' => 'WLF',
+ 'numcode' => '876',
+ 'phonecode' => '681', ]);
+ CountryCode::create(['id' => '236',
+ 'iso' => 'EH',
+ 'name' => 'WESTERN SAHARA',
+ 'nicename' => 'Western Sahara',
+ 'iso3' => 'ESH',
+ 'numcode' => '732',
+ 'phonecode' => '212', ]);
+ CountryCode::create(['id' => '237',
+ 'iso' => 'YE',
+ 'name' => 'YEMEN',
+ 'nicename' => 'Yemen',
+ 'iso3' => 'YEM',
+ 'numcode' => '887',
+ 'phonecode' => '967', ]);
+ CountryCode::create(['id' => '238',
+ 'iso' => 'ZM',
+ 'name' => 'ZAMBIA',
+ 'nicename' => 'Zambia',
+ 'iso3' => 'ZMB',
+ 'numcode' => '894',
+ 'phonecode' => '260', ]);
+ CountryCode::create(['id' => '239',
+ 'iso' => 'ZW',
+ 'name' => 'ZIMBABWE',
+ 'nicename' => 'Zimbabwe',
+ 'iso3' => 'ZWE',
+ 'numcode' => '716',
+ 'phonecode' => '263', ]);
+
+
+
+ Security::create(['id' => '1', 'lockout_message' => 'You have been locked out of application due to too many failed login attempts.', 'backlist_offender' => '0', 'backlist_threshold' => '15', 'lockout_period' => '15', 'days_to_keep_logs' => '0']);
+
+
+ TemplateSet::create(['id' => '1', 'name' => 'default', 'active' => '1']);
+
+ TemplateType::create(['id' => '1', 'name' => 'assign-ticket']);
+ TemplateType::create(['id' => '2', 'name' => 'check-ticket']);
+ TemplateType::create(['id' => '3', 'name' => 'close-ticket']);
+ TemplateType::create(['id' => '4', 'name' => 'create-ticket']);
+ TemplateType::create(['id' => '5', 'name' => 'create-ticket-agent']);
+ TemplateType::create(['id' => '6', 'name' => 'create-ticket-by-agent']);
+ TemplateType::create(['id' => '7', 'name' => 'error-report']);
+ TemplateType::create(['id' => '8', 'name' => 'registration-notification']);
+ TemplateType::create(['id' => '9', 'name' => 'reset-password']);
+ TemplateType::create(['id' => '10', 'name' => 'ticket-reply']);
+ TemplateType::create(['id' => '11', 'name' => 'ticket-reply-agent']);
+ TemplateType::create(['id' => '12', 'name' => 'registration']);
+
+ Template::create(['id' => '1', 'name' => 'assign-ticket', 'type' => '1', 'message' => 'Hello {!!$ticket_agent_name!!}, Ticket No: {!!$ticket_number!!} Has been assigned to you by {!!$ticket_assigner!!} Thank You Kind Regards, {!!$system_from!!}
', 'set_id' => '1']);
+ Template::create(['id' => '2', 'name' => 'check-ticket', 'type' => '2', 'message' => 'Hello {!!$user!!}, Click the link below to view your Requested ticket {!!$ticket_link_with_number!!} Kind Regards, {!!$system_from!!}
', 'set_id' => '1']);
+ Template::create(['id' => '3', 'name' => 'close-ticket', 'type' => '3', 'message' => 'Hello, This message is regarding your ticket ID {!!$ticket_number!!}. We are changing the status of this ticket to "Closed" as the issue appears to be resolved. Thank you Kind regards, {!!$system_from!!}
', 'set_id' => '1']);
+ Template::create(['id' => '4', 'name' => 'create-ticket', 'type' => '4', 'message' => 'Hello {!!$user!!} Thank you for contacting us. This is an automated response confirming the receipt of your ticket. Our team will get back to you as soon as possible. When replying, please make sure that the ticket ID is kept in the subject so that we can track your replies. Ticket ID: {!!$ticket_number!!} {!!$department_sign!!} You can check the status of or update this ticket online at: {!!$system_link!!}
', 'set_id' => '1']);
+ Template::create(['id' => '5', 'name' => 'create-ticket-agent', 'type' => '5', 'message' => 'Hello {!!$ticket_agent_name!!}, New ticket {!!$ticket_number!!} created From Name :- {!!$ticket_client_name!!} E-mail :- {!!$ticket_client_email!!} {!!$content!!} Kind Regards, {!!$system_from!!}
', 'set_id' => '1']);
+ Template::create(['id' => '6', 'name' => 'create-ticket-by-agent', 'type' => '6', 'message' => '{!!$content!!} {!!$agent_sign!!} You can check the status of or update this ticket online at: {!!$system_link!!}
', 'set_id' => '1']);
+ Template::create(['id' => '7', 'name' => 'error-report', 'type' => '7', 'message' => ' {!!$system_error!!} ', 'set_id' => '1']);
+ Template::create(['id' => '8', 'name' => 'registration-notification', 'type' => '8', 'message' => 'Hello {!!$user!!} ,
This email is confirmation that you are now registered at our helpdesk.
Registered Email: {!!$email_address!!}
Password: {!!$user_password!!}
You can visit the helpdesk to browse articles and contact us at any time: {!!$system_link!!}
Thank You.
Kind Regards,
{!!$system_from!!}
', 'set_id' => '1']);
+ Template::create(['id' => '9', 'name' => 'reset-password', 'type' => '9', 'message' => 'Hello {!!$user!!} You asked to reset your password. To do so, please click this link: {!!$password_reset_link!!} This will let you change your password to something new. If you did not ask for this, do not worry, we will keep your password safe. Thank You. Kind Regards, {!!$system_from!!}', 'set_id' => '1']);
+ Template::create(['id' => '10', 'name' => 'ticket-reply', 'type' => '10', 'message' => '{!!$content!!}
{!!$agent_sign!!}
Ticket Details
Ticket ID: {!!$ticket_number!!}
', 'set_id' => '1']);
+ Template::create(['id' => '11', 'name' => 'ticket-reply-agent', 'type' => '11', 'message' => 'Hello {!!$ticket_agent_name!!}, A reply been made to ticket {!!$ticket_number!!} From Name: {!!$ticket_client_name!!} E-mail: {!!$ticket_client_email!!} {!!$content!!} Kind Regards, {!!$system_from!!}
', 'set_id' => '1']);
+ Template::create(['id' => '12', 'name' => 'registration', 'type' => '12', 'message' => 'Hello {!!$user!!} ,
This email is confirmation that you are now registered at our helpdesk.
Registered Email: {!!$email_address!!}
Please click on the below link to activate your account and Login to the system {!!$password_reset_link!!}
Thank You.
Kind Regards,
{!!$system_from!!}
', 'set_id' => '1']);
+
+
+ /**
+ * All the common settings will be listed here
+ */
+ CommonSettings::create(['id' => '1', 'option_name' => 'ticket_token_time_duration', 'option_value' => '1']);
+
+ /**
+ * Ratings
+ */
+ Rating::create(['id'=>'1','name'=>'OverAll Satisfaction','display_order'=>'1','allow_modification' => '1', 'rating_scale'=>'5','rating_area'=>'Helpdesk Area']);
+ Rating::create(['id'=>'2','name'=>'Reply Rating','display_order'=>'1','allow_modification' => '1', 'rating_scale'=>'5','rating_area'=>'Comment Area']);
+ }
}
diff --git a/vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/A/a.dat b/handle()
similarity index 100%
rename from vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/A/a.dat
rename to handle()
diff --git a/vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy b/loadConfigurationFiles()
similarity index 100%
rename from vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy
rename to loadConfigurationFiles()
diff --git a/vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/copy/A/B/ab.dat.copy b/make()
similarity index 100%
rename from vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/copy/A/B/ab.dat.copy
rename to make()
diff --git a/vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/copy/A/a.dat.copy b/php
similarity index 100%
rename from vendor/symfony/finder/Symfony/Component/Finder/Tests/Fixtures/copy/A/a.dat.copy
rename to php
diff --git a/public/.htaccess b/public/.htaccess
index c3ffac528..04e08bafe 100644
--- a/public/.htaccess
+++ b/public/.htaccess
@@ -4,7 +4,7 @@
RewriteEngine On
-
+
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
@@ -12,4 +12,4 @@
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
-
\ No newline at end of file
+
diff --git a/public/filemanager/.gitignore b/public/filemanager/.gitignore
new file mode 100644
index 000000000..2c934136c
--- /dev/null
+++ b/public/filemanager/.gitignore
@@ -0,0 +1 @@
+scripts/filemanager.config.js
diff --git a/public/filemanager/connectors/php/inc/wideimage/lib/Operation/AddNoise.php b/public/filemanager/connectors/php/inc/wideimage/lib/Operation/AddNoise.php
index 617ac40ca..7b3882432 100644
--- a/public/filemanager/connectors/php/inc/wideimage/lib/Operation/AddNoise.php
+++ b/public/filemanager/connectors/php/inc/wideimage/lib/Operation/AddNoise.php
@@ -37,7 +37,7 @@
* Returns image with every pixel changed by specififed function.
*
* @param WideImage_Image $image
- * @param str $function
+ * @param string $function
* @param int $value
*
* @return WideImage_Image
diff --git a/public/filemanager/scripts/languages/ar.js b/public/filemanager/scripts/languages/ar.js
new file mode 100644
index 000000000..8a68d03e9
--- /dev/null
+++ b/public/filemanager/scripts/languages/ar.js
@@ -0,0 +1,91 @@
+{
+ "ALLOWED_FILE_TYPE": "فقط الملفات الاتية هي المسموحة : ",
+ "AUTHORIZATION_REQUIRED": "غير مصرح لك باستخدام مدير الملفات.",
+ "DIRECTORY_ALREADY_EXISTS": "المجلد '%s' موجود مسبقا.",
+ "DIRECTORY_NOT_EXIST": "المجلد %s غير موجود.",
+ "DISALLOWED_FILE_TYPE": "الملفات الاتية غير مسموحة : ",
+ "ERROR_CREATING_ZIP": "خطا في انشاء الملف المضغوط",
+ "ERROR_OPENING_FILE": "خطا في فتح الملف.",
+ "ERROR_RENAMING_DIRECTORY": " حدث خطا اثناء تعديل اسم المجلد من %s الى %s.",
+ "ERROR_RENAMING_FILE": " حدث خطا اثناء تعديل اسم الملف من %s الى %s.",
+ "ERROR_REPLACING_FILE": "يرجى تقديم ملف يحمل الاختصار الاتي :",
+ "ERROR_SAVING_FILE": "خطاء اثناء حفظ الملف.",
+ "ERROR_UPLOADING_FILE": "خطاء اثناء رفع الملف.",
+ "ERROR_WRITING_PERM": "لم تقم بكتابة التصاريح على هذا الملف.",
+ "FILE_ALREADY_EXISTS": "الملف '%s' موجود مسبقاً.",
+ "FILE_DOES_NOT_EXIST": "الملف %s غير موجود.",
+ "INVALID_ACTION": "عملية غير صحيحة.",
+ "INVALID_DIRECTORY_OR_FILE": "ملف اومجلد غير صحيح.",
+ "INVALID_FILE_TYPE": "نوع الملف غير مسموح به.",
+ "INVALID_FILE_UPLOAD": "الملف المحمل خطىء.",
+ "INVALID_VAR": "متغير خطىء %s.",
+ "LANGUAGE_FILE_NOT_FOUND": "ملف اللغة غير موجود.",
+ "MODE_ERROR": "حالة خطئة.",
+ "NOT_ALLOWED": "غير مصرح لك باتمام العملية",
+ "NOT_ALLOWED_SYSTEM": "صلاحيات النظام لا تجيز لك اتمام هذه العملية",
+ "UNABLE_TO_CREATE_DIRECTORY": "لم اتمكن من انشاء المجلد %s.",
+ "UNABLE_TO_OPEN_DIRECTORY": "غير ممكن فتح المجلد %s.",
+ "UPLOAD_FILES_SMALLER_THAN": "يرجى فقط رفع ملفات مشابهة ل %s.",
+ "UPLOAD_IMAGES_ONLY": "يرجى رفع صور فقط, nباقي الملفات غير مسموحة",
+ "UPLOAD_IMAGES_TYPE_JPEG_GIF_PNG": "يرجى رفع ملفات من نوع JPEG, GIF او PNG.",
+ "browse": "تصفح...",
+ "bytes": " بايتس",
+ "cancel": "الغاء",
+ "close": "اقفال",
+ "confirmation_delete": "هل انت متاكد من انك تود خذف هذا الملف ؟",
+ "copied": "تم نسخ الرابط !",
+ "copy_to_clipboard": "تم نسخ الرابط الى الكليببورد",
+ "could_not_retrieve_folder": "لا يمكن احذار محتويات المجلد.",
+ "create_folder": "انشاء مجلد",
+ "created": "تم الانشاء",
+ "current_folder": "المجلد الحالي: ",
+ "default_foldername": "مجلداتي",
+ "del": "حذف",
+ "dimensions": "تجاهل",
+ "download": "تنزيل",
+ "dz_dictDefaultMessage": "ضع الملفات هنا للتحميل",
+ "dz_dictFallbackMessage": "متصفحك لا يدعم خاصية تحميل الملفات عن طريق الدراج دروب",
+ "dz_dictInvalidFileType": "لا يمكنك تحميل ملفات من هذا النوع.",
+ "dz_dictMaxFilesExceeded": "يمكنك فقط تحميل %s من الملفات",
+ "edit": "تحرير الملف",
+ "fck_select_integration": "الفنكشن المحددة تعمل فقط مع FCKEditor.",
+ "file_size_limit": "الحجم المسموح (لكل ملف) هو ",
+ "file_too_big": "الملف اكبر من المسموح.",
+ "gb": "جيجابيت",
+ "grid_view": "انتقال لمشاهدة مصغرات.",
+ "help_move": "استعمال '../' ممنوع. يمكنك الوصول للمجلد الجذر عن طريق'/'.",
+ "items": "ملفات",
+ "kb": "كيلوبيت",
+ "list_view": "انتقال لوضع مشاهدة القوائم.",
+ "loading_data": "جاري نقل البيانات ...",
+ "mb": "ميجا بايت",
+ "modified": "معدل",
+ "move": "انقل الى ...",
+ "name": "الاسم",
+ "new_filename": "اختر اسم جديد للملف",
+ "new_folder": "مجلد جديد",
+ "no": "لا",
+ "no_foldername": "لم تقم بتزود اسم المجلد.",
+ "parentfolder": "المجلد الام",
+ "prompt_foldername": "اكتب اسم المجلد الجديد",
+ "quit_editor": "اخرج من المحرر",
+ "rename": "اعادة تسمية",
+ "replace": "استبدال الملف",
+ "save": "حفظ",
+ "search": "بحث",
+ "search_reset": "اعادة",
+ "select": "اختيار",
+ "select_from_left": "اختار ملفات من اليسار.",
+ "size": "الحجم",
+ "successful_added_file": "تم اضافة الملف/ الملفات الجديدة بنجاح.",
+ "successful_added_folder": "تم اضافة المجلد الجديد بنجاح.",
+ "successful_delete": "تم الحذف.",
+ "successful_edit": "تم التحديث بنجاح.",
+ "successful_moved": "تم النقل بنجاح ",
+ "successful_rename": "تمت اعادة التسمية بنجاح .",
+ "successful_replace": "تم استبدال الملف بنجاح.",
+ "support_fm": "مدير الملفات برنامج مجاني يرجى دعمه !",
+ "upload": "رفع",
+ "version": "الاصدار",
+ "yes": "نعم"
+}
diff --git a/public/index.php b/public/index.php
index 59cd05fb5..5c2fb420c 100644
--- a/public/index.php
+++ b/public/index.php
@@ -1,4 +1,5 @@
li {
/*-----------------------------------------------------------------------------------*/
.error-title {
- margin-bottom: 0.5em;
+ margin-bottom: 0.1em;
font-size: 5em;
letter-spacing: -0.01em;
}
@@ -1306,11 +1306,11 @@ ol.with-line-border > li {
margin-bottom: 10px;
}
.error404 {
- padding-top: 2em;
- padding-bottom: 5em;
+ padding-top: 1em;
+ padding-bottom: 1em;
}
.error404 .error-title {
- font-size: 12em;
+ font-size: 10em;
}
.comment-body {
margin-left: 25px;
diff --git a/public/lb-faveo/css/bootstrap.min.css b/public/lb-faveo/css/bootstrap.min.css
index bd0fae014..dacc8d454 100644
--- a/public/lb-faveo/css/bootstrap.min.css
+++ b/public/lb-faveo/css/bootstrap.min.css
@@ -1,7 +1,5219 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
-
\ No newline at end of file
+html {
+ font-family: sans-serif;
+}
+body {
+ margin: 0;
+}
+article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {
+ display: block;
+}
+audio, canvas, progress, video {
+ display: inline-block;
+ vertical-align: baseline;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+[hidden], template {
+ display: none;
+}
+a {
+ background-color: transparent;
+}
+a:active, a:hover {
+ outline: 0 none;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b, strong {
+ font-weight: 700;
+}
+dfn {
+ font-style: italic;
+}
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+mark {
+ background: #ff0 none repeat scroll 0 0;
+ color: #000;
+}
+small {
+ font-size: 80%;
+}
+sub, sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ border: 0 none;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+pre {
+ overflow: auto;
+}
+code, kbd, pre, samp {
+ font-family: monospace,monospace;
+ font-size: 1em;
+}
+button, input, optgroup, select, textarea {
+ color: inherit;
+ font: inherit;
+ margin: 0;
+}
+button {
+ overflow: visible;
+}
+button, select {
+ text-transform: none;
+}
+button, html input[type="button"], input[type="reset"], input[type="submit"] {
+ cursor: pointer;
+}
+button[disabled], html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner, input::-moz-focus-inner {
+ border: 0 none;
+ padding: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"], input[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+input[type="search"] {
+ box-sizing: content-box;
+}
+fieldset {
+ border: 1px solid silver;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ border: 0 none;
+ padding: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: 700;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td, th {
+ padding: 0;
+}
+@media print {
+*, *::before, *::after {
+ background: transparent none repeat scroll 0 0 !important;
+ box-shadow: none !important;
+ color: #000 !important;
+ text-shadow: none !important;
+}
+a, a:visited {
+ text-decoration: underline;
+}
+a[href]::after {
+ content: " (" attr(href) ")";
+}
+abbr[title]::after {
+ content: " (" attr(title) ")";
+}
+a[href^="#"]::after, a[href^="javascript:"]::after {
+ content: "";
+}
+pre, blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+}
+thead {
+ display: table-header-group;
+}
+tr, img {
+ page-break-inside: avoid;
+}
+img {
+ max-width: 100% !important;
+}
+p, h2, h3 {
+}
+h2, h3 {
+ page-break-after: avoid;
+}
+select {
+ background: #fff none repeat scroll 0 0 !important;
+}
+.navbar {
+ display: none;
+}
+.btn > .caret, .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+}
+.label {
+ border: 1px solid #000;
+}
+.table {
+ border-collapse: collapse !important;
+}
+.table td, .table th {
+ background-color: #fff !important;
+}
+.table-bordered th, .table-bordered td {
+ border: 1px solid #ddd !important;
+}
+}
+@font-face {
+ font-family: "Glyphicons Halflings";
+ src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg");
+}
+.glyphicon {
+ display: inline-block;
+ font-family: "Glyphicons Halflings";
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ position: relative;
+ top: 1px;
+}
+.glyphicon-asterisk::before {
+ content: "*";
+}
+.glyphicon-plus::before {
+ content: "+";
+}
+.glyphicon-euro::before, .glyphicon-eur::before {
+ content: "€";
+}
+.glyphicon-minus::before {
+ content: "−";
+}
+.glyphicon-cloud::before {
+ content: "☁";
+}
+.glyphicon-envelope::before {
+ content: "✉";
+}
+.glyphicon-pencil::before {
+ content: "✏";
+}
+.glyphicon-glass::before {
+ content: "";
+}
+.glyphicon-music::before {
+ content: "";
+}
+.glyphicon-search::before {
+ content: "";
+}
+.glyphicon-heart::before {
+ content: "";
+}
+.glyphicon-star::before {
+ content: "";
+}
+.glyphicon-star-empty::before {
+ content: "";
+}
+.glyphicon-user::before {
+ content: "";
+}
+.glyphicon-film::before {
+ content: "";
+}
+.glyphicon-th-large::before {
+ content: "";
+}
+.glyphicon-th::before {
+ content: "";
+}
+.glyphicon-th-list::before {
+ content: "";
+}
+.glyphicon-ok::before {
+ content: "";
+}
+.glyphicon-remove::before {
+ content: "";
+}
+.glyphicon-zoom-in::before {
+ content: "";
+}
+.glyphicon-zoom-out::before {
+ content: "";
+}
+.glyphicon-off::before {
+ content: "";
+}
+.glyphicon-signal::before {
+ content: "";
+}
+.glyphicon-cog::before {
+ content: "";
+}
+.glyphicon-trash::before {
+ content: "";
+}
+.glyphicon-home::before {
+ content: "";
+}
+.glyphicon-file::before {
+ content: "";
+}
+.glyphicon-time::before {
+ content: "";
+}
+.glyphicon-road::before {
+ content: "";
+}
+.glyphicon-download-alt::before {
+ content: "";
+}
+.glyphicon-download::before {
+ content: "";
+}
+.glyphicon-upload::before {
+ content: "";
+}
+.glyphicon-inbox::before {
+ content: "";
+}
+.glyphicon-play-circle::before {
+ content: "";
+}
+.glyphicon-repeat::before {
+ content: "";
+}
+.glyphicon-refresh::before {
+ content: "";
+}
+.glyphicon-list-alt::before {
+ content: "";
+}
+.glyphicon-lock::before {
+ content: "";
+}
+.glyphicon-flag::before {
+ content: "";
+}
+.glyphicon-headphones::before {
+ content: "";
+}
+.glyphicon-volume-off::before {
+ content: "";
+}
+.glyphicon-volume-down::before {
+ content: "";
+}
+.glyphicon-volume-up::before {
+ content: "";
+}
+.glyphicon-qrcode::before {
+ content: "";
+}
+.glyphicon-barcode::before {
+ content: "";
+}
+.glyphicon-tag::before {
+ content: "";
+}
+.glyphicon-tags::before {
+ content: "";
+}
+.glyphicon-book::before {
+ content: "";
+}
+.glyphicon-bookmark::before {
+ content: "";
+}
+.glyphicon-print::before {
+ content: "";
+}
+.glyphicon-camera::before {
+ content: "";
+}
+.glyphicon-font::before {
+ content: "";
+}
+.glyphicon-bold::before {
+ content: "";
+}
+.glyphicon-italic::before {
+ content: "";
+}
+.glyphicon-text-height::before {
+ content: "";
+}
+.glyphicon-text-width::before {
+ content: "";
+}
+.glyphicon-align-left::before {
+ content: "";
+}
+.glyphicon-align-center::before {
+ content: "";
+}
+.glyphicon-align-right::before {
+ content: "";
+}
+.glyphicon-align-justify::before {
+ content: "";
+}
+.glyphicon-list::before {
+ content: "";
+}
+.glyphicon-indent-left::before {
+ content: "";
+}
+.glyphicon-indent-right::before {
+ content: "";
+}
+.glyphicon-facetime-video::before {
+ content: "";
+}
+.glyphicon-picture::before {
+ content: "";
+}
+.glyphicon-map-marker::before {
+ content: "";
+}
+.glyphicon-adjust::before {
+ content: "";
+}
+.glyphicon-tint::before {
+ content: "";
+}
+.glyphicon-edit::before {
+ content: "";
+}
+.glyphicon-share::before {
+ content: "";
+}
+.glyphicon-check::before {
+ content: "";
+}
+.glyphicon-move::before {
+ content: "";
+}
+.glyphicon-step-backward::before {
+ content: "";
+}
+.glyphicon-fast-backward::before {
+ content: "";
+}
+.glyphicon-backward::before {
+ content: "";
+}
+.glyphicon-play::before {
+ content: "";
+}
+.glyphicon-pause::before {
+ content: "";
+}
+.glyphicon-stop::before {
+ content: "";
+}
+.glyphicon-forward::before {
+ content: "";
+}
+.glyphicon-fast-forward::before {
+ content: "";
+}
+.glyphicon-step-forward::before {
+ content: "";
+}
+.glyphicon-eject::before {
+ content: "";
+}
+.glyphicon-chevron-left::before {
+ content: "";
+}
+.glyphicon-chevron-right::before {
+ content: "";
+}
+.glyphicon-plus-sign::before {
+ content: "";
+}
+.glyphicon-minus-sign::before {
+ content: "";
+}
+.glyphicon-remove-sign::before {
+ content: "";
+}
+.glyphicon-ok-sign::before {
+ content: "";
+}
+.glyphicon-question-sign::before {
+ content: "";
+}
+.glyphicon-info-sign::before {
+ content: "";
+}
+.glyphicon-screenshot::before {
+ content: "";
+}
+.glyphicon-remove-circle::before {
+ content: "";
+}
+.glyphicon-ok-circle::before {
+ content: "";
+}
+.glyphicon-ban-circle::before {
+ content: "";
+}
+.glyphicon-arrow-left::before {
+ content: "";
+}
+.glyphicon-arrow-right::before {
+ content: "";
+}
+.glyphicon-arrow-up::before {
+ content: "";
+}
+.glyphicon-arrow-down::before {
+ content: "";
+}
+.glyphicon-share-alt::before {
+ content: "";
+}
+.glyphicon-resize-full::before {
+ content: "";
+}
+.glyphicon-resize-small::before {
+ content: "";
+}
+.glyphicon-exclamation-sign::before {
+ content: "";
+}
+.glyphicon-gift::before {
+ content: "";
+}
+.glyphicon-leaf::before {
+ content: "";
+}
+.glyphicon-fire::before {
+ content: "";
+}
+.glyphicon-eye-open::before {
+ content: "";
+}
+.glyphicon-eye-close::before {
+ content: "";
+}
+.glyphicon-warning-sign::before {
+ content: "";
+}
+.glyphicon-plane::before {
+ content: "";
+}
+.glyphicon-calendar::before {
+ content: "";
+}
+.glyphicon-random::before {
+ content: "";
+}
+.glyphicon-comment::before {
+ content: "";
+}
+.glyphicon-magnet::before {
+ content: "";
+}
+.glyphicon-chevron-up::before {
+ content: "";
+}
+.glyphicon-chevron-down::before {
+ content: "";
+}
+.glyphicon-retweet::before {
+ content: "";
+}
+.glyphicon-shopping-cart::before {
+ content: "";
+}
+.glyphicon-folder-close::before {
+ content: "";
+}
+.glyphicon-folder-open::before {
+ content: "";
+}
+.glyphicon-resize-vertical::before {
+ content: "";
+}
+.glyphicon-resize-horizontal::before {
+ content: "";
+}
+.glyphicon-hdd::before {
+ content: "";
+}
+.glyphicon-bullhorn::before {
+ content: "";
+}
+.glyphicon-bell::before {
+ content: "";
+}
+.glyphicon-certificate::before {
+ content: "";
+}
+.glyphicon-thumbs-up::before {
+ content: "";
+}
+.glyphicon-thumbs-down::before {
+ content: "";
+}
+.glyphicon-hand-right::before {
+ content: "";
+}
+.glyphicon-hand-left::before {
+ content: "";
+}
+.glyphicon-hand-up::before {
+ content: "";
+}
+.glyphicon-hand-down::before {
+ content: "";
+}
+.glyphicon-circle-arrow-right::before {
+ content: "";
+}
+.glyphicon-circle-arrow-left::before {
+ content: "";
+}
+.glyphicon-circle-arrow-up::before {
+ content: "";
+}
+.glyphicon-circle-arrow-down::before {
+ content: "";
+}
+.glyphicon-globe::before {
+ content: "";
+}
+.glyphicon-wrench::before {
+ content: "";
+}
+.glyphicon-tasks::before {
+ content: "";
+}
+.glyphicon-filter::before {
+ content: "";
+}
+.glyphicon-briefcase::before {
+ content: "";
+}
+.glyphicon-fullscreen::before {
+ content: "";
+}
+.glyphicon-dashboard::before {
+ content: "";
+}
+.glyphicon-paperclip::before {
+ content: "";
+}
+.glyphicon-heart-empty::before {
+ content: "";
+}
+.glyphicon-link::before {
+ content: "";
+}
+.glyphicon-phone::before {
+ content: "";
+}
+.glyphicon-pushpin::before {
+ content: "";
+}
+.glyphicon-usd::before {
+ content: "";
+}
+.glyphicon-gbp::before {
+ content: "";
+}
+.glyphicon-sort::before {
+ content: "";
+}
+.glyphicon-sort-by-alphabet::before {
+ content: "";
+}
+.glyphicon-sort-by-alphabet-alt::before {
+ content: "";
+}
+.glyphicon-sort-by-order::before {
+ content: "";
+}
+.glyphicon-sort-by-order-alt::before {
+ content: "";
+}
+.glyphicon-sort-by-attributes::before {
+ content: "";
+}
+.glyphicon-sort-by-attributes-alt::before {
+ content: "";
+}
+.glyphicon-unchecked::before {
+ content: "";
+}
+.glyphicon-expand::before {
+ content: "";
+}
+.glyphicon-collapse-down::before {
+ content: "";
+}
+.glyphicon-collapse-up::before {
+ content: "";
+}
+.glyphicon-log-in::before {
+ content: "";
+}
+.glyphicon-flash::before {
+ content: "";
+}
+.glyphicon-log-out::before {
+ content: "";
+}
+.glyphicon-new-window::before {
+ content: "";
+}
+.glyphicon-record::before {
+ content: "";
+}
+.glyphicon-save::before {
+ content: "";
+}
+.glyphicon-open::before {
+ content: "";
+}
+.glyphicon-saved::before {
+ content: "";
+}
+.glyphicon-import::before {
+ content: "";
+}
+.glyphicon-export::before {
+ content: "";
+}
+.glyphicon-send::before {
+ content: "";
+}
+.glyphicon-floppy-disk::before {
+ content: "";
+}
+.glyphicon-floppy-saved::before {
+ content: "";
+}
+.glyphicon-floppy-remove::before {
+ content: "";
+}
+.glyphicon-floppy-save::before {
+ content: "";
+}
+.glyphicon-floppy-open::before {
+ content: "";
+}
+.glyphicon-credit-card::before {
+ content: "";
+}
+.glyphicon-transfer::before {
+ content: "";
+}
+.glyphicon-cutlery::before {
+ content: "";
+}
+.glyphicon-header::before {
+ content: "";
+}
+.glyphicon-compressed::before {
+ content: "";
+}
+.glyphicon-earphone::before {
+ content: "";
+}
+.glyphicon-phone-alt::before {
+ content: "";
+}
+.glyphicon-tower::before {
+ content: "";
+}
+.glyphicon-stats::before {
+ content: "";
+}
+.glyphicon-sd-video::before {
+ content: "";
+}
+.glyphicon-hd-video::before {
+ content: "";
+}
+.glyphicon-subtitles::before {
+ content: "";
+}
+.glyphicon-sound-stereo::before {
+ content: "";
+}
+.glyphicon-sound-dolby::before {
+ content: "";
+}
+.glyphicon-sound-5-1::before {
+ content: "";
+}
+.glyphicon-sound-6-1::before {
+ content: "";
+}
+.glyphicon-sound-7-1::before {
+ content: "";
+}
+.glyphicon-copyright-mark::before {
+ content: "";
+}
+.glyphicon-registration-mark::before {
+ content: "";
+}
+.glyphicon-cloud-download::before {
+ content: "";
+}
+.glyphicon-cloud-upload::before {
+ content: "";
+}
+.glyphicon-tree-conifer::before {
+ content: "";
+}
+.glyphicon-tree-deciduous::before {
+ content: "";
+}
+* {
+ box-sizing: border-box;
+}
+*::before, *::after {
+ box-sizing: border-box;
+}
+html {
+ font-size: 10px;
+}
+body {
+ background-color: #fff;
+ color: #333;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
+ line-height: 1.42857;
+}
+input, button, select, textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #337ab7;
+ text-decoration: none;
+}
+a:hover, a:focus {
+ color: #23527c;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ outline-offset: -2px;
+}
+figure {
+ margin: 0;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive, .thumbnail > img, .thumbnail a > img, .carousel-inner > .item > img, .carousel-inner > .item > a > img {
+ display: block;
+ height: auto;
+ max-width: 100%;
+}
+.img-rounded {
+ border-radius: 6px;
+}
+.img-thumbnail {
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ display: inline-block;
+ height: auto;
+ line-height: 1.42857;
+ max-width: 100%;
+ padding: 4px;
+ transition: all 0.2s ease-in-out 0s;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ -moz-border-bottom-colors: none;
+ -moz-border-left-colors: none;
+ -moz-border-right-colors: none;
+ -moz-border-top-colors: none;
+ border-color: #eee -moz-use-text-color -moz-use-text-color;
+ border-image: none;
+ border-style: solid none none;
+ border-width: 1px 0 0;
+ margin-bottom: 20px;
+ margin-top: 20px;
+}
+.sr-only {
+ border: 0 none;
+ clip: rect(0px, 0px, 0px, 0px);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.sr-only-focusable:active, .sr-only-focusable:focus {
+ clip: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ position: static;
+ width: auto;
+}
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
+ color: inherit;
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+}
+h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small {
+ color: #777;
+ font-weight: 400;
+ line-height: 1;
+}
+h1, .h1, h2, .h2, h3, .h3 {
+ margin-bottom: 10px;
+ margin-top: 20px;
+}
+h1 small, .h1 small, h2 small, .h2 small, h3 small, .h3 small, h1 .small, .h1 .small, h2 .small, .h2 .small, h3 .small, .h3 .small {
+ font-size: 65%;
+}
+h4, .h4, h5, .h5, h6, .h6 {
+ margin-bottom: 10px;
+ margin-top: 10px;
+}
+h4 small, .h4 small, h5 small, .h5 small, h6 small, .h6 small, h4 .small, .h4 .small, h5 .small, .h5 .small, h6 .small, .h6 .small {
+ font-size: 75%;
+}
+h1, .h1 {
+ font-size: 36px;
+}
+h2, .h2 {
+ font-size: 30px;
+}
+h3, .h3 {
+ font-size: 24px;
+}
+h4, .h4 {
+ font-size: 18px;
+}
+h5, .h5 {
+ font-size: 14px;
+}
+h6, .h6 {
+ font-size: 12px;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 1.4;
+ margin-bottom: 20px;
+}
+@media (min-width: 768px) {
+.lead {
+ font-size: 21px;
+}
+}
+small, .small {
+ font-size: 85%;
+}
+mark, .mark {
+ background-color: #fcf8e3;
+ padding: 0.2em;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.text-justify {
+ text-align: justify;
+}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
+.text-muted {
+ color: #777;
+}
+.text-primary {
+ color: #337ab7;
+}
+a.text-primary:hover {
+ color: #286090;
+}
+.text-success {
+ color: #3c763d;
+}
+a.text-success:hover {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+a.text-info:hover {
+ color: #245269;
+}
+.text-warning {
+ color: #8a6d3b;
+}
+a.text-warning:hover {
+ color: #66512c;
+}
+.text-danger {
+ color: #a94442;
+}
+a.text-danger:hover {
+ color: #843534;
+}
+.bg-primary {
+ background-color: #337ab7;
+ color: #fff;
+}
+a.bg-primary:hover {
+ background-color: #286090;
+}
+.bg-success {
+ background-color: #dff0d8;
+}
+a.bg-success:hover {
+ background-color: #c1e2b3;
+}
+.bg-info {
+ background-color: #d9edf7;
+}
+a.bg-info:hover {
+ background-color: #afd9ee;
+}
+.bg-warning {
+ background-color: #fcf8e3;
+}
+a.bg-warning:hover {
+ background-color: #f7ecb5;
+}
+.bg-danger {
+ background-color: #f2dede;
+}
+a.bg-danger:hover {
+ background-color: #e4b9b9;
+}
+.page-header {
+ border-bottom: 1px solid #eee;
+ margin: 40px 0 20px;
+ padding-bottom: 9px;
+}
+ul, ol {
+ margin-bottom: 10px;
+ margin-top: 0;
+}
+ul ul, ol ul, ul ol, ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ list-style: outside none none;
+ padding-left: 0;
+}
+.list-inline {
+ list-style: outside none none;
+ margin-left: -5px;
+ padding-left: 0;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+dl {
+ margin-bottom: 20px;
+ margin-top: 0;
+}
+dt, dd {
+ line-height: 1.42857;
+}
+dt {
+ font-weight: 700;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+.dl-horizontal dt {
+ clear: left;
+ float: left;
+ overflow: hidden;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ width: 160px;
+}
+.dl-horizontal dd {
+ margin-left: 180px;
+}
+}
+abbr[title], abbr[data-original-title] {
+ border-bottom: 1px dotted #777;
+ cursor: help;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ border-left: 5px solid #eee;
+ font-size: 17.5px;
+ margin: 0 0 20px;
+ padding: 10px 20px;
+}
+blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child {
+ margin-bottom: 0;
+}
+blockquote footer, blockquote small, blockquote .small {
+ color: #777;
+ display: block;
+ font-size: 80%;
+ line-height: 1.42857;
+}
+blockquote footer::before, blockquote small::before, blockquote .small::before {
+ content: "— ";
+}
+.blockquote-reverse, blockquote.pull-right {
+ border-left: 0 none;
+ border-right: 5px solid #eee;
+ padding-left: 0;
+ padding-right: 15px;
+ text-align: right;
+}
+.blockquote-reverse footer::before, blockquote.pull-right footer::before, .blockquote-reverse small::before, blockquote.pull-right small::before, .blockquote-reverse .small::before, blockquote.pull-right .small::before {
+ content: "";
+}
+.blockquote-reverse footer::after, blockquote.pull-right footer::after, .blockquote-reverse small::after, blockquote.pull-right small::after, .blockquote-reverse .small::after, blockquote.pull-right .small::after {
+ content: " —";
+}
+address {
+ font-style: normal;
+ line-height: 1.42857;
+ margin-bottom: 20px;
+}
+code, kbd, pre, samp {
+ font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
+}
+code {
+ background-color: #f9f2f4;
+ border-radius: 4px;
+ color: #c7254e;
+ font-size: 90%;
+ padding: 2px 4px;
+}
+kbd {
+ background-color: #333;
+ border-radius: 3px;
+ box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) inset;
+ color: #fff;
+ font-size: 90%;
+ padding: 2px 4px;
+}
+kbd kbd {
+ box-shadow: none;
+ font-size: 100%;
+ font-weight: 700;
+ padding: 0;
+}
+pre {
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ color: #333;
+ display: block;
+ font-size: 13px;
+ line-height: 1.42857;
+ margin: 0 0 10px;
+ padding: 9.5px;
+ word-break: break-all;
+ word-wrap: break-word;
+}
+pre code {
+ background-color: transparent;
+ border-radius: 0;
+ color: inherit;
+ font-size: inherit;
+ padding: 0;
+ white-space: pre-wrap;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+@media (min-width: 768px) {
+.container {
+ width: 750px;
+}
+}
+@media (min-width: 992px) {
+.container {
+ width: 970px;
+}
+}
+@media (min-width: 1200px) {
+.container {
+ width: 1170px;
+}
+}
+.container-fluid {
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.row {
+ margin-left: -15px;
+ margin-right: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ min-height: 1px;
+ padding-left: 15px;
+ padding-right: 15px;
+ position: relative;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.6667%;
+}
+.col-xs-10 {
+ width: 83.3333%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.6667%;
+}
+.col-xs-7 {
+ width: 58.3333%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.6667%;
+}
+.col-xs-4 {
+ width: 33.3333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.6667%;
+}
+.col-xs-1 {
+ width: 8.33333%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.6667%;
+}
+.col-xs-pull-10 {
+ right: 83.3333%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.6667%;
+}
+.col-xs-pull-7 {
+ right: 58.3333%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.6667%;
+}
+.col-xs-pull-4 {
+ right: 33.3333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.6667%;
+}
+.col-xs-pull-1 {
+ right: 8.33333%;
+}
+.col-xs-pull-0 {
+ right: auto;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.6667%;
+}
+.col-xs-push-10 {
+ left: 83.3333%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.6667%;
+}
+.col-xs-push-7 {
+ left: 58.3333%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.6667%;
+}
+.col-xs-push-4 {
+ left: 33.3333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.6667%;
+}
+.col-xs-push-1 {
+ left: 8.33333%;
+}
+.col-xs-push-0 {
+ left: auto;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.6667%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.3333%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.6667%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.3333%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.6667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.3333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.6667%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.33333%;
+}
+.col-xs-offset-0 {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+}
+.col-sm-12 {
+ width: 100%;
+}
+.col-sm-11 {
+ width: 91.6667%;
+}
+.col-sm-10 {
+ width: 83.3333%;
+}
+.col-sm-9 {
+ width: 75%;
+}
+.col-sm-8 {
+ width: 66.6667%;
+}
+.col-sm-7 {
+ width: 58.3333%;
+}
+.col-sm-6 {
+ width: 50%;
+}
+.col-sm-5 {
+ width: 41.6667%;
+}
+.col-sm-4 {
+ width: 33.3333%;
+}
+.col-sm-3 {
+ width: 25%;
+}
+.col-sm-2 {
+ width: 16.6667%;
+}
+.col-sm-1 {
+ width: 8.33333%;
+}
+.col-sm-pull-12 {
+ right: 100%;
+}
+.col-sm-pull-11 {
+ right: 91.6667%;
+}
+.col-sm-pull-10 {
+ right: 83.3333%;
+}
+.col-sm-pull-9 {
+ right: 75%;
+}
+.col-sm-pull-8 {
+ right: 66.6667%;
+}
+.col-sm-pull-7 {
+ right: 58.3333%;
+}
+.col-sm-pull-6 {
+ right: 50%;
+}
+.col-sm-pull-5 {
+ right: 41.6667%;
+}
+.col-sm-pull-4 {
+ right: 33.3333%;
+}
+.col-sm-pull-3 {
+ right: 25%;
+}
+.col-sm-pull-2 {
+ right: 16.6667%;
+}
+.col-sm-pull-1 {
+ right: 8.33333%;
+}
+.col-sm-pull-0 {
+ right: auto;
+}
+.col-sm-push-12 {
+ left: 100%;
+}
+.col-sm-push-11 {
+ left: 91.6667%;
+}
+.col-sm-push-10 {
+ left: 83.3333%;
+}
+.col-sm-push-9 {
+ left: 75%;
+}
+.col-sm-push-8 {
+ left: 66.6667%;
+}
+.col-sm-push-7 {
+ left: 58.3333%;
+}
+.col-sm-push-6 {
+ left: 50%;
+}
+.col-sm-push-5 {
+ left: 41.6667%;
+}
+.col-sm-push-4 {
+ left: 33.3333%;
+}
+.col-sm-push-3 {
+ left: 25%;
+}
+.col-sm-push-2 {
+ left: 16.6667%;
+}
+.col-sm-push-1 {
+ left: 8.33333%;
+}
+.col-sm-push-0 {
+ left: auto;
+}
+.col-sm-offset-12 {
+ margin-left: 100%;
+}
+.col-sm-offset-11 {
+ margin-left: 91.6667%;
+}
+.col-sm-offset-10 {
+ margin-left: 83.3333%;
+}
+.col-sm-offset-9 {
+ margin-left: 75%;
+}
+.col-sm-offset-8 {
+ margin-left: 66.6667%;
+}
+.col-sm-offset-7 {
+ margin-left: 58.3333%;
+}
+.col-sm-offset-6 {
+ margin-left: 50%;
+}
+.col-sm-offset-5 {
+ margin-left: 41.6667%;
+}
+.col-sm-offset-4 {
+ margin-left: 33.3333%;
+}
+.col-sm-offset-3 {
+ margin-left: 25%;
+}
+.col-sm-offset-2 {
+ margin-left: 16.6667%;
+}
+.col-sm-offset-1 {
+ margin-left: 8.33333%;
+}
+.col-sm-offset-0 {
+ margin-left: 0;
+}
+}
+@media (min-width: 992px) {
+.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+}
+.col-md-12 {
+ width: 100%;
+}
+.col-md-11 {
+ width: 91.6667%;
+}
+.col-md-10 {
+ width: 83.3333%;
+}
+.col-md-9 {
+ width: 75%;
+}
+.col-md-8 {
+ width: 66.6667%;
+}
+.col-md-7 {
+ width: 58.3333%;
+}
+.col-md-6 {
+ width: 50%;
+}
+.col-md-5 {
+ width: 41.6667%;
+}
+.col-md-4 {
+ width: 33.3333%;
+}
+.col-md-3 {
+ width: 25%;
+}
+.col-md-2 {
+ width: 16.6667%;
+}
+.col-md-1 {
+ width: 8.33333%;
+}
+.col-md-pull-12 {
+ right: 100%;
+}
+.col-md-pull-11 {
+ right: 91.6667%;
+}
+.col-md-pull-10 {
+ right: 83.3333%;
+}
+.col-md-pull-9 {
+ right: 75%;
+}
+.col-md-pull-8 {
+ right: 66.6667%;
+}
+.col-md-pull-7 {
+ right: 58.3333%;
+}
+.col-md-pull-6 {
+ right: 50%;
+}
+.col-md-pull-5 {
+ right: 41.6667%;
+}
+.col-md-pull-4 {
+ right: 33.3333%;
+}
+.col-md-pull-3 {
+ right: 25%;
+}
+.col-md-pull-2 {
+ right: 16.6667%;
+}
+.col-md-pull-1 {
+ right: 8.33333%;
+}
+.col-md-pull-0 {
+ right: auto;
+}
+.col-md-push-12 {
+ left: 100%;
+}
+.col-md-push-11 {
+ left: 91.6667%;
+}
+.col-md-push-10 {
+ left: 83.3333%;
+}
+.col-md-push-9 {
+ left: 75%;
+}
+.col-md-push-8 {
+ left: 66.6667%;
+}
+.col-md-push-7 {
+ left: 58.3333%;
+}
+.col-md-push-6 {
+ left: 50%;
+}
+.col-md-push-5 {
+ left: 41.6667%;
+}
+.col-md-push-4 {
+ left: 33.3333%;
+}
+.col-md-push-3 {
+ left: 25%;
+}
+.col-md-push-2 {
+ left: 16.6667%;
+}
+.col-md-push-1 {
+ left: 8.33333%;
+}
+.col-md-push-0 {
+ left: auto;
+}
+.col-md-offset-12 {
+ margin-left: 100%;
+}
+.col-md-offset-11 {
+ margin-left: 91.6667%;
+}
+.col-md-offset-10 {
+ margin-left: 83.3333%;
+}
+.col-md-offset-9 {
+ margin-left: 75%;
+}
+.col-md-offset-8 {
+ margin-left: 66.6667%;
+}
+.col-md-offset-7 {
+ margin-left: 58.3333%;
+}
+.col-md-offset-6 {
+ margin-left: 50%;
+}
+.col-md-offset-5 {
+ margin-left: 41.6667%;
+}
+.col-md-offset-4 {
+ margin-left: 33.3333%;
+}
+.col-md-offset-3 {
+ margin-left: 25%;
+}
+.col-md-offset-2 {
+ margin-left: 16.6667%;
+}
+.col-md-offset-1 {
+ margin-left: 8.33333%;
+}
+.col-md-offset-0 {
+ margin-left: 0;
+}
+}
+@media (min-width: 1200px) {
+.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+}
+.col-lg-12 {
+ width: 100%;
+}
+.col-lg-11 {
+ width: 91.6667%;
+}
+.col-lg-10 {
+ width: 83.3333%;
+}
+.col-lg-9 {
+ width: 75%;
+}
+.col-lg-8 {
+ width: 66.6667%;
+}
+.col-lg-7 {
+ width: 58.3333%;
+}
+.col-lg-6 {
+ width: 50%;
+}
+.col-lg-5 {
+ width: 41.6667%;
+}
+.col-lg-4 {
+ width: 33.3333%;
+}
+.col-lg-3 {
+ width: 25%;
+}
+.col-lg-2 {
+ width: 16.6667%;
+}
+.col-lg-1 {
+ width: 8.33333%;
+}
+.col-lg-pull-12 {
+ right: 100%;
+}
+.col-lg-pull-11 {
+ right: 91.6667%;
+}
+.col-lg-pull-10 {
+ right: 83.3333%;
+}
+.col-lg-pull-9 {
+ right: 75%;
+}
+.col-lg-pull-8 {
+ right: 66.6667%;
+}
+.col-lg-pull-7 {
+ right: 58.3333%;
+}
+.col-lg-pull-6 {
+ right: 50%;
+}
+.col-lg-pull-5 {
+ right: 41.6667%;
+}
+.col-lg-pull-4 {
+ right: 33.3333%;
+}
+.col-lg-pull-3 {
+ right: 25%;
+}
+.col-lg-pull-2 {
+ right: 16.6667%;
+}
+.col-lg-pull-1 {
+ right: 8.33333%;
+}
+.col-lg-pull-0 {
+ right: auto;
+}
+.col-lg-push-12 {
+ left: 100%;
+}
+.col-lg-push-11 {
+ left: 91.6667%;
+}
+.col-lg-push-10 {
+ left: 83.3333%;
+}
+.col-lg-push-9 {
+ left: 75%;
+}
+.col-lg-push-8 {
+ left: 66.6667%;
+}
+.col-lg-push-7 {
+ left: 58.3333%;
+}
+.col-lg-push-6 {
+ left: 50%;
+}
+.col-lg-push-5 {
+ left: 41.6667%;
+}
+.col-lg-push-4 {
+ left: 33.3333%;
+}
+.col-lg-push-3 {
+ left: 25%;
+}
+.col-lg-push-2 {
+ left: 16.6667%;
+}
+.col-lg-push-1 {
+ left: 8.33333%;
+}
+.col-lg-push-0 {
+ left: auto;
+}
+.col-lg-offset-12 {
+ margin-left: 100%;
+}
+.col-lg-offset-11 {
+ margin-left: 91.6667%;
+}
+.col-lg-offset-10 {
+ margin-left: 83.3333%;
+}
+.col-lg-offset-9 {
+ margin-left: 75%;
+}
+.col-lg-offset-8 {
+ margin-left: 66.6667%;
+}
+.col-lg-offset-7 {
+ margin-left: 58.3333%;
+}
+.col-lg-offset-6 {
+ margin-left: 50%;
+}
+.col-lg-offset-5 {
+ margin-left: 41.6667%;
+}
+.col-lg-offset-4 {
+ margin-left: 33.3333%;
+}
+.col-lg-offset-3 {
+ margin-left: 25%;
+}
+.col-lg-offset-2 {
+ margin-left: 16.6667%;
+}
+.col-lg-offset-1 {
+ margin-left: 8.33333%;
+}
+.col-lg-offset-0 {
+ margin-left: 0;
+}
+}
+table {
+ background-color: transparent;
+}
+caption {
+ color: #777;
+ padding-bottom: 8px;
+ padding-top: 8px;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ margin-bottom: 20px;
+ max-width: 100%;
+ width: 100%;
+}
+.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {
+ border-top: 1px solid #ddd;
+ line-height: 1.42857;
+ padding: 8px;
+ vertical-align: top;
+}
+.table > thead > tr > th {
+ border-bottom: 2px solid #ddd;
+ vertical-align: bottom;
+}
+.table > caption + thead > tr:first-child > th, .table > colgroup + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > colgroup + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > td {
+ border-top: 0 none;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #ddd;
+}
+.table .table {
+ background-color: #fff;
+}
+.table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > tfoot > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td, .table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th, .table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-child(2n+1) {
+ background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+ background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+ display: table-column;
+ float: none;
+ position: static;
+}
+table td[class*="col-"], table th[class*="col-"] {
+ display: table-cell;
+ float: none;
+ position: static;
+}
+.table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover, .table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th {
+ background-color: #e8e8e8;
+}
+.table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > td.info, .table > tbody > tr > td.info, .table > tfoot > tr > td.info, .table > thead > tr > th.info, .table > tbody > tr > th.info, .table > tfoot > tr > th.info, .table > thead > tr.info > td, .table > tbody > tr.info > td, .table > tfoot > tr.info > td, .table > thead > tr.info > th, .table > tbody > tr.info > th, .table > tfoot > tr.info > th {
+ background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover, .table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
+}
+.table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
+}
+.table-responsive {
+ min-height: 0.01%;
+ overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+.table-responsive {
+ border: 1px solid #ddd;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ width: 100%;
+}
+.table-responsive > .table {
+ margin-bottom: 0;
+}
+.table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+}
+.table-responsive > .table-bordered {
+ border: 0 none;
+}
+.table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0 none;
+}
+.table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0 none;
+}
+.table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0 none;
+}
+}
+fieldset {
+ border: 0 none;
+ margin: 0;
+ min-width: 0;
+ padding: 0;
+}
+legend {
+ -moz-border-bottom-colors: none;
+ -moz-border-left-colors: none;
+ -moz-border-right-colors: none;
+ -moz-border-top-colors: none;
+ border-color: -moz-use-text-color -moz-use-text-color #e5e5e5;
+ border-image: none;
+ border-style: none none solid;
+ border-width: 0 0 1px;
+ color: #333;
+ display: block;
+ font-size: 21px;
+ line-height: inherit;
+ margin-bottom: 20px;
+ padding: 0;
+ width: 100%;
+}
+label {
+ display: inline-block;
+ font-weight: 700;
+ margin-bottom: 5px;
+ max-width: 100%;
+}
+input[type="search"] {
+ box-sizing: border-box;
+}
+input[type="radio"], input[type="checkbox"] {
+ line-height: normal;
+ margin: 4px 0 0;
+}
+input[type="file"] {
+ display: block;
+}
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+select[multiple], select[size] {
+ height: auto;
+}
+input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline-offset: -2px;
+}
+output {
+ color: #555;
+ display: block;
+ font-size: 14px;
+ line-height: 1.42857;
+ padding-top: 7px;
+}
+.form-control {
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
+ color: #555;
+ display: block;
+ font-size: 14px;
+ height: 34px;
+ line-height: 1.42857;
+ padding: 6px 12px;
+ transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;
+ width: 100%;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(102, 175, 233, 0.6);
+ outline: 0 none;
+}
+.form-control::-moz-placeholder {
+ color: #999;
+ opacity: 1;
+}
+.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
+ background-color: #eee;
+ cursor: not-allowed;
+ opacity: 1;
+}
+textarea.form-control {
+ height: auto;
+}
+input[type="search"] {
+}
+@media not all {
+input[type="date"], input[type="time"], input[type="datetime-local"], input[type="month"] {
+ line-height: 34px;
+}
+input.input-sm[type="date"], input.input-sm[type="time"], input.input-sm[type="datetime-local"], input.input-sm[type="month"] {
+ line-height: 30px;
+}
+input.input-lg[type="date"], input.input-lg[type="time"], input.input-lg[type="datetime-local"], input.input-lg[type="month"] {
+ line-height: 46px;
+}
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio, .checkbox {
+ display: block;
+ margin-bottom: 10px;
+ margin-top: 10px;
+ position: relative;
+}
+.radio label, .checkbox label {
+ cursor: pointer;
+ font-weight: 400;
+ margin-bottom: 0;
+ min-height: 20px;
+ padding-left: 20px;
+}
+.radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] {
+ margin-left: -20px;
+ position: absolute;
+}
+.radio + .radio, .checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline, .checkbox-inline {
+ cursor: pointer;
+ display: inline-block;
+ font-weight: 400;
+ margin-bottom: 0;
+ padding-left: 20px;
+ vertical-align: middle;
+}
+.radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline {
+ margin-left: 10px;
+ margin-top: 0;
+}
+input[type="radio"][disabled], input[type="checkbox"][disabled], input.disabled[type="radio"], input.disabled[type="checkbox"], fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled, .checkbox-inline.disabled, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.radio.disabled label, .checkbox.disabled label, fieldset[disabled] .radio label, fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ margin-bottom: 0;
+ padding-bottom: 7px;
+ padding-top: 7px;
+}
+.form-control-static.input-lg, .form-control-static.input-sm {
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-sm, .form-group-sm .form-control {
+ border-radius: 3px;
+ font-size: 12px;
+ height: 30px;
+ line-height: 1.5;
+ padding: 5px 10px;
+}
+select.input-sm, select.form-group-sm .form-control {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-sm, textarea.form-group-sm .form-control, select.input-sm[multiple], select.form-group-sm[multiple] .form-control {
+ height: auto;
+}
+.input-lg, .form-group-lg .form-control {
+ border-radius: 6px;
+ font-size: 18px;
+ height: 46px;
+ line-height: 1.33;
+ padding: 10px 16px;
+}
+select.input-lg, select.form-group-lg .form-control {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-lg, textarea.form-group-lg .form-control, select.input-lg[multiple], select.form-group-lg[multiple] .form-control {
+ height: auto;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 42.5px;
+}
+.form-control-feedback {
+ display: block;
+ height: 34px;
+ line-height: 34px;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ text-align: center;
+ top: 0;
+ width: 34px;
+ z-index: 2;
+}
+.input-lg + .form-control-feedback {
+ height: 46px;
+ line-height: 46px;
+ width: 46px;
+}
+.input-sm + .form-control-feedback {
+ height: 30px;
+ line-height: 30px;
+ width: 30px;
+}
+.has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ background-color: #dff0d8;
+ border-color: #3c763d;
+ color: #3c763d;
+}
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+.has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label {
+ color: #8a6d3b;
+}
+.has-warning .form-control {
+ border-color: #8a6d3b;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
+}
+.has-warning .form-control:focus {
+ border-color: #66512c;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+ background-color: #fcf8e3;
+ border-color: #8a6d3b;
+ color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+ color: #8a6d3b;
+}
+.has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ background-color: #f2dede;
+ border-color: #a94442;
+ color: #a94442;
+}
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
+}
+.help-block {
+ color: #737373;
+ display: block;
+ margin-bottom: 10px;
+ margin-top: 5px;
+}
+@media (min-width: 768px) {
+.form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.form-inline .form-control {
+ display: inline-block;
+ vertical-align: middle;
+ width: auto;
+}
+.form-inline .form-control-static {
+ display: inline-block;
+}
+.form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+}
+.form-inline .input-group .input-group-addon, .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control {
+ width: auto;
+}
+.form-inline .input-group > .form-control {
+ width: 100%;
+}
+.form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.form-inline .radio, .form-inline .checkbox {
+ display: inline-block;
+ margin-bottom: 0;
+ margin-top: 0;
+ vertical-align: middle;
+}
+.form-inline .radio label, .form-inline .checkbox label {
+ padding-left: 0;
+}
+.form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] {
+ margin-left: 0;
+ position: relative;
+}
+.form-inline .has-feedback .form-control-feedback {
+ top: 0;
+}
+}
+.form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline {
+ margin-bottom: 0;
+ margin-top: 0;
+ padding-top: 7px;
+}
+.form-horizontal .radio, .form-horizontal .checkbox {
+ min-height: 27px;
+}
+.form-horizontal .form-group {
+ margin-left: -15px;
+ margin-right: -15px;
+}
+@media (min-width: 768px) {
+.form-horizontal .control-label {
+ margin-bottom: 0;
+ padding-top: 7px;
+ text-align: right;
+}
+}
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 15px;
+}
+@media (min-width: 768px) {
+.form-horizontal .form-group-lg .control-label {
+ padding-top: 14.3px;
+}
+}
+@media (min-width: 768px) {
+.form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+}
+}
+.btn {
+ -moz-user-select: none;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ cursor: pointer;
+ display: inline-block;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.42857;
+ margin-bottom: 0;
+ padding: 6px 12px;
+ text-align: center;
+ vertical-align: middle;
+ white-space: nowrap;
+}
+.btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn.focus:active, .btn.active.focus {
+ outline: thin dotted;
+ outline-offset: -2px;
+}
+.btn:hover, .btn:focus, .btn.focus {
+ color: #333;
+ text-decoration: none;
+}
+.btn:active, .btn.active {
+ background-image: none;
+ box-shadow: 0 3px 5px rgba(0, 0, 0, 0.125) inset;
+ outline: 0 none;
+}
+.btn.disabled, .btn[disabled], fieldset[disabled] .btn {
+ box-shadow: none;
+ cursor: not-allowed;
+ opacity: 0.65;
+ pointer-events: none;
+}
+.btn-default {
+ background-color: #fff;
+ border-color: #ccc;
+ color: #333;
+}
+.btn-default:hover, .btn-default:focus, .btn-default.focus, .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default {
+ background-color: #e6e6e6;
+ border-color: #adadad;
+ color: #333;
+}
+.btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled, .btn-default[disabled], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled.focus, .btn-default.focus[disabled], fieldset[disabled] .btn-default.focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default.active[disabled], fieldset[disabled] .btn-default.active {
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default .badge {
+ background-color: #333;
+ color: #fff;
+}
+.btn-primary {
+ background-color: #337ab7;
+ border-color: #2e6da4;
+ color: #fff;
+}
+.btn-primary:hover, .btn-primary:focus, .btn-primary.focus, .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary {
+ background-color: #286090;
+ border-color: #204d74;
+ color: #fff;
+}
+.btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled.focus, .btn-primary.focus[disabled], fieldset[disabled] .btn-primary.focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary.active[disabled], fieldset[disabled] .btn-primary.active {
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary .badge {
+ background-color: #fff;
+ color: #337ab7;
+}
+.btn-success {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+ color: #fff;
+}
+.btn-success:hover, .btn-success:focus, .btn-success.focus, .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success {
+ background-color: #449d44;
+ border-color: #398439;
+ color: #fff;
+}
+.btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled, .btn-success[disabled], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled.focus, .btn-success.focus[disabled], fieldset[disabled] .btn-success.focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success.active[disabled], fieldset[disabled] .btn-success.active {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success .badge {
+ background-color: #fff;
+ color: #5cb85c;
+}
+.btn-info {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+ color: #fff;
+}
+.btn-info:hover, .btn-info:focus, .btn-info.focus, .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info {
+ background-color: #31b0d5;
+ border-color: #269abc;
+ color: #fff;
+}
+.btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled, .btn-info[disabled], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled.focus, .btn-info.focus[disabled], fieldset[disabled] .btn-info.focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info.active[disabled], fieldset[disabled] .btn-info.active {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info .badge {
+ background-color: #fff;
+ color: #5bc0de;
+}
+.btn-warning {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+ color: #fff;
+}
+.btn-warning:hover, .btn-warning:focus, .btn-warning.focus, .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning {
+ background-color: #ec971f;
+ border-color: #d58512;
+ color: #fff;
+}
+.btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled, .btn-warning[disabled], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled.focus, .btn-warning.focus[disabled], fieldset[disabled] .btn-warning.focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning.active[disabled], fieldset[disabled] .btn-warning.active {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning .badge {
+ background-color: #fff;
+ color: #f0ad4e;
+}
+.btn-danger {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+ color: #fff;
+}
+.btn-danger:hover, .btn-danger:focus, .btn-danger.focus, .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger {
+ background-color: #c9302c;
+ border-color: #ac2925;
+ color: #fff;
+}
+.btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled, .btn-danger[disabled], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled.focus, .btn-danger.focus[disabled], fieldset[disabled] .btn-danger.focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger.active[disabled], fieldset[disabled] .btn-danger.active {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger .badge {
+ background-color: #fff;
+ color: #d9534f;
+}
+.btn-link {
+ border-radius: 0;
+ color: #337ab7;
+ font-weight: 400;
+}
+.btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link {
+ background-color: transparent;
+ box-shadow: none;
+}
+.btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover, .btn-link:focus {
+ background-color: transparent;
+ color: #23527c;
+ text-decoration: underline;
+}
+.btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus {
+ color: #777;
+ text-decoration: none;
+}
+.btn-lg, .btn-group-lg > .btn {
+ border-radius: 6px;
+ font-size: 18px;
+ line-height: 1.33;
+ padding: 10px 16px;
+}
+.btn-sm, .btn-group-sm > .btn {
+ border-radius: 3px;
+ font-size: 12px;
+ line-height: 1.5;
+ padding: 5px 10px;
+}
+.btn-xs, .btn-group-xs > .btn {
+ border-radius: 3px;
+ font-size: 12px;
+ line-height: 1.5;
+ padding: 1px 5px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input.btn-block[type="submit"], input.btn-block[type="reset"], input.btn-block[type="button"] {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ transition: opacity 0.15s linear 0s;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+ visibility: hidden;
+}
+.collapse.in {
+ display: block;
+ visibility: visible;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ position: relative;
+ transition-duration: 0.35s;
+ transition-property: height, visibility;
+ transition-timing-function: ease;
+}
+.caret {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid;
+ display: inline-block;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ width: 0;
+}
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0 none;
+}
+.dropdown-menu {
+ background-clip: padding-box;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 4px;
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.176);
+ display: none;
+ float: left;
+ font-size: 14px;
+ left: 0;
+ list-style: outside none none;
+ margin: 2px 0 0;
+ min-width: 160px;
+ padding: 5px 0;
+ position: absolute;
+ text-align: left;
+ top: 100%;
+ z-index: 1000;
+}
+.dropdown-menu.pull-right {
+ left: auto;
+ right: 0;
+}
+.dropdown-menu .divider {
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+}
+.dropdown-menu > li > a {
+ clear: both;
+ color: #333;
+ display: block;
+ font-weight: 400;
+ line-height: 1.42857;
+ padding: 3px 20px;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
+ background-color: #f5f5f5;
+ color: #262626;
+ text-decoration: none;
+}
+.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus {
+ background-color: #337ab7;
+ color: #fff;
+ outline: 0 none;
+ text-decoration: none;
+}
+.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
+ color: #777;
+}
+.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
+ background-color: transparent;
+ background-image: none;
+ cursor: not-allowed;
+ text-decoration: none;
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0 none;
+}
+.dropdown-menu-right {
+ left: auto;
+ right: 0;
+}
+.dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
+.dropdown-header {
+ color: #777;
+ display: block;
+ font-size: 12px;
+ line-height: 1.42857;
+ padding: 3px 20px;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ bottom: 0;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ left: auto;
+ right: 0;
+}
+.dropup .caret, .navbar-fixed-bottom .dropdown .caret {
+ border-bottom: 4px solid;
+ border-top: 0 none;
+ content: "";
+}
+.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu {
+ bottom: 100%;
+ margin-bottom: 1px;
+ top: auto;
+}
+@media (min-width: 768px) {
+.navbar-right .dropdown-menu {
+ left: auto;
+ right: 0;
+}
+.navbar-right .dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
+}
+.btn-group, .btn-group-vertical {
+ display: inline-block;
+ position: relative;
+ vertical-align: middle;
+}
+.btn-group > .btn, .btn-group-vertical > .btn {
+ float: left;
+ position: relative;
+}
+.btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar {
+ margin-left: -5px;
+}
+.btn-toolbar .btn-group, .btn-toolbar .input-group {
+ float: left;
+}
+.btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child > .btn:last-child, .btn-group > .btn-group:first-child > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn-group:last-child > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
+ outline: 0 none;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ box-shadow: 0 3px 5px rgba(0, 0, 0, 0.125) inset;
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn, .btn-group-vertical > .btn-group, .btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ max-width: 100%;
+ width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group {
+ margin-left: 0;
+ margin-top: -1px;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 4px;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-bottom-left-radius: 4px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group-justified {
+ border-collapse: separate;
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+}
+.btn-group-justified > .btn, .btn-group-justified > .btn-group {
+ display: table-cell;
+ float: none;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ clip: rect(0px, 0px, 0px, 0px);
+ pointer-events: none;
+ position: absolute;
+}
+.input-group {
+ border-collapse: separate;
+ display: table;
+ position: relative;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-group .form-control {
+ float: left;
+ margin-bottom: 0;
+ position: relative;
+ width: 100%;
+ z-index: 2;
+}
+.input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn {
+ border-radius: 6px;
+ font-size: 18px;
+ height: 46px;
+ line-height: 1.33;
+ padding: 10px 16px;
+}
+select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn, select.input-group-lg[multiple] > .form-control, select.input-group-lg[multiple] > .input-group-addon, select.input-group-lg[multiple] > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn {
+ border-radius: 3px;
+ font-size: 12px;
+ height: 30px;
+ line-height: 1.5;
+ padding: 5px 10px;
+}
+select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn, select.input-group-sm[multiple] > .form-control, select.input-group-sm[multiple] > .input-group-addon, select.input-group-sm[multiple] > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon, .input-group-btn, .input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon, .input-group-btn {
+ vertical-align: middle;
+ white-space: nowrap;
+ width: 1%;
+}
+.input-group-addon {
+ background-color: #eee;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ color: #555;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1;
+ padding: 6px 12px;
+ text-align: center;
+}
+.input-group-addon.input-sm {
+ border-radius: 3px;
+ font-size: 12px;
+ padding: 5px 10px;
+}
+.input-group-addon.input-lg {
+ border-radius: 6px;
+ font-size: 18px;
+ padding: 10px 16px;
+}
+.input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0 none;
+}
+.input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0 none;
+}
+.input-group-btn {
+ font-size: 0;
+ position: relative;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group {
+ margin-left: -1px;
+}
+.nav {
+ list-style: outside none none;
+ margin-bottom: 0;
+ padding-left: 0;
+}
+.nav > li {
+ display: block;
+ position: relative;
+}
+.nav > li > a {
+ display: block;
+ padding: 10px 15px;
+ position: relative;
+}
+.nav > li > a:hover, .nav > li > a:focus {
+ background-color: #eee;
+ text-decoration: none;
+}
+.nav > li.disabled > a {
+ color: #777;
+}
+.nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
+ background-color: transparent;
+ color: #777;
+ cursor: not-allowed;
+ text-decoration: none;
+}
+.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
+ background-color: #eee;
+ border-color: #337ab7;
+}
+.nav .nav-divider {
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ border: 1px solid transparent;
+ border-radius: 4px 4px 0 0;
+ line-height: 1.42857;
+ margin-right: 2px;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
+ -moz-border-bottom-colors: none;
+ -moz-border-left-colors: none;
+ -moz-border-right-colors: none;
+ -moz-border-top-colors: none;
+ background-color: #fff;
+ border-color: #ddd #ddd transparent;
+ border-image: none;
+ border-style: solid;
+ border-width: 1px;
+ color: #555;
+ cursor: default;
+}
+.nav-tabs.nav-justified {
+ border-bottom: 0 none;
+ width: 100%;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ left: auto;
+ top: auto;
+}
+@media (min-width: 768px) {
+.nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+}
+.nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+}
+}
+.nav-tabs.nav-justified > li > a {
+ border-radius: 4px;
+ margin-right: 0;
+}
+.nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+.nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #fff;
+}
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 4px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus {
+ background-color: #337ab7;
+ color: #fff;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-left: 0;
+ margin-top: 2px;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ left: auto;
+ top: auto;
+}
+@media (min-width: 768px) {
+.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+}
+.nav-justified > li > a {
+ margin-bottom: 0;
+}
+}
+.nav-tabs-justified {
+ border-bottom: 0 none;
+}
+.nav-tabs-justified > li > a {
+ border-radius: 4px;
+ margin-right: 0;
+}
+.nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+.nav-tabs-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #fff;
+}
+}
+.tab-content > .tab-pane {
+ display: none;
+ visibility: hidden;
+}
+.tab-content > .active {
+ display: block;
+ visibility: visible;
+}
+.nav-tabs .dropdown-menu {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ margin-top: -1px;
+}
+.navbar {
+ border: 1px solid transparent;
+ margin-bottom: 20px;
+ min-height: 50px;
+ position: relative;
+}
+@media (min-width: 768px) {
+.navbar {
+ border-radius: 4px;
+}
+}
+@media (min-width: 768px) {
+.navbar-header {
+ float: left;
+}
+}
+.navbar-collapse {
+ border-top: 1px solid transparent;
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset;
+ overflow-x: visible;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+.navbar-collapse {
+ border-top: 0 none;
+ box-shadow: none;
+ width: auto;
+}
+.navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ overflow: visible !important;
+ padding-bottom: 0;
+ visibility: visible !important;
+}
+.navbar-collapse.in {
+ overflow-y: visible;
+}
+.navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+ padding-left: 0;
+ padding-right: 0;
+}
+}
+.navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+.navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+}
+}
+.container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse {
+ margin-left: -15px;
+ margin-right: -15px;
+}
+@media (min-width: 768px) {
+.container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse {
+ margin-left: 0;
+ margin-right: 0;
+}
+}
+.navbar-static-top {
+ border-width: 0 0 1px;
+ z-index: 1000;
+}
+@media (min-width: 768px) {
+.navbar-static-top {
+ border-radius: 0;
+}
+}
+.navbar-fixed-top, .navbar-fixed-bottom {
+ left: 0;
+ position: fixed;
+ right: 0;
+ z-index: 1030;
+}
+@media (min-width: 768px) {
+.navbar-fixed-top, .navbar-fixed-bottom {
+ border-radius: 0;
+}
+}
+.navbar-fixed-top {
+ border-width: 0 0 1px;
+ top: 0;
+}
+.navbar-fixed-bottom {
+ border-width: 1px 0 0;
+ bottom: 0;
+ margin-bottom: 0;
+}
+.navbar-brand {
+ float: left;
+ font-size: 18px;
+ height: 50px;
+ line-height: 20px;
+ padding: 15px;
+}
+.navbar-brand:hover, .navbar-brand:focus {
+ text-decoration: none;
+}
+.navbar-brand > img {
+ display: block;
+}
+@media (min-width: 768px) {
+.navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand {
+ margin-left: -15px;
+}
+}
+.navbar-toggle {
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ float: right;
+ margin-bottom: 8px;
+ margin-right: 15px;
+ margin-top: 8px;
+ padding: 9px 10px;
+ position: relative;
+}
+.navbar-toggle:focus {
+ outline: 0 none;
+}
+.navbar-toggle .icon-bar {
+ border-radius: 1px;
+ display: block;
+ height: 2px;
+ width: 22px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+.navbar-toggle {
+ display: none;
+}
+}
+.navbar-nav {
+ margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+ line-height: 20px;
+ padding-bottom: 10px;
+ padding-top: 10px;
+}
+@media (max-width: 767px) {
+.navbar-nav .open .dropdown-menu {
+ background-color: transparent;
+ border: 0 none;
+ box-shadow: none;
+ float: none;
+ margin-top: 0;
+ position: static;
+ width: auto;
+}
+.navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+}
+.navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+}
+.navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+}
+}
+@media (min-width: 768px) {
+.navbar-nav {
+ float: left;
+ margin: 0;
+}
+.navbar-nav > li {
+ float: left;
+}
+.navbar-nav > li > a {
+ padding-bottom: 15px;
+ padding-top: 15px;
+}
+}
+.navbar-form {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1);
+ margin: 8px -15px;
+ padding: 10px 15px;
+}
+@media (min-width: 768px) {
+.navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.navbar-form .form-control {
+ display: inline-block;
+ vertical-align: middle;
+ width: auto;
+}
+.navbar-form .form-control-static {
+ display: inline-block;
+}
+.navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+}
+.navbar-form .input-group .input-group-addon, .navbar-form .input-group .input-group-btn, .navbar-form .input-group .form-control {
+ width: auto;
+}
+.navbar-form .input-group > .form-control {
+ width: 100%;
+}
+.navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.navbar-form .radio, .navbar-form .checkbox {
+ display: inline-block;
+ margin-bottom: 0;
+ margin-top: 0;
+ vertical-align: middle;
+}
+.navbar-form .radio label, .navbar-form .checkbox label {
+ padding-left: 0;
+}
+.navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] {
+ margin-left: 0;
+ position: relative;
+}
+.navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+}
+}
+@media (max-width: 767px) {
+.navbar-form .form-group {
+ margin-bottom: 5px;
+}
+.navbar-form .form-group:last-child {
+ margin-bottom: 0;
+}
+}
+@media (min-width: 768px) {
+.navbar-form {
+ border: 0 none;
+ box-shadow: none;
+ margin-left: 0;
+ margin-right: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ width: auto;
+}
+}
+.navbar-nav > li > .dropdown-menu {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ margin-top: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ border-radius: 4px 4px 0 0;
+}
+.navbar-btn {
+ margin-bottom: 8px;
+ margin-top: 8px;
+}
+.navbar-btn.btn-sm {
+ margin-bottom: 10px;
+ margin-top: 10px;
+}
+.navbar-btn.btn-xs {
+ margin-bottom: 14px;
+ margin-top: 14px;
+}
+.navbar-text {
+ margin-bottom: 15px;
+ margin-top: 15px;
+}
+@media (min-width: 768px) {
+.navbar-text {
+ float: left;
+ margin-left: 15px;
+ margin-right: 15px;
+}
+}
+@media (min-width: 768px) {
+.navbar-left {
+ float: left !important;
+}
+.navbar-right {
+ float: right !important;
+ margin-right: -15px;
+}
+.navbar-right ~ .navbar-right {
+ margin-right: 0;
+}
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777;
+}
+.navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus {
+ background-color: transparent;
+ color: #5e5e5e;
+}
+.navbar-default .navbar-text {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {
+ background-color: transparent;
+ color: #333;
+}
+.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
+ background-color: #e7e7e7;
+ color: #555;
+}
+.navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus {
+ background-color: transparent;
+ color: #ccc;
+}
+.navbar-default .navbar-toggle {
+ border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
+ background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888;
+}
+.navbar-default .navbar-collapse, .navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {
+ background-color: #e7e7e7;
+ color: #555;
+}
+@media (max-width: 767px) {
+.navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777;
+}
+.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-color: transparent;
+ color: #333;
+}
+.navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ background-color: #e7e7e7;
+ color: #555;
+}
+.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ background-color: transparent;
+ color: #ccc;
+}
+}
+.navbar-default .navbar-link {
+ color: #777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333;
+}
+.navbar-default .btn-link {
+ color: #777;
+}
+.navbar-default .btn-link:hover, .navbar-default .btn-link:focus {
+ color: #333;
+}
+.navbar-default .btn-link[disabled]:hover, fieldset[disabled] .navbar-default .btn-link:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #ccc;
+}
+.navbar-inverse {
+ background-color: #222;
+ border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
+ background-color: transparent;
+ color: #fff;
+}
+.navbar-inverse .navbar-text {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus {
+ background-color: transparent;
+ color: #fff;
+}
+.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus {
+ background-color: #080808;
+ color: #fff;
+}
+.navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus {
+ background-color: transparent;
+ color: #444;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
+ background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #fff;
+}
+.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
+ background-color: #080808;
+ color: #fff;
+}
+@media (max-width: 767px) {
+.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+}
+.navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+}
+.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-color: transparent;
+ color: #fff;
+}
+.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ background-color: #080808;
+ color: #fff;
+}
+.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ background-color: transparent;
+ color: #444;
+}
+}
+.navbar-inverse .navbar-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #fff;
+}
+.navbar-inverse .btn-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus {
+ color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover, fieldset[disabled] .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444;
+}
+.breadcrumb {
+ border-radius: 4px;
+ list-style: outside none none;
+ margin-bottom: 20px;
+ padding: 8px 15px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li::before {
+ color: #ccc;
+ content: "/ ";
+ padding: 0 5px;
+}
+.breadcrumb > .active {
+ color: #777;
+}
+.pagination {
+ border-radius: 4px;
+ display: inline-block;
+ margin: 20px 0;
+ padding-left: 0;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a, .pagination > li > span {
+ background-color: #fff;
+ border: 1px solid #ddd;
+ color: #337ab7;
+ float: left;
+ line-height: 1.42857;
+ margin-left: -1px;
+ padding: 6px 12px;
+ position: relative;
+ text-decoration: none;
+}
+.pagination > li:first-child > a, .pagination > li:first-child > span {
+ border-bottom-left-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-left: 0;
+}
+.pagination > li:last-child > a, .pagination > li:last-child > span {
+ border-bottom-right-radius: 4px;
+ border-top-right-radius: 4px;
+}
+.pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus {
+ background-color: #eee;
+ border-color: #ddd;
+ color: #23527c;
+}
+.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {
+ background-color: #337ab7;
+ border-color: #337ab7;
+ color: #fff;
+ cursor: default;
+ z-index: 2;
+}
+.pagination > .disabled > span, .pagination > .disabled > span:hover, .pagination > .disabled > span:focus, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus {
+ background-color: #fff;
+ border-color: #ddd;
+ color: #777;
+ cursor: not-allowed;
+}
+.pagination-lg > li > a, .pagination-lg > li > span {
+ font-size: 18px;
+ padding: 10px 16px;
+}
+.pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 6px;
+ border-top-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span {
+ border-bottom-right-radius: 6px;
+ border-top-right-radius: 6px;
+}
+.pagination-sm > li > a, .pagination-sm > li > span {
+ font-size: 12px;
+ padding: 5px 10px;
+}
+.pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.pager {
+ list-style: outside none none;
+ margin: 20px 0;
+ padding-left: 0;
+ text-align: center;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a, .pager li > span {
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 15px;
+ display: inline-block;
+ padding: 5px 14px;
+}
+.pager li > a:hover, .pager li > a:focus {
+ background-color: #eee;
+ text-decoration: none;
+}
+.pager .next > a, .pager .next > span {
+ float: right;
+}
+.pager .previous > a, .pager .previous > span {
+ float: left;
+}
+.pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span {
+ background-color: #fff;
+ color: #777;
+ cursor: not-allowed;
+}
+.label {
+ border-radius: 0.25em;
+ color: #fff;
+ display: inline;
+ font-size: 75%;
+ font-weight: 700;
+ line-height: 1;
+ padding: 0.2em 0.6em 0.3em;
+ text-align: center;
+ vertical-align: baseline;
+ white-space: nowrap;
+}
+a.label:hover, a.label:focus {
+ color: #fff;
+ cursor: pointer;
+ text-decoration: none;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #777;
+}
+.label-default[href]:hover, .label-default[href]:focus {
+ background-color: #5e5e5e;
+}
+.label-primary {
+ background-color: #337ab7;
+}
+.label-primary[href]:hover, .label-primary[href]:focus {
+ background-color: #286090;
+}
+.label-success {
+ background-color: #5cb85c;
+}
+.label-success[href]:hover, .label-success[href]:focus {
+ background-color: #449d44;
+}
+.label-info {
+ background-color: #5bc0de;
+}
+.label-info[href]:hover, .label-info[href]:focus {
+ background-color: #31b0d5;
+}
+.label-warning {
+ background-color: #f0ad4e;
+}
+.label-warning[href]:hover, .label-warning[href]:focus {
+ background-color: #ec971f;
+}
+.label-danger {
+ background-color: #d9534f;
+}
+.label-danger[href]:hover, .label-danger[href]:focus {
+ background-color: #c9302c;
+}
+.badge {
+ background-color: #777;
+ border-radius: 10px;
+ color: #fff;
+ display: inline-block;
+ font-size: 12px;
+ font-weight: 700;
+ line-height: 1;
+ min-width: 10px;
+ padding: 3px 7px;
+ text-align: center;
+ vertical-align: baseline;
+ white-space: nowrap;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-xs .badge {
+ padding: 1px 5px;
+ top: 0;
+}
+a.badge:hover, a.badge:focus {
+ color: #fff;
+ cursor: pointer;
+ text-decoration: none;
+}
+.list-group-item.active > .badge, .nav-pills > .active > a > .badge {
+ background-color: #fff;
+ color: #337ab7;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ background-color: #eee;
+ color: inherit;
+ margin-bottom: 30px;
+ padding: 30px 15px;
+}
+.jumbotron h1, .jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ font-size: 21px;
+ font-weight: 200;
+ margin-bottom: 15px;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron, .container-fluid .jumbotron {
+ border-radius: 6px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+.jumbotron {
+ padding: 48px 0;
+}
+.container .jumbotron, .container-fluid .jumbotron {
+ padding-left: 60px;
+ padding-right: 60px;
+}
+.jumbotron h1, .jumbotron .h1 {
+ font-size: 63px;
+}
+}
+.thumbnail {
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ display: block;
+ line-height: 1.42857;
+ margin-bottom: 20px;
+ padding: 4px;
+ transition: border 0.2s ease-in-out 0s;
+}
+.thumbnail > img, .thumbnail a > img {
+ margin-left: auto;
+ margin-right: auto;
+}
+a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active {
+ border-color: #337ab7;
+}
+.thumbnail .caption {
+ color: #333;
+ padding: 9px;
+}
+.alert {
+ border: 1px solid transparent;
+ border-radius: 4px;
+ margin-bottom: 20px;
+ padding: 15px;
+}
+.alert h4 {
+ color: inherit;
+ margin-top: 0;
+}
+.alert .alert-link {
+ font-weight: 700;
+}
+.alert > p, .alert > ul {
+ margin-bottom: 0;
+}
+.alert > p + p {
+ margin-top: 5px;
+}
+.alert-dismissable, .alert-dismissible {
+ padding-right: 35px;
+}
+.alert-dismissable .close, .alert-dismissible .close {
+ color: inherit;
+ position: relative;
+ right: -21px;
+ top: -2px;
+}
+.alert-success {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #3c763d;
+}
+.alert-success hr {
+ border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+ color: #2b542c;
+}
+.alert-info {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #31708f;
+}
+.alert-info hr {
+ border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+ color: #245269;
+}
+.alert-warning {
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+ color: #8a6d3b;
+}
+.alert-warning hr {
+ border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+ color: #66512c;
+}
+.alert-danger {
+ background-color: #f2dede;
+ border-color: #ebccd1;
+ color: #a94442;
+}
+.alert-danger hr {
+ border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+ color: #843534;
+}
+@keyframes progress-bar-stripes {
+0% {
+ background-position: 40px 0;
+}
+100% {
+ background-position: 0 0;
+}
+}
+.progress {
+ background-color: #f5f5f5;
+ border-radius: 4px;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
+ height: 20px;
+ margin-bottom: 20px;
+ overflow: hidden;
+}
+.progress-bar {
+ background-color: #337ab7;
+ box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.15) inset;
+ color: #fff;
+ float: left;
+ font-size: 12px;
+ height: 100%;
+ line-height: 20px;
+ text-align: center;
+ transition: width 0.6s ease 0s;
+ width: 0;
+}
+.progress-striped .progress-bar, .progress-bar-striped {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar, .progress-bar.active {
+ animation: 2s linear 0s normal none infinite running progress-bar-stripes;
+}
+.progress-bar-success {
+ background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media-right, .media > .pull-right {
+ padding-left: 10px;
+}
+.media-left, .media > .pull-left {
+ padding-right: 10px;
+}
+.media-left, .media-right, .media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-bottom: 5px;
+ margin-top: 0;
+}
+.media-list {
+ list-style: outside none none;
+ padding-left: 0;
+}
+.list-group {
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.list-group-item {
+ background-color: #fff;
+ border: 1px solid #ddd;
+ display: block;
+ margin-bottom: -1px;
+ padding: 10px 15px;
+ position: relative;
+}
+.list-group-item:first-child {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ margin-bottom: 0;
+}
+a.list-group-item {
+ color: #555;
+}
+a.list-group-item .list-group-item-heading {
+ color: #333;
+}
+a.list-group-item:hover, a.list-group-item:focus {
+ background-color: #f5f5f5;
+ color: #555;
+ text-decoration: none;
+}
+.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus {
+ background-color: #eee;
+ color: #777;
+ cursor: not-allowed;
+}
+.list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text {
+ color: #777;
+}
+.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
+ background-color: #337ab7;
+ border-color: #337ab7;
+ color: #fff;
+ z-index: 2;
+}
+.list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading > .small {
+ color: inherit;
+}
+.list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text {
+ color: #c7ddef;
+}
+.list-group-item-success {
+ background-color: #dff0d8;
+ color: #3c763d;
+}
+a.list-group-item-success {
+ color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-success:hover, a.list-group-item-success:focus {
+ background-color: #d0e9c6;
+ color: #3c763d;
+}
+a.list-group-item-success.active, a.list-group-item-success.active:hover, a.list-group-item-success.active:focus {
+ background-color: #3c763d;
+ border-color: #3c763d;
+ color: #fff;
+}
+.list-group-item-info {
+ background-color: #d9edf7;
+ color: #31708f;
+}
+a.list-group-item-info {
+ color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-info:hover, a.list-group-item-info:focus {
+ background-color: #c4e3f3;
+ color: #31708f;
+}
+a.list-group-item-info.active, a.list-group-item-info.active:hover, a.list-group-item-info.active:focus {
+ background-color: #31708f;
+ border-color: #31708f;
+ color: #fff;
+}
+.list-group-item-warning {
+ background-color: #fcf8e3;
+ color: #8a6d3b;
+}
+a.list-group-item-warning {
+ color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-warning:hover, a.list-group-item-warning:focus {
+ background-color: #faf2cc;
+ color: #8a6d3b;
+}
+a.list-group-item-warning.active, a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus {
+ background-color: #8a6d3b;
+ border-color: #8a6d3b;
+ color: #fff;
+}
+.list-group-item-danger {
+ background-color: #f2dede;
+ color: #a94442;
+}
+a.list-group-item-danger {
+ color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-danger:hover, a.list-group-item-danger:focus {
+ background-color: #ebcccc;
+ color: #a94442;
+}
+a.list-group-item-danger.active, a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus {
+ background-color: #a94442;
+ border-color: #a94442;
+ color: #fff;
+}
+.list-group-item-heading {
+ margin-bottom: 5px;
+ margin-top: 0;
+}
+.list-group-item-text {
+ line-height: 1.3;
+ margin-bottom: 0;
+}
+.panel {
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ margin-bottom: 20px;
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ border-bottom: 1px solid transparent;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+ padding: 10px 15px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ color: inherit;
+ font-size: 16px;
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.panel-title > a {
+ color: inherit;
+}
+.panel-footer {
+ background-color: #f5f5f5;
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top: 1px solid #ddd;
+ padding: 10px 15px;
+}
+.panel > .list-group, .panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item, .panel > .panel-collapse > .list-group .list-group-item {
+ border-radius: 0;
+ border-width: 1px 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child, .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0 none;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child, .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0 none;
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+.panel > .table, .panel > .table-responsive > .table, .panel > .panel-collapse > .table {
+ margin-bottom: 0;
+}
+.panel > .table caption, .panel > .table-responsive > .table caption, .panel > .panel-collapse > .table caption {
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.panel > .table:first-child, .panel > .table-responsive:first-child > .table:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 3px;
+}
+.panel > .table:last-child, .panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table, .panel > .panel-body + .table-responsive, .panel > .table + .panel-body, .panel > .table-responsive + .panel-body {
+ border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th, .panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0 none;
+}
+.panel > .table-bordered, .panel > .table-responsive > .table-bordered {
+ border: 0 none;
+}
+.panel > .table-bordered > thead > tr > th:first-child, .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, .panel > .table-bordered > tbody > tr > th:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, .panel > .table-bordered > tfoot > tr > th:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, .panel > .table-bordered > thead > tr > td:first-child, .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, .panel > .table-bordered > tbody > tr > td:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, .panel > .table-bordered > tfoot > tr > td:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0 none;
+}
+.panel > .table-bordered > thead > tr > th:last-child, .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, .panel > .table-bordered > tbody > tr > th:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, .panel > .table-bordered > tfoot > tr > th:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, .panel > .table-bordered > thead > tr > td:last-child, .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, .panel > .table-bordered > tbody > tr > td:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, .panel > .table-bordered > tfoot > tr > td:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0 none;
+}
+.panel > .table-bordered > thead > tr:first-child > td, .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, .panel > .table-bordered > tbody > tr:first-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, .panel > .table-bordered > thead > tr:first-child > th, .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, .panel > .table-bordered > tbody > tr:first-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0 none;
+}
+.panel > .table-bordered > tbody > tr:last-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, .panel > .table-bordered > tfoot > tr:last-child > td, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, .panel > .table-bordered > tbody > tr:last-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, .panel > .table-bordered > tfoot > tr:last-child > th, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0 none;
+}
+.panel > .table-responsive {
+ border: 0 none;
+ margin-bottom: 0;
+}
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ border-radius: 4px;
+ margin-bottom: 0;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0 none;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body, .panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+ border-top: 0 none;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #ddd;
+}
+.panel-default {
+ border-color: #ddd;
+}
+.panel-default > .panel-heading {
+ background-color: #f5f5f5;
+ border-color: #ddd;
+ color: #333;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+ background-color: #333;
+ color: #f5f5f5;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ddd;
+}
+.panel-primary {
+ border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+ background-color: #337ab7;
+ border-color: #337ab7;
+ color: #fff;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+ background-color: #fff;
+ color: #337ab7;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #337ab7;
+}
+.panel-success {
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #3c763d;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+ background-color: #3c763d;
+ color: #dff0d8;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #d6e9c6;
+}
+.panel-info {
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #31708f;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+ background-color: #31708f;
+ color: #d9edf7;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #bce8f1;
+}
+.panel-warning {
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+ color: #8a6d3b;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+ background-color: #8a6d3b;
+ color: #fcf8e3;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #faebcc;
+}
+.panel-danger {
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+ background-color: #f2dede;
+ border-color: #ebccd1;
+ color: #a94442;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+ background-color: #a94442;
+ color: #f2dede;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+ display: block;
+ height: 0;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+}
+.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video {
+ border: 0 none;
+ bottom: 0;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.embed-responsive.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+.embed-responsive.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+.well {
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) inset;
+ margin-bottom: 20px;
+ min-height: 20px;
+ padding: 19px;
+}
+.well blockquote {
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.well-lg {
+ border-radius: 6px;
+ padding: 24px;
+}
+.well-sm {
+ border-radius: 3px;
+ padding: 9px;
+}
+.close {
+ color: #000;
+ float: right;
+ font-size: 21px;
+ font-weight: 700;
+ line-height: 1;
+ opacity: 0.2;
+ text-shadow: 0 1px 0 #fff;
+}
+.close:hover, .close:focus {
+ color: #000;
+ cursor: pointer;
+ opacity: 0.5;
+ text-decoration: none;
+}
+button.close {
+ background: rgba(0, 0, 0, 0) none repeat scroll 0 0;
+ border: 0 none;
+ cursor: pointer;
+ padding: 0;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ bottom: 0;
+ display: none;
+ left: 0;
+ outline: 0 none;
+ overflow: hidden;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 1040;
+}
+.modal.fade .modal-dialog {
+ transform: translate(0px, -25%);
+ transition: transform 0.3s ease-out 0s;
+}
+.modal.in .modal-dialog {
+ transform: translate(0px, 0px);
+}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+.modal-dialog {
+ margin: 10px;
+ position: relative;
+ width: auto;
+}
+.modal-content {
+ background-clip: padding-box;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ outline: 0 none;
+ position: relative;
+}
+.modal-backdrop {
+ background-color: #000;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+}
+.modal-backdrop.in {
+ opacity: 0.5;
+}
+.modal-header {
+ border-bottom: 1px solid #e5e5e5;
+ min-height: 16.43px;
+ padding: 15px;
+}
+.modal-header .close {
+ margin-top: -2px;
+}
+.modal-title {
+ line-height: 1.42857;
+ margin: 0;
+}
+.modal-body {
+ padding: 15px;
+ position: relative;
+}
+.modal-footer {
+ border-top: 1px solid #e5e5e5;
+ padding: 15px;
+ text-align: right;
+}
+.modal-footer .btn + .btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+.modal-scrollbar-measure {
+ height: 50px;
+ overflow: scroll;
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+}
+@media (min-width: 768px) {
+.modal-dialog {
+ margin: 30px auto;
+ width: 600px;
+}
+.modal-content {
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+}
+.modal-sm {
+ width: 300px;
+}
+}
+@media (min-width: 992px) {
+.modal-lg {
+ width: 900px;
+}
+}
+.tooltip {
+ display: block;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 1.4;
+ opacity: 0;
+ position: absolute;
+ visibility: visible;
+ z-index: 1070;
+}
+.tooltip.in {
+ opacity: 0.9;
+}
+.tooltip.top {
+ margin-top: -3px;
+ padding: 5px 0;
+}
+.tooltip.right {
+ margin-left: 3px;
+ padding: 0 5px;
+}
+.tooltip.bottom {
+ margin-top: 3px;
+ padding: 5px 0;
+}
+.tooltip.left {
+ margin-left: -3px;
+ padding: 0 5px;
+}
+.tooltip-inner {
+ background-color: #000;
+ border-radius: 4px;
+ color: #fff;
+ max-width: 200px;
+ padding: 3px 8px;
+ text-align: center;
+ text-decoration: none;
+}
+.tooltip-arrow {
+ border-color: transparent;
+ border-style: solid;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+.tooltip.top .tooltip-arrow {
+ border-top-color: #000;
+ border-width: 5px 5px 0;
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+}
+.tooltip.top-left .tooltip-arrow {
+ border-top-color: #000;
+ border-width: 5px 5px 0;
+ bottom: 0;
+ margin-bottom: -5px;
+ right: 5px;
+}
+.tooltip.top-right .tooltip-arrow {
+ border-top-color: #000;
+ border-width: 5px 5px 0;
+ bottom: 0;
+ left: 5px;
+ margin-bottom: -5px;
+}
+.tooltip.right .tooltip-arrow {
+ border-right-color: #000;
+ border-width: 5px 5px 5px 0;
+ left: 0;
+ margin-top: -5px;
+ top: 50%;
+}
+.tooltip.left .tooltip-arrow {
+ border-left-color: #000;
+ border-width: 5px 0 5px 5px;
+ margin-top: -5px;
+ right: 0;
+ top: 50%;
+}
+.tooltip.bottom .tooltip-arrow {
+ border-bottom-color: #000;
+ border-width: 0 5px 5px;
+ left: 50%;
+ margin-left: -5px;
+ top: 0;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ border-bottom-color: #000;
+ border-width: 0 5px 5px;
+ margin-top: -5px;
+ right: 5px;
+ top: 0;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ border-bottom-color: #000;
+ border-width: 0 5px 5px;
+ left: 5px;
+ margin-top: -5px;
+ top: 0;
+}
+.popover {
+ background-clip: padding-box;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ display: none;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size: 14px;
+ font-weight: 400;
+ left: 0;
+ line-height: 1.42857;
+ max-width: 276px;
+ padding: 1px;
+ position: absolute;
+ text-align: left;
+ top: 0;
+ white-space: normal;
+ z-index: 1060;
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
+ font-size: 14px;
+ margin: 0;
+ padding: 8px 14px;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover > .arrow, .popover > .arrow::after {
+ border-color: transparent;
+ border-style: solid;
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+.popover > .arrow {
+ border-width: 11px;
+}
+.popover > .arrow::after {
+ border-width: 10px;
+ content: "";
+}
+.popover.top > .arrow {
+ border-bottom-width: 0;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+}
+.popover.top > .arrow::after {
+ border-bottom-width: 0;
+ border-top-color: #fff;
+ bottom: 1px;
+ content: " ";
+ margin-left: -10px;
+}
+.popover.right > .arrow {
+ border-left-width: 0;
+ border-right-color: rgba(0, 0, 0, 0.25);
+ left: -11px;
+ margin-top: -11px;
+ top: 50%;
+}
+.popover.right > .arrow::after {
+ border-left-width: 0;
+ border-right-color: #fff;
+ bottom: -10px;
+ content: " ";
+ left: 1px;
+}
+.popover.bottom > .arrow {
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ border-top-width: 0;
+ left: 50%;
+ margin-left: -11px;
+ top: -11px;
+}
+.popover.bottom > .arrow::after {
+ border-bottom-color: #fff;
+ border-top-width: 0;
+ content: " ";
+ margin-left: -10px;
+ top: 1px;
+}
+.popover.left > .arrow {
+ border-left-color: rgba(0, 0, 0, 0.25);
+ border-right-width: 0;
+ margin-top: -11px;
+ right: -11px;
+ top: 50%;
+}
+.popover.left > .arrow::after {
+ border-left-color: #fff;
+ border-right-width: 0;
+ bottom: -10px;
+ content: " ";
+ right: 1px;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+}
+.carousel-inner > .item {
+ display: none;
+ position: relative;
+ transition: left 0.6s ease-in-out 0s;
+}
+.carousel-inner > .item > img, .carousel-inner > .item > a > img {
+ line-height: 1;
+}
+@media not all, not all {
+.carousel-inner > .item {
+ backface-visibility: hidden;
+ transition: transform 0.6s ease-in-out 0s;
+}
+.carousel-inner > .item.next, .carousel-inner > .item.active.right {
+ left: 0;
+ transform: translate3d(100%, 0px, 0px);
+}
+.carousel-inner > .item.prev, .carousel-inner > .item.active.left {
+ left: 0;
+ transform: translate3d(-100%, 0px, 0px);
+}
+.carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active {
+ left: 0;
+ transform: translate3d(0px, 0px, 0px);
+}
+}
+.carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev {
+ display: block;
+}
+.carousel-inner > .active {
+ left: 0;
+}
+.carousel-inner > .next, .carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel-inner > .next {
+ left: 100%;
+}
+.carousel-inner > .prev {
+ left: -100%;
+}
+.carousel-inner > .next.left, .carousel-inner > .prev.right {
+ left: 0;
+}
+.carousel-inner > .active.left {
+ left: -100%;
+}
+.carousel-inner > .active.right {
+ left: 100%;
+}
+.carousel-control {
+ bottom: 0;
+ color: #fff;
+ font-size: 20px;
+ left: 0;
+ opacity: 0.5;
+ position: absolute;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+ top: 0;
+ width: 15%;
+}
+.carousel-control.left {
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0px, rgba(0, 0, 0, 0) 100%);
+ background-repeat: repeat-x;
+}
+.carousel-control.right {
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0px, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ left: auto;
+ right: 0;
+}
+.carousel-control:hover, .carousel-control:focus {
+ color: #fff;
+ opacity: 0.9;
+ outline: 0 none;
+ text-decoration: none;
+}
+.carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right {
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+}
+.carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+}
+.carousel-control .icon-next, .carousel-control .glyphicon-chevron-right {
+ margin-right: -10px;
+ right: 50%;
+}
+.carousel-control .icon-prev, .carousel-control .icon-next {
+ font-family: serif;
+ height: 20px;
+ margin-top: -10px;
+ width: 20px;
+}
+.carousel-control .icon-prev::before {
+ content: "‹";
+}
+.carousel-control .icon-next::before {
+ content: "›";
+}
+.carousel-indicators {
+ bottom: 10px;
+ left: 50%;
+ list-style: outside none none;
+ margin-left: -30%;
+ padding-left: 0;
+ position: absolute;
+ text-align: center;
+ width: 60%;
+ z-index: 15;
+}
+.carousel-indicators li {
+ background-color: rgba(0, 0, 0, 0);
+ border: 1px solid #fff;
+ border-radius: 10px;
+ cursor: pointer;
+ display: inline-block;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ width: 10px;
+}
+.carousel-indicators .active {
+ background-color: #fff;
+ height: 12px;
+ margin: 0;
+ width: 12px;
+}
+.carousel-caption {
+ bottom: 20px;
+ color: #fff;
+ left: 15%;
+ padding-bottom: 20px;
+ padding-top: 20px;
+ position: absolute;
+ right: 15%;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+ z-index: 10;
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+.carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right, .carousel-control .icon-prev, .carousel-control .icon-next {
+ font-size: 30px;
+ height: 30px;
+ margin-top: -15px;
+ width: 30px;
+}
+.carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev {
+ margin-left: -15px;
+}
+.carousel-control .glyphicon-chevron-right, .carousel-control .icon-next {
+ margin-right: -15px;
+}
+.carousel-caption {
+ left: 20%;
+ padding-bottom: 30px;
+ right: 20%;
+}
+.carousel-indicators {
+ bottom: 20px;
+}
+}
+.clearfix::before, .clearfix::after, .dl-horizontal dd::before, .dl-horizontal dd::after, .container::before, .container::after, .container-fluid::before, .container-fluid::after, .row::before, .row::after, .form-horizontal .form-group::before, .form-horizontal .form-group::after, .btn-toolbar::before, .btn-toolbar::after, .btn-group-vertical > .btn-group::before, .btn-group-vertical > .btn-group::after, .nav::before, .nav::after, .navbar::before, .navbar::after, .navbar-header::before, .navbar-header::after, .navbar-collapse::before, .navbar-collapse::after, .pager::before, .pager::after, .panel-body::before, .panel-body::after, .modal-footer::before, .modal-footer::after {
+ content: " ";
+ display: table;
+}
+.clearfix::after, .dl-horizontal dd::after, .container::after, .container-fluid::after, .row::after, .form-horizontal .form-group::after, .btn-toolbar::after, .btn-group-vertical > .btn-group::after, .nav::after, .navbar::after, .navbar-header::after, .navbar-collapse::after, .pager::after, .panel-body::after, .modal-footer::after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ background-color: transparent;
+ border: 0 none;
+ color: transparent;
+ font: 0px/0 a;
+ text-shadow: none;
+}
+.hidden {
+ display: none !important;
+ visibility: hidden !important;
+}
+.affix {
+ position: fixed;
+}
+.visible-xs, .visible-sm, .visible-md, .visible-lg {
+ display: none !important;
+}
+.visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block {
+ display: none !important;
+}
+@media (max-width: 767px) {
+.visible-xs {
+ display: block !important;
+}
+table.visible-xs {
+ display: table;
+}
+tr.visible-xs {
+ display: table-row !important;
+}
+th.visible-xs, td.visible-xs {
+ display: table-cell !important;
+}
+}
+@media (max-width: 767px) {
+.visible-xs-block {
+ display: block !important;
+}
+}
+@media (max-width: 767px) {
+.visible-xs-inline {
+ display: inline !important;
+}
+}
+@media (max-width: 767px) {
+.visible-xs-inline-block {
+ display: inline-block !important;
+}
+}
+@media (min-width: 768px) and (max-width: 991px) {
+.visible-sm {
+ display: block !important;
+}
+table.visible-sm {
+ display: table;
+}
+tr.visible-sm {
+ display: table-row !important;
+}
+th.visible-sm, td.visible-sm {
+ display: table-cell !important;
+}
+}
+@media (min-width: 768px) and (max-width: 991px) {
+.visible-sm-block {
+ display: block !important;
+}
+}
+@media (min-width: 768px) and (max-width: 991px) {
+.visible-sm-inline {
+ display: inline !important;
+}
+}
+@media (min-width: 768px) and (max-width: 991px) {
+.visible-sm-inline-block {
+ display: inline-block !important;
+}
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+.visible-md {
+ display: block !important;
+}
+table.visible-md {
+ display: table;
+}
+tr.visible-md {
+ display: table-row !important;
+}
+th.visible-md, td.visible-md {
+ display: table-cell !important;
+}
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+.visible-md-block {
+ display: block !important;
+}
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+.visible-md-inline {
+ display: inline !important;
+}
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+.visible-md-inline-block {
+ display: inline-block !important;
+}
+}
+@media (min-width: 1200px) {
+.visible-lg {
+ display: block !important;
+}
+table.visible-lg {
+ display: table;
+}
+tr.visible-lg {
+ display: table-row !important;
+}
+th.visible-lg, td.visible-lg {
+ display: table-cell !important;
+}
+}
+@media (min-width: 1200px) {
+.visible-lg-block {
+ display: block !important;
+}
+}
+@media (min-width: 1200px) {
+.visible-lg-inline {
+ display: inline !important;
+}
+}
+@media (min-width: 1200px) {
+.visible-lg-inline-block {
+ display: inline-block !important;
+}
+}
+@media (max-width: 767px) {
+.hidden-xs {
+ display: none !important;
+}
+}
+@media (min-width: 768px) and (max-width: 991px) {
+.hidden-sm {
+ display: none !important;
+}
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+.hidden-md {
+ display: none !important;
+}
+}
+@media (min-width: 1200px) {
+.hidden-lg {
+ display: none !important;
+}
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+.visible-print {
+ display: block !important;
+}
+table.visible-print {
+ display: table;
+}
+tr.visible-print {
+ display: table-row !important;
+}
+th.visible-print, td.visible-print {
+ display: table-cell !important;
+}
+}
+.visible-print-block {
+ display: none !important;
+}
+@media print {
+.visible-print-block {
+ display: block !important;
+}
+}
+.visible-print-inline {
+ display: none !important;
+}
+@media print {
+.visible-print-inline {
+ display: inline !important;
+}
+}
+.visible-print-inline-block {
+ display: none !important;
+}
+@media print {
+.visible-print-inline-block {
+ display: inline-block !important;
+}
+}
+@media print {
+.hidden-print {
+ display: none !important;
+}
+}
diff --git a/public/lb-faveo/css/widgetbox.css b/public/lb-faveo/css/widgetbox.css
index 5286d19ca..93bcec039 100644
--- a/public/lb-faveo/css/widgetbox.css
+++ b/public/lb-faveo/css/widgetbox.css
@@ -22,7 +22,7 @@
}
.defaultwidget {
- background-image: url(https://support.ebs.in/app/__swift/themes/client/images/space.gif);
+ background-image: url(lb-faveo/media/images/register.png);
}
.widgetrow a {
diff --git a/public/lb-faveo/media/images/register.png b/public/lb-faveo/media/images/register.png
new file mode 100644
index 000000000..4c8cee570
Binary files /dev/null and b/public/lb-faveo/media/images/register.png differ
diff --git a/public/nbproject/private/private.properties b/public/nbproject/private/private.properties
deleted file mode 100644
index 7893fe22b..000000000
--- a/public/nbproject/private/private.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-copy.src.files=false
-copy.src.on.open=false
-copy.src.target=C:\\xampp\\htdocs\\faveo-master
-index.file=index.php
-run.as=LOCAL
-url=http://localhost/faveo-master/
diff --git a/public/nbproject/project.properties b/public/nbproject/project.properties
deleted file mode 100644
index d37ef9563..000000000
--- a/public/nbproject/project.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-include.path=${php.global.include.path}
-php.version=PHP_54
-source.encoding=UTF-8
-src.dir=.
-tags.asp=false
-tags.short=false
-web.root=.
diff --git a/public/nbproject/project.xml b/public/nbproject/project.xml
deleted file mode 100644
index a3ccafbdb..000000000
--- a/public/nbproject/project.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- org.netbeans.modules.php.project
-
-
- faveo-master
-
-
-
diff --git a/public/uploads/it.zip b/public/uploads/it.zip
new file mode 100644
index 000000000..a42dec7f6
Binary files /dev/null and b/public/uploads/it.zip differ
diff --git a/public/vendor/laravel-filemanager/img/folder.png b/public/vendor/laravel-filemanager/img/folder.png
new file mode 100644
index 000000000..f986d0adb
Binary files /dev/null and b/public/vendor/laravel-filemanager/img/folder.png differ
diff --git a/public/vendor/laravel-filemanager/js/lfm.js b/public/vendor/laravel-filemanager/js/lfm.js
new file mode 100644
index 000000000..4c5b23121
--- /dev/null
+++ b/public/vendor/laravel-filemanager/js/lfm.js
@@ -0,0 +1,33 @@
+(function( $ ){
+
+ $.fn.filemanager = function(type = 'image') {
+
+ if (type === 'image' || type === 'images') {
+ type = 'Images';
+ } else {
+ type = 'Files';
+ }
+
+ let input_id = this.data('input');
+ let preview_id = this.data('preview');
+
+ this.on('click', function(e) {
+ localStorage.setItem('target_input', input_id);
+ localStorage.setItem('target_preview', preview_id);
+ window.open('/laravel-filemanager?type=' + type, 'FileManager', 'width=900,height=600');
+ return false;
+ });
+ }
+
+})(jQuery);
+
+
+function SetUrl(url){
+ //set the value of the desired input to image url
+ let target_input = $('#' + localStorage.getItem('target_input'));
+ target_input.val(url);
+
+ //set or change the preview image src
+ let target_preview = $('#' + localStorage.getItem('target_preview'));
+ target_preview.attr('src',url);
+}
diff --git a/resources/lang/de/lang.php b/resources/lang/de/lang.php
new file mode 100644
index 000000000..6cc8daf06
--- /dev/null
+++ b/resources/lang/de/lang.php
@@ -0,0 +1,919 @@
+
+ 'Erfolgreich',
+ 'fails' => 'Fehler',
+ 'alert' => 'Alarm',
+ 'required-error' => 'Bitte alle notwendigen Felder ausfüllen',
+ 'invalid' => 'Falsche Benutzer-ID oder Passwort',
+ /*
+ |--------------------------------------
+ | Login Page
+ |--------------------------------------
+ */
+ 'Login_to_start_your_session' => 'Einloggen um Ihre Sitzung zu starten',
+ 'login' => 'Login',
+ 'remember' => 'Erinnere dich an mich',
+ 'signmein' => 'Melde mich an',
+ 'iforgot' => 'Ich habe mein Passwort vergessen',
+ 'email_address' => 'E-Mail-Addresse',
+ 'password' => 'Passwort',
+ 'woops' => 'Whoops!',
+ 'theirisproblem' => 'Es gab einige Probleme mit Ihrer Eingabe.',
+ 'login' => 'Anmeldung',
+ 'e-mail' => 'E-Mail',
+ 'reg_new_member' => 'Registrieren für eine neue Mitgliedschaft',
+ /*
+ |--------------------------------------
+ | Register Page
+ |--------------------------------------
+ */
+ 'registration' => 'Registrierung',
+ 'full_name' => 'Vollständiger Name',
+ 'firstname' => 'Vorname',
+ 'lastname' => 'Familienname',
+ 'profilepicture' => 'Profilbild',
+ 'oldpassword' => 'Altes Passwort',
+ 'newpassword' => 'Neues Passwort',
+ 'retype_password' => 'Passwort erneut eingeben',
+ 'i_agree_to_the' => 'Ich stimme dem zu',
+ 'terms' => 'Bedingungen',
+ 'register' => 'Neu registrieren',
+ 'i_already_have_a_membership' => 'Ich habe bereits eine Mitgliedschaft',
+ /*
+ |--------------------------------------
+ | Reset Password Page
+ |--------------------------------------
+ */
+ 'reset_password' => 'Passwort zurücksetzen',
+ /*
+ |--------------------------------------
+ | Forgot Password Page
+ |--------------------------------------
+ */
+ 'i_know_my_password' => 'Ich weiß mein Passwort',
+ 'recover_passord' => 'Passwort wiederherstellen',
+ 'send_password_reset_link' => 'Passwort Reset Link senden',
+ 'enter_email_to_reset_password' => 'E-Mail angeben um Passwort zurücksetzen',
+ 'link' => 'Link',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Emails Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Emails related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'admin_panel' => 'Administrationsmenü',
+ /*
+ |--------------------------------------
+ | Emails Create Page
+ |--------------------------------------
+ */
+ 'emails' => 'Emails',
+ 'incoming_emails' => 'Incoming Emails',
+ 'reuired_authentication' => 'Reuired Authentication',
+ 'fetching_email_via_imap' => 'Fetching Email via IMAP',
+ 'create_email' => 'Create Email',
+ 'email_address' => 'Email Address',
+ 'email_name' => 'Email Name',
+ 'help_topic' => 'Help Topic',
+ 'auto_response' => 'Auto Response',
+ 'host_name' => 'Host Name',
+ 'port_number' => 'Port Number',
+ 'mail_box_protocol' => 'Mail Box Protocol',
+ 'authentication_required' => 'Authentication Required',
+ 'yes' => 'Yes',
+ 'no' => 'No',
+ 'header_spoofing' => 'Header Spoofing',
+ 'allow_for_this_email' => 'Allow For This Email',
+ 'imap_config' => 'IMAP Configuration',
+ 'email_information_and_settings' => 'Email Information and Settings',
+ 'incoming_email_information' => 'Incoming Email Information',
+ 'outgoing_email_information' => 'Outgoing Email Information',
+ 'new_ticket_settings' => 'New Ticket Settings',
+ 'protocol' => 'Protocol',
+ 'fetching_protocol' => 'Fetching Protocol',
+ 'transfer_protocol' => 'Transfer Protocol',
+ 'from_name' => 'From Name',
+ 'add_an_email' => 'Add an Email',
+ 'edit_an_email' => 'Edit an Email',
+ 'disable_for_this_email_address' => 'Disable for this Email address',
+ /*
+ |--------------------------------------
+ | Ban Emails Create Page
+ |--------------------------------------
+ */
+ 'ban_lists' => 'Ban Lists',
+ 'ban_email' => 'Ban Email',
+ 'banlists' => 'Ban lists',
+ 'ban_status' => 'Ban Status',
+ /*
+ |--------------------------------------
+ | Templates Index Page
+ |--------------------------------------
+ */
+ 'templates' => 'Templates',
+ 'template_set' => 'Template Sets',
+ 'create_template' => 'Create Template',
+ 'edit_template' => 'Edit Template',
+ 'in_use' => 'In Use',
+ //Template Description
+ 'Create ticket agent' => 'Notification email that is sent to Agent & Admin when ticket is created',
+ 'Assign ticket' => 'Ticket assigned to an agent',
+ 'Create ticket' => 'Mail sent to client for ticket creation successful message',
+ 'Check ticket' => 'if a client wants to check ticket via customer portal then a link will be sent to client. this link is for the client to view ticket details with ticket no, without logging in to system',
+ 'Ticket reply agent' => 'A notification is sent to agent email once client replies to the ticket',
+ 'Registration notification' => 'Password and username is sent on email on first registration',
+ 'Reset password' => 'Email with Password reset link',
+ 'Error report' => 'Error report',
+ 'Ticket creation' => 'First notification sent by the system about the ticket creation to the client',
+ 'Ticket reply' => 'A reply made by the agent on a ticket, email notification is sent to client and collaborators',
+ 'Close ticket' => 'Mail sent to client on closing a ticket',
+ 'Create ticket by agent' => 'An agent creates a ticket for the client in the name of client',
+ /*
+ |--------------------------------------
+ | Templates Create Page
+ |--------------------------------------
+ */
+ 'template_set_to_clone' => 'Template set to clone',
+ 'language' => 'Sprache',
+ /*
+ |--------------------------------------
+ | Diagnostics Page
+ |--------------------------------------
+ */
+ 'diagnostics' => 'Diagnostics',
+ 'from' => 'From',
+ 'to' => 'To',
+ 'subject' => 'Subject',
+ 'message' => 'Message',
+ 'send' => 'Send',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Settings Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Setting related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+
+ /*
+ |--------------------------------------
+ | Company Settings Page
+ |--------------------------------------
+ */
+ 'company' => 'Unternehmen',
+ 'website' => 'Webseite',
+ 'phone' => 'Telefon',
+ 'address' => 'Adresse',
+ 'landing' => 'Landing Seite',
+ 'offline' => 'Offline Seite',
+ 'thank' => 'Danke Seite',
+ 'logo' => 'Logo',
+ 'save' => 'Speichern',
+ 'delete-logo' => 'Logo löschen',
+ 'click-delete' => 'Hier klicken, um zu löschen',
+ /*
+ |--------------------------------------
+ | System Settings Page
+ |--------------------------------------
+ */
+ 'system' => 'System',
+ 'online' => 'Online',
+ 'offline' => 'Offline',
+ 'name/title' => 'Name/Title',
+ 'pagesize' => 'Page Size',
+ 'url' => 'URL',
+ 'default_department' => 'Default Department',
+ 'loglevel' => 'Log Level',
+ 'purglog' => 'Purge Logs',
+ 'nameformat' => 'Name Formatting',
+ 'timeformat' => 'Time Format',
+ 'date' => 'Date',
+ 'dateformat' => 'Date Format',
+ 'date_time' => 'Date And Time Format',
+ 'day_date_time' => 'Day,Date And Time Format',
+ 'timezone' => 'Default Time Zone',
+ 'api' => 'Api',
+ 'api_key' => 'Api Key',
+ 'api_key_mandatory' => 'Api key mandatory',
+ 'api_configurations' => 'Api Configurations',
+ 'generate_key' => 'Generate key',
+ /*
+ |--------------------------------------
+ | Email Settings Page
+ |--------------------------------------
+ */
+ 'email' => 'Email',
+ 'default_template' => 'Default Template Set:',
+ 'default_system_email' => 'Default System Email:',
+ 'default_alert_email' => 'Default Alert Email:',
+ 'admin_email' => 'Admins Email Address:',
+ 'email_fetch' => 'Email Fetching:',
+ 'enable' => 'Enable',
+ 'default_MTA' => 'Default MTA',
+ 'fetch_auto-corn' => 'Fetch on auto-cron',
+ 'strip_quoted_reply' => 'Strip Quoted Reply',
+ 'reply_separator' => 'Reply Separator Tag',
+ 'accept_all_email' => 'Accept All Emails',
+ 'accept_email_unknown' => 'Accept email from unknown Users',
+ 'accept_email_collab' => 'Accept Email Collaborators',
+ 'automatically_and_collab_from_email' => 'Automatically add collaborators from email fields',
+ 'default_alert_email' => 'Default Alert Email',
+ 'attachments' => 'Attachments',
+ 'email_attahment_user' => 'Email attachments to the user',
+ 'cron_notification' => 'Enable Notification cron',
+ 'cron' => 'Job Scheduler',
+ 'crone-url-message' => "These are Faveo's Job Scheduler(cron job) url for your system.",
+ 'clipboard-copy-message' => 'Copied to clipboard.',
+ 'click' => 'Click here',
+ 'check-cron-set' => 'to check how to set cron jobs on your server.',
+ 'notification-email' => 'Email notifications',
+ 'click-url-copy' => 'Click here to copy URL',
+ 'job-scheduler-error' => 'Job scheduler can not be updated.',
+ 'job-scheduler-success' => 'Job scheduler updated successfully.',
+ /*
+ |--------------------------------------
+ | Ticket Settings Page
+ |--------------------------------------
+ */
+ 'ticket' => 'Ticket',
+ 'default_ticket_number_format' => 'Default Ticket Number Format',
+ 'default_ticket_number_sequence' => 'Default Ticket Number Sequence',
+ 'default_status' => 'Default Status',
+ 'default_priority' => 'Default Priority',
+ 'default_sla' => 'Default SLA',
+ 'default_help_topic' => 'Default Help Topic',
+ 'maximum_open_tickets' => 'Maximum Open Tickets',
+ 'agent_collision_avoidance_duration' => 'Agent Collision Avoidance Duration',
+ 'human_verification' => 'Human Verification',
+ 'claim_on_response' => 'Claim on Response',
+ 'assigned_tickets' => 'Assigned Tickets',
+ 'answered_tickets' => 'Answered Tickets',
+ 'agent_identity_masking' => 'Agent Identity Masking',
+ 'enable_HTML_ticket_thread' => 'Enable HTML Ticket Thread',
+ 'allow_client_updates' => 'Allow Client Updates',
+ /*
+ |--------------------------------------
+ | Access Settings Page
+ |--------------------------------------
+ */
+ 'access' => 'Access',
+ 'expiration_policy' => 'Password Expiration Policy',
+ 'allow_password_resets' => 'Allow Password Resets',
+ 'reset_token_expiration' => 'Reset Token Expiration',
+ 'agent_session_timeout' => 'Agent Session Timeout',
+ 'bind_agent_session_IP' => 'Bind Agent Session to IP',
+ 'registration_required' => 'Registration Required',
+ 'require_registration_and_login_to_create_tickets' => 'Require registration and login to create tickets',
+ 'registration_method' => 'Registration Method',
+ 'user_session_timeout' => 'User Session Timeout',
+ 'client_quick_access' => 'Client Quick Access',
+ 'cron' => 'Cron',
+ 'system-settings' => 'System Settings',
+ 'settings-2' => 'Settings',
+
+ /*
+ |--------------------------------------
+ | Auto-Response Settings Page
+ |--------------------------------------
+ */
+ 'auto_responce' => 'Auto Response',
+ 'new_ticket' => 'New Ticket',
+ 'new_ticket_by_agent' => 'New Ticket by Agent',
+ 'new_message' => 'New Message',
+ 'submitter' => 'Submitter : ',
+ 'send_receipt_confirmation' => 'Send Receipt Confirmation',
+ 'participants' => 'Participants : ',
+ 'send_new_activity_notice' => 'Send new activity notice',
+ 'overlimit_notice' => 'Overlimit Notice',
+ 'email_attachments_to_the_user' => 'Email attachments to the user',
+ /*
+ |--------------------------------------
+ | Alert & Notice Settings Page
+ |--------------------------------------
+ */
+ 'disable' => 'Disable',
+ 'admin_email_2' => 'Admin Email',
+ 'alert_notices' => 'Alert & Notices',
+ 'new_ticket_alert' => 'New Ticket Alert',
+ 'department_manager' => 'Department Manager',
+ 'department_members' => 'Department Members',
+ 'organization_account_manager' => 'Organization Account Manager',
+ 'new_message_alert' => 'New Message Alert',
+ 'last_respondent' => 'Last Respondent',
+ 'assigned_agent_team' => 'Assigned Agent / Team',
+ 'new_internal_note_alert' => 'New Internal Note Alert',
+ 'ticket_assignment_alert' => 'Ticket Assignment Alert',
+ 'team_lead' => 'Team Lead',
+ 'team_members' => 'Team Members',
+ 'ticket_transfer_alert' => 'Ticket Transfer Alert',
+ 'overdue_ticket_alert' => 'Overdue Ticket Alert ',
+ 'system_alerts' => 'System Alerts',
+ 'system_errors' => 'System Errors',
+ 'SQL_errors' => 'SQL errors',
+ 'excessive_failed_login_attempts' => 'Excessive failed login attempts',
+ 'system_error_reports' => 'System error Reports',
+ 'Send_app_crash_reports_to_help_Ladybird_improve_Faveo' => 'Send app crash reports to help Ladybird improve Faveo',
+ /*
+ |------------------------------------------------
+ |Language page
+ |------------------------------------------------
+ */
+ 'iso-code' => 'ISO-CODE',
+ 'download' => 'Downlaod',
+ 'upload_file' => 'Upload File',
+ 'enter_iso-code' => 'Enter ISO-CODE',
+ 'eg.' => 'Example',
+ 'for' => 'for',
+ 'english' => 'English',
+ 'language-name' => 'Language name',
+ 'file' => 'File',
+ 'read-more' => 'Read more.',
+ 'enable_lang' => 'Enable it.',
+ 'add-lang-package' => 'Add new language package',
+ 'package_exist' => 'Package already exists.',
+ 'iso-code-error' => 'Error in iso-code. enter correct iso-code.',
+ 'zipp-error' => 'Error in zip file. Zip must contian language php files only.',
+ 'upload-success' => 'Uploaded successfully.',
+ 'file-error' => 'Error in file or invalid file.',
+ 'delete-success' => 'Language package deleted successfully.',
+ 'lang-doesnot-exist' => 'Language package does not exist.',
+ 'active-lang-error' => 'Language package can not be deleted when it is active.',
+ 'language-error' => 'Language package not found in your lang directroy.',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Manage Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Manage related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'manage' => 'Manage',
+ /*
+ |--------------------------------------
+ | Help Topic index Page
+ |--------------------------------------
+ */
+ 'help_topics' => 'Help Topics',
+ 'topic' => 'Topic',
+ 'type' => 'Type',
+ 'priority' => 'Priority',
+ 'last_updated' => 'Last Updated',
+ 'create_help_topic' => 'Create Help topic',
+ 'action' => 'Action',
+ /*
+ |--------------------------------------
+ | Help Topic Create Page
+ |--------------------------------------
+ */
+ 'active' => 'Active',
+ 'disabled' => 'Disabled',
+ 'public' => 'Public',
+ 'private' => 'Private',
+ 'parent_topic' => 'Parent Topic',
+ 'Custom_form' => 'Custom Form',
+ 'SLA_plan' => 'SLA Plan',
+ 'auto_assign' => 'Auto assign',
+ 'auto_respons' => 'Auto Respons',
+ 'ticket_number_format' => 'Ticket Number Format',
+ 'system_default' => 'System Default',
+ 'custom' => 'Custom',
+ 'internal_notes' => 'Internal Notes',
+ /*
+ |--------------------------------------
+ | SLA plan Index Page
+ |--------------------------------------
+ */
+ 'sla_plans' => 'SLA Plans',
+ 'create_SLA' => 'Create a SLA',
+ 'grace_period' => 'Grace Period',
+ 'added_date' => 'Added Date',
+ /*
+ |--------------------------------------
+ | SLA plan Create Page
+ |--------------------------------------
+ */
+ 'transient' => 'Transient',
+ 'ticket_overdue_alert' => 'Ticket Overdue Alerts',
+
+ /*
+ |--------------------------------------
+ | Work Flow
+ |--------------------------------------
+ */
+ 'workflow' => 'Workflow',
+ 'ticket_workflow' => 'Ticket Workflow',
+ 'create_workflow' => 'Create Workflow',
+ 'edit_workflow' => 'Edit Workflow',
+ 'updated' => 'Updated',
+ 'target' => 'Target',
+ 'target_channel' => 'Target Channel',
+ 'exceution_order' => 'Exceution Order',
+ 'target_channel' => 'Target Channel',
+ 'workflow_rules' => 'Workflow Rules',
+ 'workflow_action' => 'Workflow Action',
+ 'rules' => 'Rules',
+ 'order' => 'Order',
+ 'condition' => 'Condition',
+ 'statement' => 'Statement',
+
+ /*
+ |--------------------------------------
+ | Form Create Page
+ |--------------------------------------
+ */
+ 'title' => 'Title',
+ 'instruction' => 'Instruction',
+ 'label' => 'Label',
+ 'visibility' => 'Visibility',
+ 'variable' => 'Variable',
+ 'create_form' => 'Create Form',
+ 'forms' => 'Forms',
+ 'form_name' => 'Form Name',
+ 'view_this_form' => 'View This Form',
+ 'delete_from' => 'Delete Form',
+ 'are_you_sure_you_want_to_delete' => 'Are you sure you want to Delete',
+ 'close' => 'Close',
+ 'instructions' => 'Instructions',
+ 'instructions_on_creating_form' => "Select field type you want to add to the form below and click on 'Type' dropdown. Don't forget to set field options if type is select,checkbox or radio..Separate each option by a coma. After you finish creating the form, you can save the form by clicking Save Form button",
+ 'form_properties' => 'Form Properties',
+ 'adding_fields' => 'Adding Fields',
+ 'click_add_fields_button_to_add_fields' => "Click 'Add Fields' button to add Fields",
+ 'add_fields' => 'Add Fields',
+ 'save_form' => 'Save Form',
+ 'label' => 'Label',
+ 'name' => 'Name',
+ 'type' => 'Type',
+ 'values(selected_fields)' => 'Values(Selected Fields)',
+ 'required' => 'Required',
+ 'Action' => 'Action',
+ 'remove' => 'Remove',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Theme Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Theme related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'themes' => 'Themes',
+ /*
+ |--------------------------------------
+ | Footer Pages
+ |--------------------------------------
+ */
+ 'footer' => 'Footer',
+ 'footer1' => 'Footer1',
+ 'footer2' => 'Footer2',
+ 'footer3' => 'Footer3',
+ 'footer4' => 'Footer4',
+ /*
+ |--------------------------------------
+ | Custom alert box
+ |--------------------------------------
+ */
+ 'ok' => 'Ok',
+ 'cancel' => 'Abbrechen',
+ 'select-ticket' => 'Bitte Tickets auswählen.',
+ 'confirm' => 'Sind Sie sicher?',
+ 'delete-tickets' => 'Lösche Tickets',
+ 'close-tickets' => 'Schließe Tickets',
+ 'open-tickets' => 'Öffne Tickets',
+
+ /*
+ |----------------------------------------------------------------------------------------
+ | Staff Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Staff related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'are_you_sure' => 'Are you sure',
+ 'staffs' => 'Staffs',
+ 'name' => 'Name',
+ 'user_name' => 'User Name',
+ 'status' => 'Status',
+ 'group' => 'Group',
+ 'department' => 'Department',
+ 'created' => 'Created',
+ 'lastlogin' => 'Last Login',
+ 'createagent' => 'Create An Agent',
+ 'delete' => 'Delete',
+ 'agents' => 'Agents',
+ 'create' => 'Create',
+ 'edit' => 'Edit',
+ 'departments' => 'Departments',
+ 'groups' => 'Groups',
+ /*
+ |--------------------------------------
+ | Staff Create Page
+ |--------------------------------------
+ */
+ 'create_agent' => 'Create Agent',
+ 'first_name' => 'First Name',
+ 'last_name' => 'Last Name',
+ 'mobile_number' => 'Mobile Number',
+ 'agent_signature' => 'Agent Signature',
+ 'account_status_setting' => 'Account Status & Setting',
+ 'account_type' => 'Account Type',
+ 'admin' => 'Admin',
+ 'agent' => 'Agent',
+ 'account_status' => 'Account Status',
+ 'locked' => 'Locked',
+ 'assigned_group' => 'Assigned Group',
+ 'primary_department' => 'Primary Department',
+ 'agent_time_zone' => 'Agent Time Zone',
+ 'day_light_saving' => 'Day Light Saving',
+ 'limit_access' => 'Limit Access',
+ 'directory_listing' => 'Directory Listing',
+ 'vocation_mode' => 'Vocation Mode',
+ 'assigned_team' => 'Assigned Team',
+ /*
+ |--------------------------------------
+ | Department Create Page
+ |--------------------------------------
+ */
+ 'create_department' => 'Create Department',
+ 'manager' => 'Manager',
+ 'ticket_assignment' => 'Ticket Assignment ',
+ 'restrict_ticket_assignment_to_department_members' => 'Restrict ticket assignment to department members',
+ 'outgoing_emails' => 'Outgoing Emails',
+ 'outgoing_email' => 'Outgoing Email',
+ 'template_set' => 'Template Set',
+ 'auto_responding_settings' => 'Auto-Responding Settigs',
+ 'disable_for_this_department' => 'Disable for this department',
+ 'auto_response_email' => 'Auto-Response Email',
+ 'recipient' => 'Recipient',
+ 'group_access' => 'Group Access',
+ 'department_signature' => 'Department Signature',
+ /*
+ |--------------------------------------
+ | Team Create Page
+ |--------------------------------------
+ */
+ 'create_team' => 'Create Team',
+ 'team_lead' => 'Team Lead',
+ 'assignment_alert' => 'Assignment Alert',
+ 'disable_for_this_team' => 'Disable for this team',
+ 'teams' => 'Teams',
+ /*
+ |--------------------------------------
+ | Group Create Page
+ |--------------------------------------
+ */
+ 'create_group' => 'Create Group',
+ 'goups' => 'Goups',
+ 'can_create_ticket' => 'Can create ticket',
+ 'can_edit_ticket' => 'Can edit ticket',
+ 'can_post_ticket' => 'Can post Ticket',
+ 'can_close_ticket' => 'Can close ticket ',
+ 'can_assign_ticket' => 'Can assign ticket',
+ 'can_transfer_ticket' => 'Can transfer ticket',
+ 'can_delete_ticket' => 'Can delete ticket',
+ 'can_ban_emails' => 'Can ban emails',
+ 'can_manage_premade' => 'Can Manage premade',
+ 'can_manage_FAQ' => 'Can manage FAQ',
+ 'can_view_agent_stats' => 'Can view agent stats',
+ 'department_access' => 'Department Access ',
+ 'admin_notes' => 'Admin Notes',
+ 'group_members' => 'Group Members',
+ 'group_name' => 'Group Name',
+ /*
+ |--------------------------------------
+ | SMTP Page
+ |--------------------------------------
+ */
+ 'driver' => 'Driver',
+ 'smtp' => 'SMTP',
+ 'host' => 'Host',
+ 'port' => 'Port',
+ 'encryption' => 'Encryption',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Agent Panel [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'agent_panel' => 'Agent Panel',
+ 'profile' => 'Profile',
+ 'change_password' => 'Change Password',
+ 'sign_out' => 'Sign Out',
+ 'Tickets' => 'TICKETS',
+ 'inbox' => 'Inbox',
+ 'my_tickets' => 'My Tickets',
+ 'unassigned' => 'Unassigned',
+ 'trash' => 'Trash',
+ 'Updates' => 'UPDATES',
+ 'no_new_updates' => 'No new Updates',
+ 'check_for_updates' => 'Check for Updates',
+ 'open' => 'Open',
+ 'inprogress' => 'Inprogress',
+ 'closed' => 'Closed',
+ 'Departments' => 'DEPARTMENTS',
+ 'tools' => 'Tools',
+ 'canned' => 'Canned',
+ 'knowledge_base' => 'Knowledge Base',
+ 'loading' => 'Loading',
+ 'ratings' => 'Ratings',
+ 'please_rate' => 'Please rate:',
+ 'ticket_ratings' => 'TICKET RATING',
+ /*
+ |-----------------------------------------------
+ | Profile
+ |-----------------------------------------------
+ */
+ 'user_information' => 'Benutzer Informationen',
+ 'time_zone' => 'Zeitzone',
+ 'phone_number' => 'Telefonnummer',
+ 'contact_information' => 'Kontakt Informationen',
+ /*
+ |-----------------------------------------------
+ | Dashboard
+ |-----------------------------------------------
+ */
+ 'dashboard' => 'Dashboard',
+ 'line_chart' => 'Line Chart',
+ 'statistics' => 'Statistics',
+ 'opened' => 'Opened',
+ 'resolved' => 'Resolved',
+ 'closed' => 'Closed',
+ 'deleted' => 'Deleted',
+ /*
+ |------------------------------------------------
+ |User Page
+ |------------------------------------------------
+ */
+ 'user_directory' => 'User Directory',
+ 'ban' => 'Ban',
+ 'user' => 'User',
+ 'users' => 'Users',
+ 'create_user' => 'Create User',
+ 'full_name' => 'Full Name',
+ 'mobile' => 'Mobile',
+ 'last_login' => 'Last Login',
+ 'user_profile' => 'User Profile',
+ 'assign' => 'Assign',
+ 'open_tickets' => 'Open Tickets',
+ 'closed_tickets' => 'Closed Tickets',
+ 'deleted_tickets' => 'Deleted Tickets',
+ /*
+ |------------------------------------------------
+ |Organization Page
+ |------------------------------------------------
+ */
+ 'organizations' => 'Organizations',
+ 'organization' => 'Organization',
+ 'create_organization' => 'Create Organization',
+ 'account_manager' => 'Account Manager',
+ 'update' => 'Update',
+ 'please_select_an_organization' => 'Please select an Organization',
+ 'please_select_an_user' => 'Please select an user',
+ 'organization_profile' => 'Organization Profile',
+ 'organization-s_head' => "Organization's Head",
+ 'select_department_manager' => 'Select Department Manager',
+ 'users_of' => 'Users of',
+ /*
+ |----------------------------------------------
+ | Ticket page
+ |----------------------------------------------
+ */
+ 'subject' => 'Subject',
+ 'ticket_id' => 'Ticket ID',
+ 'priority' => 'Priority',
+ 'from' => 'From',
+ 'last_replier' => 'Last Replier',
+ 'assigned_to' => 'Assigned To',
+ 'last_activity' => 'Last Activity',
+ 'answered' => 'Answered',
+ 'assigned' => 'Assigned',
+ 'create_ticket' => 'Create Ticket',
+ 'tickets' => 'Tickets',
+ 'open' => 'Open',
+ 'Ticket_Information' => 'TICKET INFORMATION',
+ 'Ticket_Id' => 'TICKET ID',
+ 'User' => 'USER',
+ 'Unassigned' => 'UNASSIGNED',
+ 'generate_pdf' => 'Generate PDF',
+ 'change_status' => 'Change Status',
+ 'more' => 'More',
+ 'delete_ticket' => 'Delete Ticket',
+ 'emergency' => 'Emergency',
+ 'high' => 'High',
+ 'medium' => 'Medium',
+ 'low' => 'Low',
+ 'sla_plan' => 'SLA Plan',
+ 'created_date' => 'Created Date',
+ 'due_date' => 'Due Date',
+ 'last_response' => 'Last Response',
+ 'source' => 'Source',
+ 'last_message' => 'Last Message',
+ 'reply' => 'Reply',
+ 'response' => 'Response',
+ 'reply_content' => 'Reply Content',
+ 'attachment' => 'Attachment',
+ 'internal_note' => 'Internal Note',
+ 'this_ticket_is_under_banned_user' => 'This ticket is under banned user',
+ 'ticket_source' => 'Ticket Source',
+ 'are_you_sure_to_ban' => 'Are you sure to ban',
+ 'whome_do_you_want_to_assign_ticket' => 'Whome do you want to assign ticket',
+ 'are_you_sure_you_want_to_surrender_this_ticket' => 'Are you sure you want to surrender this Ticket',
+ 'add_collaborator' => 'Add Collaborator',
+ 'search_existing_users' => 'Search existing Users',
+ 'add_new_user' => 'Add new User',
+ 'search_existing_users_or_add_new_users' => 'Search existing users or add new users',
+ 'search_by_email' => 'Search by Email',
+ 'list_of_collaborators_of_this_ticket' => 'List of Collaborators of this Ticket',
+ 'submit' => 'Submit',
+ 'max' => 'Max',
+ 'add_cc' => 'Add CC',
+ 'recepients' => 'Recepients',
+ 'select_a_canned_response' => 'Select a Canned Response',
+ 'assign_to' => 'Assign to',
+ 'detail' => 'Detail',
+ 'user_details' => 'User Details',
+ 'ticket_option' => 'Ticket Option',
+ 'ticket_detail' => 'Ticket Detail',
+ 'Assigned_To' => 'ASSIGNED TO',
+ 'locked-ticket' => 'Alert! This ticket has been locked by another user and currently in process for response.',
+ 'access-ticket' => 'Alert! This ticket has been locked by you for next ',
+ 'minutes' => ' minutes',
+ 'in_minutes' => 'In minutes',
+ 'add_another_owner' => 'Add another owner',
+ 'user-not-found' => 'User not found. Try again or add a new user.',
+ 'change-success' => 'Success! owner has been changed for this ticket.',
+ 'user-exists' => 'User already exists. Try search existing user.',
+ 'valid-email' => 'Enter a valid email address.',
+ 'search_user' => 'Search user',
+ 'merge-ticket' => 'Merge ticket',
+ 'title' => 'Title',
+ 'merge' => 'Merge',
+ 'select_tickets' => 'Select tickets to merge',
+ 'select-pparent-ticket' => 'Select parent ticket',
+ 'merge-reason' => 'Reason for merging',
+ 'get_merge_message' => 'This ticket has been merged with ticket',
+ 'ticket_merged' => ' has been merged with this ticket.',
+ 'no-tickets-to-merge' => 'There are no more tickets by the owner of this ticket.',
+ 'merge-error' => 'Could not process your request try after some time.',
+ 'merge-success' => 'Tickets has been merged successfully.',
+ 'merge-error2' => 'Please select ticket to merge.',
+ 'select-tickets-to merge' => 'select two or more tickets to merge.',
+ 'different-users' => 'Ticktes from different users',
+ 'clean-up' => 'Clean up',
+ 'hard-delete-success-message' => 'Tickets have been deleted permanently.',
+ 'overdue' => 'Overdue',
+ 'change_owner_for_ticket' => 'Change Owner for Ticket',
+
+ /*
+ |------------------------------------------------
+ |Tools Page
+ |------------------------------------------------
+ */
+ 'canned_response' => 'Canned Response',
+ 'create_canned_response' => 'Create Canned Response',
+ 'surrender' => 'Surrender',
+ 'view' => 'View',
+ /*
+ |-----------------------------------------------
+ | Main text
+ |-----------------------------------------------
+ */
+ 'copyright' => 'Copyright',
+ 'all_rights_reserved' => 'All right Reserved',
+ 'powered_by' => 'Powered by',
+ /*
+ |------------------------------------------------
+ |Guest-User Page
+ |------------------------------------------------
+ */
+ 'issue_summary' => 'Issue Summary',
+ 'issue_details' => 'Issue Details',
+ 'contact_informations' => 'Contact Informations',
+ 'contact_details' => 'Contact Details',
+ 'role' => 'Role',
+ 'ext' => 'EXT',
+ 'profile_pic' => 'Profile Picture',
+ 'agent_sign' => 'Agent Signature',
+ 'inactive' => 'Inactive',
+ 'male' => 'Male',
+ 'female' => 'Female',
+ 'old_password' => 'Old Password',
+ 'new_password' => 'New Password',
+ 'confirm_password' => 'Confirm Password',
+ 'gender' => 'Geschlecht',
+ 'ticket_number' => 'Ticket Number',
+ 'content' => 'Content',
+ /*
+ |------------------------------------------------
+ | Error Pages
+ |------------------------------------------------
+ */
+ 'not_found' => 'Not Found',
+ 'oops_page_not_found' => 'Oops! Page not found',
+ 'we_could_not_find_the_page_you_were_looking_for' => 'We could not find the page you were looking for',
+ 'internal_server_error' => 'Internal server Error',
+ 'be_right_back' => 'Be right back',
+ 'sorry' => 'Sorry',
+ 'we_are_working_on_it' => 'We are working on it',
+ 'category' => 'Category',
+ 'addcategory' => 'Add Category',
+ 'allcategory' => 'All Category',
+ 'article' => 'Article',
+ 'articles' => 'Articles',
+ 'addarticle' => 'Add Article',
+ 'allarticle' => 'All Article',
+ 'pages' => 'Pages',
+ 'addpages' => 'Add Pages',
+ 'allpages' => 'All Pages',
+ 'widgets' => 'Widgets',
+ 'footer1' => 'Footer 1',
+ 'footer2' => 'Footer 2',
+ 'footer3' => 'Footer 3',
+ 'footer4' => 'Footer 4',
+ 'sidewidget1' => 'Side Widget 1',
+ 'sidewidget2' => 'Side Widget 2',
+ 'comments' => 'Comments',
+ 'settings' => 'Settings',
+ 'parent' => 'Parent',
+ 'Beschreibung' => 'Beschreibung',
+ 'enter_the_description' => 'Enter the Description',
+ 'publish' => 'Publish',
+ 'published' => 'Published',
+ 'draft' => 'Draft',
+ 'create_a_category' => 'Create a Category',
+ 'add' => 'Add',
+ 'social' => 'Social',
+ 'comment' => 'Comment',
+ 'not_published' => 'Not Published',
+ 'numberofelementstodisplay' => 'Number of elements to display',
+ //======================================
+ 'language' => 'Language',
+ 'save' => 'Save',
+ 'create' => 'Create',
+ 'dateformat' => 'Date Format',
+ 'slug' => 'Slug',
+ 'read_more' => 'Read more',
+ 'view_all' => 'View All',
+ 'categories' => 'Categories',
+ 'need_more_support' => 'Need more support',
+ 'if_you_did_not_find_an_answer_please_raise_a_ticket_describing_the_issue' => 'If you did not find an answer, please raise a ticket describing the issue',
+ 'have_a_question?_type_your_search_term_here' => 'Have a question? Type your search term here...',
+ 'search' => 'Search',
+ 'frequently_asked_questions' => 'Frequently Asked Questions',
+ 'leave_a_reply' => 'Leave a Reply',
+ 'post_message' => 'Post Message',
+ /*
+ |--------------------------------------------------------------------------------------
+ | Client Panel [English(en)]
+ |--------------------------------------------------------------------------------------
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'home' => 'Home',
+ 'submit_a_ticket' => 'Submit A Ticket',
+ 'my_profile' => 'My Profile',
+ 'log_out' => 'Logout',
+ 'forgot_password' => 'Forgot Password',
+ 'create_account' => 'Create Account',
+ 'you_are_here' => 'You are here',
+ 'have_a_ticket' => 'Have a Ticket',
+ 'check_ticket_status' => 'Check Ticket status',
+ 'choose_a_help_topic' => 'Choose a Help Topic',
+ 'ticket_status' => 'Ticket Status',
+ 'post_comment' => 'Post Comment',
+ 'plugin' => 'Plugin',
+];
diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php
new file mode 100644
index 000000000..55447408b
--- /dev/null
+++ b/resources/lang/de/pagination.php
@@ -0,0 +1,18 @@
+ '« zurück',
+ 'next' => 'weiter »',
+];
diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php
new file mode 100644
index 000000000..19d74470b
--- /dev/null
+++ b/resources/lang/de/passwords.php
@@ -0,0 +1,21 @@
+ 'Passwörter müssen mindestens sechs Zeichen lang sein und der Bestätigung entsprechen.',
+ 'user' => "Wir können keinen Benutzer mit dieser E-Mail-Adresse finden.",
+ 'token' => 'Dieser Passwort-Reset-Token ist ungültig.',
+ 'sent' => 'Wir haben dir einen Passwort-Reset-Link per E-Mail zukommen lassen!',
+ 'reset' => 'Dein Passwort wurde zurückgesetzt!',
+];
diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php
new file mode 100644
index 000000000..c9ba89358
--- /dev/null
+++ b/resources/lang/de/validation.php
@@ -0,0 +1,102 @@
+ 'Das :attribute muss akzeptiert werden.',
+ 'active_url' => 'Das :attribute ist keine gültige URL.',
+ 'after' => 'Das :attribute muss ein Datum sein, nachdem :date.',
+ 'alpha' => 'Das :attribute dürfen nur Buchstaben sein.',
+ 'alpha_dash' => 'Das :attribute darf nur Buchstaben, Zahlen und Bindestriche enthalten.',
+ 'alpha_num' => 'Das :attribute darf nur Buchstaben und Zahlen enthalten.',
+ 'array' => 'Das :attribute muss ein Array sein.',
+ 'before' => 'Das :attribute muss ein Datum sein, bevor :date.',
+ 'between' => [
+ 'numeric' => 'Das :attribute muss zwischen :min und :max.',
+ 'file' => 'Das :attribute muss zwischen :min und :max Kilobyte.',
+ 'string' => 'Das :attribute muss zwischen :min und :max Zeichen.',
+ 'array' => 'Das :attribute muss genau zwischen :min und :max Anzahl.',
+ ],
+ 'boolean' => 'Das :attribute Feld muss wahr oder falsch sein.',
+ 'confirmed' => 'Das :attribute Bestätigung stimmt nicht überein.',
+ 'date' => 'Das :attribute ist kein gültiges Datum.',
+ 'date_format' => 'Das :attribute passt nicht mit dem Format überein :format.',
+ 'different' => 'Das :attribute und :other müssen unterschiedlich sein.',
+ 'digits' => 'Das :attribute muss sein :digits Ziffern.',
+ 'digits_between' => 'Das :attribute muss zwischen :min und :max Ziffern.',
+ 'email' => 'Das :attribute muss eine gültige E-Mail-Adresse sein.',
+ 'filled' => 'Das :attribute ist erforderlich.',
+ 'exists' => 'Das ausgewählte :attribute ist ungültig.',
+ 'image' => 'Das :attribute muß ein Bild sein.',
+ 'in' => 'Das ausgewählte :attribute ist ungültig.',
+ 'integer' => 'Das :attribute muss eine ganze Zahl sein.',
+ 'ip' => 'Das :attribute muss eine gültige IP-Adresse sein.',
+ 'max' => [
+ 'numeric' => 'Das :attribute darf nicht größer sein als :max.',
+ 'file' => 'Das :attribute darf nicht größer sein als :max Kilobytes.',
+ 'string' => 'Das :attribute darf nicht größer sein als :max Zeichen.',
+ 'array' => 'Das :attribute kann nicht mehr sein als :max Anzahl.',
+ ],
+ 'mimes' => 'Das :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'Das :attribute muss mindestens :min.',
+ 'file' => 'Das :attribute muss mindestens :min Kilobytes.',
+ 'string' => 'Das :attribute muss mindestens :min Zeichen.',
+ 'array' => 'Das :attribute darf nicht kleiner sein als :min Anzahl.',
+ ],
+ 'not_in' => 'Das ausgewählte :attribute ist ungültig.',
+ 'numeric' => 'Das :attribute muss eine Nummer sein.',
+ 'regex' => 'Das :attribute Format ist ungültig.',
+ 'required' => 'Das :attribute ist erforderlich.',
+ 'required_if' => 'Das :attribute Feld ist erforderlich, wenn :other ist :value.',
+ 'required_with' => 'Das :attribute Feld ist erforderlich, wenn :values ist anwesend.',
+ 'required_with_all' => 'Das :attribute Feld ist erforderlich, wenn :values ist anwesend.',
+ 'required_without' => 'Das :attribute Feld ist erforderlich, wenn :values ist nicht vorhanden.',
+ 'required_without_all' => 'Das :attribute ist erforderlich, wenn keine der :values sind anwesend.',
+ 'same' => 'Das :attribute und :other muss passen.',
+ 'size' => [
+ 'numeric' => 'Das :attribute muss sein :size.',
+ 'file' => 'Das :attribute muss sein :size Kilobytes.',
+ 'string' => 'Das :attribute muss sein :size Zeichen.',
+ 'array' => 'Das :attribute muss enthalten :size Anzahl.',
+ ],
+ 'unique' => 'Das :attribute bereits aufgenommen wurde.',
+ 'url' => 'Das :attribute Format ist ungültig.',
+ 'timezone' => 'Das :attribute muss eine gültige Zone sein.',
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify custom validation messages for attributes using the
+ | convention "attribute.rule" to name the lines. This makes it quick to
+ | specify a specific custom language line for a given attribute rule.
+ |
+ */
+ 'custom' => [
+ 'attribute-name' => [
+ 'rule-name' => 'custom-message',
+ ],
+ ],
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Attributes
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are used to swap attribute place-holders
+ | with something more reader friendly such as E-Mail Address instead
+ | of "email". This simply helps us make messages a little cleaner.
+ |
+ */
+ 'attributes' => [],
+];
diff --git a/resources/lang/en/lang.php b/resources/lang/en/lang.php
index 590286b78..74487b62d 100644
--- a/resources/lang/en/lang.php
+++ b/resources/lang/en/lang.php
@@ -18,47 +18,61 @@ return [
| Error
|--------------------------------------
*/
- 'success' => 'Success',
- 'fails' => 'Fails',
- 'alert' => 'Alert',
- 'required-error' => 'Please fill all required fields',
- 'invalid' => 'Incorrect User id or password',
+ 'success' => 'Success',
+ 'fails' => 'Fails',
+ 'alert' => 'Alert',
+ 'warning' => 'Warning',
+ 'required-error' => 'Please fill all required feilds',
+ 'invalid' => 'Incorrect User id or password',
+ 'sorry_something_went_wrong' => 'Sorry, Something went wrong',
+ 'were_working_on_it_and_well_get_it_fixed_as_soon_as_we_can' => "Were working on it and we'll get it fixed as soon as we can.",
+ 'we_are_sorry_but_the_page_you_are_looking_for_can_not_be_found' => 'We are sorry, but the page you are looking for can not be found.',
+ 'go_back' => 'Go Back',
+ 'the_board_is_offline' => 'The Board is Offline',
/*
|--------------------------------------
| Login Page
|--------------------------------------
*/
- 'Login_to_start_your_session' => 'Login to start your session',
- 'login' => 'Login',
- 'remember' => 'Remember Me',
- 'signmein' => 'Sign me In',
- 'iforgot' => 'I forgot my Password',
- 'email_address' => 'E-Mail Address',
- 'password' => 'Password',
- 'woops' => 'Whoops!',
- 'theirisproblem' => 'There were some problems with your input.',
- 'login' => 'Login',
- 'e-mail' => 'E-mail',
- 'reg_new_member' => 'Register a new membership',
+
+ 'Login_to_start_your_session' => 'Login to start your session',
+ 'login' => 'Login',
+ 'remember' => 'Remember Me',
+ 'signmein' => 'Sign me In',
+ 'iforgot' => 'I forgot my Password',
+ 'email_address' => 'E-Mail Address',
+ 'password' => 'Password',
+ 'woops' => 'Whoops!',
+ 'theirisproblem' => 'There were some problems with your input.',
+ 'login' => 'Login',
+ 'e-mail' => 'E-mail',
+ 'reg_new_member' => 'Register a new membership',
+ 'this_account_is_currently_inactive' => 'This account is currently Inactive!',
/*
|--------------------------------------
| Register Page
|--------------------------------------
*/
- 'registration' => 'Registration',
- 'full_name' => 'Full name',
- 'firstname' => 'First Name',
- 'lastname' => 'Last Name',
- 'profilepicture' => 'Profile Picture',
- 'oldpassword' => 'Old Password',
- 'newpassword' => 'New Password',
- 'retype_password' => 'Retype Password',
- 'i_agree_to_the' => 'I agree to the',
- 'terms' => 'terms',
- 'register' => 'Register',
- 'i_already_have_a_membership' => 'I already have a membership',
- 'see-profile1' => 'Click here to see ',
- 'see-profile2' => 's profile',
+ 'registration' => 'Registration',
+ 'full_name' => 'Full name',
+ 'firstname' => 'First Name',
+ 'lastname' => 'Last Name',
+ 'profilepicture' => 'Profile Picture',
+ 'oldpassword' => 'Old Password',
+ 'newpassword' => 'New Password',
+ 'retype_password' => 'Retype Password',
+ 'i_agree_to_the' => 'I agree to the',
+ 'terms' => 'terms',
+ 'register' => 'Register',
+ 'i_already_have_a_membership' => 'I already have a membership',
+ 'see-profile1' => 'Click here to see ',
+ 'see-profile2' => 's profile',
+ 'activate_your_account_click_on_Link_that_send_to_your_mail' => 'Activate Your Account ! Click on Link that send to your mail',
+ 'this_field_do_not_match_our_records' => 'This Field do not match our records.',
+ 'we_have_e-mailed_your_password_reset_link' => 'We have e-mailed your password reset link!',
+ "we_can't_find_a_user_with_that_e-mail_address" => "We can't find a user with that e-mail address.",
+
+
/*
|--------------------------------------
| Reset Password Page
@@ -91,54 +105,78 @@ return [
| Emails Create Page
|--------------------------------------
*/
- 'emails' => 'Emails',
- 'incoming_emails' => 'Incoming Emails',
- 'reuired_authentication' => 'Required Authentication',
- 'fetching_email_via_imap' => 'Fetching Email via IMAP',
- 'create_email' => 'Create Email',
- 'email_address' => 'Email Address',
- 'email_name' => 'Email Name',
- 'help_topic' => 'Help Topic',
- 'auto_response' => 'Auto Response',
- 'host_name' => 'Host Name',
- 'port_number' => 'Port Number',
- 'mail_box_protocol' => 'Mail Box Protocol',
- 'authentication_required' => 'Authentication Required',
- 'yes' => 'Yes',
- 'no' => 'No',
- 'header_spoofing' => 'Header Spoofing',
- 'allow_for_this_email' => 'Allow For This Email',
- 'imap_config' => 'IMAP Configuration',
- 'email_information_and_settings' => 'Email Information and Settings',
- 'incoming_email_information' => 'Incoming Email Information',
- 'outgoing_email_information' => 'Outgoing Email Information',
- 'new_ticket_settings' => 'New Ticket Settings',
- 'protocol' => 'Protocol',
- 'fetching_protocol' => 'Fetching Protocol',
- 'transfer_protocol' => 'Transfer Protocol',
- 'from_name' => 'From Name',
- 'add_an_email' => 'Add an Email',
- 'edit_an_email' => 'Edit an Email',
- 'disable_for_this_email_address' => 'Disable for this Email address',
+ 'emails' => 'Emails',
+ 'incoming_emails' => 'Incoming Emails',
+ 'reuired_authentication' => 'Reuired Authentication',
+ 'fetching_email_via_imap' => 'Fetching Email via IMAP',
+ 'create_email' => 'Create Email',
+ 'email_address' => 'Email Address',
+ 'email_name' => 'Email Name',
+ 'help_topic' => 'Help Topic',
+ 'auto_response' => 'Auto Response',
+ 'host_name' => 'Host Name',
+ 'port_number' => 'Port Number',
+ 'mail_box_protocol' => 'Mail Box Protocol',
+ 'authentication_required' => 'Authentication Required',
+ 'yes' => 'Yes',
+ 'no' => 'No',
+ 'header_spoofing' => 'Header Spoofing',
+ 'allow_for_this_email' => 'Allow For This Email',
+ 'imap_config' => 'IMAP Configuration',
+ 'email_information_and_settings' => 'Email Information and Settings',
+ 'incoming_email_information' => 'Incoming Email Information',
+ 'outgoing_email_information' => 'Outgoing Email Information',
+ 'new_ticket_settings' => 'New Ticket Settings',
+ 'protocol' => 'Protocol',
+ 'fetching_protocol' => 'Fetching Protocol',
+ 'transfer_protocol' => 'Transfer Protocol',
+ 'from_name' => 'From Name',
+ 'add_an_email' => 'Add an Email',
+ 'edit_an_email' => 'Edit an Email',
+ 'disable_for_this_email_address' => 'Disable for this Email address',
+ 'validate_certificates_from_tls_or_ssl_server' => 'Validate Certificates from TLS/SSL server',
+ 'authentication' => 'Authentication',
+ 'incoming_email_connection_failed_please_check_email_credentials_or_imap_settings' => 'Incoming email connection failed! Please check email credentials or Imap Settings',
+ 'outgoing_email_connection_failed' => 'Outgoing email connection failed',
+ 'you_cannot_delete_system_default_email' => 'You cannot delete system default Email',
+ 'email_deleted_sucessfully' => 'Email Deleted sucessfully',
+ 'email_can_not_delete' => 'Email can not Delete',
/*
|--------------------------------------
| Ban Emails Create Page
|--------------------------------------
*/
- 'ban_lists' => 'Ban Lists',
- 'ban_email' => 'Ban Email',
- 'banlists' => 'Ban lists',
- 'ban_status' => 'Ban Status',
+ 'ban_lists' => 'Ban Lists',
+ 'ban_email' => 'Ban Email',
+ 'banlists' => 'Ban lists',
+ 'ban_status' => 'Ban Status',
+ 'list_of_banned_emails' => 'List of banned Emails',
+ 'edit_banned_email' => 'Edit banned Email',
+ 'create_a_banned_email' => 'Create a banned Email',
+ 'email_banned_sucessfully' => 'Email Banned sucessfully',
+ 'email_can_not_ban' => 'Email can not Ban',
+ 'banned_email_updated_sucessfully' => 'Banned Email Updated sucessfully',
+ 'banned_email_not_updated' => 'Banned Email not Updated',
+ 'banned_removed_sucessfully' => 'Banned removed sucessfully',
+
/*
|--------------------------------------
| Templates Index Page
|--------------------------------------
*/
- 'templates' => 'Templates',
- 'template_set' => 'Template Sets',
- 'create_template' => 'Create Template',
- 'edit_template' => 'Edit Template',
- 'in_use' => 'In Use',
+ 'templates' => 'Templates',
+ 'template_set' => 'Template Sets',
+ 'create_template' => 'Create Template',
+ 'edit_template' => 'Edit Template',
+ 'list_of_templates_sets' => 'List of Templates Set',
+ 'create_set' => 'Create Set',
+ 'template_name' => 'Template Name',
+ 'template_saved_successfully' => 'Template saved successfully',
+ 'template_updated_successfully' => 'Template updated successfully',
+ 'in_use' => 'In Use',
+ 'you_have_created_a_new_template_set' => 'You have created a new Template Set',
+ 'you_have_successfully_activated_this_set' => 'You have Successfully Activated this Set',
+ 'template_set_deleted_successfully' => 'Template Set Deleted successfully',
//Template Description
'Create ticket agent' => 'Notification email that is sent to Agent & Admin when ticket is created',
'Assign ticket' => 'Ticket assigned to an agent',
@@ -164,12 +202,17 @@ return [
| Diagnostics Page
|--------------------------------------
*/
- 'diagnostics' => 'Diagnostics',
- 'from' => 'From',
- 'to' => 'To',
- 'subject' => 'Subject',
- 'message' => 'Message',
- 'send' => 'Send',
+ 'diagnostics' => 'Diagnostics',
+ 'from' => 'From',
+ 'to' => 'To',
+ 'subject' => 'Subject',
+ 'message' => 'Message',
+ 'send' => 'Send',
+ 'choose_an_email' => 'Choose an email',
+ 'email_diagnostic' => 'Email Diagnostic',
+ 'message_has_been_sent' => 'Message has been sent',
+ 'message_sent_from_php_mail' => 'Message sent from Php-Mail',
+ 'mailer_error' => 'Mailer Error',
/*
|----------------------------------------------------------------------------------------
| Settings Pages [English(en)]
@@ -186,49 +229,69 @@ return [
| Company Settings Page
|--------------------------------------
*/
- 'company' => 'Company',
- 'website' => 'Website',
- 'phone' => 'Phone',
- 'address' => 'Address',
- 'landing' => 'Landing Page',
- 'offline' => 'Offline Page',
- 'thank' => 'Thank Page',
- 'logo' => 'Logo',
- 'save' => 'Save',
- 'delete-logo' => 'Delete logo',
- 'click-delete' => 'Click here to delete',
+ 'country-code' => 'Code',
+ 'company' => 'Company',
+ 'website' => 'Website',
+ 'phone' => 'Phone',
+ 'address' => 'Address',
+ 'landing' => 'Landing Page',
+ 'offline' => 'Offline Page',
+ 'thank' => 'Thank Page',
+ 'logo' => 'Logo',
+ 'save' => 'Save',
+ 'delete-logo' => 'Delete logo',
+ 'click-delete' => 'Click here to delete',
+ 'use_logo' => 'Use Logo',
+ 'company_updated_successfully' => 'Company Updated Successfully',
+ 'company_can_not_updated' => 'Company can not Updated',
+ 'enter-country-phone-code' => 'Enter your country\'s phone code',
+ 'country-code-required-error' => 'Code is required with phone/mobile number.',
+ 'incorrect-country-code-error' => 'Incorrect Country Code.',
/*
|--------------------------------------
| System Settings Page
|--------------------------------------
*/
- 'system' => 'System',
- 'online' => 'Online',
- 'offline' => 'Offline',
- 'name/title' => 'Name/Title',
- 'pagesize' => 'Page Size',
- 'url' => 'URL',
- 'default_department' => 'Default Department',
- 'loglevel' => 'Log Level',
- 'purglog' => 'Purge Logs',
- 'nameformat' => 'Name Formatting',
- 'timeformat' => 'Time Format',
- 'date' => 'Date',
- 'dateformat' => 'Date Format',
- 'date_time' => 'Date And Time Format',
- 'day_date_time' => 'Day,Date And Time Format',
- 'timezone' => 'Default Time Zone',
- 'api' => 'Api',
- 'api_key' => 'Api Key',
- 'api_key_mandatory' => 'Api key mandatory',
- 'api_configurations' => 'Api Configurations',
- 'generate_key' => 'Generate key',
+
+ 'system' => 'System',
+ 'online' => 'Online',
+ 'offline' => 'Offline',
+ 'name/title' => 'Name/Title',
+ 'pagesize' => 'Page Size',
+ 'url' => 'URL',
+ 'default_department' => 'Default Department',
+ 'loglevel' => 'Log Level',
+ 'purglog' => 'Purge Logs',
+ 'nameformat' => 'Name Formatting',
+ 'timeformat' => 'Time Format',
+ 'date' => 'Date',
+ 'dateformat' => 'Date Format',
+ 'date_time' => 'Date And Time Format',
+ 'day_date_time' => 'Day,Date And Time Format',
+ 'timezone' => 'Default Time Zone',
+ 'api' => 'Api',
+ 'api_key' => 'Api Key',
+ 'api_key_mandatory' => 'Api key mandatory',
+ 'api_configurations' => 'Api Configurations',
+ 'generate_key' => 'Generate key',
+ 'Ticket-created-successfully' => 'Ticket created successfully!',
+ 'system_updated_successfully' => 'System Updated Successfully',
+ 'system_can_not_updated' => 'System can not Updated',
+ 'ticket_updated_successfully' => 'Ticket Updated Successfully',
+ 'ticket_can_not_updated' => 'Ticket can not Updated',
+ 'email_updated_successfully' => 'Email Updated Successfully',
+ 'email_can_not_updated' => 'Email can not Updated',
+ 'select_a_time_zone' => 'Select a Time Zone',
+ 'select_a_date_time_format' => 'Select a date Time Format',
+ 'Ticket-has-been-created-successfully-your-ticket-number-is' => 'Ticket has been created successfully, your ticket number is',
+ 'Please-save-this-for-future-reference' => 'Please save this for future reference',
/*
|--------------------------------------
| Email Settings Page
|--------------------------------------
*/
'email' => 'Email',
+ 'email-settings' => 'Email Settings',
'default_template' => 'Default Template Set:',
'default_system_email' => 'Default System Email:',
'default_alert_email' => 'Default Alert Email:',
@@ -261,22 +324,28 @@ return [
| Ticket Settings Page
|--------------------------------------
*/
- 'ticket' => 'Ticket',
- 'default_ticket_number_format' => 'Default Ticket Number Format',
- 'default_ticket_number_sequence' => 'Default Ticket Number Sequence',
- 'default_status' => 'Default Status',
- 'default_priority' => 'Default Priority',
- 'default_sla' => 'Default SLA',
- 'default_help_topic' => 'Default Help Topic',
- 'maximum_open_tickets' => 'Maximum Open Tickets',
- 'agent_collision_avoidance_duration' => 'Agent Collision Avoidance Duration',
- 'human_verification' => 'Human Verification',
- 'claim_on_response' => 'Claim on Response',
- 'assigned_tickets' => 'Assigned Tickets',
- 'answered_tickets' => 'Answered Tickets',
- 'agent_identity_masking' => 'Agent Identity Masking',
- 'enable_HTML_ticket_thread' => 'Enable HTML Ticket Thread',
- 'allow_client_updates' => 'Allow Client Updates',
+ 'ticket' => 'Ticket',
+ 'default_ticket_number_format' => 'Default Ticket Number Format',
+ 'default_ticket_number_sequence' => 'Default Ticket Number Sequence',
+ 'default_status' => 'Default Status',
+ 'default_priority' => 'Default Priority',
+ 'default_sla' => 'Default SLA',
+ 'default_help_topic' => 'Default Help Topic',
+ 'maximum_open_tickets' => 'Maximum Open Tickets',
+ 'agent_collision_avoidance_duration' => 'Agent Collision Avoidance Duration',
+ 'human_verification' => 'Human Verification',
+ 'claim_on_response' => 'Claim on Response',
+ 'assigned_tickets' => 'Assigned Tickets',
+ 'answered_tickets' => 'Answered Tickets',
+ 'agent_identity_masking' => 'Agent Identity Masking',
+ 'enable_HTML_ticket_thread' => 'Enable HTML Ticket Thread',
+ 'allow_client_updates' => 'Allow Client Updates',
+ 'lock_ticket_frequency' => 'Lock tickets',
+ 'only-once' => 'Only once',
+ 'frequently' => 'Frequently',
+ 'reload-now' => 'Relaod now',
+ 'ticket-lock-inactive' => 'You have been inactive for a while. Please reload the page.',
+ 'make-system-default-mail' => 'Make this email system\'s default email',
/*
|--------------------------------------
| Access Settings Page
@@ -302,16 +371,19 @@ return [
| Auto-Response Settings Page
|--------------------------------------
*/
- 'auto_responce' => 'Auto Response',
- 'new_ticket' => 'New Ticket',
- 'new_ticket_by_agent' => 'New Ticket by Agent',
- 'new_message' => 'New Message',
- 'submitter' => 'Submitter : ',
- 'send_receipt_confirmation' => 'Send Receipt Confirmation',
- 'participants' => 'Participants : ',
- 'send_new_activity_notice' => 'Send new activity notice',
- 'overlimit_notice' => 'Overlimit Notice',
- 'email_attachments_to_the_user' => 'Email attachments to the user',
+ 'auto_responce' => 'Auto Response',
+ 'new_ticket' => 'New Ticket',
+ 'new_ticket_by_agent' => 'New Ticket by Agent',
+ 'new_message' => 'New Message',
+ 'submitter' => 'Submitter : ',
+ 'send_receipt_confirmation' => 'Send Receipt Confirmation',
+ 'participants' => 'Participants : ',
+ 'send_new_activity_notice' => 'Send new activity notice',
+ 'overlimit_notice' => 'Overlimit Notice',
+ 'email_attachments_to_the_user' => 'Email attachments to the user',
+ 'auto_response_updated_successfully' => 'Auto Response Updated Successfully',
+ 'auto_response_can_not_updated' => 'Auto Response can not Updated',
+
/*
|--------------------------------------
| Alert & Notice Settings Page
@@ -339,13 +411,24 @@ return [
'excessive_failed_login_attempts' => 'Excessive failed login attempts',
'system_error_reports' => 'System error Reports',
'Send_app_crash_reports_to_help_Ladybird_improve_Faveo' => 'Send app crash reports to help Ladybird improve Faveo',
+ 'alert_&_notices_updated_successfully' => 'Alert & Notices Updated Successfully',
+ 'alert_&_notices_can_not_updated' => 'Alert & Notices can not Updated',
+
+ /*
+ |-----------------------------------------------
+ | Ratings Settings
+ |-----------------------------------------------
+ */
+ 'current_ratings' => 'Current Ratings',
+ 'edit_ratings' => 'Edit Ratings',
+
/*
|------------------------------------------------
- |Language page
+ | Language page
|------------------------------------------------
*/
'iso-code' => 'ISO-CODE',
- 'download' => 'Download',
+ 'download' => 'Downlaod',
'upload_file' => 'Upload File',
'enter_iso-code' => 'Enter ISO-CODE',
'eg.' => 'Example',
@@ -365,6 +448,16 @@ return [
'lang-doesnot-exist' => 'Language package does not exist.',
'active-lang-error' => 'Language package can not be deleted when it is active.',
'language-error' => 'Language package not found in your lang directroy.',
+
+ /*
+ |--------------------------------------
+ | Plugin Settings
+ |--------------------------------------
+ */
+ 'add_plugin' => 'Add Plugin',
+ 'plugins' => 'Plugins',
+ 'upload' => 'Upload',
+
/*
|----------------------------------------------------------------------------------------
| Manage Pages [English(en)]
@@ -393,19 +486,37 @@ return [
| Help Topic Create Page
|--------------------------------------
*/
- 'active' => 'Active',
- 'disabled' => 'Disabled',
- 'public' => 'Public',
- 'private' => 'Private',
- 'parent_topic' => 'Parent Topic',
- 'Custom_form' => 'Custom Form',
- 'SLA_plan' => 'SLA Plan',
- 'auto_assign' => 'Auto assign',
- 'auto_respons' => 'Auto Response',
- 'ticket_number_format' => 'Ticket Number Format',
- 'system_default' => 'System Default',
- 'custom' => 'Custom',
- 'internal_notes' => 'Internal Notes',
+ 'active' => 'Active',
+ 'disabled' => 'Disabled',
+ 'public' => 'Public',
+ 'private' => 'Private',
+ 'parent_topic' => 'Parent Topic',
+ 'Custom_form' => 'Custom Form',
+ 'SLA_plan' => 'SLA Plan',
+ 'auto_assign' => 'Auto assign',
+ 'auto_respons' => 'Auto Respons',
+ 'ticket_number_format' => 'Ticket Number Format',
+ 'system_default' => 'System Default',
+ 'custom' => 'Custom',
+ 'internal_notes' => 'Internal Notes',
+ 'select_a_parent_topic' => 'Select a parent topic',
+ 'custom_form' => 'Custom Form',
+ 'select_a_form' => 'Select a Form',
+ 'select_a_department' => 'Select a Department',
+ 'departments' => 'Departments',
+ 'select_a_priority' => 'Select a Priority',
+ 'priorities' => 'Priorities',
+ 'select_a_sla_plan' => 'Select a SLA Plan',
+ 'sla_plans' => 'SLA Plans',
+ 'select_an_agent' => 'Select an Agent',
+ 'helptopic_created_successfully' => 'Helptopic Created Successfully',
+ 'helptopic_can_not_create' => 'Helptopic can not Create',
+ 'helptopic_updated_successfully' => 'Helptopic Updated Successfully',
+ 'helptopic_can_not_update' => 'Helptopic can not Update',
+ 'you_cannot_delete_default_department' => 'You cannot delete default department',
+ 'have_been_moved_to_default_help_topic' => 'have been moved to default Help Topic',
+ 'helptopic_deleted_successfully' => 'Helptopic Deleted Successfully',
+ 'make-default-helptopic' => 'Make system\'s default help topic',
/*
|--------------------------------------
| SLA plan Index Page
@@ -420,29 +531,60 @@ return [
| SLA plan Create Page
|--------------------------------------
*/
- 'transient' => 'Transient',
- 'ticket_overdue_alert' => 'Ticket Overdue Alerts',
-
+ 'transient' => 'Transient',
+ 'ticket_overdue_alert' => 'Ticket Overdue Alerts',
+ 'sla_plan_created_successfully' => 'SLA Plan Created Successfully',
+ 'sla_plan_can_not_create' => 'SLA Plan can not Create',
+ 'sla_plan_updated_successfully' => 'SLA Plan Updated Successfully',
+ 'sla_plan_can_not_update' => 'SLA Plan can not Update',
+ 'you_cannot_delete_default_department' => 'You cannot delete default department',
+ 'have_been_moved_to_default_sla' => 'have been moved to default SLA',
+ 'associated_department_have_been_moved_to_default_sla' => 'Associated department have been moved to default SLA',
+ 'associated_help_topic_have_been_moved_to_default_sla' => 'Associated Help Topic have been moved to default SLA',
+ 'sla_plan_deleted_successfully' => 'SLA Plan Deleted Successfully',
+ 'sla_plan_can_not_delete' => 'SLA Plan can not Delete',
+ 'make-default-sla' => 'Make system\'s default SLA plan',
/*
|--------------------------------------
| Work Flow
|--------------------------------------
*/
- 'workflow' => 'Workflow',
- 'ticket_workflow' => 'Ticket Workflow',
- 'create_workflow' => 'Create Workflow',
- 'edit_workflow' => 'Edit Workflow',
- 'updated' => 'Updated',
- 'target' => 'Target',
- 'target_channel' => 'Target Channel',
- 'exceution_order' => 'Exceution Order',
- 'target_channel' => 'Target Channel',
- 'workflow_rules' => 'Workflow Rules',
- 'workflow_action' => 'Workflow Action',
- 'rules' => 'Rules',
- 'order' => 'Order',
- 'condition' => 'Condition',
- 'statement' => 'Statement',
+ 'workflow' => 'Workflow',
+ 'ticket_workflow' => 'Ticket Workflow',
+ 'create_workflow' => 'Create Workflow',
+ 'edit_workflow' => 'Edit Workflow',
+ 'updated' => 'Updated',
+ 'target' => 'Target',
+ 'target_channel' => 'Target Channel',
+ 'execution_order' => 'Execution Order',
+ 'target_channel' => 'Target Channel',
+ 'workflow_rules' => 'Workflow Rules',
+ 'workflow_action' => 'Workflow Action',
+ 'rules' => 'Rules',
+ 'order' => 'Order',
+ 'condition' => 'Condition',
+ 'statement' => 'Statement',
+ 'select_a_channel' => 'Select a Channel',
+ 'body' => 'Body',
+ 'select_one' => 'Select One',
+ 'equal_to' => 'Equal to',
+ 'not_equal_to' => 'Not equal to',
+ 'contains' => 'Contains',
+ 'does_not_contain' => 'Does Not Contain',
+ 'starts_with' => 'Starts With',
+ 'ends_with' => 'Ends With',
+ 'select_an_action' => 'Select an Action',
+ 'reject_ticket' => 'Reject Ticket',
+ 'set_department' => 'Set Department',
+ 'set_priority' => 'Set Priority',
+ 'set_sla_plan' => 'Set SLA Plan',
+ 'assign_team' => 'Assign Team',
+ 'assign_agent' => 'Assign Agent',
+ 'set_help_topic' => 'Set Help Topic',
+ 'set_ticket_status' => 'Set Ticket Status',
+ 'workflow_created_successfully' => 'Workflow Created Successfully',
+ 'workflow_updated_successfully' => 'Workflow Updated Successfully',
+ 'workflow_deleted_successfully' => 'Workflow Deleted Successfully',
/*
|--------------------------------------
@@ -475,6 +617,30 @@ return [
'required' => 'Required',
'Action' => 'Action',
'remove' => 'Remove',
+ 'form_deleted_successfully' => 'Form Deleted Successfully',
+ 'successfully_created_form' => 'Successfully created Form',
+ 'please_fill_form_name' => 'Please fill Form name',
+ 'category_inserted_successfully' => 'Category Inserted Successfully',
+ 'category_not_inserted' => 'Category Not Inserted',
+ 'category_updated_successfully' => 'Category Updated Successfully',
+ 'category_not_updated' => 'Category Not Updated',
+ 'category_deleted_successfully' => 'Category Deleted Successfully',
+ 'category_not_deleted' => 'Category Not Deleted',
+ 'article_inserted_successfully' => 'Article Inserted Successfully',
+ 'article_not_inserted' => 'Article Not Inserted',
+ 'article_updated_successfully' => 'Article Updated Successfully',
+ 'article_not_updated' => 'Article Not Updated',
+ 'article_deleted_successfully' => 'Article Deleted Successfully',
+ 'article_not_deleted' => 'Article Not Deleted',
+ 'article_can_not_deleted' => 'Article can Not Deleted',
+ 'page_created_successfully' => 'Page created successfully',
+ 'your_page_updated_successfully' => 'Your Page Updated Successfully',
+ 'page_deleted_successfully' => 'Page Deleted Successfully',
+ 'settings_updated_successfully' => 'Settings Updated Successfully',
+ 'settings_can_not_updated' => 'Settings can not Updated',
+ 'can_not_process' => 'Can not Process',
+ 'comment_published' => 'Comment Published',
+ 'comment_deleted' => 'Comment Deleted',
/*
|----------------------------------------------------------------------------------------
| Theme Pages [English(en)]
@@ -519,46 +685,60 @@ return [
| customize your views to better match your application.
|
*/
- 'are_you_sure' => 'Are you sure',
- 'staffs' => 'Staffs',
- 'name' => 'Name',
- 'user_name' => 'User Name',
- 'status' => 'Status',
- 'group' => 'Group',
- 'department' => 'Department',
- 'created' => 'Created',
- 'lastlogin' => 'Last Login',
- 'createagent' => 'Create An Agent',
- 'delete' => 'Delete',
- 'agents' => 'Agents',
- 'create' => 'Create',
- 'edit' => 'Edit',
- 'departments' => 'Departments',
- 'groups' => 'Groups',
+ 'are_you_sure' => 'Are you sure',
+ 'staffs' => 'Staffs',
+ 'name' => 'Name',
+ 'user_name' => 'User Name',
+ 'status' => 'Status',
+ 'group' => 'Group',
+ 'department' => 'Department',
+ 'created' => 'Created',
+ 'lastlogin' => 'Last Login',
+ 'createagent' => 'Create An Agent',
+ 'delete' => 'Delete',
+ 'agents' => 'Agents',
+ 'create' => 'Create',
+ 'edit' => 'Edit',
+ 'departments' => 'Departments',
+ 'groups' => 'Groups',
+ 'select_a_time_zone' => 'Select a Timezone',
+ 'time_zones' => 'Timezones',
/*
|--------------------------------------
| Staff Create Page
|--------------------------------------
*/
- 'create_agent' => 'Create Agent',
- 'first_name' => 'First Name',
- 'last_name' => 'Last Name',
- 'mobile_number' => 'Mobile Number',
- 'agent_signature' => 'Agent Signature',
- 'account_status_setting' => 'Account Status & Setting',
- 'account_type' => 'Account Type',
- 'admin' => 'Admin',
- 'agent' => 'Agent',
- 'account_status' => 'Account Status',
- 'locked' => 'Locked',
- 'assigned_group' => 'Assigned Group',
- 'primary_department' => 'Primary Department',
- 'agent_time_zone' => 'Agent Time Zone',
- 'day_light_saving' => 'Day Light Saving',
- 'limit_access' => 'Limit Access',
- 'directory_listing' => 'Directory Listing',
- 'vocation_mode' => 'Vocation Mode',
- 'assigned_team' => 'Assigned Team',
+ 'create_agent' => 'Create Agent',
+ 'first_name' => 'First Name',
+ 'last_name' => 'Last Name',
+ 'mobile_number' => 'Mobile Number',
+ 'agent_signature' => 'Agent Signature',
+ 'account_status_setting' => 'Account Status & Setting',
+ 'account_type' => 'Account Type',
+ 'admin' => 'Admin',
+ 'agent' => 'Agent',
+ 'account_status' => 'Account Status',
+ 'locked' => 'Locked',
+ 'assigned_group' => 'Assigned Group',
+ 'primary_department' => 'Primary Department',
+ 'agent_time_zone' => 'Agent Time Zone',
+ 'day_light_saving' => 'Day Light Saving',
+ 'limit_access' => 'Limit Access',
+ 'directory_listing' => 'Directory Listing',
+ 'vocation_mode' => 'Vocation Mode',
+ 'assigned_team' => 'Assigned Team',
+ 'agent_send_mail_error_on_agent_creation' => 'Some error occurred while sending mail to the agent. Please check email settings and try again',
+ 'agent_creation_success' => 'Agent Created sucessfully',
+ 'failed_to_create_agent' => 'Failed to create agent',
+ 'failed_to_edit_agent' => 'Failed to Edit Agent',
+ 'agent_updated_sucessfully' => 'Agent Updated sucessfully',
+ 'unable_to_update_agent' => 'Unable to update agent',
+ 'agent_deleted_sucessfully' => 'Agent Deleted sucessfully',
+ 'this_staff_is_related_to_some_tickets' => 'This staff is related to some tickets',
+ 'list_of_agents' => 'List of Agents',
+ 'create_an_agent' => 'Create an Agent',
+ 'edit_an_agent' => 'Edit an Agent',
+
/*
|--------------------------------------
| Department Create Page
@@ -571,44 +751,87 @@ return [
'outgoing_emails' => 'Outgoing Emails',
'outgoing_email' => 'Outgoing Email',
'template_set' => 'Template Set',
- 'auto_responding_settings' => 'Auto-Responding Settings',
+ 'auto_responding_settings' => 'Auto-Responding Settigs',
'disable_for_this_department' => 'Disable for this department',
'auto_response_email' => 'Auto-Response Email',
'recipient' => 'Recipient',
'group_access' => 'Group Access',
'department_signature' => 'Department Signature',
+ 'list_of_departments' => 'List of Departments',
+ 'create_a_department' => 'Create a Department',
+ 'outgoing_email_settings' => 'Outgoing Email Settings',
+ 'edit_department' => 'Edit Department',
+ 'select_a_sla' => 'Select a SLA',
+ 'select_a_manager' => 'Select a Manager',
+ 'department_created_sucessfully' => 'Department Created sucessfully',
+ 'failed_to_create_department' => 'Failed to create Department',
+ 'department_updated_sucessfully' => 'Department Updated sucessfully',
+ 'department_not_updated' => 'Department not Updated',
+ 'you_cannot_delete_default_department' => 'You cannot delete default department',
+ 'have_been_moved_to_default_department' => 'have been moved to default department',
+ 'the_associated_helptopic_has_been_deactivated' => 'The associated helptopic has been deactivated',
+ 'department_deleted_sucessfully' => 'Department Deleted sucessfully',
+ 'department_can_not_delete' => 'Department can not Delete',
+ 'select_a_department' => 'Select a Department',
+ 'make-default-department' => 'Make system\'s default department',
/*
|--------------------------------------
| Team Create Page
|--------------------------------------
*/
- 'create_team' => 'Create Team',
- 'team_lead' => 'Team Lead',
- 'assignment_alert' => 'Assignment Alert',
- 'disable_for_this_team' => 'Disable for this team',
- 'teams' => 'Teams',
+ 'create_team' => 'Create Team',
+ 'team_lead' => 'Team Lead',
+ 'assignment_alert' => 'Assignment Alert',
+ 'disable_for_this_team' => 'Disable for this team',
+ 'teams' => 'Teams',
+ 'list_of_teams' => 'List of Teams',
+ 'create_a_team' => 'Create a Team',
+ 'edit_a_team' => 'Edit a Team',
+ 'teams_created_successfully' => 'Teams Created Successfully',
+ 'teams_can_not_create' => 'Teams can not Create',
+ 'teams_updated_successfully' => 'Teams Updated Successfully',
+ 'teams_can_not_update' => 'Teams can not Update',
+ 'teams_deleted_successfully' => 'Teams Deleted Successfully',
+ 'teams_can_not_delete' => 'Teams can not Delete',
+ 'select_a_team' => 'Select a Team',
+ 'select_a_team_lead' => 'Select a Team Lead',
+ 'members' => 'Members',
/*
|--------------------------------------
| Group Create Page
|--------------------------------------
*/
- 'create_group' => 'Create Group',
- 'goups' => 'Goups',
- 'can_create_ticket' => 'Can create ticket',
- 'can_edit_ticket' => 'Can edit ticket',
- 'can_post_ticket' => 'Can post Ticket',
- 'can_close_ticket' => 'Can close ticket ',
- 'can_assign_ticket' => 'Can assign ticket',
- 'can_transfer_ticket' => 'Can transfer ticket',
- 'can_delete_ticket' => 'Can delete ticket',
- 'can_ban_emails' => 'Can ban emails',
- 'can_manage_premade' => 'Can Manage premade',
- 'can_manage_FAQ' => 'Can manage FAQ',
- 'can_view_agent_stats' => 'Can view agent stats',
- 'department_access' => 'Department Access ',
- 'admin_notes' => 'Admin Notes',
- 'group_members' => 'Group Members',
- 'group_name' => 'Group Name',
+ 'create_group' => 'Create Group',
+ 'goups' => 'Goups',
+ 'can_create_ticket' => 'Can create ticket',
+ 'can_edit_ticket' => 'Can edit ticket',
+ 'can_post_ticket' => 'Can post Ticket',
+ 'can_close_ticket' => 'Can close ticket ',
+ 'can_assign_ticket' => 'Can assign ticket',
+ 'can_transfer_ticket' => 'Can transfer ticket',
+ 'can_delete_ticket' => 'Can delete ticket',
+ 'can_ban_emails' => 'Can ban emails',
+ 'can_manage_premade' => 'Can Manage premade',
+ 'can_manage_FAQ' => 'Can manage FAQ',
+ 'can_view_agent_stats' => 'Can view agent stats',
+ 'department_access' => 'Department Access ',
+ 'admin_notes' => 'Admin Notes',
+ 'group_members' => 'Group Members',
+ 'group_name' => 'Group Name',
+ 'select_a_group' => 'Select a Group',
+ 'create_a_group' => 'Create a Group',
+ 'edit_a_group' => 'Edit a Group',
+ 'group_created_successfully' => 'Group Created Successfully',
+ 'group_can_not_create' => 'Group can not Create',
+ 'group_updated_successfully' => 'Group Updated Successfully',
+ 'group_can_not_update' => 'Group can not Update',
+ 'there_are_agents_assigned_to_this_group_please_unassign_them_from_this_group_to_delete' => 'There are agents assigned to this group. Please unassign them from this group to delete',
+ 'group_cannot_delete' => 'Group cannot Delete',
+ 'group_deleted_successfully' => 'Group Deleted Successfully',
+ 'group_cannot_delete' => 'Group cannot Delete',
+ 'failed_to_load_the_page' => 'Failed to load the page',
+
+
/*
|--------------------------------------
| SMTP Page
@@ -652,61 +875,110 @@ return [
'ratings' => 'Ratings',
'please_rate' => 'Please rate:',
'ticket_ratings' => 'TICKET RATING',
+ /*
+ |-----------------------------------------------
+ | Ticket
+ |-----------------------------------------------
+ */
+ 'ticket_created_successfully' => 'Ticket created successfully',
+ 'failed_to_create_a_new_ticket' => 'Failed to create a new ticket',
+ 'your_ticket_have_been_closed' => 'Your Ticket have been Closed',
+ 'your_ticket_have_been_resolved' => 'Your Ticket have been Resolved',
+ 'your_ticket_have_been_opened' => 'Your Ticket have been Opened',
+ 'your_ticket_have_been_moved_to_trash' => 'Your Ticket have been moved to Trash',
+ 'this_email_have_been_banned' => 'This Email have been banned',
+ 'ticket_updated_successfully' => 'Ticket Updated Successfully',
+ 'you_have_successfully_replied_to_your_ticket' => 'You have successfully replied to your ticket',
+ 'for_some_reason_your_message_was_not_posted_please_try_again_later' => 'For some reason your message was not posted. Please try again later',
+ 'you_have_successfully_replied_to_your_ticket' => 'You have successfully replied to your ticket',
+ 'for_some_reason_your_reply_was_not_posted_please_try_again_later' => 'For some reason your reply was not posted. Please try again later',
+ 'you_have_unassigned_your_ticket' => 'You have Unassigned your ticket',
+ 'for_some_reason_your_request_failed' => 'For some reason your request failed',
+
+
+
+
/*
|-----------------------------------------------
| Profile
|-----------------------------------------------
*/
- 'user_information' => 'User Information',
- 'time_zone' => 'Time-zone',
- 'phone_number' => 'Phone Number',
- 'contact_information' => 'Contact Information',
+ 'user_information' => 'User Information',
+ 'time_zone' => 'Time-zone',
+ 'phone_number' => 'Phone Number',
+ 'contact_information' => 'Contact Information',
+ 'Profile-Updated-sucessfully' => 'Profile updated successfully.',
+ 'User-profile-Updated-Successfully' => 'User\'s profile updated successfully.',
+ 'User-Created-Successfully' => 'User created successfully.',
/*
|-----------------------------------------------
| Dashboard
|-----------------------------------------------
*/
- 'dashboard' => 'Dashboard',
- 'line_chart' => 'Line Chart',
- 'statistics' => 'Statistics',
- 'opened' => 'Opened',
- 'resolved' => 'Resolved',
- 'closed' => 'Closed',
- 'deleted' => 'Deleted',
+ 'dashboard' => 'Dashboard',
+ 'line_chart' => 'Line Chart',
+ 'statistics' => 'Statistics',
+ 'opened' => 'Opened',
+ 'resolved' => 'Resolved',
+ 'closed' => 'Closed',
+ 'deleted' => 'Deleted',
+ 'start_date' => 'Start Date',
+ 'end_date' => 'End Date',
+ 'filter' => 'Filter',
+ 'report' => 'Report',
+ 'Legend' => 'LEGENDS',
+ 'total' => 'Total',
+ 'dashboard_reports' => 'Dashboard Reports',
/*
|------------------------------------------------
|User Page
|------------------------------------------------
*/
- 'user_directory' => 'User Directory',
- 'ban' => 'Ban',
- 'user' => 'User',
- 'users' => 'Users',
- 'create_user' => 'Create User',
- 'full_name' => 'Full Name',
- 'mobile' => 'Mobile',
- 'last_login' => 'Last Login',
- 'user_profile' => 'User Profile',
- 'assign' => 'Assign',
- 'open_tickets' => 'Open Tickets',
- 'closed_tickets' => 'Closed Tickets',
- 'deleted_tickets' => 'Deleted Tickets',
+ 'user_credentials' => 'User Credentials',
+ 'user_directory' => 'User Directory',
+ 'ban' => 'Ban',
+ 'user' => 'User',
+ 'users' => 'Users',
+ 'create_user' => 'Create User',
+ 'full_name' => 'Full Name',
+ 'mobile' => 'Mobile',
+ 'last_login' => 'Last Login',
+ 'user_profile' => 'User Profile',
+ 'assign' => 'Assign',
+ 'open_tickets' => 'Open Tickets',
+ 'closed_tickets' => 'Closed Tickets',
+ 'deleted_tickets' => 'Deleted Tickets',
+ 'user_created_successfully' => 'User Created Successfully',
+ 'user_updated_successfully' => 'User Updated Successfully',
+ 'profile_updated_sucessfully' => 'Profile Updated sucessfully',
+ 'password_updated_sucessfully' => 'Password Updated sucessfully',
+ 'password_was_not_updated_incorrect_old_password' => 'Password was not Updated. Incorrect old password',
+ 'the_user_has_been_removed_from_this_organization' => 'The user has been removed from this organization',
+ 'user_report' => 'User Report',
+
/*
|------------------------------------------------
|Organization Page
|------------------------------------------------
*/
- 'organizations' => 'Organizations',
- 'organization' => 'Organization',
- 'create_organization' => 'Create Organization',
- 'account_manager' => 'Account Manager',
- 'update' => 'Update',
- 'please_select_an_organization' => 'Please select an Organization',
- 'please_select_an_user' => 'Please select an user',
- 'organization_profile' => 'Organization Profile',
- 'organization-s_head' => "Organization's Head",
- 'select_department_manager' => 'Select Department Manager',
- 'users_of' => 'Users of',
+ 'organizations' => 'Organizations',
+ 'organization' => 'Organization',
+ 'create_organization' => 'Create Organization',
+ 'account_manager' => 'Account Manager',
+ 'update' => 'Update',
+ 'please_select_an_organization' => 'Please select an Organization',
+ 'please_select_an_user' => 'Please select an user',
+ 'organization_profile' => 'Organization Profile',
+ 'organization-s_head' => "Organization's Head",
+ 'select_department_manager' => 'Select Department Manager',
+ 'users_of' => 'Users of',
+ 'organization_created_successfully' => 'Organization Created Successfully',
+ 'organization_can_not_create' => 'Organization can not Create',
+ 'organization_updated_successfully' => 'Organization Updated Successfully',
+ 'organization_can_not_update' => 'Organization can not Update',
+ 'organization_deleted_successfully' => 'Organization Deleted Successfully',
+ 'report_of' => 'Report of',
+ 'ticket_of' => 'Tickets of',
/*
|----------------------------------------------
| Ticket page
@@ -769,7 +1041,8 @@ return [
'ticket_option' => 'Ticket Option',
'ticket_detail' => 'Ticket Detail',
'Assigned_To' => 'ASSIGNED TO',
- 'locked-ticket' => 'Alert! This ticket has been locked by another user and currently in process for response.',
+ 'locked-ticket' => 'Alert! This ticket has been locked by ',
+ 'minutes-ago' => 'minutes ago',
'access-ticket' => 'Alert! This ticket has been locked by you for next ',
'minutes' => ' minutes',
'in_minutes' => 'In minutes',
@@ -785,6 +1058,7 @@ return [
'select_tickets' => 'Select tickets to merge',
'select-pparent-ticket' => 'Select parent ticket',
'merge-reason' => 'Reason for merging',
+ 'no-reason' => 'No reason has been provided.',
'get_merge_message' => 'This ticket has been merged with ticket',
'ticket_merged' => ' has been merged with this ticket.',
'no-tickets-to-merge' => 'There are no more tickets by the owner of this ticket.',
@@ -793,7 +1067,7 @@ return [
'merge-error2' => 'Please select ticket to merge.',
'select-tickets-to merge' => 'select two or more tickets to merge.',
'different-users' => 'Ticktes from different users',
- 'clean-up' => 'Clean up',
+ 'clean-up' => 'Delete forever',
'hard-delete-success-message' => 'Tickets have been deleted permanently.',
'overdue' => 'Overdue',
'change_owner_for_ticket' => 'Change Owner for Ticket',
@@ -803,40 +1077,130 @@ return [
|Tools Page
|------------------------------------------------
*/
- 'canned_response' => 'Canned Response',
- 'create_canned_response' => 'Create Canned Response',
- 'surrender' => 'Surrender',
- 'view' => 'View',
+ 'canned_response' => 'Canned Response',
+ 'create_canned_response' => 'Create Canned Response',
+ 'surrender' => 'Surrender',
+ 'added_successfully' => 'Added Successfully',
+ 'updated_successfully' => 'Updated Successfully',
+ 'user_deleted_successfully' => 'User Deleted Successfully',
+ 'view' => 'View',
/*
|-----------------------------------------------
| Main text
|-----------------------------------------------
*/
'copyright' => 'Copyright',
- 'all_rights_reserved' => 'All rights Reserved',
+ 'all_rights_reserved' => 'All right Reserved',
'powered_by' => 'Powered by',
/*
|------------------------------------------------
|Guest-User Page
|------------------------------------------------
*/
- 'issue_summary' => 'Issue Summary',
- 'issue_details' => 'Issue Details',
- 'contact_informations' => 'Contact Informations',
- 'contact_details' => 'Contact Details',
- 'role' => 'Role',
- 'ext' => 'EXT',
- 'profile_pic' => 'Profile Picture',
- 'agent_sign' => 'Agent Signature',
- 'inactive' => 'Inactive',
- 'male' => 'Male',
- 'female' => 'Female',
- 'old_password' => 'Old Password',
- 'new_password' => 'New Password',
- 'confirm_password' => 'Confirm Password',
- 'gender' => 'Gender',
- 'ticket_number' => 'Ticket Number',
- 'content' => 'Content',
+ 'issue_summary' => 'Issue Summary',
+ 'issue_details' => 'Issue Details',
+ 'contact_informations' => 'Contact Informations',
+ 'contact_details' => 'Contact Details',
+ 'role' => 'Role',
+ 'ext' => 'EXT',
+ 'profile_pic' => 'Profile Picture',
+ 'agent_sign' => 'Agent Signature',
+ 'inactive' => 'Inactive',
+ 'male' => 'Male',
+ 'female' => 'Female',
+ 'old_password' => 'Old Password',
+ 'new_password' => 'New Password',
+ 'confirm_password' => 'Confirm Password',
+ 'gender' => 'Gender',
+ 'ticket_number' => 'Ticket Number',
+ 'content' => 'Content',
+ 'edit_template' => 'Edit Template',
+ 'edit_status' => 'Edit Status',
+ 'create_status' => 'Create Status',
+ 'edit_details' => 'Edit Details',
+ 'edit_templates' => 'Edit Templates',
+ 'activate_this_set' => 'Activate This Set',
+ 'show' => 'Show',
+ 'no_notification_available' => 'No Notification Available',
+
+ //auto-close workflow
+ 'close-msg1' => 'The number of days to after which the tickets will be auto-closed.',
+ 'no_of_days' => 'No of days',
+ 'close-msg2' => 'Enable auto-close workflow?',
+ 'enable_workflow' => 'Enable Workflow',
+ 'send_email_to_user' => 'Send Email to user',
+ 'close-msg3' => 'Select a status to choose on closing the ticket.',
+ 'close-msg4' => 'Send email to user on auto-closing the ticket?.',
+ 'edit_status' => 'Edit Status',
+ 'list_of_status' => 'List of Status',
+ 'status_settings' => 'Status Settings',
+ 'icon_class' => 'Icon class',
+ 'close_ticket_workflow' => 'Close Ticket Workflow',
+ 'ratings_settings' => 'Ratings Settings',
+ 'notification' => 'Notification',
+ 'status_has_been_updated_successfully' => 'Status has been updated Successfully',
+ 'status_has_been_created_successfully' => 'Status has been created Successfully',
+ 'status_has_been_deleted' => 'Status has been deleted',
+ 'you_cannot_delete_this_status' => 'You cannot delete this status',
+ 'you_have_deleted_all_the_read_notifications' => 'You have deleted all the read Notifications',
+ 'you_have_deleted_all_the_notification_records_since' => 'You have deleted all the notification records since ',
+ 'ratings_updated_successfully' => 'Ratings updated Successfully',
+ 'ratings_can_not_be_created' => 'Ratings can not be created',
+ 'successfully_created_this_rating' => 'Successfully created this rating',
+ 'rating_deleted_successfully' => 'Rating deleted Successfully',
+ //status msg
+
+ 'status_msg1' => 'If you choose YES an email notification will be sent to the user.',
+ 'notify_user' => 'Notify user on this status?',
+ 'deleted_status' => 'Is this a deleted ticket status?',
+ 'resolved_status' => 'Is this a resolved ticket status?',
+ 'status_msg3' => 'If you choose YES then the ticket status will be set as resolved.',
+ 'status_msg2' => 'If you choose YES then the ticket status will be set as deleted.',
+ 'rating-msg2' => 'Select a department to restrict this rating to tickets or chats within a specific department. If no department is selected, the rating will appear across all departments.',
+ 'rating-msg3' => 'If you choose YES user can modify the rating.',
+ 'rating_restrict' => 'Restrict rating to a department',
+ 'rating_change' => 'Allow user to change the rating?',
+ 'security_msg1' => 'The message to display when a user (host) has been locked out.',
+ 'security_msg2' => 'The number of login attempts a user has before their host/user or computer is locked out of the system. Set to 0 to record bad login attempts without locking out the host/user..',
+ 'security_msg3' => 'The length of minutes a host or user will be banned from this site after hitting the limit of bad logins.',
+ 'max_attempt' => 'Max Login Attempts Per Host/User',
+ 'rating-msg1' => 'The maximum rating that can be given. For example, if 5 is selected, the lowest possible rating will be 1 and the highest 5.',
+ 'enter_no_of_days' => 'Enter No of days',
+ 'template-types' => 'Template Types',
+ 'close-workflow' => 'Close Ticket Workflow',
+ 'template' => 'Template',
+ 'rating_label' => 'Rating Label',
+ 'display_order' => 'Display Order',
+ 'rating_scale' => 'Rating Scale',
+ 'rating_area' => 'Rating Area',
+
+ 'modify' => 'Modify',
+ 'rating_name' => 'Rating Name',
+ 'add_user_to_this_organization' => 'Add User to this Organization',
+ 'Tickets_of' => 'Tickets Of',
+ 'security' => 'Security',
+ 'security_settings' => 'Security Settings',
+ 'lockouts' => 'Lockouts',
+ 'security_settings_saved_successfully' => 'Security Settings saved Successfully',
+ 'manage_status' => 'Manage Status',
+ 'notifications' => 'Notifications',
+
+
+ 'auto_close_workflow' => 'Auto-close Workflow',
+ 'close_ticket_workflow_settings' => 'Close ticket workflow Settings',
+ 'successfully_saved_your_settings' => 'Successfully saved your Settings',
+
+ /*
+ |------------------------------------------------
+ | Notification Settings Pages
+ |------------------------------------------------
+ */
+ 'notification_settings' => 'Notification Settings',
+ 'delete_noti' => 'Delete All read notification?',
+ 'noti_msg1' => 'Days to delete notification logs',
+ 'noti_msg2' => 'You can enter the no of days of database logs to be deleted and the history of notifications will be deleted since the day specified.',
+ 'del_all_read' => 'Delete All Read',
+ 'You_have_deleted_all_the_read_notifications' => 'You have deleted all the read notifications',
/*
|------------------------------------------------
| Error Pages
@@ -872,6 +1236,7 @@ return [
'description' => 'Description',
'enter_the_description' => 'Enter the Description',
'publish' => 'Publish',
+ 'publish_immediately' => 'Publish Immediately',
'published' => 'Published',
'draft' => 'Draft',
'create_a_category' => 'Create a Category',
@@ -905,17 +1270,70 @@ return [
| customize your views to better match your application.
|
*/
- 'home' => 'Home',
- 'submit_a_ticket' => 'Submit A Ticket',
- 'my_profile' => 'My Profile',
- 'log_out' => 'Logout',
- 'forgot_password' => 'Forgot Password',
- 'create_account' => 'Create Account',
- 'you_are_here' => 'You are here',
- 'have_a_ticket' => 'Have a Ticket',
- 'check_ticket_status' => 'Check Ticket status',
- 'choose_a_help_topic' => 'Choose a Help Topic',
- 'ticket_status' => 'Ticket Status',
- 'post_comment' => 'Post Comment',
- 'plugin' => 'Plugin',
+ 'home' => 'Home',
+ 'submit_a_ticket' => 'Submit A Ticket',
+ 'my_profile' => 'My Profile',
+ 'log_out' => 'Logout',
+ 'forgot_password' => 'Forgot Password',
+ 'create_account' => 'Create Account',
+ 'you_are_here' => 'You are here',
+ 'have_a_ticket' => 'Have a Ticket',
+ 'check_ticket_status' => 'Check Ticket status',
+ 'choose_a_help_topic' => 'Choose a Help Topic',
+ 'ticket_status' => 'Ticket Status',
+ 'post_comment' => 'Post Comment',
+ 'plugin' => 'Plugin',
+ 'edit_profile' => 'Edit Profile',
+ 'you_are_here' => 'You are here',
+ 'Send' => 'SEND',
+ 'no_article' => 'No Article',
+ 'profile_settings' => 'Profile Settings',
+ 'please_fill_all_required_feilds' => 'Please fill all required feilds.',
+ 'successfully_replied' => 'Successfully replied',
+ 'please_fill_some_data' => 'Please fill some data!',
+ 'profile_updated_sucessfully' => 'Profile Updated sucessfully',
+ 'password_updated_sucessfully' => 'Password Updated sucessfully',
+ 'password_was_not_updated_incorrect_old_password' => 'Password was not Updated. Incorrect old password',
+ 'there_is_no_such_ticket_number' => 'There is no such Ticket Number',
+ "email_didn't_match_with_ticket_number" => "Email didn't match with Ticket Number",
+ 'we_have_sent_you_a_link_by_email_please_click_on_that_link_to_view_ticket' => 'We have sent you a link by Email. Please click on that link to view ticket',
+ 'no_records_on_publish_time' => 'No records on publish time',
+ 'your_details_send_to_system' => 'Your details send to System',
+ 'your_details_can_not_send_to_system' => 'Your details can not send to System',
+ 'your_comment_posted' => 'Your comment posted',
+ 'sorry_not_processed' => 'Sorry not processed',
+ 'profile_updated_sucessfully' => 'Profile Updated sucessfully',
+ 'password_was_not_updated' => 'Password was not Updated',
+ 'sorry_your_ticket_token_has_expired_please_try_to_resend_the_ticket_link_request' => 'Sorry your Ticket token has Expired! Please try to resend the Ticket link request',
+ 'sorry_you_are_not_allowed_token_expired' => 'Sorry you are not allowed. Token Expired!',
+ 'thank_you_for_your_rating' => 'Thank you for your rating!',
+ 'your_ticket_has_been' => 'Your ticket has been',
+ /*
+ * |---------------------------------------------------------------------------------------
+ |Api settings
+ * |----------------------------------------------------------------------------------
+ * |The following lanuage line used to get english traslation of api settings in admin panel
+ * |
+ * |
+ */
+
+ 'webhooks' => 'Webhooks',
+ 'enter_url_to_send_ticket_details' => 'Enter the url to send the ticket details',
+
+ /*
+ *-----------------------------------------------------------------------------
+ * Error log and debugging settings
+ *--------------------------------------------------------------------------
+ *
+ */
+ 'error-debug' => 'Error logs and Debugging',
+ 'debug-options' => 'Debugging options',
+ 'view-logs' => 'View error logs',
+ 'not-authorised-error-debug' => 'You are not authorised to access the URL',
+ 'error-debug-settings' => 'Error and debugging settings',
+ 'debugging' => 'Debugging Mode',
+ 'bugsnag-debugging' => 'Send app crash reports to help Ladybird improve Faveo',
+ 'error-debug-settings-saved-message' => 'Your error and debugging settings have been saved successfully',
+ 'error-debug-settings-error-message' => 'You have not made any change in the settings.',
+ 'error-logs' => 'Error logs',
];
diff --git a/resources/lang/en/lang2.php b/resources/lang/en/lang2.php
new file mode 100644
index 000000000..590286b78
--- /dev/null
+++ b/resources/lang/en/lang2.php
@@ -0,0 +1,921 @@
+
+ 'Success',
+ 'fails' => 'Fails',
+ 'alert' => 'Alert',
+ 'required-error' => 'Please fill all required fields',
+ 'invalid' => 'Incorrect User id or password',
+ /*
+ |--------------------------------------
+ | Login Page
+ |--------------------------------------
+ */
+ 'Login_to_start_your_session' => 'Login to start your session',
+ 'login' => 'Login',
+ 'remember' => 'Remember Me',
+ 'signmein' => 'Sign me In',
+ 'iforgot' => 'I forgot my Password',
+ 'email_address' => 'E-Mail Address',
+ 'password' => 'Password',
+ 'woops' => 'Whoops!',
+ 'theirisproblem' => 'There were some problems with your input.',
+ 'login' => 'Login',
+ 'e-mail' => 'E-mail',
+ 'reg_new_member' => 'Register a new membership',
+ /*
+ |--------------------------------------
+ | Register Page
+ |--------------------------------------
+ */
+ 'registration' => 'Registration',
+ 'full_name' => 'Full name',
+ 'firstname' => 'First Name',
+ 'lastname' => 'Last Name',
+ 'profilepicture' => 'Profile Picture',
+ 'oldpassword' => 'Old Password',
+ 'newpassword' => 'New Password',
+ 'retype_password' => 'Retype Password',
+ 'i_agree_to_the' => 'I agree to the',
+ 'terms' => 'terms',
+ 'register' => 'Register',
+ 'i_already_have_a_membership' => 'I already have a membership',
+ 'see-profile1' => 'Click here to see ',
+ 'see-profile2' => 's profile',
+ /*
+ |--------------------------------------
+ | Reset Password Page
+ |--------------------------------------
+ */
+ 'reset_password' => 'Reset Password',
+ /*
+ |--------------------------------------
+ | Forgot Password Page
+ |--------------------------------------
+ */
+ 'i_know_my_password' => 'I know my password',
+ 'recover_passord' => 'Recover Password',
+ 'send_password_reset_link' => 'Send pasword Reset Link',
+ 'enter_email_to_reset_password' => 'Enter E-mail to reset password',
+ 'link' => 'Link',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Emails Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Emails related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'admin_panel' => 'Admin Panel',
+ /*
+ |--------------------------------------
+ | Emails Create Page
+ |--------------------------------------
+ */
+ 'emails' => 'Emails',
+ 'incoming_emails' => 'Incoming Emails',
+ 'reuired_authentication' => 'Required Authentication',
+ 'fetching_email_via_imap' => 'Fetching Email via IMAP',
+ 'create_email' => 'Create Email',
+ 'email_address' => 'Email Address',
+ 'email_name' => 'Email Name',
+ 'help_topic' => 'Help Topic',
+ 'auto_response' => 'Auto Response',
+ 'host_name' => 'Host Name',
+ 'port_number' => 'Port Number',
+ 'mail_box_protocol' => 'Mail Box Protocol',
+ 'authentication_required' => 'Authentication Required',
+ 'yes' => 'Yes',
+ 'no' => 'No',
+ 'header_spoofing' => 'Header Spoofing',
+ 'allow_for_this_email' => 'Allow For This Email',
+ 'imap_config' => 'IMAP Configuration',
+ 'email_information_and_settings' => 'Email Information and Settings',
+ 'incoming_email_information' => 'Incoming Email Information',
+ 'outgoing_email_information' => 'Outgoing Email Information',
+ 'new_ticket_settings' => 'New Ticket Settings',
+ 'protocol' => 'Protocol',
+ 'fetching_protocol' => 'Fetching Protocol',
+ 'transfer_protocol' => 'Transfer Protocol',
+ 'from_name' => 'From Name',
+ 'add_an_email' => 'Add an Email',
+ 'edit_an_email' => 'Edit an Email',
+ 'disable_for_this_email_address' => 'Disable for this Email address',
+ /*
+ |--------------------------------------
+ | Ban Emails Create Page
+ |--------------------------------------
+ */
+ 'ban_lists' => 'Ban Lists',
+ 'ban_email' => 'Ban Email',
+ 'banlists' => 'Ban lists',
+ 'ban_status' => 'Ban Status',
+ /*
+ |--------------------------------------
+ | Templates Index Page
+ |--------------------------------------
+ */
+ 'templates' => 'Templates',
+ 'template_set' => 'Template Sets',
+ 'create_template' => 'Create Template',
+ 'edit_template' => 'Edit Template',
+ 'in_use' => 'In Use',
+ //Template Description
+ 'Create ticket agent' => 'Notification email that is sent to Agent & Admin when ticket is created',
+ 'Assign ticket' => 'Ticket assigned to an agent',
+ 'Create ticket' => 'Mail sent to client for ticket creation successful message',
+ 'Check ticket' => 'if a client wants to check ticket via customer portal then a link will be sent to client. this link is for the client to view ticket details with ticket no, without logging in to system',
+ 'Ticket reply agent' => 'A notification is sent to agent email once client replies to the ticket',
+ 'Registration notification' => 'Password and username is sent on email on first registration',
+ 'Reset password' => 'Email with Password reset link',
+ 'Error report' => 'Error report',
+ 'Ticket creation' => 'First notification sent by the system about the ticket creation to the client',
+ 'Ticket reply' => 'A reply made by the agent on a ticket, email notification is sent to client and collaborators',
+ 'Close ticket' => 'Mail sent to client on closing a ticket',
+ 'Create ticket by agent' => 'An agent creates a ticket for the client in the name of client',
+ /*
+ |--------------------------------------
+ | Templates Create Page
+ |--------------------------------------
+ */
+ 'template_set_to_clone' => 'Template set to clone',
+ 'language' => 'Language',
+ /*
+ |--------------------------------------
+ | Diagnostics Page
+ |--------------------------------------
+ */
+ 'diagnostics' => 'Diagnostics',
+ 'from' => 'From',
+ 'to' => 'To',
+ 'subject' => 'Subject',
+ 'message' => 'Message',
+ 'send' => 'Send',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Settings Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Setting related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+
+ /*
+ |--------------------------------------
+ | Company Settings Page
+ |--------------------------------------
+ */
+ 'company' => 'Company',
+ 'website' => 'Website',
+ 'phone' => 'Phone',
+ 'address' => 'Address',
+ 'landing' => 'Landing Page',
+ 'offline' => 'Offline Page',
+ 'thank' => 'Thank Page',
+ 'logo' => 'Logo',
+ 'save' => 'Save',
+ 'delete-logo' => 'Delete logo',
+ 'click-delete' => 'Click here to delete',
+ /*
+ |--------------------------------------
+ | System Settings Page
+ |--------------------------------------
+ */
+ 'system' => 'System',
+ 'online' => 'Online',
+ 'offline' => 'Offline',
+ 'name/title' => 'Name/Title',
+ 'pagesize' => 'Page Size',
+ 'url' => 'URL',
+ 'default_department' => 'Default Department',
+ 'loglevel' => 'Log Level',
+ 'purglog' => 'Purge Logs',
+ 'nameformat' => 'Name Formatting',
+ 'timeformat' => 'Time Format',
+ 'date' => 'Date',
+ 'dateformat' => 'Date Format',
+ 'date_time' => 'Date And Time Format',
+ 'day_date_time' => 'Day,Date And Time Format',
+ 'timezone' => 'Default Time Zone',
+ 'api' => 'Api',
+ 'api_key' => 'Api Key',
+ 'api_key_mandatory' => 'Api key mandatory',
+ 'api_configurations' => 'Api Configurations',
+ 'generate_key' => 'Generate key',
+ /*
+ |--------------------------------------
+ | Email Settings Page
+ |--------------------------------------
+ */
+ 'email' => 'Email',
+ 'default_template' => 'Default Template Set:',
+ 'default_system_email' => 'Default System Email:',
+ 'default_alert_email' => 'Default Alert Email:',
+ 'admin_email' => 'Admins Email Address:',
+ 'email_fetch' => 'Email Fetching:',
+ 'enable' => 'Enable',
+ 'default_MTA' => 'Default MTA',
+ 'fetch_auto-corn' => 'Fetch on auto-cron',
+ 'strip_quoted_reply' => 'Strip Quoted Reply',
+ 'reply_separator' => 'Reply Separator Tag',
+ 'accept_all_email' => 'Accept All Emails',
+ 'accept_email_unknown' => 'Accept email from unknown Users',
+ 'accept_email_collab' => 'Accept Email Collaborators',
+ 'automatically_and_collab_from_email' => 'Automatically add collaborators from email fields',
+ 'default_alert_email' => 'Default Alert Email',
+ 'attachments' => 'Attachments',
+ 'email_attahment_user' => 'Email attachments to the user',
+ 'cron_notification' => 'Enable Notification cron',
+ 'cron' => 'Job Scheduler',
+ 'crone-url-message' => "These are Faveo's Job Scheduler(cron job) url for your system.",
+ 'clipboard-copy-message' => 'Copied to clipboard.',
+ 'click' => 'Click here',
+ 'check-cron-set' => 'to check how to set cron jobs on your server.',
+ 'notification-email' => 'Email notifications',
+ 'click-url-copy' => 'Click here to copy URL',
+ 'job-scheduler-error' => 'Job scheduler can not be updated.',
+ 'job-scheduler-success' => 'Job scheduler updated successfully.',
+ /*
+ |--------------------------------------
+ | Ticket Settings Page
+ |--------------------------------------
+ */
+ 'ticket' => 'Ticket',
+ 'default_ticket_number_format' => 'Default Ticket Number Format',
+ 'default_ticket_number_sequence' => 'Default Ticket Number Sequence',
+ 'default_status' => 'Default Status',
+ 'default_priority' => 'Default Priority',
+ 'default_sla' => 'Default SLA',
+ 'default_help_topic' => 'Default Help Topic',
+ 'maximum_open_tickets' => 'Maximum Open Tickets',
+ 'agent_collision_avoidance_duration' => 'Agent Collision Avoidance Duration',
+ 'human_verification' => 'Human Verification',
+ 'claim_on_response' => 'Claim on Response',
+ 'assigned_tickets' => 'Assigned Tickets',
+ 'answered_tickets' => 'Answered Tickets',
+ 'agent_identity_masking' => 'Agent Identity Masking',
+ 'enable_HTML_ticket_thread' => 'Enable HTML Ticket Thread',
+ 'allow_client_updates' => 'Allow Client Updates',
+ /*
+ |--------------------------------------
+ | Access Settings Page
+ |--------------------------------------
+ */
+ 'access' => 'Access',
+ 'expiration_policy' => 'Password Expiration Policy',
+ 'allow_password_resets' => 'Allow Password Resets',
+ 'reset_token_expiration' => 'Reset Token Expiration',
+ 'agent_session_timeout' => 'Agent Session Timeout',
+ 'bind_agent_session_IP' => 'Bind Agent Session to IP',
+ 'registration_required' => 'Registration Required',
+ 'require_registration_and_login_to_create_tickets' => 'Require registration and login to create tickets',
+ 'registration_method' => 'Registration Method',
+ 'user_session_timeout' => 'User Session Timeout',
+ 'client_quick_access' => 'Client Quick Access',
+ 'cron' => 'Cron',
+ 'system-settings' => 'System Settings',
+ 'settings-2' => 'Settings',
+
+ /*
+ |--------------------------------------
+ | Auto-Response Settings Page
+ |--------------------------------------
+ */
+ 'auto_responce' => 'Auto Response',
+ 'new_ticket' => 'New Ticket',
+ 'new_ticket_by_agent' => 'New Ticket by Agent',
+ 'new_message' => 'New Message',
+ 'submitter' => 'Submitter : ',
+ 'send_receipt_confirmation' => 'Send Receipt Confirmation',
+ 'participants' => 'Participants : ',
+ 'send_new_activity_notice' => 'Send new activity notice',
+ 'overlimit_notice' => 'Overlimit Notice',
+ 'email_attachments_to_the_user' => 'Email attachments to the user',
+ /*
+ |--------------------------------------
+ | Alert & Notice Settings Page
+ |--------------------------------------
+ */
+ 'disable' => 'Disable',
+ 'admin_email_2' => 'Admin Email',
+ 'alert_notices' => 'Alert & Notices',
+ 'new_ticket_alert' => 'New Ticket Alert',
+ 'department_manager' => 'Department Manager',
+ 'department_members' => 'Department Members',
+ 'organization_account_manager' => 'Organization Account Manager',
+ 'new_message_alert' => 'New Message Alert',
+ 'last_respondent' => 'Last Respondent',
+ 'assigned_agent_team' => 'Assigned Agent / Team',
+ 'new_internal_note_alert' => 'New Internal Note Alert',
+ 'ticket_assignment_alert' => 'Ticket Assignment Alert',
+ 'team_lead' => 'Team Lead',
+ 'team_members' => 'Team Members',
+ 'ticket_transfer_alert' => 'Ticket Transfer Alert',
+ 'overdue_ticket_alert' => 'Overdue Ticket Alert ',
+ 'system_alerts' => 'System Alerts',
+ 'system_errors' => 'System Errors',
+ 'SQL_errors' => 'SQL errors',
+ 'excessive_failed_login_attempts' => 'Excessive failed login attempts',
+ 'system_error_reports' => 'System error Reports',
+ 'Send_app_crash_reports_to_help_Ladybird_improve_Faveo' => 'Send app crash reports to help Ladybird improve Faveo',
+ /*
+ |------------------------------------------------
+ |Language page
+ |------------------------------------------------
+ */
+ 'iso-code' => 'ISO-CODE',
+ 'download' => 'Download',
+ 'upload_file' => 'Upload File',
+ 'enter_iso-code' => 'Enter ISO-CODE',
+ 'eg.' => 'Example',
+ 'for' => 'for',
+ 'english' => 'English',
+ 'language-name' => 'Language name',
+ 'file' => 'File',
+ 'read-more' => 'Read more.',
+ 'enable_lang' => 'Enable it.',
+ 'add-lang-package' => 'Add new language package',
+ 'package_exist' => 'Package already exists.',
+ 'iso-code-error' => 'Error in iso-code. enter correct iso-code.',
+ 'zipp-error' => 'Error in zip file. Zip must contian language php files only.',
+ 'upload-success' => 'Uploaded successfully.',
+ 'file-error' => 'Error in file or invalid file.',
+ 'delete-success' => 'Language package deleted successfully.',
+ 'lang-doesnot-exist' => 'Language package does not exist.',
+ 'active-lang-error' => 'Language package can not be deleted when it is active.',
+ 'language-error' => 'Language package not found in your lang directroy.',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Manage Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Manage related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'manage' => 'Manage',
+ /*
+ |--------------------------------------
+ | Help Topic index Page
+ |--------------------------------------
+ */
+ 'help_topics' => 'Help Topics',
+ 'topic' => 'Topic',
+ 'type' => 'Type',
+ 'priority' => 'Priority',
+ 'last_updated' => 'Last Updated',
+ 'create_help_topic' => 'Create Help topic',
+ 'action' => 'Action',
+ /*
+ |--------------------------------------
+ | Help Topic Create Page
+ |--------------------------------------
+ */
+ 'active' => 'Active',
+ 'disabled' => 'Disabled',
+ 'public' => 'Public',
+ 'private' => 'Private',
+ 'parent_topic' => 'Parent Topic',
+ 'Custom_form' => 'Custom Form',
+ 'SLA_plan' => 'SLA Plan',
+ 'auto_assign' => 'Auto assign',
+ 'auto_respons' => 'Auto Response',
+ 'ticket_number_format' => 'Ticket Number Format',
+ 'system_default' => 'System Default',
+ 'custom' => 'Custom',
+ 'internal_notes' => 'Internal Notes',
+ /*
+ |--------------------------------------
+ | SLA plan Index Page
+ |--------------------------------------
+ */
+ 'sla_plans' => 'SLA Plans',
+ 'create_SLA' => 'Create a SLA',
+ 'grace_period' => 'Grace Period',
+ 'added_date' => 'Added Date',
+ /*
+ |--------------------------------------
+ | SLA plan Create Page
+ |--------------------------------------
+ */
+ 'transient' => 'Transient',
+ 'ticket_overdue_alert' => 'Ticket Overdue Alerts',
+
+ /*
+ |--------------------------------------
+ | Work Flow
+ |--------------------------------------
+ */
+ 'workflow' => 'Workflow',
+ 'ticket_workflow' => 'Ticket Workflow',
+ 'create_workflow' => 'Create Workflow',
+ 'edit_workflow' => 'Edit Workflow',
+ 'updated' => 'Updated',
+ 'target' => 'Target',
+ 'target_channel' => 'Target Channel',
+ 'exceution_order' => 'Exceution Order',
+ 'target_channel' => 'Target Channel',
+ 'workflow_rules' => 'Workflow Rules',
+ 'workflow_action' => 'Workflow Action',
+ 'rules' => 'Rules',
+ 'order' => 'Order',
+ 'condition' => 'Condition',
+ 'statement' => 'Statement',
+
+ /*
+ |--------------------------------------
+ | Form Create Page
+ |--------------------------------------
+ */
+ 'title' => 'Title',
+ 'instruction' => 'Instruction',
+ 'label' => 'Label',
+ 'visibility' => 'Visibility',
+ 'variable' => 'Variable',
+ 'create_form' => 'Create Form',
+ 'forms' => 'Forms',
+ 'form_name' => 'Form Name',
+ 'view_this_form' => 'View This Form',
+ 'delete_from' => 'Delete Form',
+ 'are_you_sure_you_want_to_delete' => 'Are you sure you want to Delete',
+ 'close' => 'Close',
+ 'instructions' => 'Instructions',
+ 'instructions_on_creating_form' => "Select field type you want to add to the form below and click on 'Type' dropdown. Don't forget to set field options if type is select,checkbox or radio..Separate each option by a coma. After you finish creating the form, you can save the form by clicking Save Form button",
+ 'form_properties' => 'Form Properties',
+ 'adding_fields' => 'Adding Fields',
+ 'click_add_fields_button_to_add_fields' => "Click 'Add Fields' button to add Fields",
+ 'add_fields' => 'Add Fields',
+ 'save_form' => 'Save Form',
+ 'label' => 'Label',
+ 'name' => 'Name',
+ 'type' => 'Type',
+ 'values(selected_fields)' => 'Values(Selected Fields)',
+ 'required' => 'Required',
+ 'Action' => 'Action',
+ 'remove' => 'Remove',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Theme Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Theme related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'themes' => 'Themes',
+ /*
+ |--------------------------------------
+ | Footer Pages
+ |--------------------------------------
+ */
+ 'footer' => 'Footer',
+ 'footer1' => 'Footer1',
+ 'footer2' => 'Footer2',
+ 'footer3' => 'Footer3',
+ 'footer4' => 'Footer4',
+ /*
+ |--------------------------------------
+ | Custom alert box
+ |--------------------------------------
+ */
+ 'ok' => 'Ok',
+ 'cancel' => 'Cancel',
+ 'select-ticket' => 'Please select tickets.',
+ 'confirm' => 'Are you sure?',
+ 'delete-tickets' => 'Delete Tickets',
+ 'close-tickets' => 'Close Tickets',
+ 'open-tickets' => 'Open Tickets',
+
+ /*
+ |----------------------------------------------------------------------------------------
+ | Staff Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Staff related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'are_you_sure' => 'Are you sure',
+ 'staffs' => 'Staffs',
+ 'name' => 'Name',
+ 'user_name' => 'User Name',
+ 'status' => 'Status',
+ 'group' => 'Group',
+ 'department' => 'Department',
+ 'created' => 'Created',
+ 'lastlogin' => 'Last Login',
+ 'createagent' => 'Create An Agent',
+ 'delete' => 'Delete',
+ 'agents' => 'Agents',
+ 'create' => 'Create',
+ 'edit' => 'Edit',
+ 'departments' => 'Departments',
+ 'groups' => 'Groups',
+ /*
+ |--------------------------------------
+ | Staff Create Page
+ |--------------------------------------
+ */
+ 'create_agent' => 'Create Agent',
+ 'first_name' => 'First Name',
+ 'last_name' => 'Last Name',
+ 'mobile_number' => 'Mobile Number',
+ 'agent_signature' => 'Agent Signature',
+ 'account_status_setting' => 'Account Status & Setting',
+ 'account_type' => 'Account Type',
+ 'admin' => 'Admin',
+ 'agent' => 'Agent',
+ 'account_status' => 'Account Status',
+ 'locked' => 'Locked',
+ 'assigned_group' => 'Assigned Group',
+ 'primary_department' => 'Primary Department',
+ 'agent_time_zone' => 'Agent Time Zone',
+ 'day_light_saving' => 'Day Light Saving',
+ 'limit_access' => 'Limit Access',
+ 'directory_listing' => 'Directory Listing',
+ 'vocation_mode' => 'Vocation Mode',
+ 'assigned_team' => 'Assigned Team',
+ /*
+ |--------------------------------------
+ | Department Create Page
+ |--------------------------------------
+ */
+ 'create_department' => 'Create Department',
+ 'manager' => 'Manager',
+ 'ticket_assignment' => 'Ticket Assignment ',
+ 'restrict_ticket_assignment_to_department_members' => 'Restrict ticket assignment to department members',
+ 'outgoing_emails' => 'Outgoing Emails',
+ 'outgoing_email' => 'Outgoing Email',
+ 'template_set' => 'Template Set',
+ 'auto_responding_settings' => 'Auto-Responding Settings',
+ 'disable_for_this_department' => 'Disable for this department',
+ 'auto_response_email' => 'Auto-Response Email',
+ 'recipient' => 'Recipient',
+ 'group_access' => 'Group Access',
+ 'department_signature' => 'Department Signature',
+ /*
+ |--------------------------------------
+ | Team Create Page
+ |--------------------------------------
+ */
+ 'create_team' => 'Create Team',
+ 'team_lead' => 'Team Lead',
+ 'assignment_alert' => 'Assignment Alert',
+ 'disable_for_this_team' => 'Disable for this team',
+ 'teams' => 'Teams',
+ /*
+ |--------------------------------------
+ | Group Create Page
+ |--------------------------------------
+ */
+ 'create_group' => 'Create Group',
+ 'goups' => 'Goups',
+ 'can_create_ticket' => 'Can create ticket',
+ 'can_edit_ticket' => 'Can edit ticket',
+ 'can_post_ticket' => 'Can post Ticket',
+ 'can_close_ticket' => 'Can close ticket ',
+ 'can_assign_ticket' => 'Can assign ticket',
+ 'can_transfer_ticket' => 'Can transfer ticket',
+ 'can_delete_ticket' => 'Can delete ticket',
+ 'can_ban_emails' => 'Can ban emails',
+ 'can_manage_premade' => 'Can Manage premade',
+ 'can_manage_FAQ' => 'Can manage FAQ',
+ 'can_view_agent_stats' => 'Can view agent stats',
+ 'department_access' => 'Department Access ',
+ 'admin_notes' => 'Admin Notes',
+ 'group_members' => 'Group Members',
+ 'group_name' => 'Group Name',
+ /*
+ |--------------------------------------
+ | SMTP Page
+ |--------------------------------------
+ */
+ 'driver' => 'Driver',
+ 'smtp' => 'SMTP',
+ 'host' => 'Host',
+ 'port' => 'Port',
+ 'encryption' => 'Encryption',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Agent Panel [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'agent_panel' => 'Agent Panel',
+ 'profile' => 'Profile',
+ 'change_password' => 'Change Password',
+ 'sign_out' => 'Sign Out',
+ 'Tickets' => 'TICKETS',
+ 'inbox' => 'Inbox',
+ 'my_tickets' => 'My Tickets',
+ 'unassigned' => 'Unassigned',
+ 'trash' => 'Trash',
+ 'Updates' => 'UPDATES',
+ 'no_new_updates' => 'No new Updates',
+ 'check_for_updates' => 'Check for Updates',
+ 'open' => 'Open',
+ 'inprogress' => 'Inprogress',
+ 'closed' => 'Closed',
+ 'Departments' => 'DEPARTMENTS',
+ 'tools' => 'Tools',
+ 'canned' => 'Canned',
+ 'knowledge_base' => 'Knowledge Base',
+ 'loading' => 'Loading',
+ 'ratings' => 'Ratings',
+ 'please_rate' => 'Please rate:',
+ 'ticket_ratings' => 'TICKET RATING',
+ /*
+ |-----------------------------------------------
+ | Profile
+ |-----------------------------------------------
+ */
+ 'user_information' => 'User Information',
+ 'time_zone' => 'Time-zone',
+ 'phone_number' => 'Phone Number',
+ 'contact_information' => 'Contact Information',
+ /*
+ |-----------------------------------------------
+ | Dashboard
+ |-----------------------------------------------
+ */
+ 'dashboard' => 'Dashboard',
+ 'line_chart' => 'Line Chart',
+ 'statistics' => 'Statistics',
+ 'opened' => 'Opened',
+ 'resolved' => 'Resolved',
+ 'closed' => 'Closed',
+ 'deleted' => 'Deleted',
+ /*
+ |------------------------------------------------
+ |User Page
+ |------------------------------------------------
+ */
+ 'user_directory' => 'User Directory',
+ 'ban' => 'Ban',
+ 'user' => 'User',
+ 'users' => 'Users',
+ 'create_user' => 'Create User',
+ 'full_name' => 'Full Name',
+ 'mobile' => 'Mobile',
+ 'last_login' => 'Last Login',
+ 'user_profile' => 'User Profile',
+ 'assign' => 'Assign',
+ 'open_tickets' => 'Open Tickets',
+ 'closed_tickets' => 'Closed Tickets',
+ 'deleted_tickets' => 'Deleted Tickets',
+ /*
+ |------------------------------------------------
+ |Organization Page
+ |------------------------------------------------
+ */
+ 'organizations' => 'Organizations',
+ 'organization' => 'Organization',
+ 'create_organization' => 'Create Organization',
+ 'account_manager' => 'Account Manager',
+ 'update' => 'Update',
+ 'please_select_an_organization' => 'Please select an Organization',
+ 'please_select_an_user' => 'Please select an user',
+ 'organization_profile' => 'Organization Profile',
+ 'organization-s_head' => "Organization's Head",
+ 'select_department_manager' => 'Select Department Manager',
+ 'users_of' => 'Users of',
+ /*
+ |----------------------------------------------
+ | Ticket page
+ |----------------------------------------------
+ */
+ 'subject' => 'Subject',
+ 'ticket_id' => 'Ticket ID',
+ 'priority' => 'Priority',
+ 'from' => 'From',
+ 'last_replier' => 'Last Replier',
+ 'assigned_to' => 'Assigned To',
+ 'last_activity' => 'Last Activity',
+ 'answered' => 'Answered',
+ 'assigned' => 'Assigned',
+ 'create_ticket' => 'Create Ticket',
+ 'tickets' => 'Tickets',
+ 'open' => 'Open',
+ 'Ticket_Information' => 'TICKET INFORMATION',
+ 'Ticket_Id' => 'TICKET ID',
+ 'User' => 'USER',
+ 'Unassigned' => 'UNASSIGNED',
+ 'generate_pdf' => 'Generate PDF',
+ 'change_status' => 'Change Status',
+ 'more' => 'More',
+ 'delete_ticket' => 'Delete Ticket',
+ 'emergency' => 'Emergency',
+ 'high' => 'High',
+ 'medium' => 'Medium',
+ 'low' => 'Low',
+ 'sla_plan' => 'SLA Plan',
+ 'created_date' => 'Created Date',
+ 'due_date' => 'Due Date',
+ 'last_response' => 'Last Response',
+ 'source' => 'Source',
+ 'last_message' => 'Last Message',
+ 'reply' => 'Reply',
+ 'response' => 'Response',
+ 'reply_content' => 'Reply Content',
+ 'attachment' => 'Attachment',
+ 'internal_note' => 'Internal Note',
+ 'this_ticket_is_under_banned_user' => 'This ticket is under banned user',
+ 'ticket_source' => 'Ticket Source',
+ 'are_you_sure_to_ban' => 'Are you sure to ban',
+ 'whome_do_you_want_to_assign_ticket' => 'Whome do you want to assign ticket',
+ 'are_you_sure_you_want_to_surrender_this_ticket' => 'Are you sure you want to surrender this Ticket',
+ 'add_collaborator' => 'Add Collaborator',
+ 'search_existing_users' => 'Search existing Users',
+ 'add_new_user' => 'Add new User',
+ 'search_existing_users_or_add_new_users' => 'Search existing users or add new users',
+ 'search_by_email' => 'Search by Email',
+ 'list_of_collaborators_of_this_ticket' => 'List of Collaborators of this Ticket',
+ 'submit' => 'Submit',
+ 'max' => 'Max',
+ 'add_cc' => 'Add CC',
+ 'recepients' => 'Recepients',
+ 'select_a_canned_response' => 'Select a Canned Response',
+ 'assign_to' => 'Assign to',
+ 'detail' => 'Detail',
+ 'user_details' => 'User Details',
+ 'ticket_option' => 'Ticket Option',
+ 'ticket_detail' => 'Ticket Detail',
+ 'Assigned_To' => 'ASSIGNED TO',
+ 'locked-ticket' => 'Alert! This ticket has been locked by another user and currently in process for response.',
+ 'access-ticket' => 'Alert! This ticket has been locked by you for next ',
+ 'minutes' => ' minutes',
+ 'in_minutes' => 'In minutes',
+ 'add_another_owner' => 'Add another owner',
+ 'user-not-found' => 'User not found. Try again or add a new user.',
+ 'change-success' => 'Success! owner has been changed for this ticket.',
+ 'user-exists' => 'User already exists. Try search existing user.',
+ 'valid-email' => 'Enter a valid email address.',
+ 'search_user' => 'Search user',
+ 'merge-ticket' => 'Merge ticket',
+ 'title' => 'Title',
+ 'merge' => 'Merge',
+ 'select_tickets' => 'Select tickets to merge',
+ 'select-pparent-ticket' => 'Select parent ticket',
+ 'merge-reason' => 'Reason for merging',
+ 'get_merge_message' => 'This ticket has been merged with ticket',
+ 'ticket_merged' => ' has been merged with this ticket.',
+ 'no-tickets-to-merge' => 'There are no more tickets by the owner of this ticket.',
+ 'merge-error' => 'Could not process your request try after some time.',
+ 'merge-success' => 'Tickets has been merged successfully.',
+ 'merge-error2' => 'Please select ticket to merge.',
+ 'select-tickets-to merge' => 'select two or more tickets to merge.',
+ 'different-users' => 'Ticktes from different users',
+ 'clean-up' => 'Clean up',
+ 'hard-delete-success-message' => 'Tickets have been deleted permanently.',
+ 'overdue' => 'Overdue',
+ 'change_owner_for_ticket' => 'Change Owner for Ticket',
+
+ /*
+ |------------------------------------------------
+ |Tools Page
+ |------------------------------------------------
+ */
+ 'canned_response' => 'Canned Response',
+ 'create_canned_response' => 'Create Canned Response',
+ 'surrender' => 'Surrender',
+ 'view' => 'View',
+ /*
+ |-----------------------------------------------
+ | Main text
+ |-----------------------------------------------
+ */
+ 'copyright' => 'Copyright',
+ 'all_rights_reserved' => 'All rights Reserved',
+ 'powered_by' => 'Powered by',
+ /*
+ |------------------------------------------------
+ |Guest-User Page
+ |------------------------------------------------
+ */
+ 'issue_summary' => 'Issue Summary',
+ 'issue_details' => 'Issue Details',
+ 'contact_informations' => 'Contact Informations',
+ 'contact_details' => 'Contact Details',
+ 'role' => 'Role',
+ 'ext' => 'EXT',
+ 'profile_pic' => 'Profile Picture',
+ 'agent_sign' => 'Agent Signature',
+ 'inactive' => 'Inactive',
+ 'male' => 'Male',
+ 'female' => 'Female',
+ 'old_password' => 'Old Password',
+ 'new_password' => 'New Password',
+ 'confirm_password' => 'Confirm Password',
+ 'gender' => 'Gender',
+ 'ticket_number' => 'Ticket Number',
+ 'content' => 'Content',
+ /*
+ |------------------------------------------------
+ | Error Pages
+ |------------------------------------------------
+ */
+ 'not_found' => 'Not Found',
+ 'oops_page_not_found' => 'Oops! Page not found',
+ 'we_could_not_find_the_page_you_were_looking_for' => 'We could not find the page you were looking for',
+ 'internal_server_error' => 'Internal server Error',
+ 'be_right_back' => 'Be right back',
+ 'sorry' => 'Sorry',
+ 'we_are_working_on_it' => 'We are working on it',
+ 'category' => 'Category',
+ 'addcategory' => 'Add Category',
+ 'allcategory' => 'All Category',
+ 'article' => 'Article',
+ 'articles' => 'Articles',
+ 'addarticle' => 'Add Article',
+ 'allarticle' => 'All Article',
+ 'pages' => 'Pages',
+ 'addpages' => 'Add Pages',
+ 'allpages' => 'All Pages',
+ 'widgets' => 'Widgets',
+ 'footer1' => 'Footer 1',
+ 'footer2' => 'Footer 2',
+ 'footer3' => 'Footer 3',
+ 'footer4' => 'Footer 4',
+ 'sidewidget1' => 'Side Widget 1',
+ 'sidewidget2' => 'Side Widget 2',
+ 'comments' => 'Comments',
+ 'settings' => 'Settings',
+ 'parent' => 'Parent',
+ 'description' => 'Description',
+ 'enter_the_description' => 'Enter the Description',
+ 'publish' => 'Publish',
+ 'published' => 'Published',
+ 'draft' => 'Draft',
+ 'create_a_category' => 'Create a Category',
+ 'add' => 'Add',
+ 'social' => 'Social',
+ 'comment' => 'Comment',
+ 'not_published' => 'Not Published',
+ 'numberofelementstodisplay' => 'Number of elements to display',
+ //======================================
+ 'language' => 'Language',
+ 'save' => 'Save',
+ 'create' => 'Create',
+ 'dateformat' => 'Date Format',
+ 'slug' => 'Slug',
+ 'read_more' => 'Read more',
+ 'view_all' => 'View All',
+ 'categories' => 'Categories',
+ 'need_more_support' => 'Need more support',
+ 'if_you_did_not_find_an_answer_please_raise_a_ticket_describing_the_issue' => 'If you did not find an answer, please raise a ticket describing the issue',
+ 'have_a_question?_type_your_search_term_here' => 'Have a question? Type your search term here...',
+ 'search' => 'Search',
+ 'frequently_asked_questions' => 'Frequently Asked Questions',
+ 'leave_a_reply' => 'Leave a Reply',
+ 'post_message' => 'Post Message',
+ /*
+ |--------------------------------------------------------------------------------------
+ | Client Panel [English(en)]
+ |--------------------------------------------------------------------------------------
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'home' => 'Home',
+ 'submit_a_ticket' => 'Submit A Ticket',
+ 'my_profile' => 'My Profile',
+ 'log_out' => 'Logout',
+ 'forgot_password' => 'Forgot Password',
+ 'create_account' => 'Create Account',
+ 'you_are_here' => 'You are here',
+ 'have_a_ticket' => 'Have a Ticket',
+ 'check_ticket_status' => 'Check Ticket status',
+ 'choose_a_help_topic' => 'Choose a Help Topic',
+ 'ticket_status' => 'Ticket Status',
+ 'post_comment' => 'Post Comment',
+ 'plugin' => 'Plugin',
+];
diff --git a/resources/lang/it/lang.php b/resources/lang/it/lang.php
new file mode 100644
index 000000000..4a7e47fe1
--- /dev/null
+++ b/resources/lang/it/lang.php
@@ -0,0 +1,880 @@
+
+ 'Successo',
+ 'fails' => 'Fallito',
+ 'alert' => 'Allerta',
+ 'required-error' => 'Per favore inserire i campi richiesti',
+ 'invalid' => 'Id Utente o Password sbagliate',
+ /*
+ |--------------------------------------
+ | Login Page
+ |--------------------------------------
+ */
+ 'Login_to_start_your_session' => 'Login per incominciare la tua sessione',
+ 'login' => 'Login',
+ 'remember' => 'Ricordami',
+ 'signmein' => 'Segnami',
+ 'iforgot' => 'Ho dimenticato la Password',
+ 'email_address' => 'Indirizzo E-Mail',
+ 'password' => 'Password',
+ 'woops' => 'Whoops!',
+ 'theirisproblem' => 'Ci sono problemi con ciò che hai inserito.',
+ 'login' => 'Login',
+ 'e-mail' => 'E-mail',
+ 'reg_new_member' => 'Registra una nuova associazione',
+ /*
+ |--------------------------------------
+ | Register Page
+ |--------------------------------------
+ */
+ 'registration' => 'Registrazione',
+ 'full_name' => 'Nome completo',
+ 'firstname' => 'Nome',
+ 'lastname' => 'Cognome',
+ 'profilepicture' => 'Foto del Profilo',
+ 'oldpassword' => 'Vecchia Password',
+ 'newpassword' => 'Nuova Password',
+ 'retype_password' => 'Reinserisci Password',
+ 'i_agree_to_the' => 'Concordo con',
+ 'terms' => 'termini',
+ 'register' => 'Registra',
+ 'i_already_have_a_membership' => 'Sono già associato',
+ /*
+ |--------------------------------------
+ | Reset Password Page
+ |--------------------------------------
+ */
+ 'reset_password' => 'Resetta la Password',
+ /*
+ |--------------------------------------
+ | Forgot Password Page
+ |--------------------------------------
+ */
+ 'i_know_my_password' => 'Conosco la mia password',
+ 'recover_passord' => 'Recupera Password',
+ 'send_password_reset_link' => 'Invia Link per il Reset della password',
+ 'enter_email_to_reset_password' => 'Inserisci E-mail per il reset della password',
+ 'link' => 'Link',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Emails Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Emails related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'admin_panel' => 'Panello Amministrativo',
+ /*
+ |--------------------------------------
+ | Emails Create Page
+ |--------------------------------------
+ */
+ 'emails' => 'Emails',
+ 'incoming_emails' => 'Emails In Arrivo',
+ 'reuired_authentication' => 'Autenticazione Richiesta',
+ 'fetching_email_via_imap' => 'Caricamento Email via IMAP',
+ 'create_email' => 'Crea Email',
+ 'email_address' => 'Indirizzo Email',
+ 'email_name' => 'Nome Email',
+ 'help_topic' => 'Argomento della Guida',
+ 'auto_response' => 'Auto Risposta',
+ 'host_name' => 'Nome Host',
+ 'port_number' => 'Numero Porta',
+ 'mail_box_protocol' => 'Protocollo di Casella Mail',
+ 'authentication_required' => 'Autenticazione Richiesta',
+ 'yes' => 'Si',
+ 'no' => 'No',
+ 'header_spoofing' => 'Header Spoofing',
+ 'allow_for_this_email' => 'Permetti per questa Email',
+ 'imap_config' => 'Configurazione IMAP',
+ 'email_information_and_settings' => 'Informazioni e settaggi Email',
+ 'incoming_email_information' => 'Informazioni Email in entrata',
+ 'outgoing_email_information' => 'Informazioni Email in uscita',
+ 'new_ticket_settings' => 'Settaggi Nuovo Ticket',
+ 'protocol' => 'Protocollo',
+ 'fetching_protocol' => 'Caricando Protocol',
+ 'transfer_protocol' => 'Trasferendo Protocol',
+ 'from_name' => 'Da Nome',
+ 'add_an_email' => 'Aggiungi una Email',
+ 'edit_an_email' => 'Modifica una Email',
+ 'disable_for_this_email_address' => 'Disabilita per questo indirizzo Email ',
+ /*
+ |--------------------------------------
+ | Ban Emails Create Page
+ |--------------------------------------
+ */
+ 'ban_lists' => 'Lista Ban',
+ 'ban_email' => 'Email Ban',
+ 'banlists' => 'Liste Ban',
+ 'ban_status' => 'Status Ban',
+ /*
+ |--------------------------------------
+ | Templates Index Page
+ |--------------------------------------
+ */
+ 'templates' => 'Templates',
+ 'template_set' => 'Template Sets',
+ 'create_template' => 'Crea Template',
+ 'edit_template' => 'Modifica Template',
+ 'in_use' => 'In Uso',
+ //Template Description
+ 'Create ticket agent' => 'Email di notifica che è inviata a Agente e Admin quando il ticket è creato',
+ 'Assign ticket' => 'Ticket assegnato ad un agente',
+ 'Create ticket' => 'Mail inviata al cliente per conferma creazione ticket',
+ 'Check ticket' => 'Se un cliente vuole controllare attraverso il portale clienti un link verrà inviato al cliente.Questo link è per il cliente per vedere i dettagli del ticket co il suo numero senza loggarsi nel sistema',
+ 'Ticket reply agent' => 'Una notifica è inviata ad un agente una volta che il cliente risponde al ticket',
+ 'Registration notification' => 'Password e nome utente sono inviati in email alla prima registrazione',
+ 'Reset password' => 'Email con il link per il reset della Password',
+ 'Error report' => 'Report Errori',
+ 'Ticket creation' => 'Prima notifica inviata dal sistema sulla creazione del ticket al cliente',
+ 'Ticket reply' => 'Una risposta fatta da un agente sul ticket,una notifica è inviata al cliente e ai collaboratori',
+ 'Close ticket' => 'Mail inviata al cliente per la chiusura di un ticket',
+ 'Create ticket by agent' => 'Un agente crea un ticket per il cliente a nome del cliente',
+ /*
+ |--------------------------------------
+ | Templates Create Page
+ |--------------------------------------
+ */
+ 'template_set_to_clone' => 'Template set da clonare',
+ 'language' => 'Lingua',
+ /*
+ |--------------------------------------
+ | Diagnostics Page
+ |--------------------------------------
+ */
+ 'diagnostics' => 'Diagnostici',
+ 'from' => 'Da',
+ 'to' => 'A',
+ 'subject' => 'Soggetto',
+ 'message' => 'Messaggio',
+ 'send' => 'Invia',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Settings Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Setting related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+
+ /*
+ |--------------------------------------
+ | Company Settings Page
+ |--------------------------------------
+ */
+ 'company' => 'Compagnia',
+ 'website' => 'Sito Web',
+ 'phone' => 'Telefono',
+ 'address' => 'Indirizzo',
+ 'landing' => 'Landing Page',
+ 'offline' => 'Offline Page',
+ 'thank' => 'Thank Page',
+ 'logo' => 'Logo',
+ 'save' => 'Salva',
+ /*
+ |--------------------------------------
+ | System Settings Page
+ |--------------------------------------
+ */
+ 'system' => 'Sistema',
+ 'online' => 'Online',
+ 'offline' => 'Offline',
+ 'name/title' => 'Nome/Titolo',
+ 'pagesize' => 'Grandezza Pagina',
+ 'url' => 'URL',
+ 'default_department' => 'Dipartimento di Default',
+ 'loglevel' => 'Livello Log',
+ 'purglog' => 'Ripulisci Logs',
+ 'nameformat' => 'Formattazione nome',
+ 'timeformat' => 'Formato Ora',
+ 'date' => 'Data',
+ 'dateformat' => 'Formato Data',
+ 'date_time' => 'Formato Data e Ora',
+ 'day_date_time' => 'Formato Giorno,Data e Ora',
+ 'timezone' => 'Fuso orario di default',
+ 'api' => 'Api',
+ 'api_key' => 'Chiave Api',
+ 'api_key_mandatory' => 'Chiave Api obbligatoria',
+ 'api_configurations' => 'Configurazioni Api',
+ 'generate_key' => 'Genera chiave',
+ /*
+ |--------------------------------------
+ | Email Settings Page
+ |--------------------------------------
+ */
+ 'email' => 'Email',
+ 'default_template' => 'Template Set di Default:',
+ 'default_system_email' => 'Sistema Email di Default:',
+ 'default_alert_email' => 'Allerta Email di Default:',
+ 'admin_email' => 'indirizzo Email Amministratori:',
+ 'email_fetch' => 'Caricamento Email:',
+ 'enable' => 'Attiva',
+ 'default_MTA' => 'MTA di Default',
+ 'fetch_auto-corn' => 'Carica con auto-cron',
+ 'strip_quoted_reply' => 'Rimuovi Citazioni nella Risposta',
+ 'reply_separator' => 'Tag Separatore nella Risposta',
+ 'accept_all_email' => 'Accetta Tutte le Emails',
+ 'accept_email_unknown' => 'Accetta email da utenti sconosciuti',
+ 'accept_email_collab' => 'Accetta Email Da Collaboratori',
+ 'automatically_and_collab_from_email' => 'Aggiungi automaticamente collaboratori dai campi email',
+ 'default_alert_email' => 'Allerta Email di Default',
+ 'attachments' => 'Allegati',
+ 'email_attahment_user' => 'Email attachments to the user',
+ 'cron_notification' => 'Attiva Notifica cron',
+ /*
+ |--------------------------------------
+ | Ticket Settings Page
+ |--------------------------------------
+ */
+ 'ticket' => 'Ticket',
+ 'default_ticket_number_format' => 'Default Ticket Number Format',
+ 'default_ticket_number_sequence' => 'Default Ticket Number Sequence',
+ 'default_status' => 'Default Status',
+ 'default_priority' => 'Default Priority',
+ 'default_sla' => 'Default SLA',
+ 'default_help_topic' => 'Default Help Topic',
+ 'maximum_open_tickets' => 'Maximum Open Tickets',
+ 'agent_collision_avoidance_duration' => 'Agent Collision Avoidance Duration',
+ 'human_verification' => 'Human Verification',
+ 'claim_on_response' => 'Claim on Response',
+ 'assigned_tickets' => 'Assigned Tickets',
+ 'answered_tickets' => 'Answered Tickets',
+ 'agent_identity_masking' => 'Agent Identity Masking',
+ 'enable_HTML_ticket_thread' => 'Enable HTML Ticket Thread',
+ 'allow_client_updates' => 'Allow Client Updates',
+ /*
+ |--------------------------------------
+ | Access Settings Page
+ |--------------------------------------
+ */
+ 'access' => 'Accesso',
+ 'expiration_policy' => 'Policy Scadenza Password',
+ 'allow_password_resets' => 'Permetti Password Reset',
+ 'reset_token_expiration' => 'Resetta Scadenza Token',
+ 'agent_session_timeout' => 'Timeout Sessione Agente',
+ 'bind_agent_session_IP' => 'Lega Sessione Agente a IP',
+ 'registration_required' => 'Registrazione Richiesta',
+ 'require_registration_and_login_to_create_tickets' => 'Richiede registrazione e login per creare tickets',
+ 'registration_method' => 'metodo di Registrazione',
+ 'user_session_timeout' => 'Timeout Sessione Utente',
+ 'client_quick_access' => 'Accesso Rapido per Cliente',
+ /*
+ |--------------------------------------
+ | Auto-Response Settings Page
+ |--------------------------------------
+ */
+ 'auto_responce' => 'Auto Risposta',
+ 'new_ticket' => 'Nuovo Ticket',
+ 'new_ticket_by_agent' => 'Nuovo Ticket per Agente',
+ 'new_message' => 'Nuovo Messaggio',
+ 'submitter' => 'Inviato da : ',
+ 'send_receipt_confirmation' => 'Invia ricevuta Conferma',
+ 'participants' => 'Partecipanti : ',
+ 'send_new_activity_notice' => 'Invia nuova notifica attività',
+ 'overlimit_notice' => 'Overlimit Notice',
+ 'email_attachments_to_the_user' => 'Invia in email allegati ad utente',
+ /*
+ |--------------------------------------
+ | Alert & Notice Settings Page
+ |--------------------------------------
+ */
+ 'disable' => 'Disabilita',
+ 'admin_email_2' => 'Email Amministratore',
+ 'alert_notices' => 'Allerte & Notifiche',
+ 'new_ticket_alert' => 'Allerta Nuovo Ticket',
+ 'department_manager' => 'Manager Dipartimento',
+ 'department_members' => 'Componenti del Dipartimento',
+ 'organization_account_manager' => 'Account Manager Organizzazione',
+ 'new_message_alert' => 'Allerta Nuovo Messaggio',
+ 'last_respondent' => 'Ultimo a Rispondere',
+ 'assigned_agent_team' => 'Agente / Team Assegnato',
+ 'new_internal_note_alert' => 'Allerta Nuova Nota Interna',
+ 'ticket_assignment_alert' => 'Allerta Assegnamento Ticket',
+ 'team_lead' => 'Leader del Team',
+ 'team_members' => 'Componenti del Team',
+ 'ticket_transfer_alert' => 'Allerta Trasferimento Ticket',
+ 'overdue_ticket_alert' => 'Overdue Ticket Alert ',
+ 'system_alerts' => 'Allerta di Sistema',
+ 'system_errors' => 'Errori di Sistema',
+ 'SQL_errors' => 'Errori SQL',
+ 'excessive_failed_login_attempts' => 'Tentativi di login falliti eccessivi',
+ 'system_error_reports' => 'Rapporti di errori Sistema',
+ 'Send_app_crash_reports_to_help_Ladybird_improve_Faveo' => 'Invia segnalazioni di crash per aiutare Ladybird per migliorare Faveo',
+ /*
+ |------------------------------------------------
+ |Language page
+ |------------------------------------------------
+ */
+ 'iso-code' => 'ISO-CODE',
+ 'download' => 'Scarica',
+ 'upload_file' => 'Carica un File',
+ 'enter_iso-code' => 'Inserisci ISO-CODE',
+ 'eg.' => 'Esempio',
+ 'for' => 'per',
+ 'english' => 'English',
+ 'language-name' => 'Nome lingua',
+ 'file' => 'File',
+ 'read-more' => 'Leggi di più.',
+ 'enable_lang' => 'Attivalo.',
+ 'add-lang-package' => 'Aggiungi nuovo pacchetto lingua',
+ 'package_exist' => 'Pacchetto già esistente.',
+ 'iso-code-error' => 'Errore nel codice iso. inserire codice corretto.',
+ 'zipp-error' => 'Errore nel file zip. Lo zip deve contenere solo file lingua php.',
+ 'upload-success' => 'Caricato con successo.',
+ 'file-error' => 'Errore nel file file non valido.',
+ 'delete-success' => 'Pacchetto Lingua cancellato con successo.',
+ 'lang-doesnot-exist' => 'Pacchetto Lingua non esistente.',
+ 'active-lang-error' => 'Pacchetto Lingua non cancellabile quando attivo.',
+ 'language-error' => 'Pacchetto Lingua non trovabile nella cartella lingua.',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Manage Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Manage related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'manage' => 'gestione',
+ /*
+ |--------------------------------------
+ | Help Topic index Page
+ |--------------------------------------
+ */
+ 'help_topics' => 'Help Topics',
+ 'topic' => 'Argomento',
+ 'type' => 'Tipo',
+ 'priority' => 'Priorità',
+ 'last_updated' => 'Ultimo aggiornamento',
+ 'create_help_topic' => 'Crea Argomento Guida',
+ 'action' => 'Azione',
+ /*
+ |--------------------------------------
+ | Help Topic Create Page
+ |--------------------------------------
+ */
+ 'active' => 'Attivo',
+ 'disabled' => 'Disabilitato',
+ 'public' => 'Pubblico',
+ 'private' => 'Privato',
+ 'parent_topic' => 'Argomento principale',
+ 'Custom_form' => 'Form Personalizzato',
+ 'SLA_plan' => 'SLA Plan',
+ 'auto_assign' => 'Auto assegna',
+ 'auto_respons' => 'Auto Risposta',
+ 'ticket_number_format' => 'Formato numero Ticket',
+ 'system_default' => 'Default di Sistema',
+ 'custom' => 'Personalizzato',
+ 'internal_notes' => 'Note Interne',
+ /*
+ |--------------------------------------
+ | SLA plan Index Page
+ |--------------------------------------
+ */
+ 'sla_plans' => 'SLA Plans',
+ 'create_SLA' => 'Create a SLA',
+ 'grace_period' => 'Grace Period',
+ 'added_date' => 'Data Aggiunta',
+ /*
+ |--------------------------------------
+ | SLA plan Create Page
+ |--------------------------------------
+ */
+ 'transient' => 'Transient',
+ 'ticket_overdue_alert' => 'Ticket Overdue Alerts',
+ /*
+ |--------------------------------------
+ | Form Create Page
+ |--------------------------------------
+ */
+ 'title' => 'Titolo',
+ 'instruction' => 'Istruzione',
+ 'label' => 'Etichetta',
+ 'visibility' => 'Visibilità',
+ 'variable' => 'Variabile',
+ 'create_form' => 'Crea Form',
+ 'forms' => 'Forms',
+ 'form_name' => 'Nome del Form',
+ 'view_this_form' => 'Vedi questo Form',
+ 'delete_from' => 'Cancella Form',
+ 'are_you_sure_you_want_to_delete' => 'Sicuro di voler Cancellare',
+ 'close' => 'Chiudi',
+ 'instructions' => 'Istruzioni',
+ 'instructions_on_creating_form' => "Seleziona il tipo di campo che vuoi aggiungere al form sottostante e clicca sul menu a cascata 'Tipo'. Non dimenticare di settare le opzioni del campo se il tipo è selezionato,checkbox radio...Separate ogni opzione con una virgola . Dopo aver finito di creare il form, potete salvare il form cliccando il pulsante Salva Form",
+ 'form_properties' => 'Proprietà Form',
+ 'adding_fields' => 'Aggiungendo Campi',
+ 'click_add_fields_button_to_add_fields' => "Clicca il pulsante 'Aggiungi Campi' per aggiungere campi",
+ 'add_fields' => 'Aggiungi Campi',
+ 'save_form' => 'Salva Form',
+ 'label' => 'Etichetta',
+ 'name' => 'Nome',
+ 'type' => 'Tipo',
+ 'values(selected_fields)' => 'Valori(Campi Selezionati)',
+ 'required' => 'Richiesto',
+ 'Action' => 'Azione',
+ 'remove' => 'Rimuovi',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Theme Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Theme related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'themes' => 'Temi',
+ /*
+ |--------------------------------------
+ | Footer Pages
+ |--------------------------------------
+ */
+ 'footer' => 'Footer',
+ 'footer1' => 'Footer1',
+ 'footer2' => 'Footer2',
+ 'footer3' => 'Footer3',
+ 'footer4' => 'Footer4',
+ /*
+ |--------------------------------------
+ | Custom alert box
+ |--------------------------------------
+ */
+ 'ok' => 'Ok',
+ 'cancel' => 'Cancella',
+ 'select-ticket' => 'Per favore seleziona tickets.',
+ 'confirm' => 'Sei sicuro?',
+ 'delete-tickets' => 'Cancella Tickets',
+ 'close-tickets' => 'Chiudi Tickets',
+ 'open-tickets' => 'Apri Tickets',
+
+ /*
+ |----------------------------------------------------------------------------------------
+ | Staff Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Staff related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'are_you_sure' => 'Are you sure',
+ 'staffs' => 'Staffs',
+ 'name' => 'Nome',
+ 'user_name' => 'Nome Utente',
+ 'status' => 'Status',
+ 'group' => 'Gruppo',
+ 'department' => 'Dipartimento',
+ 'created' => 'Creato',
+ 'lastlogin' => 'Ultimo Login',
+ 'createagent' => 'Crea Un Agente',
+ 'delete' => 'Cancella',
+ 'agents' => 'Agenti',
+ 'create' => 'Crea',
+ 'edit' => 'modifica',
+ 'departments' => 'Dipartimenti',
+ 'groups' => 'Gruppi',
+ /*
+ |--------------------------------------
+ | Staff Create Page
+ |--------------------------------------
+ */
+ 'create_agent' => 'Crea Agente',
+ 'first_name' => 'Nome',
+ 'last_name' => 'Cognome',
+ 'mobile_number' => 'Numero Mobile',
+ 'agent_signature' => 'Firma Agente',
+ 'account_status_setting' => 'Status Account & Settaggi',
+ 'account_type' => 'Tipo Account',
+ 'admin' => 'Admin',
+ 'agent' => 'Agente',
+ 'account_status' => 'Status Account',
+ 'locked' => 'Bloccato',
+ 'assigned_group' => 'Gruppo Assegnato',
+ 'primary_department' => 'Dipartimento Principale',
+ 'agent_time_zone' => 'Agent Time Zone',
+ 'day_light_saving' => 'Day Light Saving',
+ 'limit_access' => 'Limita Accesso',
+ 'directory_listing' => 'Directory Listing',
+ 'vocation_mode' => 'Vocation Mode',
+ 'assigned_team' => 'Team Assegnato',
+ /*
+ |--------------------------------------
+ | Department Create Page
+ |--------------------------------------
+ */
+ 'create_department' => 'Crea Dipartimento',
+ 'manager' => 'Manager',
+ 'ticket_assignment' => 'Assegnamento Ticket ',
+ 'restrict_ticket_assignment_to_department_members' => 'Restrict ticket assignment to department members',
+ 'outgoing_emails' => 'Emails in uscita',
+ 'outgoing_email' => 'Email in uscita',
+ 'template_set' => 'Template Set',
+ 'auto_responding_settings' => 'Settaggi Auto-Risposta',
+ 'disable_for_this_department' => 'Disattiva per questo dipartimento',
+ 'auto_response_email' => 'Email Auto-Risposta',
+ 'recipient' => 'Recipient',
+ 'group_access' => 'Accesso Gruppo',
+ 'department_signature' => 'Firma Dipartimento',
+ /*
+ |--------------------------------------
+ | Team Create Page
+ |--------------------------------------
+ */
+ 'create_team' => 'Crea Team',
+ 'team_lead' => 'Team Lead',
+ 'assignment_alert' => 'Allerta Assegnamento',
+ 'disable_for_this_team' => 'Disattiva per questo team',
+ 'teams' => 'Teams',
+ /*
+ |--------------------------------------
+ | Group Create Page
+ |--------------------------------------
+ */
+ 'create_group' => 'Crea Gruppo',
+ 'goups' => 'Gruppi',
+ 'can_create_ticket' => 'Può creare ticket',
+ 'can_edit_ticket' => 'Può editare ticket',
+ 'can_post_ticket' => 'Può postare Ticket',
+ 'can_close_ticket' => 'Può chiudere un ticket ',
+ 'can_assign_ticket' => 'Può assegnare ticket',
+ 'can_transfer_ticket' => 'Può trasferire ticket',
+ 'can_delete_ticket' => 'Può cancellare ticket',
+ 'can_ban_emails' => 'Può bannare le email',
+ 'can_manage_premade' => 'Può Manage premade',
+ 'can_manage_FAQ' => 'Può gestire le FAQ',
+ 'can_view_agent_stats' => 'Può visualizzare le stats per agente',
+ 'department_access' => 'Accesso Dipartimenti ',
+ 'admin_notes' => 'Note Admin',
+ 'group_members' => 'Componenti del Gruppo',
+ 'group_name' => 'Nome Gruppo',
+ /*
+ |--------------------------------------
+ | SMTP Page
+ |--------------------------------------
+ */
+ 'driver' => 'Driver',
+ 'smtp' => 'SMTP',
+ 'host' => 'Host',
+ 'port' => 'Porta',
+ 'encryption' => 'Criptazione',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Agent Panel [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'agent_panel' => 'Pannello Agente',
+ 'profile' => 'Profilo',
+ 'change_password' => 'Cambia Password',
+ 'sign_out' => 'Esci',
+ 'Tickets' => 'TICKETS',
+ 'inbox' => 'Inbox',
+ 'my_tickets' => 'Miei Tickets',
+ 'unassigned' => 'Non Assegnati',
+ 'trash' => 'Cestino',
+ 'Updates' => 'AGGIORNAMENTI',
+ 'no_new_updates' => 'Nessun nuovo aggiornamento',
+ 'check_for_updates' => 'Controlla aggiornamenti',
+ 'open' => 'Apri',
+ 'inprogress' => 'In elaborazione',
+ 'closed' => 'chiuso',
+ 'Departments' => 'DIPARTIMENTI',
+ 'tools' => 'Strumenti',
+ 'canned' => 'Canned',
+ 'knowledge_base' => 'Knowledge Base',
+ 'loading' => 'Caricando',
+ 'ratings' => 'Ratings',
+ 'please_rate' => 'Per favore rate:',
+ 'ticket_ratings' => 'TICKET RATING',
+ /*
+ |-----------------------------------------------
+ | Profile
+ |-----------------------------------------------
+ */
+ 'user_information' => 'informazioni utente',
+ 'time_zone' => 'Time-zone',
+ 'phone_number' => 'Numero di Telefono',
+ 'contact_information' => 'infomazioni Contatto',
+ /*
+ |-----------------------------------------------
+ | Dashboard
+ |-----------------------------------------------
+ */
+ 'dashboard' => 'Cruscotto',
+ 'line_chart' => 'Tabella lineare',
+ 'statistics' => 'Statistiche',
+ 'opened' => 'Aperto',
+ 'resolved' => 'Risolto',
+ 'closed' => 'Chiuso',
+ 'deleted' => 'Cancellato',
+ /*
+ |------------------------------------------------
+ |User Page
+ |------------------------------------------------
+ */
+ 'user_directory' => 'User Directory',
+ 'ban' => 'Banna',
+ 'user' => 'Utente',
+ 'users' => 'Utenti',
+ 'create_user' => 'Crea Utente',
+ 'full_name' => 'Nome Completo',
+ 'mobile' => 'Mobile',
+ 'last_login' => 'Ultimo Login',
+ 'user_profile' => 'Profilo Utente',
+ 'assign' => 'Assegna',
+ 'open_tickets' => 'Tickets',
+ 'closed_tickets' => 'Ticket Chiusi',
+ 'deleted_tickets' => 'Cancella Tickets',
+ /*
+ |------------------------------------------------
+ |Organization Page
+ |------------------------------------------------
+ */
+ 'organizations' => 'Organizzazioni',
+ 'organization' => 'Organizzazione',
+ 'create_organization' => 'Crea Organizzazione',
+ 'account_manager' => 'Account Manager',
+ 'update' => 'Aggiorna',
+ 'please_select_an_organization' => 'Per favore seleziona una Organizzazione',
+ 'please_select_an_user' => 'Per favore seleziona un utente',
+ 'organization_profile' => 'Profilo Organizzazione',
+ 'organization-s_head' => "Organization's Head",
+ 'select_department_manager' => 'Seleziona Managere Dipartimento',
+ 'users_of' => 'Utenti di',
+ /*
+ |----------------------------------------------
+ | Ticket page
+ |----------------------------------------------
+ */
+ 'subject' => 'Soggetto',
+ 'ticket_id' => 'Ticket ID',
+ 'priority' => 'Priorità',
+ 'from' => 'Da',
+ 'last_replier' => 'Ultimo a Rispondere',
+ 'assigned_to' => 'Assegnato A',
+ 'last_activity' => 'Ultima Attività',
+ 'answered' => 'Risposto',
+ 'assigned' => 'Assegnato',
+ 'create_ticket' => 'Crea Ticket',
+ 'tickets' => 'Tickets',
+ 'open' => 'Apri',
+ 'Ticket_Information' => 'INFORMAZIONE TICKET',
+ 'Ticket_Id' => 'ID TICKET',
+ 'User' => 'UTENTE',
+ 'Unassigned' => 'NON ASSEGNATO',
+ 'generate_pdf' => 'Genera PDF',
+ 'change_status' => 'Cambia Status',
+ 'more' => 'Più',
+ 'delete_ticket' => 'Cancella Ticket',
+ 'emergency' => 'Emergenza',
+ 'high' => 'Alta',
+ 'medium' => 'Media',
+ 'low' => 'Bassa',
+ 'sla_plan' => 'SLA Plan',
+ 'created_date' => 'Data Creata',
+ 'due_date' => 'Data di Scadenza',
+ 'last_response' => 'Ultima Risposta',
+ 'source' => 'Sorgente',
+ 'last_message' => 'Ultimo Messaggio',
+ 'reply' => 'Risposta',
+ 'response' => 'Resposta',
+ 'reply_content' => 'Contenuto Riposta',
+ 'attachment' => 'Allegato',
+ 'internal_note' => 'Nota Interna',
+ 'this_ticket_is_under_banned_user' => 'Questo ticket è di un utente bannato',
+ 'ticket_source' => 'Sorgente Ticket',
+ 'are_you_sure_to_ban' => 'Sicuro di voler bannare',
+ 'whome_do_you_want_to_assign_ticket' => 'A chi vuoi assegnare il ticket',
+ 'are_you_sure_you_want_to_surrender_this_ticket' => 'Are you sure you want to surrender this Ticket',
+ 'add_collaborator' => 'Aggiungi Collaboratore',
+ 'search_existing_users' => 'Cerca utenti esistenti',
+ 'add_new_user' => 'Aggiungi nuovo Utente',
+ 'search_existing_users_or_add_new_users' => 'Cerca utenti esistenti o aggiungi nuovi utenti',
+ 'search_by_email' => 'Cerca per Email',
+ 'list_of_collaborators_of_this_ticket' => 'Lista dei Collaboratori di questo Ticket',
+ 'submit' => 'Invia',
+ 'max' => 'Max',
+ 'add_cc' => 'Aggiungi CC',
+ 'recepients' => 'Riceventi',
+ 'select_a_canned_response' => 'Seleziona una Canned Response',
+ 'assign_to' => 'Assegna A',
+ 'detail' => 'Dettaglio',
+ 'user_details' => 'Dettagli Utente',
+ 'ticket_option' => 'Opzioni Ticket',
+ 'ticket_detail' => 'Dettagli Ticket',
+ 'Assigned_To' => 'ASSEGNATO A',
+ 'locked-ticket' => 'Allerta! Questo ticket è etato bloccato da un altro utente ed è al momento in risposta.',
+ 'access-ticket' => 'Allerta! Questo ticket è etato bloccato da te per ',
+ 'minutes' => ' minuti',
+ 'in_minutes' => 'In minuti',
+ 'add_another_owner' => 'Aggiungi un altro possessore',
+ 'user-not-found' => 'Utente non trovato.Prova ancora o aggiungi un nuovo utente.',
+ 'change-success' => 'Successo! Il possessore di questo ticket è stato cambiato.',
+ 'user-exists' => 'Utente già esistente. Prova a cercare questo stesso utente.',
+ 'valid-email' => 'Inserisci un indirizzo email valido.',
+ 'search_user' => 'Cerca utente',
+ 'merge-ticket' => 'Unisci ticket',
+ 'title' => 'Titolo',
+ 'merge' => 'Unisci',
+ 'select_tickets' => 'Seleziona ticket da unire',
+ 'select-pparent-ticket' => 'Seleziona un ticket padre',
+ 'merge-reason' => 'Motivazione unione',
+ 'get_merge_message' => 'Questo ticket è stato unito con il ticket',
+ 'ticket_merged' => ' è stato unito con il ticket.',
+ 'no-tickets-to-merge' => 'Non ci sono altri ticket di prorietà del possessore di questo ticket.',
+ 'merge-error' => 'Richiesta non processabile riprova in seguito.',
+ 'merge-success' => 'Tickets uniti con successo.',
+ 'merge-error2' => 'Per favore selzeziona un ticket da unire.',
+ 'select-tickets-to merge' => 'seleziona due o più ticket da unire',
+ 'different-users' => 'Tickte da utenti diversi',
+
+ /*
+ |------------------------------------------------
+ |Tools Page
+ |------------------------------------------------
+ */
+ 'canned_response' => 'Canned Response',
+ 'create_canned_response' => 'Create Canned Response',
+ 'surrender' => 'Surrender',
+ 'view' => 'Vista',
+ /*
+ |-----------------------------------------------
+ | Main text
+ |-----------------------------------------------
+ */
+ 'copyright' => 'Copyright',
+ 'all_rights_reserved' => 'Tutti i diritti riservati',
+ 'powered_by' => 'Sviluppato da',
+ /*
+ |------------------------------------------------
+ |Guest-User Page
+ |------------------------------------------------
+ */
+ 'issue_summary' => 'Sommario Problema',
+ 'issue_details' => 'Dettagli Problema',
+ 'contact_informations' => 'Informazioni contatto',
+ 'contact_details' => 'Dettagli Contatto',
+ 'role' => 'Ruolo',
+ 'ext' => 'EXT',
+ 'profile_pic' => 'Foto Profilo',
+ 'agent_sign' => 'Firma Agente',
+ 'inactive' => 'Inattivo',
+ 'male' => 'Uomo',
+ 'female' => 'Donna',
+ 'old_password' => 'Vecchia Password',
+ 'new_password' => 'Nuova Password',
+ 'confirm_password' => 'Conferma Password',
+ 'gender' => 'Genere',
+ 'ticket_number' => 'Numero di Ticket',
+ 'content' => 'Contenuto',
+ /*
+ |------------------------------------------------
+ | Error Pages
+ |------------------------------------------------
+ */
+ 'not_found' => 'Non trovato',
+ 'oops_page_not_found' => 'Oops! Pagina non trovata',
+ 'we_could_not_find_the_page_you_were_looking_for' => 'Impossibile trovare la pagina che stavi cercando',
+ 'internal_server_error' => 'Errore server interno',
+ 'be_right_back' => 'Torna indietro',
+ 'sorry' => 'Spiacente',
+ 'we_are_working_on_it' => 'Ci stiamo lavorando',
+ 'category' => 'Categoria',
+ 'addcategory' => 'Aggiungi Categoria',
+ 'allcategory' => 'Tutte le Categorie',
+ 'article' => 'Articolo',
+ 'articles' => 'Articoli',
+ 'addarticle' => 'Aggiungi Articolo',
+ 'allarticle' => 'Tutti gli Articoli',
+ 'pages' => 'Pagine',
+ 'addpages' => 'Aggiungi Pagine',
+ 'allpages' => 'Tutte le pagine',
+ 'widgets' => 'Widgets',
+ 'footer1' => 'Footer 1',
+ 'footer2' => 'Footer 2',
+ 'footer3' => 'Footer 3',
+ 'footer4' => 'Footer 4',
+ 'sidewidget1' => 'Side Widget 1',
+ 'sidewidget2' => 'Side Widget 2',
+ 'comments' => 'Commenti',
+ 'settings' => 'Settaggi',
+ 'parent' => 'Padre',
+ 'description' => 'Descrizione',
+ 'enter_the_description' => 'Inserisci la Descrizione',
+ 'publish' => 'Pubblica',
+ 'published' => 'Pubblicato',
+ 'draft' => 'Bozza',
+ 'create_a_category' => 'Crea una Categoria',
+ 'add' => 'Aggiungi',
+ 'social' => 'Social',
+ 'comment' => 'Commento',
+ 'not_published' => 'Non Pubblicato',
+ 'numberofelementstodisplay' => 'numero elementi da visualizzare',
+ //======================================
+ 'language' => 'Lingua',
+ 'save' => 'Salva',
+ 'create' => 'Crea',
+ 'dateformat' => 'Formato Data',
+ 'slug' => 'Slug',
+ 'read_more' => 'leggi di più',
+ 'view_all' => 'Vedi tutto',
+ 'categories' => 'Categorie',
+ 'need_more_support' => 'Necessita più supporto',
+ 'if_you_did_not_find_an_answer_please_raise_a_ticket_describing_the_issue' => 'Se non hai trovato una risposta, per favore apri un ticket con al descrizione del problema',
+ 'have_a_question?_type_your_search_term_here' => 'Hai una domanda? Scrivi una parola da cercare qui...',
+ 'search' => 'Cerca',
+ 'search_results' => 'Risultati Ricerca',
+ 'frequently_asked_questions' => 'Domande Frequenti',
+ 'leave_a_reply' => 'Lascia una Risposta',
+ 'post_message' => 'Post Message',
+ /*
+ |--------------------------------------------------------------------------------------
+ | Client Panel [English(en)]
+ |--------------------------------------------------------------------------------------
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'home' => 'Home',
+ 'submit_a_ticket' => 'Invia un Ticket',
+ 'my_profile' => 'Mio Profilo',
+ 'log_out' => 'Logout',
+ 'forgot_password' => 'Password Dimenticata',
+ 'create_account' => 'Crea un Account',
+ 'you_are_here' => 'Sei qui',
+ 'have_a_ticket' => 'Have a Ticket',
+ 'check_ticket_status' => 'Controlla Status Ticket',
+ 'choose_a_help_topic' => 'Choose a Help Topic',
+ 'ticket_status' => 'Status Ticket',
+ 'post_comment' => 'Posta Commento',
+ 'plugin' => 'Plugin',
+];
diff --git a/resources/lang/it/pagination.php b/resources/lang/it/pagination.php
new file mode 100644
index 000000000..668d15f77
--- /dev/null
+++ b/resources/lang/it/pagination.php
@@ -0,0 +1,18 @@
+ '« Precedente',
+ 'next' => 'Prossimo »',
+];
diff --git a/resources/lang/it/passwords.php b/resources/lang/it/passwords.php
new file mode 100644
index 000000000..a1ee67fd0
--- /dev/null
+++ b/resources/lang/it/passwords.php
@@ -0,0 +1,21 @@
+ 'Le Passwords devono essere almeno di sei caratteri e combaciare.',
+ 'user' => "Non esiste un utente con questo indirizzo e-mail.",
+ 'token' => 'Il token per il reset della password non è valido.',
+ 'sent' => 'Una email con il link al reset della passowrd ti è stato inviato!',
+ 'reset' => 'La tua password è stata resettata!',
+];
diff --git a/resources/lang/it/validation.php b/resources/lang/it/validation.php
new file mode 100644
index 000000000..2c295dc85
--- /dev/null
+++ b/resources/lang/it/validation.php
@@ -0,0 +1,102 @@
+ 'The :attribute must be accepted.',
+ 'active_url' => 'The :attribute is not a valid URL.',
+ 'after' => 'The :attribute must be a date after :date.',
+ 'alpha' => 'The :attribute may only contain letters.',
+ 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
+ 'alpha_num' => 'The :attribute may only contain letters and numbers.',
+ 'array' => 'The :attribute must be an array.',
+ 'before' => 'The :attribute must be a date before :date.',
+ 'between' => [
+ 'numeric' => 'The :attribute must be between :min and :max.',
+ 'file' => 'The :attribute must be between :min and :max kilobytes.',
+ 'string' => 'The :attribute must be between :min and :max characters.',
+ 'array' => 'The :attribute must have between :min and :max items.',
+ ],
+ 'boolean' => 'The :attribute field must be true or false.',
+ 'confirmed' => 'The :attribute confirmation does not match.',
+ 'date' => 'The :attribute is not a valid date.',
+ 'date_format' => 'The :attribute does not match the format :format.',
+ 'different' => 'The :attribute and :other must be different.',
+ 'digits' => 'The :attribute must be :digits digits.',
+ 'digits_between' => 'The :attribute must be between :min and :max digits.',
+ 'email' => 'The :attribute must be a valid email address.',
+ 'filled' => 'The :attribute field is required.',
+ 'exists' => 'The selected :attribute is invalid.',
+ 'image' => 'The :attribute must be an image.',
+ 'in' => 'The selected :attribute is invalid.',
+ 'integer' => 'The :attribute must be an integer.',
+ 'ip' => 'The :attribute must be a valid IP address.',
+ 'max' => [
+ 'numeric' => 'The :attribute may not be greater than :max.',
+ 'file' => 'The :attribute may not be greater than :max kilobytes.',
+ 'string' => 'The :attribute may not be greater than :max characters.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify custom validation messages for attributes using the
+ | convention "attribute.rule" to name the lines. This makes it quick to
+ | specify a specific custom language line for a given attribute rule.
+ |
+ */
+ 'custom' => [
+ 'attribute-name' => [
+ 'rule-name' => 'messaggio personalizzato',
+ ],
+ ],
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Attributes
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are used to swap attribute place-holders
+ | with something more reader friendly such as E-Mail Address instead
+ | of "email". This simply helps us make messages a little cleaner.
+ |
+ */
+ 'attributes' => [],
+];
diff --git a/resources/lang/ru/lang.php b/resources/lang/ru/lang.php
new file mode 100644
index 000000000..b7fe56bd3
--- /dev/null
+++ b/resources/lang/ru/lang.php
@@ -0,0 +1,827 @@
+
+ 'Success',
+ 'fails' => 'Fails',
+ 'alert' => 'Alert',
+ /*
+ |--------------------------------------
+ | Login Page
+ |--------------------------------------
+ */
+ 'Login_to_start_your_session' => 'Авторизуйтесь, чтобы начать сеанс',
+ 'login' => 'Login',
+ 'remember' => 'Запомнить меня',
+ 'signmein' => 'Запишите меня в',
+ 'iforgot' => 'Я забыл свой пароль',
+ 'email_address' => 'E-Mail Address',
+ 'password' => 'Пароль',
+ 'woops' => 'Whoops!',
+ 'theirisproblem' => 'There were some problems with your input.',
+ 'login' => 'Login',
+ 'e-mail' => 'E-mail',
+ 'reg_new_member' => 'Register a new membership',
+ /*
+ |--------------------------------------
+ | Register Page
+ |--------------------------------------
+ */
+ 'registration' => 'Регистрация',
+ 'full_name' => 'Полное имя',
+ 'firstname' => 'Имя',
+ 'lastname' => 'Фамилия',
+ 'profilepicture' => 'Аватар профиля',
+ 'oldpassword' => 'Старый пароль',
+ 'newpassword' => 'Новый пароль',
+ 'retype_password' => 'Повторите пароль',
+ 'i_agree_to_the' => 'Я согласен с',
+ 'terms' => 'условия',
+ 'register' => 'Регистрация',
+ 'i_already_have_a_membership' => 'У меня уже есть членство',
+ /*
+ |--------------------------------------
+ | Reset Password Page
+ |--------------------------------------
+ */
+ 'reset_password' => 'Reset Password',
+ /*
+ |--------------------------------------
+ | Forgot Password Page
+ |--------------------------------------
+ */
+ 'i_know_my_password' => 'I know my password',
+ 'recover_passord' => 'Recover Password',
+ 'send_password_reset_link' => 'Send pasword Reset Link',
+ 'enter_email_to_reset_password' => 'Enter E-mail to reset password',
+ 'link' => 'Link',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Emails Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Emails related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'admin_panel' => 'Админ панель',
+ /*
+ |--------------------------------------
+ | Emails Create Page
+ |--------------------------------------
+ */
+ 'emails' => 'Emails',
+ 'incoming_emails' => 'Входящие Emails',
+ 'reuired_authentication' => 'Reuired Authentication',
+ 'fetching_email_via_imap' => 'Fetching Email via IMAP',
+ 'create_email' => 'Создать Email',
+ 'email_address' => 'Email Address',
+ 'email_name' => 'Email Name',
+ 'help_topic' => 'Help Topic',
+ 'auto_response' => 'Автоматический Ответ',
+ 'host_name' => 'Host Name',
+ 'port_number' => 'Port Number',
+ 'mail_box_protocol' => 'Mail Box Protocol',
+ 'authentication_required' => 'Authentication Required',
+ 'yes' => 'Да',
+ 'no' => 'Нет',
+ 'header_spoofing' => 'Header Spoofing',
+ 'allow_for_this_email' => 'Allow For This Email',
+ 'imap_config' => 'IMAP Configuration',
+ /*
+ |--------------------------------------
+ | Ban Emails Create Page
+ |--------------------------------------
+ */
+ 'ban_lists' => 'Лист запретов',
+ 'ban_email' => 'Запрет Email',
+ 'banlists' => 'Листы запретов',
+ 'ban_status' => 'Статус запретов',
+ /*
+ |--------------------------------------
+ | Templates Index Page
+ |--------------------------------------
+ */
+ 'templates' => 'Шаблоны',
+ 'template_set' => 'Template Sets',
+ 'create_template' => 'Создать шаблон',
+ 'edit_template' => 'Редактировать шаблон',
+ 'in_use' => 'In Use',
+ //Template Description
+ 'Create ticket agent' => 'Notification email that is sent to Agent & Admin when ticket is created',
+ 'Assign ticket' => 'Ticket assigned to an agent',
+ 'Create ticket' => 'Mail sent to client for ticket creation successful message',
+ 'Check ticket' => 'if a client wants to check ticket via customer portal then a link will be sent to client. this link is for the client to view ticket details with ticket no, without logging in to system',
+ 'Ticket reply agent' => 'A notification is sent to agent email once client replies to the ticket',
+ 'Registration notification' => 'Password and username is sent on email on first registration',
+ 'Reset password' => 'Email with Password reset link',
+ 'Error report' => 'Error report',
+ 'Ticket creation' => 'First notification sent by the system about the ticket creation to the client',
+ 'Ticket reply' => 'A reply made by the agent on a ticket, email notification is sent to client and collaborators',
+ 'Close ticket' => 'Mail sent to client on closing a ticket',
+ 'Create ticket by agent' => 'An agent creates a ticket for the client in the name of client',
+ /*
+ |--------------------------------------
+ | Templates Create Page
+ |--------------------------------------
+ */
+ 'template_set_to_clone' => 'Template set to clone',
+ 'language' => 'Язык',
+ /*
+ |--------------------------------------
+ | Diagnostics Page
+ |--------------------------------------
+ */
+ 'diagnostics' => 'Диагностика',
+ 'from' => 'From',
+ 'to' => 'To',
+ 'subject' => 'Subject',
+ 'message' => 'Сообщение',
+ 'send' => 'Послать',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Settings Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Setting related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+
+ /*
+ |--------------------------------------
+ | Company Settings Page
+ |--------------------------------------
+ */
+ 'company' => 'Компания',
+ 'website' => 'Website',
+ 'phone' => 'Телефон',
+ 'address' => 'Адрес',
+ 'landing' => 'Landing страница',
+ 'offline' => 'Offline страница',
+ 'thank' => 'Благодарственная страница',
+ 'logo' => 'Логотип',
+ 'save' => 'Сохранить',
+ /*
+ |--------------------------------------
+ | System Settings Page
+ |--------------------------------------
+ */
+ 'system' => 'Система',
+ 'online' => 'Online',
+ 'offline' => 'Offline',
+ 'name/title' => 'Name/Title',
+ 'pagesize' => 'Размер страницы',
+ 'url' => 'URL',
+ 'default_department' => 'Default Department',
+ 'loglevel' => 'Log Level',
+ 'purglog' => 'Purge Logs',
+ 'nameformat' => 'Name Formatting',
+ 'timeformat' => 'Time Format',
+ 'date' => 'Дата',
+ 'dateformat' => 'Формат даты',
+ 'date_time' => 'Формат даты и времени',
+ 'day_date_time' => 'Day,Date And Time Format',
+ 'timezone' => 'Временная зона',
+ /*
+ |--------------------------------------
+ | Email Settings Page
+ |--------------------------------------
+ */
+ 'email' => 'Email',
+ 'default_template' => 'Default Template Set:',
+ 'default_system_email' => 'Система Электронной Почты по умолчанию :',
+ 'default_alert_email' => 'Default Alert Email:',
+ 'admin_email' => 'E-mail Администратора:',
+ 'email_fetch' => 'Email Fetching:',
+ 'enable' => 'Включить',
+ 'default_MTA' => 'Default MTA',
+ 'fetch_auto-corn' => 'Выборка по авто-хрон',
+ 'strip_quoted_reply' => 'Процитировал Ответ',
+ 'reply_separator' => 'Reply Separator Tag',
+ 'accept_all_email' => 'Принимаем Все Письма',
+ 'accept_email_unknown' => 'Принимать почту от неизвестных пользователей',
+ 'accept_email_collab' => 'Принимать почту соавторов',
+ 'automatically_and_collab_from_email' => 'Automatically add collaborators from email fields',
+ 'default_alert_email' => 'Default Alert Email',
+ 'attachments' => 'Вложения',
+ 'email_attahment_user' => 'Email attachments to the user',
+ 'cron_notification' => 'Включить уведомления хрон',
+ /*
+ |--------------------------------------
+ | Ticket Settings Page
+ |--------------------------------------
+ */
+ 'ticket' => 'Заявка',
+ 'default_ticket_number_format' => 'Формат номера заявки по умолчанию',
+ 'default_ticket_number_sequence' => 'Последовательность номера заявки по умолчанию',
+ 'default_status' => 'Статус по умолчанию',
+ 'default_priority' => 'Приоритет по умолчанию',
+ 'default_sla' => '(SLA) время реакции по умолчанию',
+ 'default_help_topic' => 'Справки помощи по умолчанию ',
+ 'maximum_open_tickets' => 'Максимум открытых заявок',
+ 'agent_collision_avoidance_duration' => 'Agent Collision Avoidance Duration',
+ 'human_verification' => 'Human Verification',
+ 'claim_on_response' => 'Претензия на ответ',
+ 'assigned_tickets' => 'Назначеные заявки',
+ 'answered_tickets' => 'Answered Tickets',
+ 'agent_identity_masking' => 'Agent Identity Masking',
+ 'enable_HTML_ticket_thread' => 'Включить HTML в заявках',
+ 'allow_client_updates' => 'Разрешить обновления Клиента',
+ /*
+ |--------------------------------------
+ | Access Settings Page
+ |--------------------------------------
+ */
+ 'access' => 'Access',
+ 'expiration_policy' => 'Политика истечения срока действия паролей',
+ 'allow_password_resets' => 'Разрешить сброс пароля',
+ 'reset_token_expiration' => 'Reset Token Expiration',
+ 'agent_session_timeout' => 'Таймаут сессии Агента',
+ 'bind_agent_session_IP' => 'Привязать сессию Агента к IP',
+ 'registration_required' => 'Требуется регистрация',
+ 'require_registration_and_login_to_create_tickets' => 'Требуется регистрация или войдите со своим логином для открытия заявки',
+ 'registration_method' => 'Метод регистрации',
+ 'user_session_timeout' => 'Тайм-Аут Сессии Пользователя',
+ 'client_quick_access' => 'Клиент быстрого доступа',
+ /*
+ |--------------------------------------
+ | Auto-Response Settings Page
+ |--------------------------------------
+ */
+ 'auto_responce' => 'Автоответчик',
+ 'new_ticket' => 'Новая заявка',
+ 'new_ticket_by_agent' => 'Новая заявка Агента',
+ 'new_message' => 'Новое сообщение',
+ 'submitter' => 'Submitter : ',
+ 'send_receipt_confirmation' => 'Отправьте подтверждение о получении',
+ 'participants' => 'Участники : ',
+ 'send_new_activity_notice' => 'Отправить новое уведомление об активности',
+ 'overlimit_notice' => 'Overlimit Notice',
+ 'email_attachments_to_the_user' => 'Email attachments to the user',
+ /*
+ |--------------------------------------
+ | Оповещения И Уведомления Настройки Страницы
+ |--------------------------------------
+ */
+ 'disable' => 'Отключить',
+ 'admin_email_2' => 'Почта администратора',
+ 'alert_notices' => 'Предупреждения и напоминания',
+ 'new_ticket_alert' => 'Новая заявка предупреждения',
+ 'department_manager' => 'Менеджер Отдела',
+ 'department_members' => 'Члены отделов',
+ 'organization_account_manager' => 'Organization Account Manager',
+ 'new_message_alert' => 'New Message Alert',
+ 'last_respondent' => 'Last Respondent',
+ 'assigned_agent_team' => 'Assigned Agent / Team',
+ 'new_internal_note_alert' => 'New Internal Note Alert',
+ 'ticket_assignment_alert' => 'Заявка оповещения предупреждения',
+ 'team_lead' => 'Team Lead',
+ 'team_members' => 'Члены Команды',
+ 'ticket_transfer_alert' => 'Ticket Transfer Alert',
+ 'overdue_ticket_alert' => 'Overdue Ticket Alert ',
+ 'system_alerts' => 'System Alerts',
+ 'system_errors' => 'System Errors',
+ 'SQL_errors' => 'SQL errors',
+ 'excessive_failed_login_attempts' => 'Excessive failed login attempts',
+ 'system_error_reports' => 'Отчет системных ошибок',
+ 'Send_app_crash_reports_to_help_Ladybird_improve_Faveo' => 'Отправлять отчеты о сбоях приложения, чтобы помочь разработчику улучшить Faveo',
+ /*
+ |------------------------------------------------
+ |Language page
+ |------------------------------------------------
+ */
+ 'iso-code' => 'ISO-CODE',
+ 'download' => 'Downlaod',
+ 'upload_file' => 'Загрузить файл',
+ 'enter_iso-code' => "Enter ISO-CODE",
+ 'eg.' => 'Example',
+ 'for' => 'for',
+ 'english' => 'Английский',
+ 'language-name' => 'Наименование языка',
+ 'file' => 'File',
+ 'read-more' => 'Подробнее.',
+ 'enable_lang' => 'Enable it.',
+ 'add-lang-package' => 'Add new language package',
+ 'package_exist' => "Package already exists.",
+ 'iso-code-error' => "Error in iso-code. enter correct iso-code.",
+ 'zipp-error' => 'Error in zip file. Zip must contian language php files only.',
+ 'upload-success' => "Загрузка произошла успешна.",
+ "file-error" => 'Error in file or invalid file.',
+ 'delete-success' => 'Языковой пакет успешно удален.',
+ 'lang-doesnot-exist' => 'Языковой пакет не существует.',
+ 'active-lang-error' => 'Языковой пакет не может быть удален, когда он активен.',
+ "language-error" => 'Языковой пакет не найден в указанной дериктории.',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Manage Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Manage related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'manage' => 'Управление',
+ /*
+ |--------------------------------------
+ | Help Topic index Page
+ |--------------------------------------
+ */
+ 'help_topics' => 'Справки',
+ 'topic' => 'Topic',
+ 'type' => 'Type',
+ 'priority' => 'Приоритет',
+ 'last_updated' => 'Последнее обновление',
+ 'create_help_topic' => 'Создать справочный материал',
+ 'action' => 'Действие',
+ /*
+ |--------------------------------------
+ | Help Topic Create Page
+ |--------------------------------------
+ */
+ 'active' => 'Активный',
+ 'disabled' => 'Отключенный ',
+ 'public' => 'Публичный',
+ 'private' => 'Приватный',
+ 'parent_topic' => 'Родителбь темы',
+ 'Custom_form' => 'Пользовательские Формы',
+ 'SLA_plan' => '(SLA) Время реакции',
+ 'auto_assign' => 'Автоматическое назначение',
+ 'auto_respons' => 'Автоответ',
+ 'ticket_number_format' => 'Формат номера заявки',
+ 'system_default' => 'Система По Умолчанию',
+ 'custom' => 'Custom',
+ 'internal_notes' => 'Внутренние примечания',
+ /*
+ |--------------------------------------
+ | SLA plan Index Page
+ |--------------------------------------
+ */
+ 'sla_plans' => 'SLA Plans',
+ 'create_SLA' => 'Create a SLA',
+ 'grace_period' => 'Grace Period',
+ 'added_date' => 'Added Date',
+ /*
+ |--------------------------------------
+ | SLA plan Create Page
+ |--------------------------------------
+ */
+ 'transient' => 'Transient',
+ 'ticket_overdue_alert' => 'Ticket Overdue Alerts',
+ /*
+ |--------------------------------------
+ | Form Create Page
+ |--------------------------------------
+ */
+ 'title' => 'Title',
+ 'instruction' => 'Инструкция',
+ 'label' => 'Метка',
+ 'visibility' => 'Видимость',
+ 'variable' => 'Переменная',
+ 'create_form' => 'Создать форму',
+ 'forms' => 'Формы',
+ 'form_name' => 'Наименование формы',
+ 'view_this_form' => 'Просмотреть данную форму',
+ 'delete_from' => 'Удалить форму',
+ 'are_you_sure_you_want_to_delete' => 'Вы уверены, что хотите удалить',
+ 'close' => 'Закрыть',
+ 'instructions' => 'Инструкции',
+ "instructions_on_creating_form" => "Select field type you want to add to the form below and click on 'Type' dropdown. Don't forget to set field options if type is select,checkbox or radio..Separate each option by a coma. After you finish creating the form, you can save the form by clicking Save Form button",
+ 'form_properties' => 'Свойства Формы',
+ 'adding_fields' => 'Добавление полей',
+ "click_add_fields_button_to_add_fields" => "Click 'Add Fields' button to add Fields",
+ 'add_fields' => 'Добавить поле',
+ 'save_form' => 'Сохранить Форму',
+ 'label' => 'Метки',
+ 'name' => 'Имя',
+ 'type' => 'Тип',
+ 'values(selected_fields)' => 'Значения(Выбранные Поля)',
+ 'required' => 'Требуется',
+ 'Action' => 'Действие',
+ 'remove' => 'Удалить',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Theme Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Theme related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'themes' => 'Themes',
+ /*
+ |--------------------------------------
+ | Footer Pages
+ |--------------------------------------
+ */
+ 'footer' => 'Footer',
+ 'footer1' => 'Footer1',
+ 'footer2' => 'Footer2',
+ 'footer3' => 'Footer3',
+ 'footer4' => 'Footer4',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Staff Pages [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Staff related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'are_you_sure' => 'Вы уверены',
+ 'staffs' => 'Штаб',
+ 'name' => 'Наименование',
+ 'user_name' => 'Имя пользователя',
+ 'status' => 'Статус',
+ 'group' => 'Группа',
+ 'department' => 'Отдел',
+ 'created' => 'Создать',
+ 'lastlogin' => 'Last Login',
+ 'createagent' => 'Создать Агента',
+ 'delete' => 'Удалить',
+ 'agents' => 'Агенты',
+ 'create' => 'Создать',
+ 'edit' => 'Редактировать',
+ 'departments' => 'Отделы',
+ 'groups' => 'Группы',
+ /*
+ |--------------------------------------
+ | Staff Create Page
+ |--------------------------------------
+ */
+ 'create_agent' => 'Создать агента',
+ 'first_name' => 'Имя',
+ 'last_name' => 'Фамилия',
+ 'mobile_number' => 'Мобильный номер телефона',
+ 'agent_signature' => 'Подпись Агента',
+ 'account_status_setting' => 'Account Status & Setting',
+ 'account_type' => 'Account Type',
+ 'admin' => 'Администратор',
+ 'agent' => 'Агент',
+ 'account_status' => 'Account Status',
+ 'locked' => 'Закрыт',
+ 'assigned_group' => 'Assigned Group',
+ 'primary_department' => 'Primary Department',
+ 'agent_time_zone' => 'Agent Time Zone',
+ 'day_light_saving' => 'Day Light Saving',
+ 'limit_access' => 'Limit Access',
+ 'directory_listing' => 'Directory Listing',
+ 'vocation_mode' => 'Vocation Mode',
+ 'assigned_team' => 'Assigned Team',
+ /*
+ |--------------------------------------
+ | Department Create Page
+ |--------------------------------------
+ */
+ 'create_department' => 'Создать отдел',
+ 'manager' => 'Менеджер',
+ 'ticket_assignment' => 'Ticket Assignment ',
+ 'restrict_ticket_assignment_to_department_members' => 'Restrict ticket assignment to department members',
+ 'outgoing_emails' => 'Исходящие Письма',
+ 'outgoing_email' => 'Исходящая Почта',
+ 'template_set' => 'Выбор шаблона',
+ 'auto_responding_settings' => 'Auto-Responding Settigs',
+ 'disable_for_this_department' => 'Отключить данный отдел',
+ 'auto_response_email' => 'Auto-Response Email',
+ 'recipient' => 'Получатель',
+ 'group_access' => 'Group Access',
+ 'department_signature' => 'Department Signature',
+ /*
+ |--------------------------------------
+ | Team Create Page
+ |--------------------------------------
+ */
+ 'create_team' => 'Создать команду',
+ 'team_lead' => 'Team Lead',
+ 'assignment_alert' => 'Assignment Alert',
+ 'disable_for_this_team' => 'Disable for this team',
+ 'teams' => 'Команды',
+ /*
+ |--------------------------------------
+ | Group Create Page
+ |--------------------------------------
+ */
+ 'create_group' => 'Create Group',
+ 'goups' => 'Goups',
+ 'can_create_ticket' => 'Можете создать заявку',
+ 'can_edit_ticket' => 'Можете редактировать заявку',
+ 'can_post_ticket' => 'Can post Ticket',
+ 'can_close_ticket' => 'Можеье закрыть заявку ',
+ 'can_assign_ticket' => 'Можете назначить заявку',
+ 'can_transfer_ticket' => 'Можете передать заявку',
+ 'can_delete_ticket' => 'Можете удалить заявку',
+ 'can_ban_emails' => 'Может запретить e-mails',
+ 'can_manage_premade' => 'Can Manage premade',
+ 'can_manage_FAQ' => 'Можете управлять FAQ',
+ 'can_view_agent_stats' => 'Можете посмотреть статистику агента',
+ 'department_access' => 'Отдел Доступа ',
+ 'admin_notes' => 'Примечания Администратора',
+ 'group_members' => 'Члены Группы',
+ 'group_name' => 'Наименование Группы',
+ /*
+ |--------------------------------------
+ | SMTP Page
+ |--------------------------------------
+ */
+ 'driver' => 'Driver',
+ 'smtp' => 'SMTP',
+ 'host' => 'Host',
+ 'port' => 'Port',
+ 'encryption' => 'Encryption',
+ /*
+ |----------------------------------------------------------------------------------------
+ | Agent Panel [English(en)]
+ |----------------------------------------------------------------------------------------
+ |
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'agent_panel' => 'Панель агента',
+ 'profile' => 'Профиль',
+ 'change_password' => 'Изменить пароль',
+ 'sign_out' => 'Выйти',
+ 'Tickets' => 'ЗАЯВКИ',
+ 'inbox' => 'Входящие',
+ 'my_tickets' => 'Мои заявки',
+ 'unassigned' => 'Неназначенные',
+ 'trash' => 'Корзина',
+ 'Updates' => 'ОБНОВЛЕНИЯ',
+ 'no_new_updates' => 'Нет новых обновлений',
+ 'check_for_updates' => 'Проверить обновления',
+ 'open' => 'Открыть',
+ 'inprogress' => 'Inprogress',
+ 'closed' => 'Закрыто',
+ 'Departments' => 'ОТДЕЛЫ',
+ 'tools' => 'Настройки',
+ 'canned' => 'Canned',
+ 'knowledge_base' => 'База знаний',
+ 'loading' => 'Загрузить',
+ 'ratings' => 'Оценки',
+ 'please_rate' => 'Оцените пожалуйста,:',
+ 'ticket_ratings' => 'Оцените заявку',
+ /*
+ |-----------------------------------------------
+ | Profile
+ |-----------------------------------------------
+ */
+ 'user_information' => 'Информация о пользователе',
+ 'time_zone' => 'Временная зона',
+ 'phone_number' => 'Телефонный номер',
+ 'contact_information' => 'Контактная информацмя',
+ /*
+ |-----------------------------------------------
+ | Dashboard
+ |-----------------------------------------------
+ */
+ 'dashboard' => 'Приборная панель',
+ 'line_chart' => 'Линейная диаграмма',
+ 'statistics' => 'Статистика',
+ 'opened' => 'Открыты',
+ 'resolved' => 'Исполнено',
+ 'closed' => 'Закрыты',
+ 'deleted' => 'Удалена',
+ /*
+ |------------------------------------------------
+ |User Page
+ |------------------------------------------------
+ */
+ 'user_directory' => 'Папка пользователя',
+ 'ban' => 'Ban',
+ 'user' => 'Пользователь',
+ 'users' => 'Пользователи',
+ 'create_user' => 'Создать пользователя',
+ 'full_name' => 'Full Name',
+ 'mobile' => 'Mobile',
+ 'last_login' => 'Last Login',
+ 'user_profile' => 'Профиль пользователя',
+ 'assign' => 'Assign',
+ 'open_tickets' => 'Открыть заявку',
+ 'closed_tickets' => 'Закрыть заявку',
+ 'deleted_tickets' => 'Удалить заявку',
+ /*
+ |------------------------------------------------
+ |Organization Page
+ |------------------------------------------------
+ */
+ 'organizations' => 'Организаций',
+ 'organization' => 'Организация',
+ 'create_organization' => 'Создать организацию',
+ 'account_manager' => 'Счет менеджера',
+ 'update' => 'обновить',
+ 'please_select_an_organization' => 'Пожалуйста, выберите организацию',
+ 'please_select_an_user' => 'Пожалуйста, выберите пользователя',
+ 'organization_profile' => 'Профиль Организации',
+ 'organization-s_head' => "Страница руководителя",
+ 'select_department_manager' => 'Выберите Менеджера Отдела',
+ 'users_of' => 'Пользователи',
+ /*
+ |----------------------------------------------
+ | Страница заявок
+ |----------------------------------------------
+ */
+ 'subject' => 'Сообщение',
+ 'ticket_id' => 'ID заявки',
+ 'priority' => 'Приоритет',
+ 'from' => 'От',
+ 'last_replier' => 'Last Replier',
+ 'assigned_to' => 'Назначенные',
+ 'last_activity' => 'Последняя активность',
+ 'answered' => 'Ответил',
+ 'assigned' => 'Назначены',
+ 'create_ticket' => 'Создать заявку',
+ 'tickets' => 'Заявки',
+ 'open' => 'Открыть',
+ 'Ticket_Information' => 'ИНФОРМАЦИЯ О ЗАЯВКАХ',
+ 'Ticket_Id' => 'ID ЗАЯВКИ',
+ 'User' => 'ПОЛЬЗОВАТЕЛЬ',
+ 'Unassigned' => 'НЕНАЗНАЧЕННЫЕ',
+ 'generate_pdf' => 'PDF создать',
+ 'change_status' => 'Изменить статус',
+ 'more' => 'Больше',
+ 'delete_ticket' => 'Удалить заявку',
+ 'emergency' => 'Чрезвычайный',
+ 'high' => 'Высокий',
+ 'medium' => 'Средний',
+ 'low' => 'Низкий',
+ 'sla_plan' => 'SLA Plan',
+ 'created_date' => 'Дата создания',
+ 'due_date' => 'Срок',
+ 'last_response' => 'Последний Ответ',
+ 'source' => 'Источник',
+ 'last_message' => 'Последнее сообщение',
+ 'reply' => 'Повтор',
+ 'response' => 'Ответ',
+ 'reply_content' => 'Ответное сообщение',
+ 'attachment' => 'Вложение',
+ 'internal_note' => 'Внутреннее Примечание',
+ 'this_ticket_is_under_banned_user' => 'This ticket is under banned user',
+ 'ticket_source' => 'Источник заявки',
+ 'are_you_sure_to_ban' => 'Are you sure to ban',
+ 'whome_do_you_want_to_assign_ticket' => 'Whome do you want to assign ticket',
+ 'are_you_sure_you_want_to_surrender_this_ticket' => 'Are you sure you want to surrender this Ticket',
+ 'add_collaborator' => 'Добавить Соавтора',
+ 'search_existing_users' => 'Поиск существующих пользователей',
+ 'add_new_user' => 'Создать нового пользователя',
+ 'search_existing_users_or_add_new_users' => 'Поиск Пользователя или добавить нового пользователя',
+ 'search_by_email' => 'Поиск по электронной почте',
+ 'list_of_collaborators_of_this_ticket' => 'Список соавторов данной заявки',
+ 'submit' => 'Submit',
+ 'max' => 'Max',
+ 'add_cc' => 'Add CC',
+ 'recepients' => 'Адресаты',
+ 'select_a_canned_response' => 'Выберите готовый ответ',
+ 'assign_to' => 'Назначить',
+ 'detail' => 'Детали',
+ 'user_details' => 'Детали пользователя',
+ 'ticket_option' => 'Настройки заявки',
+ 'ticket_detail' => 'Детали заявки',
+ 'Assigned_To' => 'НАЗНАЧЕННЫЕ',
+ 'locked-ticket' => 'Предупреждение! Этот билет был занят другим пользователем и в настоящее время в процесс рассмотрения.',
+ 'access-ticket' => 'Предупреждение! Этот билет был занят, вы на следующий ',
+ 'minutes' => ' минут',
+ 'in_minutes' => 'In minutes',
+ /*
+ |------------------------------------------------
+ |Инструментальная страница
+ |------------------------------------------------
+ */
+ 'canned_response' => 'Canned Response',
+ 'create_canned_response' => 'Create Canned Response',
+ 'surrender' => 'Surrender',
+ 'view' => 'Просмотр',
+ /*
+ |-----------------------------------------------
+ | Текст главной
+ |-----------------------------------------------
+ */
+ 'copyright' => 'Copyright',
+ 'all_rights_reserved' => 'Все права защищены',
+ 'powered_by' => 'Разработано на',
+ /*
+ |------------------------------------------------
+ |Гостевая-Страница Пользователя
+ |------------------------------------------------
+ */
+ 'issue_summary' => 'Issue Summary',
+ 'issue_details' => 'Детали вопроса',
+ 'contact_informations' => 'Контактная информация',
+ 'contact_details' => 'Contact Details',
+ 'role' => 'Роль',
+ 'ext' => 'Код города',
+ 'profile_pic' => 'Изображение профиля',
+ 'agent_sign' => 'Подпись Агента в сообщениях',
+ 'inactive' => 'Inactive',
+ 'male' => 'Мужчина',
+ 'female' => 'Женщина',
+ 'old_password' => 'Старый пароль',
+ 'new_password' => 'Новый пароль',
+ 'confirm_password' => 'Повторите пароль',
+ 'gender' => 'Пол',
+ 'ticket_number' => 'Номер заявки',
+ 'content' => 'Содержание',
+ /*
+ |------------------------------------------------
+ | Error Pages
+ |------------------------------------------------
+ */
+ 'not_found' => 'Not Found',
+ 'oops_page_not_found' => 'Oops! Page not found',
+ 'we_could_not_find_the_page_you_were_looking_for' => 'We could not find the page you were looking for',
+ 'internal_server_error' => 'Internal server Error',
+ 'be_right_back' => 'Be right back',
+ 'sorry' => 'Sorry',
+ 'we_are_working_on_it' => 'We are working on it',
+ 'category' => 'Category',
+ 'addcategory' => 'Add Category',
+ 'allcategory' => 'All Category',
+ 'article' => 'Article',
+ 'articles' => 'Articles',
+ 'addarticle' => 'Add Article',
+ 'allarticle' => 'All Article',
+ 'pages' => 'Страница',
+ 'addpages' => 'Создать страницу',
+ 'allpages' => 'Все страницы',
+ 'widgets' => 'Виджеты',
+ 'footer1' => 'Footer 1',
+ 'footer2' => 'Footer 2',
+ 'footer3' => 'Footer 3',
+ 'footer4' => 'Footer 4',
+ 'sidewidget1' => 'Side Widget 1',
+ 'sidewidget2' => 'Side Widget 2',
+ 'comments' => 'Комментарии',
+ 'settings' => 'Настройки',
+ 'parent' => 'Родитель',
+ 'description' => 'Описание',
+ 'enter_the_description' => 'Ввести описание',
+ 'publish' => 'Опубликовать',
+ 'published' => 'Опубликовано',
+ 'draft' => 'Проект',
+ 'create_a_category' => 'Создать категорию',
+ 'add' => 'создать',
+ 'social' => 'Социальные',
+ 'comment' => 'Комментарий',
+ 'not_published' => 'Not Published',
+ 'numberofelementstodisplay' => 'Number of elements to display',
+ //======================================
+ 'language' => 'Язык',
+ 'save' => 'Сохранить',
+ 'create' => 'Создать',
+ 'dateformat' => 'Формат даты',
+ 'slug' => 'Slug',
+ 'read_more' => 'Подробнее',
+ 'view_all' => 'Смотреть все',
+ 'categories' => 'Категории',
+ 'need_more_support' => 'Нужна дополнительная поддержка',
+ 'if_you_did_not_find_an_answer_please_raise_a_ticket_describing_the_issue' => 'If you did not find an answer, please raise a ticket describing the issue',
+ 'have_a_question?_type_your_search_term_here' => 'Have a question? Type your search term here...',
+ 'search' => 'Поиск',
+ 'frequently_asked_questions' => 'Frequently Asked Questions',
+ 'leave_a_reply' => 'Leave a Reply',
+ 'post_message' => 'Почтовое Сообщение',
+ /*
+ |--------------------------------------------------------------------------------------
+ | Client Panel [English(en)]
+ |--------------------------------------------------------------------------------------
+ | The following language lines are used in all Agent Panel related issues to translate
+ | some words in view to English. You are free to change them to anything you want to
+ | customize your views to better match your application.
+ |
+ */
+ 'home' => 'Главная',
+ 'submit_a_ticket' => 'Отправить Заявку',
+ 'my_profile' => 'Мой профиль',
+ 'log_out' => 'Выйти',
+ 'forgot_password' => 'Забыл Пароль',
+ 'create_account' => 'Создать Учетную запись',
+ 'you_are_here' => 'Вы здесь',
+ 'have_a_ticket' => 'Есть заявка',
+ 'check_ticket_status' => 'Проверить состояние заявки',
+ 'choose_a_help_topic' => 'Выбрать раздел справки',
+ 'ticket_status' => 'Статус заявки',
+ 'post_comment' => 'Отправить Комментарий',
+ 'plugin' => 'Плагин',
+ 'end_date' => 'Конец Даты',
+);
diff --git a/resources/lang/ru/pagination.php b/resources/lang/ru/pagination.php
new file mode 100644
index 000000000..aeafbed2e
--- /dev/null
+++ b/resources/lang/ru/pagination.php
@@ -0,0 +1,19 @@
+ '« Предыдущая',
+ 'next' => 'Следующий »',
+
+];
diff --git a/resources/lang/ru/passwords.php b/resources/lang/ru/passwords.php
new file mode 100644
index 000000000..9b63300b9
--- /dev/null
+++ b/resources/lang/ru/passwords.php
@@ -0,0 +1,22 @@
+ "Пароль должен содержать не менее шести символов и соответствовать подтверждения.",
+ "user" => "Мы не можем найти пользователя с данным адресом электронной почты.",
+ "token" => "Этот пароль сбросить маркер недействителен.",
+ "sent" => "Мы по электронной почте Ваш пароль сбросить ссылку!",
+ "reset" => "Ваш пароль был сброшен!",
+
+];
diff --git a/resources/lang/ru/table.php b/resources/lang/ru/table.php
new file mode 100644
index 000000000..52097c0e2
--- /dev/null
+++ b/resources/lang/ru/table.php
@@ -0,0 +1,26 @@
+ 'ISO CODE',
+ 'language' => 'Язык',
+ 'Action' => 'Действие',
+ 'status' => 'stature',
+ 'not-active'=> 'Не Активный',
+ 'active' => 'Активный',
+ 'hello' => 'Привет',
+ 'enable' => 'Включен',
+ 'disable' => 'Выключен',
+
+];
\ No newline at end of file
diff --git a/resources/lang/ru/validation.php b/resources/lang/ru/validation.php
new file mode 100644
index 000000000..764f05636
--- /dev/null
+++ b/resources/lang/ru/validation.php
@@ -0,0 +1,107 @@
+ "The :attribute must be accepted.",
+ "active_url" => "The :attribute is not a valid URL.",
+ "after" => "The :attribute must be a date after :date.",
+ "alpha" => "The :attribute may only contain letters.",
+ "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
+ "alpha_num" => "The :attribute may only contain letters and numbers.",
+ "array" => "The :attribute must be an array.",
+ "before" => "The :attribute must be a date before :date.",
+ "between" => [
+ "numeric" => "The :attribute must be between :min and :max.",
+ "file" => "The :attribute must be between :min and :max kilobytes.",
+ "string" => "The :attribute must be between :min and :max characters.",
+ "array" => "The :attribute must have between :min and :max items.",
+ ],
+ "boolean" => "The :attribute field must be true or false.",
+ "confirmed" => "The :attribute confirmation does not match.",
+ "date" => "The :attribute is not a valid date.",
+ "date_format" => "The :attribute does not match the format :format.",
+ "different" => "The :attribute and :other must be different.",
+ "digits" => "The :attribute must be :digits digits.",
+ "digits_between" => "The :attribute must be between :min and :max digits.",
+ "email" => "The :attribute must be a valid email address.",
+ "filled" => "The :attribute field is required.",
+ "exists" => "The selected :attribute is invalid.",
+ "image" => "The :attribute must be an image.",
+ "in" => "The selected :attribute is invalid.",
+ "integer" => "The :attribute must be an integer.",
+ "ip" => "The :attribute must be a valid IP address.",
+ "max" => [
+ "numeric" => "The :attribute may not be greater than :max.",
+ "file" => "The :attribute may not be greater than :max kilobytes.",
+ "string" => "The :attribute may not be greater than :max characters.",
+ "array" => "The :attribute may not have more than :max items.",
+ ],
+ "mimes" => "The :attribute must be a file of type: :values.",
+ "min" => [
+ "numeric" => "The :attribute must be at least :min.",
+ "file" => "The :attribute must be at least :min kilobytes.",
+ "string" => "The :attribute must be at least :min characters.",
+ "array" => "The :attribute must have at least :min items.",
+ ],
+ "not_in" => "The selected :attribute is invalid.",
+ "numeric" => "The :attribute must be a number.",
+ "regex" => "The :attribute format is invalid.",
+ "required" => "The :attribute field is required.",
+ "required_if" => "The :attribute field is required when :other is :value.",
+ "required_with" => "The :attribute field is required when :values is present.",
+ "required_with_all" => "The :attribute field is required when :values is present.",
+ "required_without" => "The :attribute field is required when :values is not present.",
+ "required_without_all" => "The :attribute field is required when none of :values are present.",
+ "same" => "The :attribute and :other must match.",
+ "size" => [
+ "numeric" => "The :attribute must be :size.",
+ "file" => "The :attribute must be :size kilobytes.",
+ "string" => "The :attribute must be :size characters.",
+ "array" => "The :attribute must contain :size items.",
+ ],
+ "unique" => "The :attribute has already been taken.",
+ "url" => "The :attribute format is invalid.",
+ "timezone" => "The :attribute must be a valid zone.",
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify custom validation messages for attributes using the
+ | convention "attribute.rule" to name the lines. This makes it quick to
+ | specify a specific custom language line for a given attribute rule.
+ |
+ */
+
+ 'custom' => [
+ 'attribute-name' => [
+ 'rule-name' => 'custom-message',
+ ],
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Attributes
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are used to swap attribute place-holders
+ | with something more reader friendly such as E-Mail Address instead
+ | of "email". This simply helps us make messages a little cleaner.
+ |
+ */
+
+ 'attributes' => [],
+
+];
diff --git a/resources/views/_partials/breadcrumbs.blade.php b/resources/views/_partials/breadcrumbs.blade.php
new file mode 100644
index 000000000..ae648de3d
--- /dev/null
+++ b/resources/views/_partials/breadcrumbs.blade.php
@@ -0,0 +1,12 @@
+@if ($breadcrumbs)
+
+ {!! Lang::get('lang.you_are_here') !!} :
+ @foreach ($breadcrumbs as $breadcrumb)
+ @if (!$breadcrumb->last)
+ {{ $breadcrumb->title }}
+ @else
+ {{ $breadcrumb->title }}
+ @endif
+ @endforeach
+
+@endif
\ No newline at end of file
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
index e456ef28b..cfea04e3e 100644
--- a/resources/views/auth/login.blade.php
+++ b/resources/views/auth/login.blade.php
@@ -4,7 +4,7 @@
{!! Lang::get('lang.Login_to_start_your_session') !!}
@if(Session::has('status'))
- {!! Lang::get('lang.success') !!}
+
×
{{Session::get('status')}}
@@ -15,12 +15,20 @@
{!! Lang::get('lang.alert') !!}!
×
@if(Session::has('error'))
- {!! Session::get('error') !!}
+ {!! Session::get('error') !!}
@else
- Please fill all required feilds.
+ {!! Lang::get('lang.please_fill_all_required_feilds') !!}
@endif
@endif
+
+@if(Session::has('fails'))
+
+ {!! Lang::get('lang.alert') !!}!
+ ×
+
{!! Session::get('fails') !!}
+
+@endif
{!! Form::open(['action'=>'Auth\AuthController@postLogin', 'method'=>'post']) !!}
diff --git a/resources/views/auth/password.blade.php b/resources/views/auth/password.blade.php
index ef36cea90..73d9a6079 100644
--- a/resources/views/auth/password.blade.php
+++ b/resources/views/auth/password.blade.php
@@ -8,12 +8,14 @@
{{Session::get('status')}}
@endif
-
-@if(Session::has('errors'))
+@if (count($errors) > 0)
- {!! Lang::get('lang.alert') !!}!
+
+ {!! Lang::get('lang.alert') !!} !
×
- {!! $errors !!}
+ @foreach ($errors->all() as $error)
+
{{ $error }}
+ @endforeach
@endif
{!! Lang::get('lang.enter_email_to_reset_password') !!}
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php
index 90b39fcd3..8cd9f416d 100644
--- a/resources/views/auth/register.blade.php
+++ b/resources/views/auth/register.blade.php
@@ -10,50 +10,41 @@
{{Session::get('status')}}
@endif
-
-@if(Session::has('errors'))
+
+@if (count($errors) > 0)
- {!! Lang::get('lang.alert') !!}!
+
+ {!! Lang::get('lang.alert') !!} !
×
+ @foreach ($errors->all() as $error)
+
{{ $error }}
+ @endforeach
@endif
-
{!! Form::open(['action'=>'Auth\AuthController@postRegister', 'method'=>'post']) !!}
-
{!! Form::text('full_name',null,['placeholder'=>Lang::get('lang.full_name'),'class' => 'form-control']) !!}
- {!! $errors->first('full_name', ':message ') !!}
-
-
-
{!! Form::text('email',null,['placeholder'=>Lang::get('lang.email'),'class' => 'form-control']) !!}
- {!! $errors->first('email', ':message ') !!}
-
-
{!! Form::password('password',['placeholder'=>Lang::get('lang.password'),'class' => 'form-control']) !!}
- {!! $errors->first('password', ':message ') !!}
-
{!! Form::password('password_confirmation',['placeholder'=>Lang::get('lang.retype_password'),'class' => 'form-control']) !!}
- {!! $errors->first('password_confirmation', ':message ') !!}
-
@@ -66,10 +57,5 @@
{!! Lang::get('lang.register') !!}
-
-
{!! Form::close()!!}
-
-@stop
-
-
+@stop
\ No newline at end of file
diff --git a/resources/views/auth/reset.blade.php b/resources/views/auth/reset.blade.php
index b4491615e..92a1a5f1b 100644
--- a/resources/views/auth/reset.blade.php
+++ b/resources/views/auth/reset.blade.php
@@ -3,16 +3,20 @@
@section('body')
@if(Session::has('status'))
- {!! Lang::get('lang.success') !!}
+ {!! Lang::get('lang.success') !!}
×
{{Session::get('status')}}
@endif
-@if(Session::has('errors'))
+@if (count($errors) > 0)
- {!! Lang::get('lang.alert') !!}!
+
+ {!! Lang::get('lang.alert') !!} !
×
+ @foreach ($errors->all() as $error)
+
{{ $error }}
+ @endforeach
@endif
{!! Lang::get('lang.reset_password') !!}
@@ -23,19 +27,16 @@
- {!! $errors->first('email', ':message ') !!}
- {!! $errors->first('password', ':message ') !!}
- {!! $errors->first('password_confirmation', ':message ') !!}
diff --git a/resources/views/emails/asdadsd/assign-ticket.blade.php b/resources/views/emails/asdadsd/assign-ticket.blade.php
new file mode 100644
index 000000000..434f36ce1
--- /dev/null
+++ b/resources/views/emails/asdadsd/assign-ticket.blade.php
@@ -0,0 +1 @@
+
Hello {!!$ticket_agent_name!!}, Ticket No: {!!$ticket_number!!} Has been assigned to you by {!!$ticket_assigner!!} Thank You Kind Regards, {!!$system_from!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/check-ticket.blade.php b/resources/views/emails/asdadsd/check-ticket.blade.php
new file mode 100644
index 000000000..7cb8e3cc8
--- /dev/null
+++ b/resources/views/emails/asdadsd/check-ticket.blade.php
@@ -0,0 +1 @@
+
Hello {!!$user!!}, Click the link below to view your Requested ticket {!!$ticket_link_with_number!!} Kind Regards, {!!$system_from!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/close-ticket.blade.php b/resources/views/emails/asdadsd/close-ticket.blade.php
new file mode 100644
index 000000000..98d978649
--- /dev/null
+++ b/resources/views/emails/asdadsd/close-ticket.blade.php
@@ -0,0 +1 @@
+
Hello, This message is regarding your ticket ID {!!$ticket_number!!}. We are changing the status of this ticket to 'Closed' as the issue appears to be resolved. Thank you Kind regards, {!!$system_from!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/create-ticket-agent.blade.php b/resources/views/emails/asdadsd/create-ticket-agent.blade.php
new file mode 100644
index 000000000..bff1fbcb3
--- /dev/null
+++ b/resources/views/emails/asdadsd/create-ticket-agent.blade.php
@@ -0,0 +1 @@
+
Hello {!!$ticket_agent_name!!}, New ticket {!!$ticket_number!!} created From Name :- {!!$ticket_client_name!!} E-mail :- {!!$ticket_client_email!!} {!!$content!!} Kind Regards, {!!$system_from!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/create-ticket-by-agent.blade.php b/resources/views/emails/asdadsd/create-ticket-by-agent.blade.php
new file mode 100644
index 000000000..c0c701a0f
--- /dev/null
+++ b/resources/views/emails/asdadsd/create-ticket-by-agent.blade.php
@@ -0,0 +1 @@
+
{!!$content!!} {!!$agent_sign!!} You can check the status of or update this ticket online at: {!!$system_link!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/create-ticket.blade.php b/resources/views/emails/asdadsd/create-ticket.blade.php
new file mode 100644
index 000000000..2b158d766
--- /dev/null
+++ b/resources/views/emails/asdadsd/create-ticket.blade.php
@@ -0,0 +1 @@
+
Hello {!!$user!!} Thank you for contacting us. This is an automated response confirming the receipt of your ticket. Our team will get back to you as soon as possible. When replying, please make sure that the ticket ID is kept in the subject so that we can track your replies. Ticket ID: {!!$ticket_number!!} {!!$department_sign!!} You can check the status of or update this ticket online at: {!!$system_link!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/error-report.blade.php b/resources/views/emails/asdadsd/error-report.blade.php
new file mode 100644
index 000000000..5eab93b8c
--- /dev/null
+++ b/resources/views/emails/asdadsd/error-report.blade.php
@@ -0,0 +1 @@
+ {!!$system_error!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/registration-notification.blade.php b/resources/views/emails/asdadsd/registration-notification.blade.php
new file mode 100644
index 000000000..d752d1a08
--- /dev/null
+++ b/resources/views/emails/asdadsd/registration-notification.blade.php
@@ -0,0 +1 @@
+
Hello {!!$user!!} ,
This email is confirmation that you are now registered at our helpdesk.
Registered Email: {!!$email_address!!}
Password: {!!$user_password!!}
You can visit the helpdesk to browse articles and contact us at any time: {!!$system_link!!}
Thank You.
Kind Regards,
{!!$system_from!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/reset-password.blade.php b/resources/views/emails/asdadsd/reset-password.blade.php
new file mode 100644
index 000000000..731a2b87c
--- /dev/null
+++ b/resources/views/emails/asdadsd/reset-password.blade.php
@@ -0,0 +1,13 @@
+Hello {!!$user!!}
+
+You asked to reset your password. To do so, please click this link:
+
+{!!$password_reset_link!!}
+
+
+This will let you change your password to something new. If you didn't ask for this, don't worry, we'll keep your password safe.
+
+Thank You.
+
+Kind Regards,
+{!!$system_from!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/ticket-reply-agent.blade.php b/resources/views/emails/asdadsd/ticket-reply-agent.blade.php
new file mode 100644
index 000000000..808423309
--- /dev/null
+++ b/resources/views/emails/asdadsd/ticket-reply-agent.blade.php
@@ -0,0 +1 @@
+
Hello {!!$ticket_agent_name!!}, A reply been made to ticket {!!$ticket_number!!} From Name: {!!$ticket_client_name!!} E-mail: {!!$ticket_client_email!!} {!!$content!!} Kind Regards, {!!$system_from!!}
\ No newline at end of file
diff --git a/resources/views/emails/asdadsd/ticket-reply.blade.php b/resources/views/emails/asdadsd/ticket-reply.blade.php
new file mode 100644
index 000000000..e168b586b
--- /dev/null
+++ b/resources/views/emails/asdadsd/ticket-reply.blade.php
@@ -0,0 +1 @@
+
{!!$content!!}
{!!$agent_sign!!}
Ticket Details
Ticket ID: {!!$ticket_number!!}
\ No newline at end of file
diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php
index ad66c6817..3643d89bd 100644
--- a/resources/views/errors/404.blade.php
+++ b/resources/views/errors/404.blade.php
@@ -1,50 +1,18 @@
-
-
-
-
-
-
-
-
-
404 {!! Lang::get('lang.not_found') !!}.
-
-
{!! Lang::get('lang.oops_page_not_found') !!}.
-
- {!! Lang::get('lang.we_could_not_find_the_page_you_were_looking_for') !!}.
-
-
-
-
-
-
\ No newline at end of file
+@extends('themes.default1.client.layout.client')
+@section('content')
+
+
+ 40 4
+ {!! Lang::get('lang.we_are_sorry_but_the_page_you_are_looking_for_can_not_be_found') !!}
+
+
+
+
+
+@stop
\ No newline at end of file
diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php
index 8e23f5f0f..b07588bb3 100644
--- a/resources/views/errors/500.blade.php
+++ b/resources/views/errors/500.blade.php
@@ -1,50 +1,19 @@
-
-
-
-
-
-
-
-
-
500 {!! Lang::get('lang.internal_server_error') !!}. {!! Lang::get('lang.be_right_back') !!}.
-
-
{!! Lang::get('lang.sorry') !!}!
-
- {!! Lang::get('lang.we_are_working_on_it') !!}.
-
-
-
-
-
-
\ No newline at end of file
+@extends('themes.default1.client.layout.client')
+@section('content')
+
+
+ 0
+ {!! Lang::get('lang.sorry_something_went_wrong') !!}
+
+
{!! Lang::get('lang.were_working_on_it_and_well_get_it_fixed_as_soon_as_we_can') !!}
+
{!! Lang::get('lang.go_back') !!}
+
+
+
+
+
+@stop
\ No newline at end of file
diff --git a/resources/views/errors/offline.blade.php b/resources/views/errors/offline.blade.php
new file mode 100644
index 000000000..84ec11a46
--- /dev/null
+++ b/resources/views/errors/offline.blade.php
@@ -0,0 +1,15 @@
+@extends('themes.default1.client.layout.client')
+@section('content')
+
+
+
+ {!! Lang::get('lang.the_board_is_offline') !!}
+
+
+
+
+@stop
\ No newline at end of file
diff --git a/resources/views/notifications-all.blade.php b/resources/views/notifications-all.blade.php
index d279c27dc..029cd2b4c 100644
--- a/resources/views/notifications-all.blade.php
+++ b/resources/views/notifications-all.blade.php
@@ -68,13 +68,13 @@ class="active"
@endif
@@ -107,18 +107,22 @@ class="active"
-->
+
diff --git a/resources/views/themes/default1/admin/helpdesk/agent/agents/create.blade.php b/resources/views/themes/default1/admin/helpdesk/agent/agents/create.blade.php
index ababe4dd0..16720e594 100644
--- a/resources/views/themes/default1/admin/helpdesk/agent/agents/create.blade.php
+++ b/resources/views/themes/default1/admin/helpdesk/agent/agents/create.blade.php
@@ -17,7 +17,6 @@ class="active"
@section('PageHeader')
-
@stop
@@ -29,100 +28,121 @@ class="active"
@section('content')
-
-
{!! Form::open(array('action' => 'Admin\helpdesk\AgentController@store' , 'method' => 'post') )!!}
-
-
-