Version Notes
First release
Download this release
Release Info
| Developer | Fausto Iannuzzi |
| Extension | Deskero |
| Version | 1.0.0 |
| Comparing to | |
| See all releases | |
Version 1.0.0
- app/code/community/Deskero/Deskero/Block/Adminhtml/Menu.php +11 -0
- app/code/community/Deskero/Deskero/Block/Adminhtml/Ticket/Create/Create.php +37 -0
- app/code/community/Deskero/Deskero/Block/Adminhtml/Ticket/Create/Form.php +126 -0
- app/code/community/Deskero/Deskero/Block/Widget.php +13 -0
- app/code/community/Deskero/Deskero/Helper/Data.php +5 -0
- app/code/community/Deskero/Deskero/controllers/Adminhtml/DeskeroController.php +269 -0
- app/code/community/Deskero/Deskero/etc/adminhtml.xml +23 -0
- app/code/community/Deskero/Deskero/etc/config.xml +120 -0
- app/code/community/Deskero/Deskero/etc/system.xml +133 -0
- app/design/adminhtml/default/default/layout/deskero.xml +10 -0
- app/design/adminhtml/default/default/template/deskero/left-menu.phtml +22 -0
- app/design/frontend/base/default/layout/deskero.xml +25 -0
- app/etc/modules/Deskero_Deskero.xml +10 -0
- app/locale/en_US/Deskero_Deskero.csv +41 -0
- app/locale/it_IT/Deskero_Deskero.csv +41 -0
- package.xml +31 -0
- skin/adminhtml/default/default/deskero/deskero-menu.png +0 -0
- skin/adminhtml/default/default/deskero/deskero.css +29 -0
- skin/adminhtml/default/default/deskero/header-logo.png +0 -0
app/code/community/Deskero/Deskero/Block/Adminhtml/Menu.php
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Deskero_Deskero_Block_Adminhtml_Menu extends Mage_Adminhtml_Block_Template
|
| 4 |
+
{
|
| 5 |
+
public function __construct()
|
| 6 |
+
{
|
| 7 |
+
parent::__construct();
|
| 8 |
+
$this->setId('page_tabs');
|
| 9 |
+
$this->setTemplate('deskero/left-menu.phtml');
|
| 10 |
+
}
|
| 11 |
+
}
|
app/code/community/Deskero/Deskero/Block/Adminhtml/Ticket/Create/Create.php
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Deskero_Deskero_Block_Adminhtml_Ticket_Create_Create extends Mage_Adminhtml_Block_Widget_Form_Container {
|
| 4 |
+
|
| 5 |
+
protected function _preparelayout() {
|
| 6 |
+
|
| 7 |
+
$this->removeButton('delete');
|
| 8 |
+
$this->removeButton('back');
|
| 9 |
+
$this->removeButton('reset');
|
| 10 |
+
$this->removeButton('save');
|
| 11 |
+
|
| 12 |
+
$this->_addButton('save', array(
|
| 13 |
+
'label' => $this->__('Create Ticket'),
|
| 14 |
+
'onclick' => 'createTicket_form.submit();',
|
| 15 |
+
'class' => 'save',
|
| 16 |
+
), 1);
|
| 17 |
+
|
| 18 |
+
$this->setChild('form', $this->getLayout()->createBlock('deskero/adminhtml_ticket_create_form'));
|
| 19 |
+
return parent::_prepareLayout();
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
public function getFormHtml()
|
| 23 |
+
{
|
| 24 |
+
$formHtml = parent::getFormHtml();
|
| 25 |
+
return $formHtml;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
public function getHeaderText()
|
| 29 |
+
{
|
| 30 |
+
return $this->__('New Ticket');
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
public function getSaveUrl()
|
| 34 |
+
{
|
| 35 |
+
return $this->getUrl('*/*/save', array('_current' => true, 'back' => null));
|
| 36 |
+
}
|
| 37 |
+
}
|
app/code/community/Deskero/Deskero/Block/Adminhtml/Ticket/Create/Form.php
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Deskero_Deskero_Block_Adminhtml_Ticket_Create_Form extends Mage_Adminhtml_Block_Widget_Form
|
| 4 |
+
{
|
| 5 |
+
protected function _prepareForm()
|
| 6 |
+
{
|
| 7 |
+
$form = new Varien_Data_Form(array(
|
| 8 |
+
'id' => 'createTicket_form',
|
| 9 |
+
'action' => $this->getData('action'),
|
| 10 |
+
'method' => 'post'
|
| 11 |
+
));
|
| 12 |
+
|
| 13 |
+
$fieldset = $form->addFieldset('base', array(
|
| 14 |
+
'legend'=>$this->__('New Ticket'),
|
| 15 |
+
'class'=>'fieldset-wide'
|
| 16 |
+
));
|
| 17 |
+
|
| 18 |
+
$fieldset->addField('customer_email', 'text', array(
|
| 19 |
+
'name' => 'customer_email',
|
| 20 |
+
'label' => $this->__('Customer Email'),
|
| 21 |
+
'title' => $this->__('Customer Email'),
|
| 22 |
+
|
| 23 |
+
'required' => true
|
| 24 |
+
));
|
| 25 |
+
|
| 26 |
+
$fieldset->addField('customer_name', 'text', array(
|
| 27 |
+
'name' => 'customer_name',
|
| 28 |
+
'label' => $this->__('Customer Name'),
|
| 29 |
+
'title' => $this->__('Customer Name'),
|
| 30 |
+
'required' => true
|
| 31 |
+
));
|
| 32 |
+
|
| 33 |
+
$fieldset->addField('subject', 'text', array(
|
| 34 |
+
'name' => 'subject',
|
| 35 |
+
'label' => $this->__('Subject'),
|
| 36 |
+
'title' => $this->__('Subject'),
|
| 37 |
+
'required' => true
|
| 38 |
+
));
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
$deskeroUrl = 'https://api.deskero.com/';
|
| 42 |
+
|
| 43 |
+
$apiToken = Mage::getStoreConfig('deskero_settings/deskero_general_settings/deskero_api_token');
|
| 44 |
+
$clientID = Mage::getStoreConfig('deskero_settings/deskero_general_settings/deskero_clientid');
|
| 45 |
+
|
| 46 |
+
$authorizationCall = $deskeroUrl.'oauth/token?grant_type=client_credentials';
|
| 47 |
+
|
| 48 |
+
$authCurl = curl_init($authorizationCall);
|
| 49 |
+
curl_setopt($authCurl, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$apiToken));
|
| 50 |
+
curl_setopt($authCurl, CURLOPT_RETURNTRANSFER, true);
|
| 51 |
+
$authResponse = curl_exec($authCurl);
|
| 52 |
+
|
| 53 |
+
curl_close($authCurl);
|
| 54 |
+
|
| 55 |
+
if ($authResponse) {
|
| 56 |
+
|
| 57 |
+
$authData = json_decode($authResponse);
|
| 58 |
+
$accessToken = $authData->access_token;
|
| 59 |
+
|
| 60 |
+
$typeListCall = $deskeroUrl.'ticketType/list?page=1';
|
| 61 |
+
|
| 62 |
+
$typeListCurl = curl_init($typeListCall);
|
| 63 |
+
curl_setopt($typeListCurl, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$accessToken,
|
| 64 |
+
'clientId: '.$clientID,
|
| 65 |
+
'Accept: application/json'));
|
| 66 |
+
|
| 67 |
+
curl_setopt($typeListCurl, CURLOPT_RETURNTRANSFER, true);
|
| 68 |
+
$typeListResponse = curl_exec($typeListCurl);
|
| 69 |
+
|
| 70 |
+
curl_close($typeListCurl);
|
| 71 |
+
|
| 72 |
+
if ($typeListResponse) {
|
| 73 |
+
|
| 74 |
+
$typeListData = json_decode($typeListResponse);
|
| 75 |
+
$locale = Mage::app()->getLocale()->getLocaleCode();
|
| 76 |
+
$locale = explode("_", $locale);
|
| 77 |
+
$locale = $locale[0];
|
| 78 |
+
|
| 79 |
+
foreach ($typeListData->type->records as $type) {
|
| 80 |
+
|
| 81 |
+
if (isset($type->labels->$locale)) {
|
| 82 |
+
$label = $type->labels->$locale;
|
| 83 |
+
} else {
|
| 84 |
+
$label = $type->labels->en;
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
$value = array('label' => $label, 'value' => $type->id);
|
| 88 |
+
$values[]=$value;
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
if ($values) {
|
| 92 |
+
|
| 93 |
+
$fieldset->addField('type', 'select', array(
|
| 94 |
+
'name' => 'type',
|
| 95 |
+
'label' => $this->__('Type'),
|
| 96 |
+
'title' => $this->__('Type'),
|
| 97 |
+
'required' => true,
|
| 98 |
+
'values' => $values
|
| 99 |
+
|
| 100 |
+
));
|
| 101 |
+
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
$fieldset->addField('description', 'textarea', array(
|
| 110 |
+
'name' => 'description',
|
| 111 |
+
'label' => $this->__('Description'),
|
| 112 |
+
'title' => $this->__('Description'),
|
| 113 |
+
'required' => true
|
| 114 |
+
));
|
| 115 |
+
|
| 116 |
+
$form->setValues(Mage::getSingleton('adminhtml/session')->getData('createTicket_form'));
|
| 117 |
+
|
| 118 |
+
Mage::getSingleton('adminhtml/session')->setData('createTicket_form','');
|
| 119 |
+
|
| 120 |
+
$form->setUseContainer(true);
|
| 121 |
+
$form->setMethod('post');
|
| 122 |
+
$this->setForm($form);
|
| 123 |
+
return parent::_prepareForm();
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
}
|
app/code/community/Deskero/Deskero/Block/Widget.php
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Deskero_Deskero_Block_Widget extends Mage_Core_Block_Template
|
| 4 |
+
{
|
| 5 |
+
protected function _toHtml()
|
| 6 |
+
{
|
| 7 |
+
if(!Mage::getStoreConfig('deskero_settings/deskero_widget_settings/deskero_widget_active')) {
|
| 8 |
+
return '';
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
return Mage::getStoreConfig('deskero_settings/deskero_widget_settings/deskero_widget');
|
| 12 |
+
}
|
| 13 |
+
}
|
app/code/community/Deskero/Deskero/Helper/Data.php
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Deskero_Deskero_Helper_Data extends Mage_Core_Helper_Abstract
|
| 3 |
+
{
|
| 4 |
+
}
|
| 5 |
+
|
app/code/community/Deskero/Deskero/controllers/Adminhtml/DeskeroController.php
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class Deskero_Deskero_Adminhtml_DeskeroController extends Mage_Adminhtml_Controller_Action
|
| 3 |
+
{
|
| 4 |
+
public function indexAction()
|
| 5 |
+
{
|
| 6 |
+
$this->loadLayout();
|
| 7 |
+
$this->_title($this->__("Deskero Settings"));
|
| 8 |
+
$this->renderLayout();
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
public function launchAction()
|
| 12 |
+
{
|
| 13 |
+
|
| 14 |
+
$token = Mage::getStoreConfig('deskero_settings/deskero_sso_settings/deskero_sso_token');
|
| 15 |
+
$domain = Mage::getStoreConfig('deskero_settings/deskero_general_settings/deskero_subdomain');
|
| 16 |
+
$email = Mage::getStoreConfig('deskero_settings/deskero_sso_settings/deskero_sso_email');
|
| 17 |
+
|
| 18 |
+
if (!filter_var($domain, FILTER_VALIDATE_URL) || $token == "" || $domain == "" || $email == "") {
|
| 19 |
+
|
| 20 |
+
$notifyText = $this->__('Oops! ');
|
| 21 |
+
$notifyText .= "<br/>".$this->__('To launch Deskero, set YOUR DESKERO DOMAIN, TOKEN SSO and AGENT EMAIL!');
|
| 22 |
+
|
| 23 |
+
Mage::getSingleton('adminhtml/session')->addError($notifyText);
|
| 24 |
+
|
| 25 |
+
$this->_redirect('adminhtml/system_config/edit/section/deskero_settings');
|
| 26 |
+
|
| 27 |
+
} else {
|
| 28 |
+
|
| 29 |
+
$url = $domain."/?email=".$email."&hash=".hash('md5',$email.$token);
|
| 30 |
+
|
| 31 |
+
$this->_redirectUrl($url);
|
| 32 |
+
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
public function createTicketAction() {
|
| 40 |
+
|
| 41 |
+
$this->loadLayout();
|
| 42 |
+
$this->_title($this->__("Create Ticket"));
|
| 43 |
+
$this->_addContent($this->getLayout()->createBlock('deskero/adminhtml_ticket_create_create'));
|
| 44 |
+
$this->_addLeft($this->getLayout()->createBlock('deskero/adminhtml_menu'));
|
| 45 |
+
$this->renderLayout();
|
| 46 |
+
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
public function saveAction()
|
| 50 |
+
{
|
| 51 |
+
if ($data = $this->getRequest()->getPost()) {
|
| 52 |
+
|
| 53 |
+
$errorOccurred = false;
|
| 54 |
+
|
| 55 |
+
$customerEmail = trim($data['customer_email']);
|
| 56 |
+
$customerName = trim($data['customer_name']);
|
| 57 |
+
|
| 58 |
+
$type = trim($data['type']);
|
| 59 |
+
$subject = trim($data['subject']);
|
| 60 |
+
$description = trim($data['description']);
|
| 61 |
+
|
| 62 |
+
//validazione campi
|
| 63 |
+
if ($customerEmail=="") {
|
| 64 |
+
|
| 65 |
+
$errorOccurred = true;
|
| 66 |
+
$errorText .= "<br/>".$this->__("Customer Email is required!");
|
| 67 |
+
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
if (!filter_var($customerEmail, FILTER_VALIDATE_EMAIL)) {
|
| 71 |
+
|
| 72 |
+
$errorOccurred = true;
|
| 73 |
+
$errorText .= "<br/>".$this->__("Customer Email is not a valid address!");
|
| 74 |
+
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
if ($customerName=="") {
|
| 78 |
+
|
| 79 |
+
$errorOccurred = true;
|
| 80 |
+
$errorText .= "<br/>".$this->__("Customer Name is required!");
|
| 81 |
+
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
if ($type=="") {
|
| 85 |
+
|
| 86 |
+
$errorOccurred = true;
|
| 87 |
+
$errorText .= "<br/>".$this->__("Type is required!");
|
| 88 |
+
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
if ($subject=="") {
|
| 92 |
+
|
| 93 |
+
$errorOccurred = true;
|
| 94 |
+
$errorText .= "<br/>".$this->__("Subject is required!");
|
| 95 |
+
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
if ($description=="") {
|
| 99 |
+
|
| 100 |
+
$errorOccurred = true;
|
| 101 |
+
$errorText .= "<br/>".$this->__("Description is required!");
|
| 102 |
+
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
if (!$errorOccurred) {
|
| 106 |
+
|
| 107 |
+
$customerJSON = '{"name":"'.$customerName.'", "email":"'.$customerEmail.'"}';
|
| 108 |
+
|
| 109 |
+
$deskeroUrl = 'https://api.deskero.com/';
|
| 110 |
+
|
| 111 |
+
$apiToken = Mage::getStoreConfig('deskero_settings/deskero_general_settings/deskero_api_token');
|
| 112 |
+
$clientID = Mage::getStoreConfig('deskero_settings/deskero_general_settings/deskero_clientid');
|
| 113 |
+
|
| 114 |
+
$authorizationCall = $deskeroUrl.'oauth/token?grant_type=client_credentials';
|
| 115 |
+
|
| 116 |
+
$authCurl = curl_init($authorizationCall);
|
| 117 |
+
curl_setopt($authCurl, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$apiToken));
|
| 118 |
+
curl_setopt($authCurl, CURLOPT_RETURNTRANSFER, true);
|
| 119 |
+
$authResponse = curl_exec($authCurl);
|
| 120 |
+
|
| 121 |
+
curl_close($authCurl);
|
| 122 |
+
|
| 123 |
+
if ($authResponse) {
|
| 124 |
+
|
| 125 |
+
$authData = json_decode($authResponse);
|
| 126 |
+
$accessToken = $authData->access_token;
|
| 127 |
+
|
| 128 |
+
$customerCall = $deskeroUrl.'customer/list?page=1&email='.$customerEmail;
|
| 129 |
+
|
| 130 |
+
$customerCurl = curl_init($customerCall);
|
| 131 |
+
curl_setopt($customerCurl, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$accessToken,
|
| 132 |
+
'clientId: '.$clientID,
|
| 133 |
+
'Accept: application/json'));
|
| 134 |
+
|
| 135 |
+
curl_setopt($customerCurl, CURLOPT_RETURNTRANSFER, true);
|
| 136 |
+
$customerResponse = curl_exec($customerCurl);
|
| 137 |
+
|
| 138 |
+
curl_close($customerCurl);
|
| 139 |
+
|
| 140 |
+
if ($customerResponse) {
|
| 141 |
+
|
| 142 |
+
$customerData = json_decode($customerResponse);
|
| 143 |
+
|
| 144 |
+
$customerId = $customerData->customer->records[0]->id;
|
| 145 |
+
|
| 146 |
+
} else {
|
| 147 |
+
|
| 148 |
+
$newCustomerCall = $deskeroUrl.'customer/insert';
|
| 149 |
+
|
| 150 |
+
$newCustomerCurl = curl_init($newCustomerCall);
|
| 151 |
+
curl_setopt($newCustomerCurl, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$accessToken,
|
| 152 |
+
'clientId: '.$clientID,
|
| 153 |
+
'Accept: application/json',
|
| 154 |
+
"Content-type: application/json"));
|
| 155 |
+
|
| 156 |
+
curl_setopt($newCustomerCurl, CURLOPT_POST, 1 );
|
| 157 |
+
curl_setopt($newCustomerCurl, CURLOPT_POSTFIELDS, $customerJSON);
|
| 158 |
+
|
| 159 |
+
curl_setopt($newCustomerCurl, CURLOPT_RETURNTRANSFER, true);
|
| 160 |
+
$newCustomerResponse = curl_exec($newCustomerCurl);
|
| 161 |
+
|
| 162 |
+
curl_close($newCustomerResponse);
|
| 163 |
+
|
| 164 |
+
if ($newCustomerResponse) {
|
| 165 |
+
|
| 166 |
+
$newCustomerData = json_decode($newCustomerResponse);
|
| 167 |
+
$customerId = $newCustomerData->id;
|
| 168 |
+
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
if ($customerId) {
|
| 174 |
+
|
| 175 |
+
$openedBy = array('id'=>$customerId);
|
| 176 |
+
$type = array('id'=>$data['type']);
|
| 177 |
+
$newTicket = array(
|
| 178 |
+
'openedBy' => $openedBy,
|
| 179 |
+
'subject' => $data['subject'],
|
| 180 |
+
'description' => $data['description'],
|
| 181 |
+
'type' => $type,
|
| 182 |
+
'tags' => array('magento')
|
| 183 |
+
);
|
| 184 |
+
|
| 185 |
+
$newTicketJSON = json_encode($newTicket);
|
| 186 |
+
|
| 187 |
+
$newTicketCall = $deskeroUrl.'ticket/insert';
|
| 188 |
+
|
| 189 |
+
$newTicketCurl = curl_init($newTicketCall);
|
| 190 |
+
curl_setopt($newTicketCurl, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$accessToken,
|
| 191 |
+
'clientId: '.$clientID,
|
| 192 |
+
'Accept: application/json',
|
| 193 |
+
"Content-type: application/json"));
|
| 194 |
+
|
| 195 |
+
curl_setopt($newTicketCurl, CURLOPT_POST, 1 );
|
| 196 |
+
curl_setopt($newTicketCurl, CURLOPT_POSTFIELDS, $newTicketJSON);
|
| 197 |
+
|
| 198 |
+
curl_setopt($newTicketCurl, CURLOPT_RETURNTRANSFER, true);
|
| 199 |
+
$newTicketResponse = curl_exec($newTicketCurl);
|
| 200 |
+
|
| 201 |
+
curl_close($newTicketResponse);
|
| 202 |
+
|
| 203 |
+
if ($newTicketResponse) {
|
| 204 |
+
|
| 205 |
+
$newTicketData = json_decode($newTicketResponse);
|
| 206 |
+
|
| 207 |
+
$getTicketCall = $deskeroUrl.'ticket/'.$newTicketData->id;
|
| 208 |
+
|
| 209 |
+
$getTicketCurl = curl_init($getTicketCall);
|
| 210 |
+
curl_setopt($getTicketCurl, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$accessToken,
|
| 211 |
+
'clientId: '.$clientID,
|
| 212 |
+
'Accept: application/json'));
|
| 213 |
+
|
| 214 |
+
curl_setopt($getTicketCurl, CURLOPT_RETURNTRANSFER, true);
|
| 215 |
+
$getTicketResponse = curl_exec($getTicketCurl);
|
| 216 |
+
|
| 217 |
+
$getTicketData = json_decode($getTicketResponse);
|
| 218 |
+
|
| 219 |
+
|
| 220 |
+
$subdomain = Mage::getStoreConfig('deskero_settings/deskero_general_settings/deskero_subdomain');
|
| 221 |
+
|
| 222 |
+
$notifyText = $this->__('Ticket <b>#%s</b> has been created!',$getTicketData->number);
|
| 223 |
+
$notifyText .= ' <a href="https://' . $subdomain . '.deskero.com/agent/ticket/view/' . $newTicketData->id . '" target="_blank">';
|
| 224 |
+
$notifyText .= $this->__('View ticket in Deskero');
|
| 225 |
+
$notifyText .= '</a>';
|
| 226 |
+
|
| 227 |
+
Mage::getSingleton('adminhtml/session')->addSuccess($notifyText);
|
| 228 |
+
|
| 229 |
+
} else {
|
| 230 |
+
|
| 231 |
+
$errorOccurred = true;
|
| 232 |
+
$errorText = $this->__('Error in ticket creation!');
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
} else {
|
| 236 |
+
|
| 237 |
+
$errorOccurred = true;
|
| 238 |
+
$errorText = $this->__('Customer not found!');
|
| 239 |
+
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
} else {
|
| 243 |
+
|
| 244 |
+
$errorOccurred = true;
|
| 245 |
+
$errorText = $this->__("Can't connect to Deskero API!");
|
| 246 |
+
|
| 247 |
+
}
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
} else {
|
| 251 |
+
|
| 252 |
+
$errorOccurred = true;
|
| 253 |
+
$errorText = $this->__("No data sended!");
|
| 254 |
+
}
|
| 255 |
+
|
| 256 |
+
if ($errorOccurred) {
|
| 257 |
+
|
| 258 |
+
$notifyText = $this->__('Oops! ');
|
| 259 |
+
$notifyText .= $errorText;
|
| 260 |
+
|
| 261 |
+
Mage::getSingleton('adminhtml/session')->addError($notifyText);
|
| 262 |
+
Mage::getSingleton('adminhtml/session' )->setData('createTicket_form', $data);
|
| 263 |
+
|
| 264 |
+
}
|
| 265 |
+
|
| 266 |
+
|
| 267 |
+
$this->_redirect('*/*/createTicket');
|
| 268 |
+
}
|
| 269 |
+
}
|
app/code/community/Deskero/Deskero/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<acl>
|
| 4 |
+
<resources>
|
| 5 |
+
<admin>
|
| 6 |
+
<children>
|
| 7 |
+
<system>
|
| 8 |
+
<children>
|
| 9 |
+
<config>
|
| 10 |
+
<children>
|
| 11 |
+
<deskero_settings translate="title" module="deskero">
|
| 12 |
+
<title>Settings Section</title>
|
| 13 |
+
<sort_order>999</sort_order>
|
| 14 |
+
</deskero_settings>
|
| 15 |
+
</children>
|
| 16 |
+
</config>
|
| 17 |
+
</children>
|
| 18 |
+
</system>
|
| 19 |
+
</children>
|
| 20 |
+
</admin>
|
| 21 |
+
</resources>
|
| 22 |
+
</acl>
|
| 23 |
+
</config>
|
app/code/community/Deskero/Deskero/etc/config.xml
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Deskero_Deskero>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</Deskero_Deskero>
|
| 7 |
+
</modules>
|
| 8 |
+
<global>
|
| 9 |
+
<helpers>
|
| 10 |
+
<deskero>
|
| 11 |
+
<class>Deskero_Deskero_Helper</class>
|
| 12 |
+
</deskero>
|
| 13 |
+
</helpers>
|
| 14 |
+
<blocks>
|
| 15 |
+
<deskero>
|
| 16 |
+
<class>Deskero_Deskero_Block</class>
|
| 17 |
+
</deskero>
|
| 18 |
+
</blocks>
|
| 19 |
+
</global>
|
| 20 |
+
|
| 21 |
+
<frontend>
|
| 22 |
+
<layout>
|
| 23 |
+
<updates>
|
| 24 |
+
<deskero>
|
| 25 |
+
<file>deskero.xml</file>
|
| 26 |
+
</deskero>
|
| 27 |
+
</updates>
|
| 28 |
+
</layout>
|
| 29 |
+
</frontend>
|
| 30 |
+
|
| 31 |
+
<admin>
|
| 32 |
+
<routers>
|
| 33 |
+
<deskero>
|
| 34 |
+
<use>admin</use>
|
| 35 |
+
<args>
|
| 36 |
+
<module>Deskero_Deskero</module>
|
| 37 |
+
<frontName>deskero</frontName>
|
| 38 |
+
</args>
|
| 39 |
+
</deskero>
|
| 40 |
+
</routers>
|
| 41 |
+
</admin>
|
| 42 |
+
<adminhtml>
|
| 43 |
+
|
| 44 |
+
<layout>
|
| 45 |
+
<updates>
|
| 46 |
+
<deskero>
|
| 47 |
+
<file>deskero.xml</file>
|
| 48 |
+
</deskero>
|
| 49 |
+
</updates>
|
| 50 |
+
</layout>
|
| 51 |
+
<translate>
|
| 52 |
+
<modules>
|
| 53 |
+
<Deskero_Deskero>
|
| 54 |
+
<files>
|
| 55 |
+
<default>Deskero_Deskero.csv</default>
|
| 56 |
+
</files>
|
| 57 |
+
</Deskero_Deskero>
|
| 58 |
+
</modules>
|
| 59 |
+
</translate>
|
| 60 |
+
|
| 61 |
+
<menu>
|
| 62 |
+
<deskero module="deskero">
|
| 63 |
+
<title>Deskero</title>
|
| 64 |
+
<sort_order>100</sort_order>
|
| 65 |
+
<children>
|
| 66 |
+
|
| 67 |
+
<deskero module="deskero">
|
| 68 |
+
<title>Deskero Settings</title>
|
| 69 |
+
<sort_order>1</sort_order>
|
| 70 |
+
<action>adminhtml/system_config/edit/section/deskero_settings</action>
|
| 71 |
+
</deskero>
|
| 72 |
+
|
| 73 |
+
<deskerolaunch module="deskero">
|
| 74 |
+
<title>Launch Deskero</title>
|
| 75 |
+
<action>deskero/adminhtml_deskero/launch</action>
|
| 76 |
+
<sort_order>2</sort_order>
|
| 77 |
+
</deskerolaunch>
|
| 78 |
+
|
| 79 |
+
<deskerocreateticket module="deskero">
|
| 80 |
+
<title>Create Ticket</title>
|
| 81 |
+
<action>deskero/adminhtml_deskero/createTicket</action>
|
| 82 |
+
<sort_order>3</sort_order>
|
| 83 |
+
</deskerocreateticket>
|
| 84 |
+
|
| 85 |
+
</children>
|
| 86 |
+
</deskero>
|
| 87 |
+
</menu>
|
| 88 |
+
<acl>
|
| 89 |
+
<resources>
|
| 90 |
+
<all>
|
| 91 |
+
<title>Allow Everything</title>
|
| 92 |
+
</all>
|
| 93 |
+
<admin>
|
| 94 |
+
<children>
|
| 95 |
+
<deskero translate="title" module="deskero">
|
| 96 |
+
<title>Deskero</title>
|
| 97 |
+
<sort_order>999</sort_order>
|
| 98 |
+
<children>
|
| 99 |
+
|
| 100 |
+
<deskero translate="title">
|
| 101 |
+
<title>Deskero Settings</title>
|
| 102 |
+
</deskero>
|
| 103 |
+
|
| 104 |
+
<deskerolaunch translate="title">
|
| 105 |
+
<title>Launch Deskero</title>
|
| 106 |
+
</deskerolaunch>
|
| 107 |
+
|
| 108 |
+
<deskerocreateticket translate="title">
|
| 109 |
+
<title>Create Ticket</title>
|
| 110 |
+
</deskerocreateticket>
|
| 111 |
+
|
| 112 |
+
</children>
|
| 113 |
+
</deskero>
|
| 114 |
+
</children>
|
| 115 |
+
</admin>
|
| 116 |
+
</resources>
|
| 117 |
+
</acl>
|
| 118 |
+
|
| 119 |
+
</adminhtml>
|
| 120 |
+
</config>
|
app/code/community/Deskero/Deskero/etc/system.xml
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<tabs>
|
| 4 |
+
<deskero translate="label" module="deskero">
|
| 5 |
+
<label>Deskero</label>
|
| 6 |
+
<sort_order>999</sort_order>
|
| 7 |
+
</deskero>
|
| 8 |
+
</tabs>
|
| 9 |
+
<sections>
|
| 10 |
+
|
| 11 |
+
<deskero_settings translate="label" module="deskero">
|
| 12 |
+
<label>Settings</label>
|
| 13 |
+
<class>deskero-section</class>
|
| 14 |
+
<header_css>deskero-header</header_css>
|
| 15 |
+
<tab>deskero</tab>
|
| 16 |
+
<frontend_type>text</frontend_type>
|
| 17 |
+
<sort_order>999</sort_order>
|
| 18 |
+
<show_in_default>1</show_in_default>
|
| 19 |
+
<show_in_website>1</show_in_website>
|
| 20 |
+
<show_in_store>1</show_in_store>
|
| 21 |
+
<groups>
|
| 22 |
+
|
| 23 |
+
<deskero_general_settings translate="label">
|
| 24 |
+
<label>General Setting</label>
|
| 25 |
+
<frontend_type>text</frontend_type>
|
| 26 |
+
<sort_order>1</sort_order>
|
| 27 |
+
<show_in_default>1</show_in_default>
|
| 28 |
+
<show_in_website>1</show_in_website>
|
| 29 |
+
<show_in_store>1</show_in_store>
|
| 30 |
+
<fields>
|
| 31 |
+
|
| 32 |
+
<deskero_subdomain translate="label">
|
| 33 |
+
<label>Your Deskero Domain</label>
|
| 34 |
+
<frontend_type>text</frontend_type>
|
| 35 |
+
<sort_order>1</sort_order>
|
| 36 |
+
<show_in_default>1</show_in_default>
|
| 37 |
+
<show_in_website>1</show_in_website>
|
| 38 |
+
<show_in_store>1</show_in_store>
|
| 39 |
+
<comment>Your Deskero Domain. Example: https://yourdomain.deskero.com</comment>
|
| 40 |
+
</deskero_subdomain>
|
| 41 |
+
|
| 42 |
+
<deskero_clientid translate="label">
|
| 43 |
+
<label>Client ID</label>
|
| 44 |
+
<frontend_type>text</frontend_type>
|
| 45 |
+
<sort_order>2</sort_order>
|
| 46 |
+
<show_in_default>1</show_in_default>
|
| 47 |
+
<show_in_website>1</show_in_website>
|
| 48 |
+
<show_in_store>1</show_in_store>
|
| 49 |
+
<comment>Find your Client ID in Deskero on Settings > Security Settings > API management</comment>
|
| 50 |
+
</deskero_clientid>
|
| 51 |
+
|
| 52 |
+
<deskero_api_token translate="label">
|
| 53 |
+
<label>API Token</label>
|
| 54 |
+
<frontend_type>text</frontend_type>
|
| 55 |
+
<sort_order>3</sort_order>
|
| 56 |
+
<show_in_default>1</show_in_default>
|
| 57 |
+
<show_in_website>1</show_in_website>
|
| 58 |
+
<show_in_store>1</show_in_store>
|
| 59 |
+
<comment>Find your API Token in Deskero on Settings > Security Settings > API management</comment>
|
| 60 |
+
</deskero_api_token>
|
| 61 |
+
|
| 62 |
+
</fields>
|
| 63 |
+
</deskero_general_settings>
|
| 64 |
+
|
| 65 |
+
<deskero_widget_settings translate="label">
|
| 66 |
+
<label>Widget Setting</label>
|
| 67 |
+
<frontend_type>text</frontend_type>
|
| 68 |
+
<sort_order>2</sort_order>
|
| 69 |
+
<show_in_default>1</show_in_default>
|
| 70 |
+
<show_in_website>1</show_in_website>
|
| 71 |
+
<show_in_store>1</show_in_store>
|
| 72 |
+
<fields>
|
| 73 |
+
<deskero_widget_active translate="label">
|
| 74 |
+
<label>Widget Active</label>
|
| 75 |
+
<frontend_type>select</frontend_type>
|
| 76 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 77 |
+
<sort_order>1</sort_order>
|
| 78 |
+
<show_in_default>1</show_in_default>
|
| 79 |
+
<show_in_website>1</show_in_website>
|
| 80 |
+
<show_in_store>1</show_in_store>
|
| 81 |
+
<comment>If YES, the widget will be shown on all pages.</comment>
|
| 82 |
+
</deskero_widget_active>
|
| 83 |
+
|
| 84 |
+
<deskero_widget translate="label">
|
| 85 |
+
<label>Widget Code</label>
|
| 86 |
+
<frontend_type>textarea</frontend_type>
|
| 87 |
+
<sort_order>2</sort_order>
|
| 88 |
+
<show_in_default>1</show_in_default>
|
| 89 |
+
<show_in_website>1</show_in_website>
|
| 90 |
+
<show_in_store>1</show_in_store>
|
| 91 |
+
<comment>Login to Deskero, go to Settings > Feedback Widget and copy here your widget embed code.</comment>
|
| 92 |
+
</deskero_widget>
|
| 93 |
+
</fields>
|
| 94 |
+
</deskero_widget_settings>
|
| 95 |
+
|
| 96 |
+
|
| 97 |
+
<deskero_sso_settings translate="label">
|
| 98 |
+
<label>SSO Setting</label>
|
| 99 |
+
<frontend_type>text</frontend_type>
|
| 100 |
+
<sort_order>3</sort_order>
|
| 101 |
+
<show_in_default>1</show_in_default>
|
| 102 |
+
<show_in_website>1</show_in_website>
|
| 103 |
+
<show_in_store>1</show_in_store>
|
| 104 |
+
<fields>
|
| 105 |
+
|
| 106 |
+
<deskero_sso_token translate="label">
|
| 107 |
+
<label>SSO Token</label>
|
| 108 |
+
<frontend_type>text</frontend_type>
|
| 109 |
+
<sort_order>1</sort_order>
|
| 110 |
+
<show_in_default>1</show_in_default>
|
| 111 |
+
<show_in_website>1</show_in_website>
|
| 112 |
+
<show_in_store>1</show_in_store>
|
| 113 |
+
<comment>Find your SSO Token in Deskero on Settings > Security Settings > Shared authentication</comment>
|
| 114 |
+
</deskero_sso_token>
|
| 115 |
+
|
| 116 |
+
<deskero_sso_email translate="label">
|
| 117 |
+
<label>Agent Email</label>
|
| 118 |
+
<frontend_type>text</frontend_type>
|
| 119 |
+
<sort_order>2</sort_order>
|
| 120 |
+
<show_in_default>1</show_in_default>
|
| 121 |
+
<show_in_website>1</show_in_website>
|
| 122 |
+
<show_in_store>1</show_in_store>
|
| 123 |
+
<comment>Your Agent Email in Deskero</comment>
|
| 124 |
+
</deskero_sso_email>
|
| 125 |
+
|
| 126 |
+
</fields>
|
| 127 |
+
</deskero_sso_settings>
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
</groups>
|
| 131 |
+
</deskero_settings>
|
| 132 |
+
</sections>
|
| 133 |
+
</config>
|
app/design/adminhtml/default/default/layout/deskero.xml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout version="0.1.0">
|
| 3 |
+
|
| 4 |
+
<adminhtml_system_config_edit>
|
| 5 |
+
<reference name="head">
|
| 6 |
+
<action method="addCss"><stylesheet>deskero/deskero.css</stylesheet></action>
|
| 7 |
+
</reference>
|
| 8 |
+
</adminhtml_system_config_edit>
|
| 9 |
+
|
| 10 |
+
</layout>
|
app/design/adminhtml/default/default/template/deskero/left-menu.phtml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<h3>Deskero</h3>
|
| 2 |
+
<ul class="tabs">
|
| 3 |
+
|
| 4 |
+
<li>
|
| 5 |
+
<a href="<?php echo $this->getUrl('adminhtml/system_config/edit/section/deskero'); ?>" class="tab-item-link">
|
| 6 |
+
<span><?php echo $this->__('Settings'); ?></span>
|
| 7 |
+
</a>
|
| 8 |
+
</li>
|
| 9 |
+
|
| 10 |
+
<li>
|
| 11 |
+
<a href="<?php echo $this->getUrl('*/*/launch'); ?>" target="_blank" class="tab-item-link">
|
| 12 |
+
<span><?php echo $this->__('Launch Deskero'); ?></span>
|
| 13 |
+
</a>
|
| 14 |
+
</li>
|
| 15 |
+
|
| 16 |
+
<li>
|
| 17 |
+
<a href="<?php echo $this->getUrl('*/*/createTicket'); ?>" class="tab-item-link active">
|
| 18 |
+
<span><?php echo $this->__('Create Ticket'); ?></span>
|
| 19 |
+
</a>
|
| 20 |
+
</li>
|
| 21 |
+
|
| 22 |
+
</ul>
|
app/design/frontend/base/default/layout/deskero.xml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Copyright 2013 Deskero.
|
| 5 |
+
*
|
| 6 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
| 7 |
+
* you may not use this file except in compliance with the License.
|
| 8 |
+
* You may obtain a copy of the License at
|
| 9 |
+
*
|
| 10 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
| 11 |
+
*
|
| 12 |
+
* Unless required by applicable law or agreed to in writing, software
|
| 13 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
| 14 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 15 |
+
* See the License for the specific language governing permissions and
|
| 16 |
+
* limitations under the License.
|
| 17 |
+
*/
|
| 18 |
+
-->
|
| 19 |
+
<layout>
|
| 20 |
+
<default>
|
| 21 |
+
<reference name="before_body_end">
|
| 22 |
+
<block type="deskero/widget" name="deskero_widget"/>
|
| 23 |
+
</reference>
|
| 24 |
+
</default>
|
| 25 |
+
</layout>
|
app/etc/modules/Deskero_Deskero.xml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Deskero_Deskero>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>community</codePool>
|
| 7 |
+
<version>0.1.0</version>
|
| 8 |
+
</Deskero_Deskero>
|
| 9 |
+
</modules>
|
| 10 |
+
</config>
|
app/locale/en_US/Deskero_Deskero.csv
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"Deskero Settings","Deskero Settings"
|
| 2 |
+
"Launch Deskero","Launch Deskero"
|
| 3 |
+
"Settings","Settings"
|
| 4 |
+
"General Setting","General Setting"
|
| 5 |
+
"Your Deskero Domain","Your Deskero Domain"
|
| 6 |
+
"Your Deskero Domain. Example: https://yourdomain.deskero.com","Your Deskero Domain. Example: https://yourdomain.deskero.com"
|
| 7 |
+
"Client ID","Client ID"
|
| 8 |
+
"Find your Client ID in Deskero on Settings > Security Settings > API management","Find your Client Id in Deskero on Settings > Security Settings > API management"
|
| 9 |
+
"API Token","API Token"
|
| 10 |
+
"Find your API Token in Deskero on Settings > Security Settings > API management","Find your API Token in Deskero on Settings > Security Settings > API management"
|
| 11 |
+
"Widget Setting","Widget Setting"
|
| 12 |
+
"Widget Active","Widget Active"
|
| 13 |
+
"If YES, the widget will be shown on all pages.","If YES, the widget will be shown on all pages."
|
| 14 |
+
"Widget Code","Widget Code"
|
| 15 |
+
"Login to Deskero, go to Settings > Feedback Widget and copy here your widget embed code.","Login to Deskero, go to Settings > Feedback Widget and copy here your widget embed code."
|
| 16 |
+
"SSO Setting","SSO Setting"
|
| 17 |
+
"SSO Token","SSO Token"
|
| 18 |
+
"Find your SSO Token in Deskero on Settings > Security Settings > Shared authentication","Find your SSO Token in Deskero on Settings > Security Settings > Shared authentication"
|
| 19 |
+
"Agent Email","Agent Email"
|
| 20 |
+
"Your Agent Email in Deskero","Your Agent Email in Deskero"
|
| 21 |
+
"New Ticket","New Ticket"
|
| 22 |
+
"Create Ticket","Create Ticket"
|
| 23 |
+
"Customer Email","Customer Email"
|
| 24 |
+
"Customer Name","Customer Name"
|
| 25 |
+
"Subject","Subject"
|
| 26 |
+
"Type","Type"
|
| 27 |
+
"Description","Description"
|
| 28 |
+
"Ticket <b>#%s</b> has been created!","Ticket <b>#%s</b> has been created!"
|
| 29 |
+
"View ticket in Deskero","View ticket in Deskero"
|
| 30 |
+
"Error in ticket creation!","Error in ticket creation!"
|
| 31 |
+
"Customer not found!","Customer not found!"
|
| 32 |
+
"Can't connect to Deskero API!","Can't connect to Deskero API!"
|
| 33 |
+
"Oops! ","Oops! "
|
| 34 |
+
"Customer Email is required!","Customer Email is required!"
|
| 35 |
+
"Customer Email is not a valid address!","Customer Email is not a valid address!"
|
| 36 |
+
"Customer Name is required!","Customer Name is required!"
|
| 37 |
+
"Type is required!","Type is required!"
|
| 38 |
+
"Subject is required!","Subject is required!"
|
| 39 |
+
"Description is required!","Description is required!"
|
| 40 |
+
"No data sended!","No data sended!"
|
| 41 |
+
"To launch Deskero, set YOUR DESKERO DOMAIN, TOKEN SSO and AGENT EMAIL!","To launch Deskero, set YOUR DESKERO DOMAIN, TOKEN SSO and AGENT EMAIL!"
|
app/locale/it_IT/Deskero_Deskero.csv
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"Deskero Settings","Impostazioni Deskero"
|
| 2 |
+
"Launch Deskero","Avvia Deskero"
|
| 3 |
+
"Settings","Impostazioni"
|
| 4 |
+
"General Setting","Impostazioni generali"
|
| 5 |
+
"Your Deskero Domain","Dominio in Deskero"
|
| 6 |
+
"Your Deskero Domain. Example: https://yourdomain.deskero.com","Il tuo dominio in Deskero. Esempio: https://iltuodominio.deskero.com"
|
| 7 |
+
"Client ID","Client ID"
|
| 8 |
+
"Find your Client ID in Deskero on Settings > Security Settings > API management","Trova il tuo Client ID su Deskero nel menù Configurazioni > Sicurezza > Gestione API"
|
| 9 |
+
"API Token","Token API"
|
| 10 |
+
"Find your API Token in Deskero on Settings > Security Settings > API management","Trova il tuo Token SSO su Deskero nel menù Configurazioni > Sicurezza > Gestione API"
|
| 11 |
+
"Widget Setting","Impostazioni widget"
|
| 12 |
+
"Widget Active","Widget Attivo"
|
| 13 |
+
"If YES, the widget will be shown on all pages.","Se YES, il widget apparirà su tutte le pagine."
|
| 14 |
+
"Widget Code","Codice widget"
|
| 15 |
+
"Login to Deskero, go to Settings > Feedback Widget and copy here your widget embed code.","Accedi a Deskero, vai nel menù Configurazioni > Widget per feedback e copia qui il tuo codice da incorporare."
|
| 16 |
+
"SSO Setting","Impostazioni SSO"
|
| 17 |
+
"SSO Token","Token SSO"
|
| 18 |
+
"Find your SSO Token in Deskero on Settings > Security Settings > Shared authentication","Trova il tuo Token SSO su Deskero nel menù Configurazioni > Sicurezza > Autenticazione condivisa"
|
| 19 |
+
"Agent Email","Email agente"
|
| 20 |
+
"Your Agent Email in Deskero","La tua email da operatore in Deskero"
|
| 21 |
+
"New Ticket","Nuovo Ticket"
|
| 22 |
+
"Create Ticket","Crea Ticket"
|
| 23 |
+
"Customer Email","Email del cliente"
|
| 24 |
+
"Customer Name","Nome del cliente"
|
| 25 |
+
"Subject","Oggetto"
|
| 26 |
+
"Type","Tipo"
|
| 27 |
+
"Description","Descrizione"
|
| 28 |
+
"Ticket <b>#%s</b> has been created!","Il ticket <b>#%s</b> è stato creato!"
|
| 29 |
+
"View ticket in Deskero","Leggi il ticket su Deskero"
|
| 30 |
+
"Error in ticket creation!","Errore durante la creazione del ticket"
|
| 31 |
+
"Customer not found!","Cliente non trovato!"
|
| 32 |
+
"Can't connect to Deskero API!","Connessione alle API Deskero non riuscita!"
|
| 33 |
+
"Oops! ","Oops! "
|
| 34 |
+
"Customer Email is required!","L'email del cliente è obbligatoria!"
|
| 35 |
+
"Customer Email is not a valid address!","L'email del cliente non è un indirizzo valido!"
|
| 36 |
+
"Customer Name is required!","Il nome del cliente è obbligatorio!"
|
| 37 |
+
"Type is required!","Il tipo di ticket è obbligatorio!"
|
| 38 |
+
"Subject is required!","L'oggetto è obbligatorio!"
|
| 39 |
+
"Description is required!","La descrizione è obbligatoria!"
|
| 40 |
+
"No data sended!","Nessun dato inviato!"
|
| 41 |
+
"To launch Deskero, set YOUR DESKERO DOMAIN, TOKEN SSO and AGENT EMAIL!","Per avviare Deskero, imposta il TUO DOMINIO IN DESKERO, il TOKEN SSO e l'EMAIL AGENTE!"
|
package.xml
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>Deskero</name>
|
| 4 |
+
<version>1.0.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license>GPL</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Deskero for Magento is a customized extension to integrate your Deskero help desk into your Magento website.</summary>
|
| 10 |
+
<description><p><b>Deskero</b> is an innovative cloud-based <b>help desk software</b> born from an innovative idea: creating a <b>new kind of relationship with customers</b> that really focuses on their needs.</p>
|
| 11 |
+

|
| 12 |
+
<p>Emails, phone calls, chats, web sites, social networks: through Deskero every message from your customers will be instantly accessible with a few clicks!</p>
|
| 13 |
+

|
| 14 |
+
<p>This extension lets you manage all the customers’ requests with Deskero, the cloud-based help desk software that offers companies simple and effective tools to make customer care easier, quicker and more modern.</p>
|
| 15 |
+

|
| 16 |
+
<p>
|
| 17 |
+
<b>Features include:</b><br />
|
| 18 |
+
- Enable Single Sign-on for administrators<br />
|
| 19 |
+
- Add support tickets in every moment while on Magento website<br />
|
| 20 |
+
- Gather feedback directly from your Magento website through Deskero widget<br />
|
| 21 |
+
</p>
|
| 22 |
+

|
| 23 |
+
<p>Deskero extension for Magento is available only to Business or Power users.</p></description>
|
| 24 |
+
<notes>First release</notes>
|
| 25 |
+
<authors><author><name>Fausto Iannuzzi</name><user>faustoiannuzzi</user><email>fausto@deskero.com</email></author></authors>
|
| 26 |
+
<date>2013-08-28</date>
|
| 27 |
+
<time>10:30:02</time>
|
| 28 |
+
<contents><target name="magecommunity"><dir name="Deskero"><dir name="Deskero"><dir name="Block"><dir name="Adminhtml"><file name="Menu.php" hash="2272bbc9281bfac7194a0817cdee2d88"/><dir name="Ticket"><dir name="Create"><file name="Create.php" hash="ac26abca01db34e24831fc5d31fb6c36"/><file name="Form.php" hash="7dadd1df6ff2817c00808fa2d0396bf5"/></dir></dir></dir><file name="Widget.php" hash="0abcc9c7e1852be5b0b69a4b244bb430"/></dir><dir name="Helper"><file name="Data.php" hash="61b36df7759d319fd25e1a58850fbd30"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="DeskeroController.php" hash="21864e4abc6954301f831858d38033c8"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="b93362d17b15de9a869a8454d38e9ab2"/><file name="config.xml" hash="f999300462a8af5375a6af81481743bc"/><file name="system.xml" hash="1fbe3307eb6be5e043eaf2cbb7bd8f34"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="deskero.xml" hash="dcdec81f7fcc34fb1a2dc9f218360eef"/></dir><dir name="template"><dir name="deskero"><file name="left-menu.phtml" hash="b355e7457cfef5579b342f9a5f9511d4"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="deskero.xml" hash="f1c745105450382b869723f9743e27fe"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Deskero_Deskero.xml" hash="7ccffebaf8d06567bd340bc29f583b59"/></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Deskero_Deskero.csv" hash="8d384bc914d6b7d0b09ad28c7b864071"/></dir><dir name="it_IT"><file name="Deskero_Deskero.csv" hash="0cea6f325b6c15df4db3b17e2aeaa447"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="deskero"><file name="deskero-menu.png" hash="ccb5b77f7074fa8ace567ec5dc28bd54"/><file name="deskero.css" hash="9e87ec2d6645f48089661212d0521e21"/><file name="header-logo.png" hash="1777ad0345115961079a14a4c62eac1e"/></dir></dir></dir></dir></target></contents>
|
| 29 |
+
<compatible/>
|
| 30 |
+
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 31 |
+
</package>
|
skin/adminhtml/default/default/deskero/deskero-menu.png
ADDED
|
Binary file
|
skin/adminhtml/default/default/deskero/deskero.css
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ul.tabs a.deskero-section,
|
| 2 |
+
ul.tabs a.deskero-section:hover {
|
| 3 |
+
border-bottom: 1px solid #BEBEBE;
|
| 4 |
+
padding: 0.5em 0.5em 0 1.5em;
|
| 5 |
+
text-indent: -9999px;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
ul.tabs a.deskero-section.active,
|
| 9 |
+
ul.tabs a.deskero-section.active:hover {
|
| 10 |
+
background: none repeat scroll 0 0 white;
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
ul.tabs a.deskero-section span,
|
| 14 |
+
ul.tabs a.deskero-section:hover span {
|
| 15 |
+
background:url(deskero-menu.png) no-repeat 0 0;
|
| 16 |
+
overflow:hidden;
|
| 17 |
+
padding:0;
|
| 18 |
+
width:120px;
|
| 19 |
+
height:22px;
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
h3.deskero-header {
|
| 24 |
+
background: url(header-logo.png) no-repeat;
|
| 25 |
+
width: 231px;
|
| 26 |
+
height: 65px;
|
| 27 |
+
padding: 0;
|
| 28 |
+
text-indent: -9999px;
|
| 29 |
+
}
|
skin/adminhtml/default/default/deskero/header-logo.png
ADDED
|
Binary file
|
