├── .gitignore ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── modman └── src ├── app ├── code │ └── community │ │ └── Zendesk │ │ └── Zendesk │ │ ├── Block │ │ ├── Adminhtml │ │ │ ├── Config │ │ │ │ ├── Buttons │ │ │ │ │ ├── Generate.php │ │ │ │ │ ├── MagentoTest.php │ │ │ │ │ ├── Signup.php │ │ │ │ │ ├── Sync.php │ │ │ │ │ └── ZendeskTest.php │ │ │ │ └── Link.php │ │ │ ├── Create │ │ │ │ ├── Customer.php │ │ │ │ ├── Customer │ │ │ │ │ ├── Grid.php │ │ │ │ │ └── Grid │ │ │ │ │ │ └── Renderer │ │ │ │ │ │ └── Action.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Edit │ │ │ │ │ └── Form.php │ │ │ │ ├── Order.php │ │ │ │ └── Order │ │ │ │ │ ├── Grid.php │ │ │ │ │ └── Grid │ │ │ │ │ └── Renderer │ │ │ │ │ └── Action.php │ │ │ ├── Dashboard.php │ │ │ ├── Dashboard │ │ │ │ ├── Grids.php │ │ │ │ └── Tab │ │ │ │ │ └── Tickets │ │ │ │ │ └── Grid │ │ │ │ │ ├── Abstract.php │ │ │ │ │ ├── All.php │ │ │ │ │ ├── Massaction.php │ │ │ │ │ ├── Renderer │ │ │ │ │ ├── Action.php │ │ │ │ │ ├── Group.php │ │ │ │ │ ├── Type.php │ │ │ │ │ └── User.php │ │ │ │ │ └── View.php │ │ │ ├── Log.php │ │ │ ├── Menu.php │ │ │ └── Order │ │ │ │ └── View │ │ │ │ └── Tickets.php │ │ ├── Customer │ │ │ ├── Tickets.php │ │ │ └── Tickets │ │ │ │ └── List.php │ │ └── WebWidget.php │ │ ├── Helper │ │ ├── Data.php │ │ ├── JWT.php │ │ ├── Log.php │ │ └── Sync.php │ │ ├── LICENSE.txt │ │ ├── Model │ │ ├── Api │ │ │ ├── Abstract.php │ │ │ ├── ConfigSets.php │ │ │ ├── Groups.php │ │ │ ├── Requesters.php │ │ │ ├── SupportAddresses.php │ │ │ ├── Tickets.php │ │ │ ├── Users.php │ │ │ └── Views.php │ │ ├── Customer.php │ │ ├── Observer.php │ │ ├── Resource │ │ │ ├── Tickets.php │ │ │ └── Tickets │ │ │ │ └── Collection.php │ │ ├── Search.php │ │ ├── Search │ │ │ └── Field.php │ │ ├── Source │ │ │ ├── Sortdir.php │ │ │ ├── Sortorder.php │ │ │ └── Views.php │ │ └── Tickets.php │ │ ├── controllers │ │ ├── Adminhtml │ │ │ └── ZendeskController.php │ │ ├── ApiController.php │ │ ├── Customer │ │ │ └── TicketsController.php │ │ ├── IndexController.php │ │ └── SsoController.php │ │ ├── data │ │ └── zendesk_setup │ │ │ ├── data-upgrade-1.3.0-1.4.0.php │ │ │ ├── data-upgrade-1.3.1-1.4.0.php │ │ │ ├── data-upgrade-1.4.2-2.0.0.php │ │ │ ├── data-upgrade-2.0.5-2.0.6.php │ │ │ └── data-upgrade-2.0.6-2.1.13.php │ │ ├── etc │ │ ├── config.xml │ │ ├── jstranslator.xml │ │ └── system.xml │ │ └── lib │ │ └── functions.php ├── design │ ├── adminhtml │ │ └── default │ │ │ └── default │ │ │ ├── layout │ │ │ └── zendesk.xml │ │ │ └── template │ │ │ └── zendesk │ │ │ ├── autocomplete.phtml │ │ │ ├── config │ │ │ ├── button-generate.phtml │ │ │ ├── button-signup.phtml │ │ │ ├── button-sync.phtml │ │ │ ├── button-test-magento.phtml │ │ │ ├── button-test-zendesk.phtml │ │ │ └── link.phtml │ │ │ ├── create │ │ │ ├── customer.phtml │ │ │ └── order.phtml │ │ │ ├── customer │ │ │ └── tickets.phtml │ │ │ ├── dashboard │ │ │ ├── empty.phtml │ │ │ └── index.phtml │ │ │ ├── left-menu.phtml │ │ │ ├── log │ │ │ └── index.phtml │ │ │ ├── order │ │ │ └── tickets.phtml │ │ │ ├── tickets │ │ │ └── tickets.phtml │ │ │ ├── translations.phtml │ │ │ └── widget │ │ │ └── grid.phtml │ └── frontend │ │ └── base │ │ └── default │ │ ├── layout │ │ └── zendesk.xml │ │ └── template │ │ └── zendesk │ │ └── customer │ │ ├── tickets.phtml │ │ └── tickets │ │ └── list.phtml ├── etc │ └── modules │ │ └── Zendesk_Zendesk.xml └── locale │ ├── da_DA │ └── Zendesk_Zendesk.csv │ ├── de_DE │ └── Zendesk_Zendesk.csv │ ├── en_CA │ └── Zendesk_Zendesk.csv │ ├── en_GB │ └── Zendesk_Zendesk.csv │ ├── en_US │ ├── Zendesk_Zendesk.csv │ └── Zendesk_Zendesk.yml │ ├── es_419 │ └── Zendesk_Zendesk.csv │ ├── es_ES │ └── Zendesk_Zendesk.csv │ ├── fr_CA │ └── Zendesk_Zendesk.csv │ ├── fr_FR │ └── Zendesk_Zendesk.csv │ ├── it_IT │ └── Zendesk_Zendesk.csv │ ├── ja_JA │ └── Zendesk_Zendesk.csv │ ├── ja_JP │ └── Zendesk_Zendesk.csv │ ├── ko_KO │ └── Zendesk_Zendesk.csv │ ├── ko_KR │ └── Zendesk_Zendesk.csv │ ├── nl_NL │ └── Zendesk_Zendesk.csv │ ├── no_NO │ └── Zendesk_Zendesk.csv │ ├── pt_BR │ └── Zendesk_Zendesk.csv │ ├── pt_PT │ └── Zendesk_Zendesk.csv │ ├── ru_RU │ └── Zendesk_Zendesk.csv │ ├── sv_SV │ └── Zendesk_Zendesk.csv │ ├── tr_TR │ └── Zendesk_Zendesk.csv │ ├── uk_UK │ └── Zendesk_Zendesk.csv │ ├── zh_CN │ └── Zendesk_Zendesk.csv │ └── zh_TW │ └── Zendesk_Zendesk.csv ├── js └── zendesk │ └── validation.js └── skin └── adminhtml └── default └── default └── zendesk ├── button.png ├── icon.png ├── zendesk-logo.png ├── zendesk-tab.png └── zendesk.css /.gitignore: -------------------------------------------------------------------------------- 1 | **/.DS_Store 2 | 3 | /vendor 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Zendesk Inc. + agnoStack, Inc. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zendesk/zendesk", 3 | "license": "OSL-3.0", 4 | "type": "magento-module", 5 | "description": "Zendesk Extension for Magento", 6 | "homepage": "https://github.com/zendesk/magento_extension", 7 | "require": { 8 | "magento-hackathon/magento-composer-installer": "*" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modman: -------------------------------------------------------------------------------- 1 | src/app/code/community/Zendesk/Zendesk app/code/community/Zendesk/Zendesk 2 | src/app/design/adminhtml/default/default/layout/zendesk.xml app/design/adminhtml/default/default/layout/zendesk.xml 3 | src/app/design/adminhtml/default/default/template/zendesk app/design/adminhtml/default/default/template/zendesk 4 | src/app/design/frontend/base/default/layout/zendesk.xml app/design/frontend/base/default/layout/zendesk.xml 5 | src/app/design/frontend/base/default/template/zendesk app/design/frontend/base/default/template/zendesk 6 | src/app/etc/modules/Zendesk_Zendesk.xml app/etc/modules/Zendesk_Zendesk.xml 7 | src/app/locale/de_DE/Zendesk_Zendesk.csv app/locale/de_DE/Zendesk_Zendesk.csv 8 | src/app/locale/en_US/Zendesk_Zendesk.csv app/locale/en_US/Zendesk_Zendesk.csv 9 | src/app/locale/en_US/Zendesk_Zendesk.yml app/locale/en_US/Zendesk_Zendesk.yml 10 | src/app/locale/es_ES/Zendesk_Zendesk.csv app/locale/es_ES/Zendesk_Zendesk.csv 11 | src/app/locale/fr_FR/Zendesk_Zendesk.csv app/locale/fr_FR/Zendesk_Zendesk.csv 12 | src/app/locale/it_IT/Zendesk_Zendesk.csv app/locale/it_IT/Zendesk_Zendesk.csv 13 | src/app/locale/ja_JP/Zendesk_Zendesk.csv app/locale/ja_JP/Zendesk_Zendesk.csv 14 | src/app/locale/ko_KR/Zendesk_Zendesk.csv app/locale/ko_KR/Zendesk_Zendesk.csv 15 | src/app/locale/nl_NL/Zendesk_Zendesk.csv app/locale/nl_NL/Zendesk_Zendesk.csv 16 | src/app/locale/pt_BR/Zendesk_Zendesk.csv app/locale/pt_BR/Zendesk_Zendesk.csv 17 | src/app/locale/ru_RU/Zendesk_Zendesk.csv app/locale/ru_RU/Zendesk_Zendesk.csv 18 | src/app/locale/zh_CN/Zendesk_Zendesk.csv app/locale/zh_CN/Zendesk_Zendesk.csv 19 | src/app/locale/zh_TW/Zendesk_Zendesk.csv app/locale/zh_TW/Zendesk_Zendesk.csv 20 | src/skin/adminhtml/default/default/zendesk skin/adminhtml/default/default/zendesk 21 | src/js/zendesk js/zendesk 22 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Config/Buttons/Generate.php: -------------------------------------------------------------------------------- 1 | getTemplate()) { 24 | $this->setTemplate('zendesk/config/button-generate.phtml'); 25 | } 26 | return $this; 27 | } 28 | 29 | public function render(Varien_Data_Form_Element_Abstract $element) 30 | { 31 | $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue(); 32 | return parent::render($element); 33 | } 34 | 35 | protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) 36 | { 37 | $originalData = $element->getOriginalData(); 38 | $this->addData(array( 39 | 'button_label' => Mage::helper('zendesk')->__($originalData['button_label']), 40 | 'html_id' => $element->getHtmlId(), 41 | 'url' => Mage::getSingleton('adminhtml/url')->getUrl('*/setup/start') 42 | )); 43 | 44 | return $this->_toHtml(); 45 | } 46 | } -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Config/Buttons/MagentoTest.php: -------------------------------------------------------------------------------- 1 | getTemplate()) { 24 | $this->setTemplate('zendesk/config/button-test-magento.phtml'); 25 | } 26 | return $this; 27 | } 28 | 29 | public function render(Varien_Data_Form_Element_Abstract $element) 30 | { 31 | $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue(); 32 | return parent::render($element); 33 | } 34 | 35 | protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) 36 | { 37 | $originalData = $element->getOriginalData(); 38 | $this->addData(array( 39 | 'button_label' => Mage::helper('zendesk')->__($originalData['button_label']), 40 | 'html_id' => $element->getHtmlId(), 41 | 'url' => Mage::getSingleton('adminhtml/url')->getUrl('*/setup/start') 42 | )); 43 | 44 | return $this->_toHtml(); 45 | } 46 | 47 | public function getTestUrl() 48 | { 49 | return Mage::getUrl('zendesk/api/users/1'); 50 | } 51 | 52 | public function getAuthHeader() 53 | { 54 | return 'Token token="' . Mage::helper('zendesk')->getApiToken(false) . '"'; 55 | } 56 | } -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Config/Buttons/Signup.php: -------------------------------------------------------------------------------- 1 | getTemplate()) { 24 | $this->setTemplate('zendesk/config/button-signup.phtml'); 25 | } 26 | return $this; 27 | } 28 | 29 | public function render(Varien_Data_Form_Element_Abstract $element) 30 | { 31 | $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue(); 32 | return parent::render($element); 33 | } 34 | 35 | protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) 36 | { 37 | $originalData = $element->getOriginalData(); 38 | $this->addData(array( 39 | 'button_label' => Mage::helper('zendesk')->__($originalData['button_label']), 40 | 'button_url' => Mage::helper('zendesk')->__($originalData['button_url']), 41 | 'html_id' => $element->getHtmlId(), 42 | 'url' => Mage::getSingleton('adminhtml/url')->getUrl('*/setup/start') 43 | )); 44 | 45 | return $this->_toHtml(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Config/Buttons/Sync.php: -------------------------------------------------------------------------------- 1 | getTemplate()) { 24 | $this->setTemplate('zendesk/config/button-sync.phtml'); 25 | } 26 | return $this; 27 | } 28 | 29 | public function render(Varien_Data_Form_Element_Abstract $element) 30 | { 31 | $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue(); 32 | return parent::render($element); 33 | } 34 | 35 | protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) 36 | { 37 | $originalData = $element->getOriginalData(); 38 | $this->addData(array( 39 | 'button_label' => Mage::helper('zendesk')->__($originalData['button_label']), 40 | 'html_id' => $element->getHtmlId(), 41 | 'url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/zendesk/sync') 42 | )); 43 | 44 | return $this->_toHtml(); 45 | } 46 | 47 | public function getTestUrl() 48 | { 49 | return Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/zendesk/sync'); 50 | } 51 | 52 | public function getAuthHeader() 53 | { 54 | return 'Token token="' . Mage::helper('zendesk')->getApiToken(false) . '"'; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Config/Buttons/ZendeskTest.php: -------------------------------------------------------------------------------- 1 | getTemplate()) { 24 | $this->setTemplate('zendesk/config/button-test-zendesk.phtml'); 25 | } 26 | return $this; 27 | } 28 | 29 | public function render(Varien_Data_Form_Element_Abstract $element) 30 | { 31 | $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue(); 32 | return parent::render($element); 33 | } 34 | 35 | protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) 36 | { 37 | $originalData = $element->getOriginalData(); 38 | $this->addData(array( 39 | 'button_label' => Mage::helper('zendesk')->__($originalData['button_label']), 40 | 'html_id' => $element->getHtmlId(), 41 | 'url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/zendesk/checkOutbound') 42 | )); 43 | 44 | return $this->_toHtml(); 45 | } 46 | } -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Config/Link.php: -------------------------------------------------------------------------------- 1 | getTemplate()) { 24 | $this->setTemplate('zendesk/config/link.phtml'); 25 | } 26 | return $this; 27 | } 28 | 29 | public function render(Varien_Data_Form_Element_Abstract $element) 30 | { 31 | $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue(); 32 | return parent::render($element); 33 | } 34 | 35 | protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) 36 | { 37 | // TODO: Check if the translation used here is actually superfluous 38 | $data = $element->getOriginalData(); 39 | 40 | $path = $data['destination']; 41 | $label = $data['value']; 42 | 43 | $url = Mage::helper('zendesk')->getUrl('raw', $path); 44 | 45 | $this->addData(array('label' => $label, 'link_url' => $url)); 46 | 47 | return $this->_toHtml(); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Customer.php: -------------------------------------------------------------------------------- 1 | _controller = false; 24 | parent::__construct(); 25 | $this->setId('zendesk_create_customer_search'); 26 | } 27 | 28 | public function getHeaderText() 29 | { 30 | return Mage::helper('zendesk')->__('Please Select User to Add'); 31 | } 32 | 33 | public function getButtonsHtml($area = null) 34 | { 35 | $addButtonData = array( 36 | 'label' => Mage::helper('zendesk')->__('Select User'), 37 | 'onclick' => 'showUsers()', 38 | 'id' => 'show-users' 39 | ); 40 | return $this->getLayout()->createBlock('adminhtml/widget_button')->setData($addButtonData)->toHtml(); 41 | } 42 | 43 | public function getHeaderCssClass() 44 | { 45 | return 'head-catalog-customer'; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Customer/Grid.php: -------------------------------------------------------------------------------- 1 | setId('zendesk_create_customer_search_grid'); 25 | $this->setDefaultSort('entity_id'); 26 | $this->setUseAjax(true); 27 | if ($this->getRequest()->getParam('collapse')) { 28 | $this->setIsCollapsed(true); 29 | } 30 | } 31 | 32 | /** 33 | * Retrieve quote store object 34 | * @return Mage_Core_Model_Store 35 | */ 36 | public function getStore() 37 | { 38 | return Mage::getSingleton('adminhtml/session_quote')->getStore(); 39 | } 40 | 41 | /** 42 | * Prepare collection to be displayed in the grid 43 | * 44 | * @return Mage_Adminhtml_Block_Sales_Order_Create_Search_Grid 45 | */ 46 | protected function _prepareCollection() 47 | { 48 | $collection = Mage::getModel('customer/customer')->getCollection() 49 | ->addAttributeToSelect('firstname') 50 | ->addAttributeToSelect('lastname') 51 | ->addAttributeToSelect('email'); 52 | 53 | 54 | $this->setCollection($collection); 55 | return parent::_prepareCollection(); 56 | } 57 | 58 | /** 59 | * Prepare columns 60 | * 61 | * @return Mage_Adminhtml_Block_Sales_Order_Create_Search_Grid 62 | */ 63 | protected function _prepareColumns() 64 | { 65 | $this->addColumn('entity_id', array( 66 | 'header' => Mage::helper('zendesk')->__('ID'), 67 | 'sortable' => true, 68 | 'width' => '60', 69 | 'index' => 'entity_id' 70 | )); 71 | $this->addColumn('firstname', array( 72 | 'header' => Mage::helper('zendesk')->__('Firstname'), 73 | 'index' => 'firstname' 74 | )); 75 | $this->addColumn('lastname', array( 76 | 'header' => Mage::helper('zendesk')->__('Lastname'), 77 | 'index' => 'lastname' 78 | )); 79 | $this->addColumn('email', array( 80 | 'header' => Mage::helper('zendesk')->__('Email'), 81 | 'index' => 'email' 82 | )); 83 | $this->addColumn('action', array( 84 | 'header' => Mage::helper('zendesk')->__('Action'), 85 | 'renderer' => 'zendesk/adminhtml_create_customer_grid_renderer_action', 86 | 'filter' => false, 87 | 'sortable' => false 88 | )); 89 | 90 | return parent::_prepareColumns(); 91 | } 92 | 93 | public function getGridUrl() 94 | { 95 | return $this->getUrl('adminhtml/zendesk/loadBlock', array('block'=>'customer_grid', '_current' => true, 'collapse' => null)); 96 | } 97 | 98 | public function getRowUrl($row) 99 | { 100 | return ""; 101 | } 102 | 103 | } 104 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Customer/Grid/Renderer/Action.php: -------------------------------------------------------------------------------- 1 | getId()) { 23 | return ""; 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Edit.php: -------------------------------------------------------------------------------- 1 | _controller = false; 23 | parent::_construct(); 24 | } 25 | 26 | protected function _preparelayout() 27 | { 28 | $this->removeButton('delete'); 29 | $this->removeButton('back'); 30 | $this->removeButton('reset'); 31 | $this->removeButton('save'); 32 | 33 | if(Mage::registry('zendesk_create_data')) { 34 | $data = Mage::registry('zendesk_create_data'); 35 | 36 | if(isset($data['order_id'])) { 37 | $this->_addButton('back', array( 38 | 'label' => Mage::helper('adminhtml')->__('Back'), 39 | 'onclick' => 'setLocation(\'' . $this->getZdBackUrl($data['order_id']) . '\')', 40 | 'class' => 'back', 41 | ), -1); 42 | } 43 | } 44 | 45 | $this->_addButton('save', array( 46 | 'label' => Mage::helper('zendesk')->__('Create Ticket'), 47 | 'onclick' => 'editForm.submit();', 48 | 'class' => 'save', 49 | ), 1); 50 | $this->setChild('form', $this->getLayout()->createBlock('zendesk/adminhtml_create_edit_form')); 51 | return parent::_prepareLayout(); 52 | } 53 | 54 | public function getFormHtml() 55 | { 56 | $formHtml = parent::getFormHtml(); 57 | return $formHtml; 58 | } 59 | 60 | public function getHeaderText() 61 | { 62 | return Mage::helper('zendesk')->__('New Ticket'); 63 | } 64 | 65 | public function getZdBackUrl($orderId) 66 | { 67 | if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 68 | return $this->getUrl('adminhtml/sales_order/view', array('order_id' => $orderId)); 69 | } 70 | return false; 71 | } 72 | 73 | public function getSaveUrl() 74 | { 75 | return $this->getUrl('*/*/save', array('_current' => true, 'back' => null)); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Edit/Form.php: -------------------------------------------------------------------------------- 1 | 'edit_form', 24 | 'action' => $this->getData('action'), 25 | 'method' => 'post' 26 | )); 27 | 28 | $fieldset = $form->addFieldset('base', array( 29 | 'legend'=>Mage::helper('adminhtml')->__('New Ticket'), 30 | 'class'=>'fieldset-wide' 31 | )); 32 | 33 | $fieldset->addField('requester', 'text', array( 34 | 'name' => 'requester', 35 | 'label' => Mage::helper('zendesk')->__('Requester Email'), 36 | 'title' => Mage::helper('zendesk')->__('Requester Email'), 37 | 'required' => true, 38 | 'class' => 'requester' 39 | )); 40 | 41 | $fieldset->addField('requester_name', 'text', array( 42 | 'name' => 'requester_name', 43 | 'label' => Mage::helper('zendesk')->__('Requester Name'), 44 | 'title' => Mage::helper('zendesk')->__('Requester Name'), 45 | 'required' => false, 46 | 'class' => 'requester' 47 | )); 48 | 49 | if(Mage::getModel('customer/customer')->getSharingConfig()->isWebsiteScope()) { 50 | $fieldset->addField('website_id', 'select', array( 51 | 'name' => 'website_id', 52 | 'label' => Mage::helper('zendesk')->__('Requester Website'), 53 | 'title' => Mage::helper('zendesk')->__('Requester Website'), 54 | 'required' => true, 55 | 'values' => Mage::getModel('adminhtml/system_config_source_website')->toOptionArray(), 56 | )); 57 | } 58 | 59 | $fieldset->addField('subject', 'text', array( 60 | 'name' => 'subject', 61 | 'label' => Mage::helper('zendesk')->__('Subject'), 62 | 'title' => Mage::helper('zendesk')->__('Subject'), 63 | 'required' => true 64 | )); 65 | 66 | $fieldset->addField('status', 'select', array( 67 | 'name' => 'status', 68 | 'label' => Mage::helper('zendesk')->__('Status'), 69 | 'title' => Mage::helper('zendesk')->__('Status'), 70 | 'required' => true, 71 | 'values' => array( 72 | array('label' => 'New', 'value' => 'new'), 73 | array('label' => 'Open', 'value' => 'open'), 74 | array('label' => 'Pending', 'value' => 'pending'), 75 | array('label' => 'Solved', 'value' => 'solved'), 76 | ) 77 | )); 78 | 79 | $fieldset->addField('type', 'select', array( 80 | 'name' => 'type', 81 | 'label' => Mage::helper('zendesk')->__('Type'), 82 | 'title' => Mage::helper('zendesk')->__('Type'), 83 | 'required' => false, 84 | 'values' => array( 85 | array('label' => '-', 'value' => ''), 86 | array('label' => 'Problem', 'value' => 'problem'), 87 | array('label' => 'Incident', 'value' => 'incident'), 88 | array('label' => 'Question', 'value' => 'question'), 89 | array('label' => 'Task', 'value' => 'task'), 90 | ) 91 | )); 92 | 93 | $fieldset->addField('priority', 'select', array( 94 | 'name' => 'priority', 95 | 'label' => Mage::helper('zendesk')->__('Priority'), 96 | 'title' => Mage::helper('zendesk')->__('Priority'), 97 | 'required' => false, 98 | 'values' => array( 99 | array('label' => 'Low', 'value' => 'low'), 100 | array('label' => 'Normal', 'value' => 'normal'), 101 | array('label' => 'High', 'value' => 'high'), 102 | array('label' => 'Urgent', 'value' => 'urgent'), 103 | ) 104 | )); 105 | 106 | $fieldset->addField('order', 'text', array( 107 | 'name' => 'order', 108 | 'label' => Mage::helper('zendesk')->__('Order Number'), 109 | 'title' => Mage::helper('zendesk')->__('Order Number'), 110 | 'required' => false 111 | )); 112 | 113 | $fieldset->addField('description', 'textarea', array( 114 | 'name' => 'description', 115 | 'label' => Mage::helper('zendesk')->__('Description'), 116 | 'title' => Mage::helper('zendesk')->__('Description'), 117 | 'required' => true 118 | )); 119 | 120 | if (Mage::registry('zendesk_create_data')) { 121 | $form->setValues(Mage::registry('zendesk_create_data')); 122 | } 123 | 124 | $form->setUseContainer(true); 125 | $form->setMethod('post'); 126 | $this->setForm($form); 127 | return parent::_prepareForm(); 128 | } 129 | 130 | } 131 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Order.php: -------------------------------------------------------------------------------- 1 | _controller = false; 24 | parent::__construct(); 25 | $this->setId('zendesk_create_order_search'); 26 | } 27 | 28 | public function getHeaderText() 29 | { 30 | return Mage::helper('zendesk')->__('Please Select Order to Add'); 31 | } 32 | 33 | public function getButtonsHtml($area = null) 34 | { 35 | $addButtonData = array( 36 | 'label' => Mage::helper('zendesk')->__('Select Order'), 37 | 'onclick' => 'showOrders()', 38 | 'id' => 'show-orders' 39 | ); 40 | return $this->getLayout()->createBlock('adminhtml/widget_button')->setData($addButtonData)->toHtml(); 41 | } 42 | 43 | public function getHeaderCssClass() 44 | { 45 | return 'head-catalog-order'; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Order/Grid.php: -------------------------------------------------------------------------------- 1 | setId('zendesk_create_order_search_grid'); 25 | $this->setDefaultSort('entity_id'); 26 | $this->setUseAjax(true); 27 | if ($this->getRequest()->getParam('collapse')) { 28 | $this->setIsCollapsed(true); 29 | } 30 | } 31 | 32 | /** 33 | * Retrieve quote store object 34 | * @return Mage_Core_Model_Store 35 | */ 36 | public function getStore() 37 | { 38 | return Mage::getSingleton('adminhtml/session_quote')->getStore(); 39 | } 40 | 41 | /** 42 | * Retrieve collection class 43 | * 44 | * @return string 45 | */ 46 | protected function _getCollectionClass() 47 | { 48 | return 'sales/order_grid_collection'; 49 | } 50 | 51 | protected function _prepareCollection() 52 | { 53 | $collection = Mage::getResourceModel($this->_getCollectionClass()); 54 | $this->setCollection($collection); 55 | return parent::_prepareCollection(); 56 | } 57 | 58 | /** 59 | * Prepare columns 60 | * 61 | * @return Mage_Adminhtml_Block_Sales_Order_Create_Search_Grid 62 | */ 63 | protected function _prepareColumns() 64 | { 65 | $this->addColumn('real_order_id', array( 66 | 'header'=> Mage::helper('sales')->__('Order #'), 67 | 'width' => '80px', 68 | 'type' => 'text', 69 | 'index' => 'increment_id', 70 | )); 71 | 72 | if (!Mage::app()->isSingleStoreMode()) { 73 | $this->addColumn('store_id', array( 74 | 'header' => Mage::helper('sales')->__('Purchased From (Store)'), 75 | 'index' => 'store_id', 76 | 'type' => 'store', 77 | 'store_view'=> true, 78 | 'display_deleted' => true, 79 | )); 80 | } 81 | 82 | $this->addColumn('created_at', array( 83 | 'header' => Mage::helper('sales')->__('Purchased On'), 84 | 'index' => 'created_at', 85 | 'type' => 'datetime', 86 | 'width' => '100px', 87 | )); 88 | 89 | $this->addColumn('billing_name', array( 90 | 'header' => Mage::helper('sales')->__('Bill to Name'), 91 | 'index' => 'billing_name', 92 | )); 93 | 94 | $this->addColumn('shipping_name', array( 95 | 'header' => Mage::helper('sales')->__('Ship to Name'), 96 | 'index' => 'shipping_name', 97 | )); 98 | 99 | $this->addColumn('base_grand_total', array( 100 | 'header' => Mage::helper('sales')->__('G.T. (Base)'), 101 | 'index' => 'base_grand_total', 102 | 'type' => 'currency', 103 | 'currency' => 'base_currency_code', 104 | )); 105 | 106 | $this->addColumn('grand_total', array( 107 | 'header' => Mage::helper('sales')->__('G.T. (Purchased)'), 108 | 'index' => 'grand_total', 109 | 'type' => 'currency', 110 | 'currency' => 'order_currency_code', 111 | )); 112 | 113 | $this->addColumn('status', array( 114 | 'header' => Mage::helper('sales')->__('Status'), 115 | 'index' => 'status', 116 | 'type' => 'options', 117 | 'width' => '70px', 118 | 'options' => Mage::getSingleton('sales/order_config')->getStatuses(), 119 | )); 120 | 121 | $this->addColumn('action', array( 122 | 'header' => Mage::helper('zendesk')->__('Action'), 123 | 'renderer' => 'zendesk/adminhtml_create_order_grid_renderer_action', 124 | 'filter' => false, 125 | 'sortable' => false 126 | )); 127 | 128 | return parent::_prepareColumns(); 129 | } 130 | 131 | public function getGridUrl() 132 | { 133 | return $this->getUrl('adminhtml/zendesk/loadBlock', array('block'=>'order_grid', '_current' => true, 'collapse' => null)); 134 | } 135 | 136 | public function getRowUrl($row) 137 | { 138 | return ""; 139 | } 140 | 141 | } 142 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Order/Grid/Renderer/Action.php: -------------------------------------------------------------------------------- 1 | getId()) { 23 | return ""; 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php: -------------------------------------------------------------------------------- 1 | setTemplate('zendesk/dashboard/index.phtml'); 24 | } 25 | 26 | public function getIsZendeskDashboard() { 27 | $request = Mage::app()->getFrontController()->getRequest(); 28 | return $request && $request->getControllerName() === 'zendesk'; 29 | } 30 | 31 | public function getAuthHeader() { 32 | return 'Token token="' . Mage::helper('zendesk')->getApiToken(false) . '"'; 33 | } 34 | 35 | public function getTotals() { 36 | return Mage::helper("zendesk")->getTicketTotals(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php: -------------------------------------------------------------------------------- 1 | setId('tickets_grid_tab'); 25 | $this->setDestElementId('tickets_grid_tab_content'); 26 | $this->setTemplate('widget/tabshoriz.phtml'); 27 | } 28 | 29 | protected function _prepareLayout() { 30 | // Check if we are on the main admin dashboard and, if so, whether we should be showing the grid 31 | // Note: an additional check in the template is needed, but this will prevent unnecessary API calls to Zendesk 32 | if ( !Mage::helper('zendesk')->isConnected() || (!$this->getIsZendeskDashboard() && !Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard')) ) 33 | { 34 | return parent::_prepareLayout(); 35 | } 36 | 37 | Mage::helper('zendesk')->storeDependenciesInCachedRegistry(); 38 | 39 | //check if module is setted up 40 | $configured = (bool) Mage::getStoreConfig('zendesk/general/domain'); 41 | $viewsIds = Mage::getStoreConfig('zendesk/backend_features/show_views') ? Mage::helper('zendesk')->getChosenViews() : array(); 42 | 43 | if( Mage::getStoreConfig('zendesk/backend_features/show_all') AND $configured) { 44 | $all = array( 45 | 'class' => 'ajax', 46 | 'url' => $this->getUrl('adminhtml/zendesk/ticketsAll'), 47 | ); 48 | $label = $this->__("All tickets"); 49 | 50 | $all_count = Mage::registry('zendesk_tickets_all'); 51 | if (!$all_count) { 52 | $this->getLayout()->createBlock('zendesk/adminhtml_dashboard_tab_tickets_grid_all')->toHtml(); 53 | $all_count = Mage::registry('zendesk_tickets_all'); 54 | } 55 | 56 | $label .= " (" . $all_count . ")"; 57 | 58 | $all['label'] = $label; 59 | $this->addTab('all-tickets', $all); 60 | } 61 | 62 | try { 63 | $allTicketView = Mage::getModel('zendesk/api_views')->active(); 64 | $ticketsCounts = Mage::getModel('zendesk/api_views')->countByIds($viewsIds); 65 | 66 | } catch (Exception $ex) { 67 | $allTicketView = array(); 68 | } 69 | 70 | $viewFound = false; 71 | 72 | if(count($viewsIds) && !empty($allTicketView) && $configured) { 73 | // Loop through each view ID as per config 74 | foreach($viewsIds as $viewId) { 75 | // Searches for the view's details by matching all views retrieved from the api to the current view id 76 | $view = array_filter($allTicketView, function($ticketView) use($viewId) { 77 | return $ticketView['id'] === (int) $viewId; 78 | }); 79 | // Return only the first value (usually returns just 1) 80 | $view = array_shift($view); 81 | 82 | // Don't display the tab if the view data was not retrieved 83 | if (empty($view)) { 84 | continue; 85 | } 86 | 87 | $viewFound = true; 88 | 89 | $count = array_filter($ticketsCounts['view_counts'], function($view) use($viewId) { 90 | return $view['view_id'] === (int) $viewId; 91 | }); 92 | $count = array_shift($count); 93 | 94 | if($count['value']) { 95 | $label = $view['title'] . ' (' . $count['value'] . ')'; 96 | $this->addTab($viewId, array( 97 | 'label' => $label, 98 | 'class' => 'ajax', 99 | 'url' => $this->getUrl('adminhtml/zendesk/ticketsView', array('viewid' => $viewId)), 100 | )); 101 | } else { 102 | Mage::unregister('zendesk_tickets_view'); 103 | Mage::register('zendesk_tickets_view', $viewId); 104 | 105 | $this->addTab($viewId, array( 106 | 'content' => $this->getLayout()->createBlock('zendesk/adminhtml_dashboard_tab_tickets_grid_view')->toHtml(), 107 | 'label' => $view['title'] . ' (' . Mage::registry('zendesk_tickets_view_'.$viewId) . ')' 108 | )); 109 | } 110 | } 111 | } 112 | 113 | // Show the empty screen, if no views are activated or no views are selected, and show all is disabled 114 | if (!$viewFound && $this->getIsZendeskDashboard() && !Mage::getStoreConfig('zendesk/backend_features/show_all')) { 115 | $block = $this->getLayout()->createBlock('core/template', 'zendesk_dashboard_empty')->setTemplate('zendesk/dashboard/empty.phtml'); 116 | $this->getLayout()->getBlock('zendesk_dashboard')->append($block); 117 | } 118 | 119 | return parent::_prepareLayout(); 120 | } 121 | 122 | public function getIsZendeskDashboard() { 123 | $request = Mage::app()->getFrontController()->getRequest(); 124 | return $request && $request->getControllerName() === 'zendesk'; 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/All.php: -------------------------------------------------------------------------------- 1 | setViewId('all'); 23 | 24 | parent::__construct($attributes); 25 | } 26 | 27 | protected function _getCollection($collection) { 28 | return $collection->getCollection($this->getGridParams()); 29 | } 30 | 31 | public function getGridUrl() { 32 | return $this->getUrl('*/*/ticketsAll', array('_current' => true)); 33 | } 34 | 35 | protected function _prepareColumns() { 36 | $this->addColumn('id', array( 37 | 'header' => Mage::helper('zendesk')->__('Ticket ID'), 38 | 'sortable' => false, 39 | 'align' => 'right', 40 | 'width' => '30px', 41 | 'index' => 'id', 42 | )); 43 | 44 | $this->addColumn('subject', array( 45 | 'header' => Mage::helper('zendesk')->__('Subject'), 46 | 'sortable' => false, 47 | 'index' => 'description', 48 | 'type' => 'text', 49 | 'renderer' => 'zendesk/adminhtml_dashboard_tab_tickets_grid_renderer_action', 50 | )); 51 | 52 | $this->addColumn('requester_id', array( 53 | 'header' => Mage::helper('zendesk')->__('Email'), 54 | 'width' => '60', 55 | 'index' => 'requester_email', 56 | 'sortable' => false, 57 | )); 58 | 59 | $this->addColumn('type', array( 60 | 'header' => Mage::helper('zendesk')->__('Type'), 61 | 'width' => '100', 62 | 'type' => 'options', 63 | 'options' => Mage::helper('zendesk')->getTypeMap(), 64 | 'index' => 'type', 65 | 'sortable' => false, 66 | )); 67 | 68 | $this->addColumn('status', array( 69 | 'header' => Mage::helper('zendesk')->__('Status'), 70 | 'sortable' => true, 71 | 'width' => '100px', 72 | 'index' => 'status', 73 | 'type' => 'options', 74 | 'options' => Mage::helper('zendesk')->getStatusMap(), 75 | )); 76 | 77 | $this->addColumn('created_at', array( 78 | 'header' => Mage::helper('zendesk')->__('Requested'), 79 | 'sortable' => true, 80 | 'width' => '160px', 81 | 'index' => 'created_at', 82 | 'type' => 'datetime', 83 | )); 84 | 85 | $this->addColumn('updated_at', array( 86 | 'header' => Mage::helper('zendesk')->__('Updated'), 87 | 'sortable' => true, 88 | 'width' => '160px', 89 | 'index' => 'updated_at', 90 | 'type' => 'datetime', 91 | )); 92 | 93 | return parent::_prepareColumns(); 94 | } 95 | 96 | } 97 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Massaction.php: -------------------------------------------------------------------------------- 1 | getJsObjectName()} = new varienGridMassaction('{$this->getHtmlId()}', " 23 | . "{$this->getGridJsObjectName()}, '{$this->getSelectedJson()}'" 24 | . ", '{$this->getFormFieldNameInternal()}', '{$this->getFormFieldName()}');" 25 | . "{$this->getJsObjectName()}.setItems({$this->getItemsJson()}); " 26 | . "{$this->getJsObjectName()}.setGridIds('{$this->getGridIdsJson()}');" 27 | . ($this->getUseAjax() ? "{$this->getJsObjectName()}.setUseAjax(true);" : '') 28 | . ($this->getUseSelectAll() ? "{$this->getJsObjectName()}.setUseSelectAll(true);" : '') 29 | . "{$this->getJsObjectName()}.errorText = '{$this->getErrorText()}';"; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Renderer/Action.php: -------------------------------------------------------------------------------- 1 | getTicketUrl($row->getData()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Renderer/Group.php: -------------------------------------------------------------------------------- 1 | getData($this->getColumn()->getIndex()); 24 | 25 | $found = array_filter($groups, function($group) use($value) { 26 | return (int) $group['id'] === $value; 27 | }); 28 | 29 | if( count($found) ) { 30 | $group = array_shift($found); 31 | 32 | return $group['name']; 33 | } 34 | 35 | return ''; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Renderer/Type.php: -------------------------------------------------------------------------------- 1 | users; 23 | $value = (int) $row->getData($this->getColumn()->getIndex()); 24 | 25 | $found = array_filter($users, function($user) use($value) { 26 | return (int) $user['id'] === $value; 27 | }); 28 | 29 | if( count($found) ) { 30 | $user = array_shift($found); 31 | 32 | return $user['name']; 33 | } 34 | 35 | return ''; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/View.php: -------------------------------------------------------------------------------- 1 | setViewId($viewId); 24 | 25 | parent::__construct($attributes); 26 | } 27 | 28 | protected function _getCollection($collection) { 29 | return $collection->getCollectionFromView($this->_viewId, $this->getGridParams()); 30 | } 31 | 32 | public function getGridUrl() { 33 | return $this->getUrl('*/*/ticketsView', array('_current' => true)); 34 | } 35 | 36 | protected function _prepareGrid() { 37 | parent::_prepareGrid(); 38 | $this->_prepareDynamicColumns(); 39 | $this->_prepareCollection(); 40 | 41 | return $this; 42 | } 43 | 44 | protected function _prepareColumns() { 45 | $this->addColumn('id', array( 46 | 'header' => Mage::helper('zendesk')->__('Ticket ID'), 47 | 'sortable' => true, 48 | 'filter' => false, 49 | 'align' => 'right', 50 | 'width' => '30px', 51 | 'index' => 'id', 52 | )); 53 | 54 | return parent::_prepareColumns(); 55 | } 56 | 57 | protected function _prepareDynamicColumns() { 58 | $viewColumns = $this->getCollection()->getColumnsForView(); 59 | 60 | foreach($viewColumns as $column) { 61 | $this->addColumnBasedOnType($column['id'], $column['title']); 62 | } 63 | } 64 | 65 | } -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Log.php: -------------------------------------------------------------------------------- 1 | setTemplate('zendesk/log/index.phtml'); 25 | } 26 | 27 | public function getLogContents() 28 | { 29 | return Mage::helper('zendesk/log')->getLogContents(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Menu.php: -------------------------------------------------------------------------------- 1 | setId('page_tabs'); 24 | $this->setTemplate('zendesk/left-menu.phtml'); 25 | } 26 | 27 | public function isAllowed($target) 28 | { 29 | try { 30 | if ($target == 'settings') { 31 | return Mage::getSingleton('admin/session')->isAllowed('admin/system/config/zendesk'); 32 | } else { 33 | return Mage::getSingleton('admin/session')->isAllowed('admin/zendesk/zendesk_' . $target); 34 | } 35 | } catch (Exception $e) { 36 | return false; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Order/View/Tickets.php: -------------------------------------------------------------------------------- 1 | setTemplate('zendesk/order/tickets.phtml'); 24 | } 25 | 26 | public function getTickets($orderId) 27 | { 28 | return array( 29 | array( 30 | 'id' => '', 31 | 'url' => '', 32 | 'subject' => '', 33 | 'status' => '', 34 | 'updated_at' => '', 35 | ) 36 | ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Customer/Tickets.php: -------------------------------------------------------------------------------- 1 | setTemplate('zendesk/customer/tickets.phtml'); 24 | } 25 | 26 | public function getSubmitAction() { 27 | if (!$return_url = Mage::getStoreConfig('zendesk/sso_frontend/new')) { 28 | $return_url = "http://".Mage::getStoreConfig('zendesk/general/domain')."/hc/requests/new"; 29 | } 30 | $url = Mage::helper('adminhtml')->getUrl('*/sso/login', array("return_url" => Mage::helper('core')->urlEncode($return_url))); 31 | 32 | return $url; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/Customer/Tickets/List.php: -------------------------------------------------------------------------------- 1 | getCustomer()->getId() 27 | ); 28 | 29 | $this->addData(array( 30 | 'cache_lifetime' => 60 * 5, 31 | 'cache_tags' => array('Zendesk_Customer_Tickets'), 32 | 'cache_key' => implode('_', $key) 33 | 34 | )); 35 | 36 | $this->setTemplate('zendesk/customer/tickets/list.phtml'); 37 | } 38 | 39 | 40 | protected function _getCustomerSession() 41 | { 42 | return Mage::getSingleton('customer/session'); 43 | } 44 | 45 | 46 | public function getCustomer() 47 | { 48 | $session = $this->_getCustomerSession(); 49 | $customer = false; 50 | 51 | if($session) { 52 | $customer = $session->getCustomer(); 53 | } 54 | 55 | return $customer; 56 | } 57 | 58 | 59 | public function getList() 60 | { 61 | $customer = $this->getCustomer(); 62 | $tickets = null; 63 | 64 | if($customer && $customer->getEmail()) { 65 | $tickets = Mage::getModel('zendesk/api_tickets')->forRequester($customer->getEmail()); 66 | } 67 | 68 | return $tickets; 69 | } 70 | } -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Block/WebWidget.php: -------------------------------------------------------------------------------- 1 | getLogPath()); 39 | } 40 | 41 | public function getTailSize() 42 | { 43 | return self::TAIL_SIZE; 44 | } 45 | 46 | /** 47 | * Retrieves the contents of the Zendesk log file, with optional truncation for sending directly back to a browser. 48 | * 49 | * NOTE: If allowing for truncation this method can still return a lot of data (too much) if you run into a 50 | * situation where one of the lines near the end of the file is very, very long. In practice this should 51 | * rarely happen since the log file should only be written to by this extension. 52 | * 53 | * @param bool $allowTruncate Whether the file should be truncated if it's too large 54 | * 55 | * @return string File contents 56 | */ 57 | public function getLogContents($allowTruncate = true) 58 | { 59 | $path = $this->getLogPath(); 60 | $content = ''; 61 | 62 | if(file_exists($path)) { 63 | if($allowTruncate && $this->isLogTooLarge()) { 64 | $content = $this->_tail($path, self::TAIL_SIZE); 65 | } else { 66 | $content = file_get_contents($path); 67 | } 68 | } 69 | 70 | return $content; 71 | } 72 | 73 | /** 74 | * Is the Zendesk log file too large to display? 75 | * 76 | * This method doesn't map very well to the size of the tail command on the file in that it doesn't use the 77 | * same number of lines to determine if the file is "too large". This means that there is the possibility for 78 | * problems if the log files contains some lines at the end that are extremely long (millions of characters) then 79 | * the _tail method will still return them. 80 | * 81 | * @return bool true if the file is too large to display, false if not 82 | */ 83 | public function isLogTooLarge() 84 | { 85 | $size = $this->getLogSize(); 86 | 87 | if($size !== FALSE && $size > self::MAX_LOG_SIZE) { 88 | return true; 89 | } 90 | 91 | return false; 92 | } 93 | 94 | public function clear() 95 | { 96 | @unlink($this->getLogPath()); 97 | touch($this->getLogPath()); 98 | } 99 | 100 | /** 101 | * Runs a tail operation to retrieve the last lines of a file. 102 | * @param string $file Path to the file to tail 103 | * @param int $lines Number of lines to retrieve 104 | * 105 | * @return string 106 | */ 107 | protected function _tail($file, $lines = 10) 108 | { 109 | $data = ''; 110 | 111 | // If we're on a Unix-like system then run a much faster shell command to tail the file. 112 | // Note that this could potentially be implemented as "everything that ISN'T Windows" but 113 | // was done with a specific list of common kernels for safety. 114 | // For a larger list see: http://en.wikipedia.org/wiki/Uname#Table_of_standard_uname_output 115 | if(in_array(php_uname('s'), array('Linux', 'FreeBSD', 'NetBSD', 'OpenBSD', 'Darwin', 'SunOS', 'Unix'))) { 116 | $data = shell_exec("tail -n $lines '$file'"); 117 | } else { 118 | // Fall back to a much slower (and manual) process for using PHP to tail the file. 119 | $fp = fopen($file, 'r'); 120 | $position = filesize($file); 121 | fseek($fp, $position-1); 122 | $chunklen = 4096; 123 | $data = ''; 124 | 125 | while($position >= 0) { 126 | $position = $position - $chunklen; 127 | 128 | if ($position < 0) { 129 | $chunklen = abs($position); $position=0; 130 | } 131 | 132 | fseek($fp, $position); 133 | $data = fread($fp, $chunklen) . $data; 134 | 135 | if (substr_count($data, "\n") >= $lines + 1) { 136 | preg_match("!(.*?\n){".($lines-1)."}$!", $data, $match); 137 | return $match[0]; 138 | } 139 | } 140 | fclose($fp); 141 | } 142 | 143 | return $data; 144 | } 145 | } -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Helper/Sync.php: -------------------------------------------------------------------------------- 1 | getEmail(); 11 | $previousCustomerData = $customer->getOrigData(); 12 | $previousEmail = $previousCustomerData['email']; 13 | //Get Customer Group 14 | $groupId = $customer->getGroupId(); 15 | $group = Mage::getModel('customer/group')->load($groupId); 16 | 17 | //Get Customer Last Login Date 18 | $logCustomer = Mage::getModel('log/customer')->loadByCustomer($customer); 19 | if ($logCustomer->getLoginAt()) 20 | $loggedIn = date("Y-m-d\TH:i:s\Z",strtotime($logCustomer->getLoginAt())); 21 | else 22 | $loggedIn = ""; 23 | 24 | //Get Customer Sales Statistics 25 | $orderTotals = Mage::getResourceModel('sales/order_collection'); 26 | $lifetimeSale = 0; 27 | $averageSale = 0; 28 | 29 | if (is_object($orderTotals)) { 30 | $orderTotals 31 | ->addFieldToFilter('customer_id', $customer->getId()) 32 | ->addFieldToFilter('status', Mage_Sales_Model_Order::STATE_COMPLETE); 33 | 34 | $orderTotals->getSelect() 35 | ->reset(Zend_Db_Select::COLUMNS) 36 | ->columns(new Zend_Db_Expr("SUM(grand_total) as total")) 37 | ->columns(new Zend_Db_Expr("AVG(grand_total) as avg_total")) 38 | ->group('customer_id'); 39 | 40 | if (count($orderTotals) > 0) { 41 | $sum = (float) $orderTotals->getFirstItem()->getTotal(); 42 | $avg = (float) $orderTotals->getFirstItem()->getAvgTotal(); 43 | 44 | $lifetimeSale = Mage::helper('core')->currency($sum, true, false); 45 | $averageSale = Mage::helper('core')->currency($avg, true, false); 46 | } 47 | } 48 | 49 | $info['user'] = array( 50 | "name" => $customer->getFirstname() . " " . $customer->getLastname(), 51 | "email" => $currentEmail, 52 | "user_fields" => array( 53 | "group" => $group->getCode(), 54 | "name" => $customer->getFirstname() . " " . $customer->getLastname(), 55 | "id" => $customer->getId(), 56 | "logged_in" => $loggedIn, 57 | "average_sale" => $averageSale, 58 | "lifetime_sale" => $lifetimeSale 59 | ) 60 | ); 61 | 62 | $user = Mage::getModel('zendesk/api_users')->find($currentEmail); 63 | if($previousEmail !== $currentEmail) { 64 | if(!isset($user['id'])) { 65 | $user = $this->createAccount($info); 66 | } 67 | } 68 | 69 | return $user; 70 | } 71 | 72 | private function createAccount($data) 73 | { 74 | $data['user']['verified'] = false; 75 | $user = Mage::getModel('zendesk/api_users')->create($data); 76 | return $user; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012 Zendesk 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Api/Abstract.php: -------------------------------------------------------------------------------- 1 | domain = $domain; 32 | } 33 | 34 | /** 35 | * Sets the email to be used for this instance 36 | * 37 | * @param string $username The user email 38 | */ 39 | public function setUsername($username) 40 | { 41 | $this->username = $username; 42 | } 43 | 44 | /** 45 | * Sets the API token for this instance 46 | * 47 | * @param string $password The API token 48 | */ 49 | public function setPassword($password) 50 | { 51 | $this->password = $password; 52 | } 53 | 54 | public function getUsername() 55 | { 56 | if ($this->username === null) { 57 | $this->username = Mage::getStoreConfig('zendesk/general/email'); 58 | } 59 | 60 | return $this->username . '/token'; 61 | } 62 | 63 | public function getPassword() 64 | { 65 | if ($this->password === null) { 66 | $this->password = Mage::getStoreConfig('zendesk/general/password'); 67 | } 68 | 69 | return $this->password; 70 | } 71 | 72 | public function getDomain() 73 | { 74 | if ($this->domain === null) { 75 | $this->domain = Mage::getStoreConfig('zendesk/general/domain'); 76 | } 77 | 78 | return $this->domain; 79 | } 80 | 81 | protected function _getUrl($path) 82 | { 83 | $base_url = 'https://' . $this->getDomain() . '/api/v2'; 84 | $path = trim($path, '/'); 85 | return $base_url . '/' . $path; 86 | } 87 | 88 | protected function _call($endpoint, $params = null, $method = 'GET', $data = null, $silent = false, $global = false) 89 | { 90 | if($params && is_array($params) && count($params) > 0) { 91 | $args = array(); 92 | foreach($params as $arg => $val) { 93 | $args[] = urlencode($arg) . '=' . urlencode($val); 94 | } 95 | $endpoint .= '?' . implode('&', $args); 96 | } 97 | 98 | $url = $this->_getUrl($endpoint); 99 | 100 | $method = strtoupper($method); 101 | 102 | $client = new Zend_Http_Client($url); 103 | $client->setMethod($method); 104 | $client->setHeaders( 105 | array( 106 | 'Accept' => 'application/json', 107 | 'Content-Type' => 'application/json' 108 | ) 109 | ); 110 | 111 | $client->setAuth( 112 | $this->getUsername(), 113 | $this->getPassword() 114 | ); 115 | 116 | if($method == 'POST' || $method == "PUT") { 117 | $client->setRawData(json_encode($data), 'application/json'); 118 | } 119 | 120 | Mage::log( 121 | print_r( 122 | array( 123 | 'url' => $url, 124 | 'method' => $method, 125 | 'data' => json_encode($data), 126 | ), 127 | true 128 | ), 129 | null, 130 | 'zendesk.log' 131 | ); 132 | 133 | try { 134 | $response = $client->request(); 135 | } catch ( Zend_Http_Client_Exception $ex ) { 136 | Mage::log('Call to ' . $url . ' resulted in: ' . $ex->getMessage(), Zend_Log::ERR, 'zendesk.log'); 137 | Mage::log('--Last Request: ' . $client->getLastRequest(), Zend_Log::ERR, 'zendesk.log'); 138 | Mage::log('--Last Response: ' . $client->getLastResponse(), Zend_Log::ERR, 'zendesk.log'); 139 | 140 | return array(); 141 | } 142 | 143 | $body = json_decode($response->getBody(), true); 144 | 145 | Mage::log(var_export($body, true), Zend_Log::DEBUG, 'zendesk.log'); 146 | 147 | if($response->isError()) { 148 | if(is_array($body) && isset($body['error'])) { 149 | if(is_array($body['error']) && isset($body['error']['title'])) { 150 | if (!$silent) { 151 | Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__($body['error']['title'],$response->getStatus())); 152 | return; 153 | } else { 154 | return $body; 155 | } 156 | } else { 157 | if (!$silent) { 158 | Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__($body['error'],$response->getStatus())); 159 | return; 160 | } else { 161 | return $body; 162 | } 163 | } 164 | } else { 165 | if (!$silent) { 166 | Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__($body, $response->getStatus())); 167 | return; 168 | } else { 169 | return $body; 170 | } 171 | } 172 | } 173 | 174 | return $body; 175 | } 176 | } 177 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Api/ConfigSets.php: -------------------------------------------------------------------------------- 1 | _call('embeddable/config'); 32 | 33 | return $response ? $response['embeds'] : []; 34 | } 35 | 36 | /** 37 | * Initializes Zendesk's WebWidget 38 | * 39 | * @param array $config 40 | */ 41 | public function initialize($config = []) 42 | { 43 | $config = array_merge([], $this->_getDefaultWidgetConfig()); 44 | 45 | return $this->_call('embeddable/api/config_sets.json', null, 'POST', [ 46 | 'config_set' => $config, 47 | ]); 48 | } 49 | 50 | /** 51 | * Override the _getUrl method to prevent appending the api/v2 base path 52 | * 53 | * @param string $path 54 | * @return string 55 | */ 56 | protected function _getUrl($path) 57 | { 58 | return 'https://' . $this->getDomain() . '/' . trim($path, '/'); 59 | } 60 | 61 | /** 62 | * Returns the default widget config 63 | * 64 | * @return array 65 | */ 66 | private function _getDefaultWidgetConfig() 67 | { 68 | return [ 69 | 'color' => self::DEFAULT_WIDGET_COLOR, 70 | 'position' => self::DEFAULT_WIDGET_POSITION, 71 | ]; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Api/Groups.php: -------------------------------------------------------------------------------- 1 | _call('groups.json?page=' . $page); 26 | $groups = array_merge($groups, $response['groups']); 27 | $page = is_null($response['next_page']) ? 0 : $page + 1; 28 | } 29 | 30 | return $groups; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Api/Requesters.php: -------------------------------------------------------------------------------- 1 | array( 32 | 'email' => $email, 33 | 'name' => $name, 34 | 'role' => 'end-user', 35 | ) 36 | ); 37 | $response = $this->_call('users.json', null, 'POST', $data); 38 | 39 | return (isset($response['user']) ? $response['user'] : null); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Api/SupportAddresses.php: -------------------------------------------------------------------------------- 1 | _call('recipient_addresses.json?page=' . $page)) { 11 | $addresses = array_merge($addresses, $response['recipient_addresses']); 12 | $page = is_null($response['next_page']) ? 0 : $page + 1; 13 | } 14 | 15 | return $addresses; 16 | } 17 | 18 | /** 19 | * Gets the default support address. 20 | * @return array The default support address email. 21 | */ 22 | public function getDefault() 23 | { 24 | $address = null; 25 | 26 | foreach ($this->all() as $recipient_address) { 27 | if ($recipient_address['default']) { 28 | $address = $recipient_address; 29 | break; 30 | } 31 | } 32 | 33 | return $address; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Api/Users.php: -------------------------------------------------------------------------------- 1 | _call('users/search.json', array('query' => $email, 'per_page' => 30)); 27 | 28 | if($response['count'] > 0) { 29 | $user = array_shift($response['users']); 30 | return $user; 31 | } else { 32 | return false; 33 | } 34 | } 35 | 36 | public function me() 37 | { 38 | $response = $this->_call('users/me.json'); 39 | 40 | return (isset($response['user']) ? $response['user'] : null); 41 | } 42 | 43 | public function get($id) 44 | { 45 | if(!Zend_Validate::is($id, 'NotEmpty')) { 46 | throw new InvalidArgumentException('No ID value provided'); 47 | } 48 | 49 | $response = $this->_call('users/' . $id . '.json'); 50 | 51 | return (isset($response['user']) ? $response['user'] : null); 52 | } 53 | 54 | public function all() 55 | { 56 | $page = 1; 57 | $users = array(); 58 | 59 | while($page && $response = $this->_call('users.json?page=' . $page)) { 60 | $users = array_merge($users, $response['users']); 61 | $page = is_null($response['next_page']) ? 0 : $page + 1; 62 | } 63 | 64 | return $users; 65 | } 66 | 67 | public function end($id) 68 | { 69 | if(!Zend_Validate::is($id, 'NotEmpty')) { 70 | throw new InvalidArgumentException('No ID value provided'); 71 | } 72 | 73 | $response = $this->_call('end_users/'. $id .'.json'); 74 | 75 | return (isset($response['user']) ? $response['user'] : null); 76 | } 77 | 78 | public function getIdentities($id) 79 | { 80 | $response = $this->_call('users/' . $id . '/identities.json'); 81 | return (isset($response['identities']) ? $response['identities'] : null); 82 | } 83 | 84 | public function addIdentity($user_id, $data) 85 | { 86 | $response = $this->_call('users/' . $user_id . '/identities.json', null, 'POST', $data, true); 87 | return (isset($response['identity']) ? $response['identity'] : null); 88 | } 89 | 90 | public function update($user_id, $user) 91 | { 92 | $response = $this->_call('users/' . $user_id . '.json', null, 'PUT', $user, true); 93 | return (isset($response['user']) ? $response['user'] : null); 94 | } 95 | 96 | public function create($user) 97 | { 98 | $response = $this->_call('users.json', null, 'POST', $user, true); 99 | return (isset($response['user']) ? $response['user'] : null); 100 | } 101 | 102 | public function createUserField($field) 103 | { 104 | $response = $this->_call('user_fields.json', null, 'POST', $field, true); 105 | 106 | if(!isset($response['user_field'])) { 107 | throw new Exception('No User Field specified.'); 108 | } 109 | 110 | return $response['user_field']; 111 | } 112 | 113 | /** 114 | * Fetch all user fields 115 | * 116 | * @return array $userFields 117 | */ 118 | public function getUserFields() 119 | { 120 | $page = 1; 121 | $userFields = array(); 122 | while($page && $response = $this->_call('user_fields.json?page=' . $page)) { 123 | $userFields = array_merge($userFields, $response['user_fields']); 124 | $page = is_null($response['next_page']) ? 0 : $page + 1; 125 | } 126 | 127 | return $userFields; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Api/Views.php: -------------------------------------------------------------------------------- 1 | _call('views/active.json'); 23 | return (isset($response['views']) ? $response['views'] : null); 24 | } 25 | 26 | public function get($id) 27 | { 28 | if(!Zend_Validate::is($id, 'NotEmpty')) { 29 | throw new InvalidArgumentException('View ID not provided'); 30 | } 31 | 32 | $response = $this->_call('views/' . $id . '.json'); 33 | return (isset($response['view']) ? $response['view'] : null); 34 | } 35 | 36 | public function execute($id, array $params = array()) 37 | { 38 | if(!Zend_Validate::is($id, 'NotEmpty')) { 39 | throw new InvalidArgumentException('View ID not provided'); 40 | } 41 | 42 | $params['include'] = 'users,groups'; 43 | $paramsString = count($params) ? '?' . http_build_query($params) : ''; 44 | 45 | $response = $this->_call('views/' . $id . '/execute.json' . $paramsString); 46 | return $response; 47 | } 48 | 49 | public function countByIds(array $ids) { 50 | if(empty($ids)) { 51 | throw new InvalidArgumentException('View ID not provided'); 52 | } 53 | 54 | $response = $this->_call('views/count_many.json?ids=' . implode(',', $ids)); 55 | 56 | return $response; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Customer.php: -------------------------------------------------------------------------------- 1 | getCollection()->setPageSize(90)->setCurPage(1); 9 | $customers->addAttributeToSelect(array('firstname', 'lastname', 'email')) 10 | ->addAttributeToFilter('zendesk_id', array('or'=> array( 11 | 0 => array('is' => new Zend_Db_Expr('null'))) 12 | ), 'left'); 13 | foreach($customers as $customer){ 14 | Mage::log('Synchronization started', null, 'zendesk.log'); 15 | try { 16 | Mage::log('Synchronizing customer with id '.$customer->getId(), null, 'zendesk.log'); 17 | $customerData = Mage::helper('zendesk/sync')->syncCustomer($customer); 18 | $zendeskId = $customerData['id']; 19 | $customer->setZendeskId($zendeskId); 20 | $customer->save(); 21 | } 22 | catch (Exception $ex) { 23 | Mage::log('Synchronization failed: '.$ex->getMessage(), null, 'zendesk.log'); 24 | 25 | return; 26 | } 27 | Mage::log('Synchronization completed successfully', null, 'zendesk.log'); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Resource/Tickets.php: -------------------------------------------------------------------------------- 1 | _init('zendesk/tickets', 'id'); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Search.php: -------------------------------------------------------------------------------- 1 | setType($type); 29 | } 30 | 31 | public function setType($type) { 32 | $this->type = $type; 33 | } 34 | 35 | public function addField(Zendesk_Zendesk_Model_Search_Field $field) { 36 | $this->fields[] = $field; 37 | } 38 | 39 | public function addFields(array $fields) { 40 | foreach($fields as $field) { 41 | if($field instanceof Zendesk_Zendesk_Model_Search_Field) { 42 | $this->addField($field); 43 | } 44 | } 45 | } 46 | 47 | public function getString() { 48 | return 'type:' . $this->type . $this->separator . implode($this->separator, $this->fields); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Search/Field.php: -------------------------------------------------------------------------------- 1 | setName($name); 26 | $this->setValue($value); 27 | $this->setOperator($operator); 28 | } 29 | 30 | public function setName($name) { 31 | $this->name = $name; 32 | } 33 | 34 | public function setValue($value) { 35 | $this->value = $value; 36 | } 37 | 38 | public function setOperator($operator) { 39 | $this->operator = $operator; 40 | } 41 | 42 | public function getString() { 43 | return $this->name . $this->operator . $this->value; 44 | } 45 | 46 | public function __toString() { 47 | return $this->getString(); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Source/Sortdir.php: -------------------------------------------------------------------------------- 1 | _options[] = array( 25 | 'label' => Mage::helper('zendesk')->__('Descending'), 26 | 'value' => 'desc' 27 | ); 28 | 29 | $this->_options[] = array( 30 | 'label' => Mage::helper('zendesk')->__('Ascending'), 31 | 'value' => 'asc' 32 | ); 33 | 34 | 35 | return $this->_options; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Source/Sortorder.php: -------------------------------------------------------------------------------- 1 | _options[] = array( 25 | 'label' => Mage::helper('zendesk')->__('Requested Date'), 26 | 'value' => 'created_at' 27 | ); 28 | 29 | $this->_options[] = array( 30 | 'label' => Mage::helper('zendesk')->__('Updated Date'), 31 | 'value' => 'updated_at' 32 | ); 33 | 34 | 35 | return $this->_options; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Source/Views.php: -------------------------------------------------------------------------------- 1 | _options) { 25 | try { 26 | $views = Mage::getModel('zendesk/api_views')->active(); 27 | foreach($views as $view) { 28 | $this->_options[] = array( 29 | 'value' => $view['id'], 30 | 'label' => $view['title'], 31 | ); 32 | } 33 | } catch(Exception $e) { 34 | // Just don't display anything 35 | } 36 | 37 | } 38 | 39 | $options = $this->_options; 40 | 41 | if(!$isMultiselect){ 42 | array_unshift($options, array('value'=>'', 'label'=> Mage::helper('adminhtml')->__('--Please Select--'))); 43 | } 44 | 45 | return $options; 46 | } 47 | } -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/Model/Tickets.php: -------------------------------------------------------------------------------- 1 | _init('zendesk/tickets'); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/controllers/Customer/TicketsController.php: -------------------------------------------------------------------------------- 1 | isLoggedIn()) { 25 | $this->_redirectUrl(Mage::helper('customer')->getAccountUrl()); 26 | } 27 | } 28 | 29 | /** 30 | * Display data 31 | */ 32 | public function indexAction() 33 | { 34 | $this->loadLayout(); 35 | 36 | $this->renderLayout(); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/controllers/IndexController.php: -------------------------------------------------------------------------------- 1 | isSSOEndUsersEnabled()) { 26 | $url = Mage::helper('zendesk')->getSSOAuthUrlEndUsers(); 27 | } else { 28 | $url = Mage::helper('zendesk')->getUrl(); 29 | } 30 | $this->_redirectUrl($url); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/controllers/SsoController.php: -------------------------------------------------------------------------------- 1 | urlDecode($this->getRequest()->getParam('return_url', "")); 29 | if(!Mage::getStoreConfig('zendesk/sso_frontend/enabled')) { 30 | $this->_redirectUrl(Mage::helper('zendesk')->getZendeskUnauthUrl()); 31 | return $this; 32 | } 33 | 34 | $domain = Mage::getStoreConfig('zendesk/general/domain'); 35 | $token = Mage::getStoreConfig('zendesk/sso_frontend/token'); 36 | 37 | if(!Zend_Validate::is($domain, 'NotEmpty')) { 38 | Mage::log(Mage::helper('zendesk')->__('Zendesk domain not set. Please add this to the settings page.'), null, 'zendesk.log'); 39 | $this->_redirect('/'); 40 | return $this; 41 | } 42 | 43 | if(!Zend_Validate::is($token, 'NotEmpty')) { 44 | Mage::log(Mage::helper('zendesk')->__('Zendesk SSO token not set. Please add this to the settings page.'), null, 'zendesk.log'); 45 | $this->_redirect('/'); 46 | return $this; 47 | } 48 | 49 | // Attempt to authenticate the customer, which will try and log them in, if they aren't already. 50 | // If the customer is not logged in they should be redirected to the login form, then redirected back here 51 | // on success. 52 | if (!Mage::getSingleton('customer/session')->authenticate($this)) { 53 | $this->setFlag('', self::FLAG_NO_DISPATCH, true); 54 | return $this; 55 | } 56 | 57 | $now = time(); 58 | $jti = md5($now . rand()); 59 | 60 | $user = Mage::getSingleton('customer/session')->getCustomer(); 61 | $name = $user->getName(); 62 | $email = $user->getEmail(); 63 | $externalId = $user->getEntityId(); 64 | 65 | $payload = array( 66 | "iat" => $now, 67 | "jti" => $jti, 68 | "name" => $name, 69 | "email" => $email 70 | ); 71 | 72 | // Validate if we need to include external_id param 73 | $externalIdEnabled = Mage::helper('zendesk')->isExternalIdEnabled(); 74 | if($externalIdEnabled) { 75 | $payload['external_id'] = $user->getId(); 76 | } 77 | 78 | $jwt = JWT::encode($payload, $token); 79 | $return_url = $return_url ? "&return_to=".$return_url : ""; 80 | 81 | $url = "https://".$domain."/access/jwt?jwt=" . $jwt.$return_url; 82 | 83 | Mage::log('End-user URL: ' . $url, null, 'zendesk.log'); 84 | 85 | $this->_redirectUrl($url); 86 | } 87 | 88 | public function logoutAction() 89 | { 90 | // The logout method should already be doing standard checks for whether the customer is already logged in 91 | Mage::getSingleton('customer/session')->logout(); 92 | $this->_redirect('/'); 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-1.3.0-1.4.0.php: -------------------------------------------------------------------------------- 1 | $value ) 34 | { 35 | $config->saveConfig($key, $value, 'default', 0); 36 | } 37 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-1.3.1-1.4.0.php: -------------------------------------------------------------------------------- 1 | $value ) 34 | { 35 | $config->saveConfig($key, $value, 'default', 0); 36 | } 37 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-1.4.2-2.0.0.php: -------------------------------------------------------------------------------- 1 | deleteConfig('zendesk/frontend_features/feedback_tab_code'); 31 | 32 | // We won't check in our code whether to show or not the Feedback Tab 33 | $config->deleteConfig('zendesk/frontend_features/feedback_tab_code_active'); 34 | 35 | // Retrieve the domain from the config settings 36 | $domain = Mage::getStoreConfig('zendesk/general/domain'); 37 | 38 | if($domain) { 39 | // We are activating the Web Widget by default 40 | $config->saveConfig('zendesk/frontend_features/web_widget_code_active', 1); 41 | 42 | // The Web Widget code snippet, using the account zendesk domain from settings 43 | $webWidgetSnippet=<< 45 | 46 | 47 | EOJS; 48 | 49 | $config->saveConfig('zendesk/frontend_features/web_widget_code_snippet', $webWidgetSnippet); 50 | } else { 51 | // There is no domain on the settings, we can't activate the Web Widget 52 | // The user should probably re-run the Setup from the Zendesk extension settings page 53 | $config->saveConfig('zendesk/frontend_features/web_widget_code_active', 0); 54 | $config->saveConfig('zendesk/frontend_features/web_widget_code_snippet', ''); 55 | } 56 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-2.0.5-2.0.6.php: -------------------------------------------------------------------------------- 1 | saveConfig('zendesk/frontend_features/web_widget_code_active', 1); 30 | 31 | // The Web Widget code snippet, using the account zendesk domain from settings 32 | $webWidgetSnippet=<< 34 | 35 | 36 | EOJS; 37 | 38 | $config->saveConfig('zendesk/frontend_features/web_widget_code_snippet', $webWidgetSnippet); 39 | } 40 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-2.0.6-2.1.13.php: -------------------------------------------------------------------------------- 1 | startSetup(); 5 | $installer->addAttribute("customer", "zendesk_id", array( 6 | "type" => "varchar", 7 | "backend" => "", 8 | "label" => "Zendesk Id", 9 | "input" => "text", 10 | "source" => "", 11 | "visible" => true, 12 | "required" => false, 13 | "default" => "", 14 | "frontend" => "", 15 | "unique" => false, 16 | "note" => "" 17 | 18 | )); 19 | 20 | $attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "zendesk_id"); 21 | $used_in_forms=array(); 22 | 23 | $used_in_forms[]="adminhtml_customer"; 24 | $used_in_forms[]="checkout_register"; 25 | $used_in_forms[]="customer_account_create"; 26 | $used_in_forms[]="customer_account_edit"; 27 | $used_in_forms[]="adminhtml_checkout"; 28 | $attribute->setData("used_in_forms", $used_in_forms) 29 | ->setData("is_used_for_customer_segment", true) 30 | ->setData("is_system", 0) 31 | ->setData("is_user_defined", 1) 32 | ->setData("is_visible", 1) 33 | ->setData("sort_order", 100); 34 | $attribute->save(); 35 | $installer->endSetup(); 36 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/etc/jstranslator.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | Token cannot be empty 22 | 23 | 24 | Token cannot be empty 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/app/code/community/Zendesk/Zendesk/lib/functions.php: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | zendesk/zendesk.css 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | zendesk/zendesk.css 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | zendesk/zendesk.css 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | zendesk/zendesk.css 71 | 72 | 73 | 74 | 75 | 76 | dashboard 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | zendesk/zendesk.css 114 | 115 | 116 | 117 | 118 | 119 | create 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/autocomplete.phtml: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/config/button-generate.phtml: -------------------------------------------------------------------------------- 1 | 18 | 21 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/config/button-signup.phtml: -------------------------------------------------------------------------------- 1 | 18 | 21 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/config/button-sync.phtml: -------------------------------------------------------------------------------- 1 | 18 | 39 | 42 |
43 | 44 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/config/button-test-magento.phtml: -------------------------------------------------------------------------------- 1 | 18 | 41 | 44 |
45 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/config/button-test-zendesk.phtml: -------------------------------------------------------------------------------- 1 | 18 | 21 | 46 |
47 | 48 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/config/link.phtml: -------------------------------------------------------------------------------- 1 | 18 | getLabel(); ?> -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/create/customer.phtml: -------------------------------------------------------------------------------- 1 | 18 |
19 |
20 |
getButtonsHtml() ?>
21 |

getHeaderText() ?>

22 |
23 |
24 | getChildHtml('', true, true) ?> 25 |
26 |
27 | 47 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/create/order.phtml: -------------------------------------------------------------------------------- 1 | 18 |
19 |
20 |
getButtonsHtml() ?>
21 |

getHeaderText() ?>

22 |
23 |
24 | getChildHtml('', true, true) ?> 25 |
26 |
27 | 46 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/customer/tickets.phtml: -------------------------------------------------------------------------------- 1 | 18 | forRequester($customer->getEmail()); 28 | } catch (Exception $e) { 29 | Mage::log("Customer {$customer->getEmail()} ticket fetch resulted in: {$e->getMessage()}", null, 'zendesk.log'); 30 | } 31 | } else { 32 | Mage::log('Magento failed to return current customer.', null, 'zendesk.log'); 33 | 34 | return; 35 | } 36 | ?> 37 | 38 |
39 |
40 |
41 |
42 | 43 |
44 |
45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
__('Priority') ?>__('Subject') ?>__('Requested') ?>__('Updated') ?>__('Status') ?>__('Group') ?>__('Assignee') ?>
getTicketUrl($ticket); ?>formatDate($ticket['created_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>formatDate($ticket['updated_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>
72 |
73 |
74 |
75 |
76 | 77 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/dashboard/empty.phtml: -------------------------------------------------------------------------------- 1 | 18 |
19 |

__('No views selected. Please select one or more from the settings page.'); ?>

20 |
21 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/dashboard/index.phtml: -------------------------------------------------------------------------------- 1 | 18 | isConnected() ): ?> 19 | getIsZendeskDashboard() || Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard')): ?> 20 | getIsZendeskDashboard()): ?> 21 |
22 | 23 | 24 | 25 | 26 |

__('Dashboard') ?>

27 |
28 | 29 | 36 | 37 |
38 | getChildHtml('zendesk_dashboard_grids') ?> 39 |
40 | getIsZendeskDashboard()): ?> 41 |
42 | 45 | 48 |
49 | 50 |
51 | getChildHtml('zendesk_dashboard_empty'); ?> 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/left-menu.phtml: -------------------------------------------------------------------------------- 1 | 18 |

Zendesk

19 | 56 |
57 |
58 |

Extension Version: 3.0.1

59 |
60 | 61 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/log/index.phtml: -------------------------------------------------------------------------------- 1 | 18 |
19 |

__('Log Viewer') ?>

20 |

21 | 24 | 27 |

28 |
29 |
30 | 31 |
-------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/order/tickets.phtml: -------------------------------------------------------------------------------- 1 | 18 | getOrder(); 25 | $tickets = null; 26 | 27 | try { 28 | $tickets = Mage::getModel('zendesk/api_tickets')->forOrder($_order->getIncrementId()); 29 | } catch(Exception $e) { 30 | // Don't do anything, just don't show the tickets 31 | } 32 | 33 | ?> 34 | 35 |
36 |
37 |
38 | 39 |
getAccountEditLink() ?>
40 |
41 |
42 |
43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
helper('zendesk')->__('Subject') ?>helper('zendesk')->__('Updated') ?>helper('zendesk')->__('Status') ?>
formatDate($ticket['updated_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>
64 |
65 |
66 |
67 |
68 |
69 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/tickets/tickets.phtml: -------------------------------------------------------------------------------- 1 | 18 | forRequester($customer->getEmail()); 28 | } catch(Exception $e) { 29 | // Don't do anything, just don't show the tickets 30 | } 31 | } 32 | ?> 33 | 34 |
35 |
36 |
37 |
38 | 39 |
40 |
41 |
42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | get($ticket['id'], true); ?> 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
__('Priority') ?>__('Subject') ?>__('Requested') ?>__('Updated') ?>__('Status') ?>__('Group') ?>__('Assignee') ?>
formatDate($ticket['created_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>formatDate($ticket['updated_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>
69 |
70 |
71 |
72 |
73 | 74 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/zendesk/translations.phtml: -------------------------------------------------------------------------------- 1 | 18 | 21 | -------------------------------------------------------------------------------- /src/app/design/frontend/base/default/layout/zendesk.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | 23 | 24 | zendesk 25 | Support 26 | true 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | customertickets 38 | zendesk/customer_tickets/index 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/app/design/frontend/base/default/template/zendesk/customer/tickets.phtml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 24 | 25 |
26 |
27 |

__('My Tickets') ?>

28 |
29 | 30 |
getChildHtml(); ?>
31 |
32 | 36 | -------------------------------------------------------------------------------- /src/app/design/frontend/base/default/template/zendesk/customer/tickets/list.phtml: -------------------------------------------------------------------------------- 1 | 18 | 19 | getList(); ?> 20 | 21 | 22 |
23 |
24 | 25 |
26 |
27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
__('Subject') ?>__('Requested') ?>__('Updated') ?>__('Status') ?>
getTicketUrl($ticket); ?>formatDate($ticket['created_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>formatDate($ticket['updated_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); ?>
48 |
49 |
50 |
51 | 52 |
__('You dont have any tickets'); ?>
53 | 54 | -------------------------------------------------------------------------------- /src/app/etc/modules/Zendesk_Zendesk.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | true 23 | community 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/app/locale/en_GB/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","English (UK)" 2 | "API Details","API Details" 3 | "API Enabled","API Enabled" 4 | "API Token","API Token" 5 | "API test connection failed","API test connection failed" 6 | "API test connection successful","API test connection successful" 7 | "API","API" 8 | "Agent Email Address","Agent Email Address" 9 | "Agent Token","Agent Token" 10 | "Are you sure you want to clear the entire Zendesk log?","Are you sure you want to clear the entire Zendesk log?" 11 | "Assignee","Assignee" 12 | "Chat","Chat" 13 | "Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct.","Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct." 14 | "Code to display Feedback Tab","Code to display Feedback Tab" 15 | "Connection to Zendesk API failed","Connection to Zendesk API failed" 16 | "Connection to Zendesk API successful","Connection to Zendesk API successful" 17 | "Create Ticket","Create Ticket" 18 | "Create tickets from Contact Us form","Create tickets from Contact Us form" 19 | "Customize Feedback Tab","Customise Feedback Tab" 20 | "Customize Web Widget","Customize Web Widget" 21 | "Dashboard","Dashboard" 22 | "Decide which features you would like turned on in your Magento store.","Decide which features you would like turned on in your Magento store." 23 | "Description","Description" 24 | "Display link to Zendesk Support in Magento footer","Display link to Zendesk Support in Magento footer" 25 | "Display link to Zendesk in Magento footer","Display link to Zendesk in Magento footer" 26 | "Email","Email" 27 | "Facebook","Facebook" 28 | "Features","Features" 29 | "Feedback Tab","Feedback Tab" 30 | "File size too large - only showing the last %s lines. Click Download to retrieve the entire file.","File size too large - only showing the last %s lines. Click Download to retrieve the entire file." 31 | "General settings that are required to connect Zendesk Support and Magento.","General settings that are required to connect Zendesk Support and Magento." 32 | "General settings that are required to connect Zendesk and Magento.","General settings that are required to connect Zendesk and Magento." 33 | "General","General" 34 | "Generate","Generate" 35 | "Group","Group" 36 | "Haven't set up Zendesk Support yet? Follow our easy setup guide to get started.","Haven't set up Zendesk Support yet? Follow our easy setup guide to get started." 37 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers." 38 | "High","High" 39 | "Incident","Incident" 40 | "Include Web Widget","Include Web Widget" 41 | "Launch Zendesk Support","Launch Zendesk Support" 42 | "Launch Zendesk","Launch Zendesk" 43 | "Low","Low" 44 | "New Support Ticket","New Support Ticket" 45 | "New","New" 46 | "No tickets found","No tickets found" 47 | "No views selected. Please select one or more from the settings page.","No views selected. Please select one or more from the settings page." 48 | "Normal","Normal" 49 | "On-hold","On-hold" 50 | "Open","Open" 51 | "Order number","Order number" 52 | "Pending","Pending" 53 | "Priority","Priority" 54 | "Problem","Problem" 55 | "Question","Question" 56 | "Remote Authentication Token","Remote Authentication Token" 57 | "Remote Authentication Token","Remote Authentication Token" 58 | "Requested","Requested" 59 | "Requester Email","Requester Email" 60 | "Requester Name","Requester Name" 61 | "Requester Website","Requester Website" 62 | "Requester","Requester" 63 | "Required for Magento App inside Zendesk to work.","Required for Magento App inside Zendesk to work." 64 | "Required for Magento app to work in Zendesk Support.","Required for Magento app to work in Zendesk Support." 65 | "Save Config","Save Config" 66 | "Settings","Settings" 67 | "Setup guide","Setup guide" 68 | "Setup","Setup" 69 | "Show support tickets on admin dashboard","Show support tickets on admin dashboard" 70 | "Show support tickets on customer view","Show support tickets on customer view" 71 | "Show support tickets on order view","Show support tickets on order view" 72 | "Single Sign-on - Admins and Agents","Single Sign-on - Admins and Agents" 73 | "Single Sign-on - End-users","Single Sign-on - End users" 74 | "Single Sign-on Enabled","Single Sign-on Enabled" 75 | "Single Sign-on Enabled","Single Sign-on Enabled" 76 | "Solved","Solved" 77 | "Status","Status" 78 | "Subject","Subject" 79 | "Successfully generated a new API token","Successfully generated a new API token" 80 | "Support Channels","Support Channels" 81 | "Task","Task" 82 | "Test Connection","Test Connection" 83 | "The Zendesk log file has not been created. Check to see if logging has been enabled.","The Zendesk log file has not been created. Check to see if logging has been enabled." 84 | "Ticket #%s Created","Ticket #%s Created" 85 | "Tickets","Tickets" 86 | "To generate a token, sign in to Zendesk then select Manage > Channels > API > Token","To generate a token, sign in to Zendesk then select Manage > Channels > API > Token" 87 | "Twitter","Twitter" 88 | "Type","Type" 89 | "Updated","Updated" 90 | "Urgent","Urgent" 91 | "Use Magento to manage admin and agent authentication.","Use Magento to manage admin and agent authentication." 92 | "Use Magento to manage end-user authentication.","Use Magento to manage end user authentication." 93 | "Use Magento to manage user authentication.","Use Magento to manage user authentication." 94 | "Used to link order in Magento with tickets in Zendesk Support","Used to link order in Magento with tickets in Zendesk Support" 95 | "Used to link order in Magento with tickets in Zendesk","Used to link order in Magento with tickets in Zendesk" 96 | "View All Tickets","View All Tickets" 97 | "View ticket in Zendesk Support","View ticket in Zendesk Support" 98 | "View ticket in Zendesk","View ticket in Zendesk" 99 | "Views to show on dashboards","Views to show on dashboards" 100 | "Voice","Voice" 101 | "Web Portal","Web Portal" 102 | "Zendesk Domain","Zendesk Domain" 103 | "Zendesk Log Viewer","Zendesk Log Viewer" 104 | "Zendesk Order Number field ID","Zendesk Order Number field ID" 105 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSO token not been set. Please add this to the settings page." 106 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use." 107 | "Zendesk domain not set. Please add this to the settings page.","Zendesk domain not set. Please add this to the settings page." 108 | -------------------------------------------------------------------------------- /src/app/locale/ja_JA/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","日本語 (Japanese)" 2 | "API Details","APIの詳細" 3 | "API Enabled","API有効" 4 | "API Token","APIトークン" 5 | "API test connection failed","APIテスト接続が失敗しました" 6 | "API test connection successful","APIテスト接続が成功しました" 7 | "API","API" 8 | "Agent Email Address","エージェントのメールアドレス" 9 | "Agent Token","エージェントのトークン" 10 | "Are you sure you want to clear the entire Zendesk log?","Zendeskログをすべて消去しますか?" 11 | "Assignee","担当者" 12 | "Chat","チャット" 13 | "Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct.","「設定を保存」をクリックして、もう一度やり直してください問題が解決しない場合は、入力したエージェントのメールアドレスとエージェントトークンの組み合わせが正しいか確認してください。" 14 | "Code to display Feedback Tab","「フィードバック」タブを表示するコード" 15 | "Connection to Zendesk API failed","Zendesk APIへの接続が失敗しました" 16 | "Connection to Zendesk API successful","Zendesk APIへの接続が成功しました" 17 | "Create Ticket","チケットを作成" 18 | "Create tickets from Contact Us form","「お問い合わせ」からチケットを作成" 19 | "Customize Feedback Tab","フィードバックタブをカスタマイズ" 20 | "Customize Web Widget","Web Widgetをカスタマイズ" 21 | "Dashboard","ダッシュボード" 22 | "Decide which features you would like turned on in your Magento store.","Magentoストアで有効にする機能を決めてください。" 23 | "Description","説明" 24 | "Display link to Zendesk Support in Magento footer","MagentoフッターにZendesk Supportへのリンクを表示" 25 | "Display link to Zendesk in Magento footer","MagentoフッターにZendeskへのリンクを表示" 26 | "Email","メール" 27 | "Facebook","Facebook" 28 | "Features","機能" 29 | "Feedback Tab","フィードバックタブ" 30 | "File size too large - only showing the last %s lines. Click Download to retrieve the entire file.","ファイルサイズが大きすぎます - 最後の%s行のみ表示します。「ダウンロード」をクリックして、ファイル全体を取得してください。" 31 | "General settings that are required to connect Zendesk Support and Magento.","Zendesk SupportとMagentoを接続するために必要な一般設定。" 32 | "General settings that are required to connect Zendesk and Magento.","ZendeskとMagentoを接続するために必要な一般設定。" 33 | "General","全般" 34 | "Generate","生成" 35 | "Group","グループ" 36 | "Haven't set up Zendesk Support yet? Follow our easy setup guide to get started.","まだZendesk Supportを設定していませんか?簡単なガイドに従って、開始してください。" 37 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","まだZendeskを設定していませんか?簡単な設定ガイドに従って、Zendeskを使用した顧客サポートを開始してください。" 38 | "High","高" 39 | "Incident","事象" 40 | "Include Web Widget","Web Widgetを含める" 41 | "Launch Zendesk Support","Zendesk Supportの起動" 42 | "Launch Zendesk","Zendeskを起動" 43 | "Low","低" 44 | "New Support Ticket","新規サポートチケット" 45 | "New","新規" 46 | "No tickets found","該当するチケットがありません" 47 | "No views selected. Please select one or more from the settings page.","ビューが選択されていません。1つ以上のビューを設定ページから選択してください。" 48 | "Normal","普通" 49 | "On-hold","待機中" 50 | "Open","オープン" 51 | "Order number","注文番号" 52 | "Pending","保留中" 53 | "Priority","優先度" 54 | "Problem","問題" 55 | "Question","質問" 56 | "Remote Authentication Token","リモート認証トークン" 57 | "Remote Authentication Token","リモート認証トークン" 58 | "Requested","要求日" 59 | "Requester Email","リクエスタのメール" 60 | "Requester Name","リクエスタ名" 61 | "Requester Website","リクエスタのWebサイト" 62 | "Requester","リクエスタ" 63 | "Required for Magento App inside Zendesk to work.","Zendesk内でMagnetアプリが動作するために必要です。" 64 | "Required for Magento app to work in Zendesk Support.","Zendesk内でMagnetアプリが動作するために必要です。" 65 | "Save Config","設定の保存" 66 | "Settings","設定" 67 | "Setup guide","設定ガイド" 68 | "Setup","設定" 69 | "Show support tickets on admin dashboard","adminダッシュボードにサポートチケットを表示します。" 70 | "Show support tickets on customer view","カスタマービューにサポートチケットを表示" 71 | "Show support tickets on order view","オーダービューにサポートチケットを表示" 72 | "Single Sign-on - Admins and Agents","シングルサインオン – 管理者およびエージェント" 73 | "Single Sign-on - End-users","シングルサインオン - エンドユーザー" 74 | "Single Sign-on Enabled","シングルサインオン有効" 75 | "Single Sign-on Enabled","シングルサインオン有効" 76 | "Solved","解決済み" 77 | "Status","ステータス" 78 | "Subject","件名" 79 | "Successfully generated a new API token","新しいAPIトークンが正しく作成されました" 80 | "Support Channels","サポートチャネル" 81 | "Task","タスク" 82 | "Test Connection","テスト接続" 83 | "The Zendesk log file has not been created. Check to see if logging has been enabled.","Zendeskログファイルが作成されませんでした。ログが有効になっていたか確認してください。" 84 | "Ticket #%s Created","チケット#%sが作成されました" 85 | "Tickets","チケット" 86 | "To generate a token, sign in to Zendesk then select Manage > Channels > API > Token","トークンを生成するには、Zendeskにログインして、「管理」>「チャネル」>「API」>「トークン」を選択します" 87 | "Twitter","Twitter" 88 | "Type","タイプ" 89 | "Updated","最終更新日時" 90 | "Urgent","緊急" 91 | "Use Magento to manage admin and agent authentication.","Magentoを使用して、管理者およびエージェント認証を管理します。" 92 | "Use Magento to manage end-user authentication.","Magentoを使用して、エンドユーザー認証を管理します。" 93 | "Use Magento to manage user authentication.","Magentoを使用して、ユーザー認証を管理します。" 94 | "Used to link order in Magento with tickets in Zendesk Support","Magentoでの注文をZendesk Supportのチケットにリンクさせるために使用" 95 | "Used to link order in Magento with tickets in Zendesk","Magentoでの注文をZendeskのチケットにリンクさせるために使用" 96 | "View All Tickets","すべてのチケットを表示" 97 | "View ticket in Zendesk Support","Zendesk Supportのチケットを表示" 98 | "View ticket in Zendesk","Zendeskのチケットを表示" 99 | "Views to show on dashboards","ダッシュボードに表示するビュー" 100 | "Voice","Voice" 101 | "Web Portal","Webポータル" 102 | "Zendesk Domain","Zendeskドメイン" 103 | "Zendesk Log Viewer","Zendeskログビューア" 104 | "Zendesk Order Number field ID","Zendesk注文番号フィールドID" 105 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSOトークンが設定されていません。設定ページにこれを追加してください。" 106 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendeskでは、あなたのお客様が好きな方法で問い合わせることを可能にします。下のリンクをたどって、使用するチャネルを設定してください。" 107 | "Zendesk domain not set. Please add this to the settings page.","Zendeskドメインが設定されていません。設定ページにこれを追加してください。" 108 | -------------------------------------------------------------------------------- /src/app/locale/ja_JP/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","Japanese" 2 | "Required for Magento App inside Zendesk to work.","Zendesk内でMagnetアプリが動作するために必要です。" 3 | "API Enabled","API有効" 4 | "Generate","生成" 5 | "Successfully generated a new API token","新しいAPIトークンが正しく作成されました" 6 | "API Details","APIの詳細" 7 | "API Token","APIトークン" 8 | "Create tickets from Contact Us form","「お問い合わせください」からチケットを作成" 9 | "Decide which features you would like turned on in your Magento store.","Magentoストアで有効にする機能を決めてください。" 10 | "Code to display Feedback Tab","「フィードバック」タブを表示するコード" 11 | "Customize Feedback Tab","「フィードバック」タブをカスタマイズ" 12 | "Zendesk Order Number field ID","Zendesk注文番号フィールドID" 13 | "Used to link order in Magento with tickets in Zendesk","Magentoでの注文をZendeskのチケットにリンクさせるために使用" 14 | "Show support tickets on customer view","カスタマービューにサポートチケットを表示" 15 | "Show support tickets on admin dashboard","adminダッシュボードにサポートチケットを表示します" 16 | "Show support tickets on order view","オーダービューにサポートチケットを表示" 17 | "Features","機能" 18 | "Views to show on dashboards","ダッシュボードに表示するビュー" 19 | "General settings that are required to connect Zendesk and Magento.","ZendeskとMagentoを接続するために必要な一般的な設定。" 20 | "Zendesk Domain","Zendeskドメイン" 21 | "Agent Email Address","エージェントの電子メールアドレス" 22 | "Remote Authentication Token","リモート認証トークン" 23 | "General","全般" 24 | "Agent Token","エージェントのトークン" 25 | "To generate a token, log in to Zendesk then select Manage > Channels > API > Token","トークンを生成するには、Zendeskにログインして、「管理」>「チャネル」>「API」>「トークン」を選択します" 26 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","まだZendeskを設定していませんか?簡単な設定ガイドに従って、Zendeskを使用した顧客サポートを開始してください。" 27 | "Setup","設定" 28 | "Use Magento to manage user authentication.","Magentoを使用して、ユーザー認証を管理します。" 29 | "Single Sign-on","シングルサインオン" 30 | "API","API" 31 | "Chat","チャット" 32 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendeskでは、あなたのお客様が好きな方法で問い合わせることを可能にします。下のリンクをたどって、使用するチャネルを設定してください。" 33 | "Email","電子メール" 34 | "Facebook","Facebook" 35 | "Feedback Tab","フィードバックタブ" 36 | "Support Channels","サポートチャネル" 37 | "Twitter","Twitter" 38 | "Voice","Voice" 39 | "Web Portal","Webポータル" 40 | "Dashboard","ダッシュボード" 41 | "Zendesk domain not set. Please add this to the settings page.","Zendeskドメインが設定されていません。設定ページにこれを追加してください。" 42 | "Launch Zendesk","Zendeskを起動" 43 | "No views selected. Please select one or more from the settings page.","ビューが選択されていません。1つ以上のビューを設定ページから選択してください。" 44 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSOトークンが設定されていません。設定ページにこれを追加してください。" 45 | "Support Tickets","サポートチケット" 46 | "View All Tickets","すべてのチケットを表示" 47 | "View ticket in Zendesk","Zendeskのチケットを表示" 48 | "Assignee","担当者" 49 | "Create Ticket","チケットを作成" 50 | "Description","説明" 51 | "Group","グループ" 52 | "New Support Ticket","新規サポートチケット" 53 | "No tickets found","該当するチケットがありません" 54 | "Order Number","注文番号" 55 | "Priority","優先度" 56 | "High","高" 57 | "Low","低" 58 | "Normal","普通" 59 | "Urgent","緊急" 60 | "Requester Email","リクエスタの電子メール" 61 | "Requester Name","リクエスタ名" 62 | "Requester Website","リクエスタのWebサイト" 63 | "Status","ステータス" 64 | "New","新規" 65 | "On-hold","待機中" 66 | "Open","オープン" 67 | "Pending","保留中" 68 | "Solved","解決済み" 69 | "Subject","件名" 70 | "Ticket #%s Created","チケット#%sが作成されました" 71 | "Type","タイプ" 72 | "Incident","事象" 73 | "Problem","問題" 74 | "Question","質問" 75 | "Task","タスク" 76 | "Updated","最終更新日時" 77 | -------------------------------------------------------------------------------- /src/app/locale/ko_KO/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","한국어 (Korean)" 2 | "API Details","API 세부 정보" 3 | "API Enabled","API 사용" 4 | "API Token","API 토큰" 5 | "API test connection failed","API 연결 테스트에 실패했습니다." 6 | "API test connection successful","API 연결 테스트에 성공했습니다." 7 | "API","API" 8 | "Agent Email Address","상담원 이메일 주소" 9 | "Agent Token","상담원 토큰" 10 | "Are you sure you want to clear the entire Zendesk log?","전체 Zendesk 로그를 지우시겠습니까?" 11 | "Assignee","담당자" 12 | "Chat","채팅" 13 | "Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct.","'구성 저장'을 클릭하고 다시 시도하세요. 문제가 계속 발생하면 입력한 상담원 이메일 주소와 상담원 토큰 조합이 올바른지 확인하세요." 14 | "Code to display Feedback Tab","피드백 탭을 표시하는 코드" 15 | "Connection to Zendesk API failed","Zendesk API 연결에 실패했습니다." 16 | "Connection to Zendesk API successful","Zendesk API 연결에 성공했습니다." 17 | "Create Ticket","티켓 만들기" 18 | "Create tickets from Contact Us form","사용자 문의 양식에서 티켓 만들기" 19 | "Customize Feedback Tab","피드백 탭 사용자 지정" 20 | "Customize Web Widget","Web Widget 사용자 지정" 21 | "Dashboard","대시보드" 22 | "Decide which features you would like turned on in your Magento store.","Magento 스토어에서 설정하고자 하는 기능을 결정합니다." 23 | "Description","설명" 24 | "Display link to Zendesk Support in Magento footer","Magento 바닥글에 Zendesk Support에 대한 링크 표시" 25 | "Display link to Zendesk in Magento footer","Magento 바닥글에 Zendesk에 대한 링크 표시" 26 | "Email","이메일" 27 | "Facebook","페이스북" 28 | "Features","기능" 29 | "Feedback Tab","피드백 탭" 30 | "File size too large - only showing the last %s lines. Click Download to retrieve the entire file.","파일 크기가 너무 커서 마지막 %s개 행만 표시합니다. 전체 파일을 검색하려면 다운로드를 클릭하세요." 31 | "General settings that are required to connect Zendesk Support and Magento.","Zendesk Support와 Magento를 연결하는 데 필요한 일반 설정입니다." 32 | "General settings that are required to connect Zendesk and Magento.","Zendesk와 Magento를 연결하는 데 필요한 일반 설정입니다." 33 | "General","일반" 34 | "Generate","생성" 35 | "Group","그룹" 36 | "Haven't set up Zendesk Support yet? Follow our easy setup guide to get started.","아직 Zendesk Support를 설정하지 않으셨나요? 쉬운 설정 설명서에 따라 시작하세요." 37 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","아직 Zendesk를 설정하지 않으셨습니까? 쉬운 설치 설명서를 따라 Zendesk를 설치하여 고객을 지원하세요." 38 | "High","높음" 39 | "Incident","사건" 40 | "Include Web Widget","Web Widget 포함" 41 | "Launch Zendesk Support","Zendesk Support 시작" 42 | "Launch Zendesk","Zendesk 시작" 43 | "Low","낮음" 44 | "New Support Ticket","새 지원 티켓" 45 | "New","신규" 46 | "No tickets found","티켓을 찾을 수 없습니다." 47 | "No views selected. Please select one or more from the settings page.","보기를 선택하지 않았습니다. 설정 페이지에서 하나 이상을 선택하세요." 48 | "Normal","보통" 49 | "On-hold","대기" 50 | "Open","등록" 51 | "Order number","주문 번호" 52 | "Pending","보류" 53 | "Priority","우선 순위" 54 | "Problem","문제" 55 | "Question","질문" 56 | "Remote Authentication Token","원격 인증 토큰" 57 | "Remote Authentication Token","원격 인증 토큰" 58 | "Requested","요청 날짜" 59 | "Requester Email","요청자 이메일" 60 | "Requester Name","요청자 이름" 61 | "Requester Website","요청자 웹사이트" 62 | "Requester","요청자" 63 | "Required for Magento App inside Zendesk to work.","Zendesk 내부 Magento 앱 작동을 위해 필요한 사항" 64 | "Required for Magento app to work in Zendesk Support.","Magento 앱이 Zendesk Support에서 작동하려면 필요합니다." 65 | "Save Config","구성 저장" 66 | "Settings","설정" 67 | "Setup guide","설치 설명서" 68 | "Setup","설정" 69 | "Show support tickets on admin dashboard","관리자 대시보드에서 지원 티켓 표시" 70 | "Show support tickets on customer view","고객 보기에서 지원 티켓 표시" 71 | "Show support tickets on order view","주문 보기에서 지원 티켓 표시" 72 | "Single Sign-on - Admins and Agents","관리자 및 상담원에 대한 통합 인증" 73 | "Single Sign-on - End-users","최종 사용자에 대한 통합 인증" 74 | "Single Sign-on Enabled","통합 인증 사용" 75 | "Single Sign-on Enabled","통합 인증 사용" 76 | "Solved","해결" 77 | "Status","상태" 78 | "Subject","제목" 79 | "Successfully generated a new API token","성공적으로 새로운 API 토큰 생성" 80 | "Support Channels","지원 채널" 81 | "Task","작업" 82 | "Test Connection","연결 테스트" 83 | "The Zendesk log file has not been created. Check to see if logging has been enabled.","Zendesk 로그 파일이 만들어지 않았습니다. 로깅이 활성화되었는지를 확인하세요." 84 | "Ticket #%s Created","티켓 #%s을(를) 만들었습니다." 85 | "Tickets","티켓" 86 | "To generate a token, sign in to Zendesk then select Manage > Channels > API > Token","토큰을 생성하려면 Zendesk에 로그인한 후 관리 > 채널 > API > 토큰을 선택합니다." 87 | "Twitter","트위터" 88 | "Type","유형" 89 | "Updated","업데이트됨" 90 | "Urgent","긴급" 91 | "Use Magento to manage admin and agent authentication.","관리자 및 상담원 인증을 관리하려면 Magento를 사용하세요." 92 | "Use Magento to manage end-user authentication.","최종 사용자 인증을 관리하려면 Magento를 사용하세요." 93 | "Use Magento to manage user authentication.","사용자 인증을 관리하려면 Magento를 사용하세요." 94 | "Used to link order in Magento with tickets in Zendesk Support","Magento에서의 주문을 Zendesk Support의 티켓과 연결하는 데 사용됩니다." 95 | "Used to link order in Magento with tickets in Zendesk","Magento의 주문과 Zendesk의 티켓 연결에 사용됩니다." 96 | "View All Tickets","모든 티켓 보기" 97 | "View ticket in Zendesk Support","Zendesk Support의 티켓 보기" 98 | "View ticket in Zendesk","Zendesk의 티켓 보기" 99 | "Views to show on dashboards","대시보드에 표시할 보기" 100 | "Voice","Voice" 101 | "Web Portal","웹 포털" 102 | "Zendesk Domain","Zendesk 도메인" 103 | "Zendesk Log Viewer","Zendesk 로그 뷰어" 104 | "Zendesk Order Number field ID","Zendesk 주문 번호 필드 아이디" 105 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSO 토큰이 설정되지 않았습니다. Zendesk SSO 토큰을 설정 페이지에 추가하세요." 106 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendesk를 통해 고객들이 원하는 방법을 사용하여 귀사에 연락할수 있습니다. 사용하고자하는 채널을 구성하려면 아래 링크를 사용하세요." 107 | "Zendesk domain not set. Please add this to the settings page.","Zendesk 도메인이 설정되지 않았습니다. Zendesk 도메인을 설정 페이지에 추가하세요." 108 | -------------------------------------------------------------------------------- /src/app/locale/ko_KR/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","한국어" 2 | "Required for Magento App inside Zendesk to work.","Zendesk 내부 Magento 앱 작동을 위해 필요한 사항" 3 | "API Enabled","API 사용" 4 | "Generate","생성" 5 | "Successfully generated a new API token","성공적으로 새로운 API 토큰 생성" 6 | "API Details","API 세부 정보" 7 | "API Token","API 토큰" 8 | "Create tickets from Contact Us form","사용자 문의 양식에서 티켓 만들기" 9 | "Decide which features you would like turned on in your Magento store.","Magento 스토어에서 설정하고자 하는 기능을 결정합니다." 10 | "Code to display Feedback Tab","피드백 탭을 표시하는 코드" 11 | "Customize Feedback Tab","피드백 탭 사용자 지정" 12 | "Zendesk Order Number field ID","Zendesk 주문 번호 필드 ID" 13 | "Used to link order in Magento with tickets in Zendesk","Magento의 주문과 Zendesk의 티켓 연결에 사용됩니다." 14 | "Show support tickets on customer view","고객 보기에서 지원 티켓 표시" 15 | "Show support tickets on admin dashboard","관리자 대시보드에서 지원 티켓 표시" 16 | "Show support tickets on order view","주문 보기에서 지원 티켓 표시" 17 | "Features","기능" 18 | "Views to show on dashboards","대시보드에 표시할 보기" 19 | "General settings that are required to connect Zendesk and Magento.","Zendesk와 Magento를 연결하는 데 필요한 일반 설정입니다." 20 | "Zendesk Domain","Zendesk 도메인" 21 | "Agent Email Address","상담원 이메일 주소" 22 | "Remote Authentication Token","원격 인증 토큰" 23 | "General","일반" 24 | "Agent Token","상담원 토큰" 25 | "To generate a token, log in to Zendesk then select Manage > Channels > API > Token","토큰을 생성하려면 Zendesk에 로그인한 후 관리 > 채널 > API > 토큰을 선택합니다." 26 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","아직 Zendesk를 설정하지 않으셨습니까? 쉬운 설치 설명서를 따라 Zendesk를 설치하여 고객을 지원하십시오." 27 | "Setup","설정" 28 | "Use Magento to manage user authentication.","사용자 인증을 관리하려면 Magento를 사용하십시오." 29 | "Single Sign-on","통합 인증" 30 | "API","API" 31 | "Chat","채팅" 32 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendesk를 통해 고객들이 원하는 방법을 사용하여 귀사에 연락할수 있습니다. 사용하고자하는 채널을 구성하려면 아래 링크를 사용하십시오." 33 | "Email","이메일" 34 | "Facebook","페이스북" 35 | "Feedback Tab","피드백 탭" 36 | "Support Channels","지원 채널" 37 | "Twitter","트위터" 38 | "Voice","음성" 39 | "Web Portal","웹 포털" 40 | "Dashboard","대시보드" 41 | "Zendesk domain not set. Please add this to the settings page.","Zendesk 도메인이 설정되지 않았습니다. Zendesk 도메인을 설정 페이지에 추가하십시오." 42 | "Launch Zendesk","Zendesk 시작" 43 | "No views selected. Please select one or more from the settings page.","보기를 선택하지 않았습니다. 설정 페이지에서 하나 이상을 선택하십시오." 44 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSO 토큰이 설정되지 않았습니다. Zendesk SSO 토큰을 설정 페이지에 추가하십시오." 45 | "Support Tickets","지원 티켓" 46 | "View All Tickets","모든 티켓 보기" 47 | "View ticket in Zendesk","Zendesk의 티켓 보기" 48 | "Assignee","담당자" 49 | "Create Ticket","티켓 만들기" 50 | "Description","설명" 51 | "Group","그룹" 52 | "New Support Ticket","새 지원 티켓" 53 | "No tickets found","티켓을 찾을 수 없습니다" 54 | "Order Number","주문 번호" 55 | "Priority","우선 순위" 56 | "High","높음" 57 | "Low","낮음" 58 | "Normal","보통" 59 | "Urgent","긴급" 60 | "Requester Email","요청자 이메일" 61 | "Requester Name","요청자 이름" 62 | "Requester Website","요청자 웹사이트" 63 | "Status","상태" 64 | "New","신규" 65 | "On-hold","대기" 66 | "Open","등록" 67 | "Pending","보류" 68 | "Solved","해결" 69 | "Subject","제목" 70 | "Ticket #%s Created","티켓 #%s을(를) 만들었습니다" 71 | "Type","유형" 72 | "Incident","사건" 73 | "Problem","문제" 74 | "Question","질문" 75 | "Task","작업" 76 | "Updated","업데이트됨" 77 | -------------------------------------------------------------------------------- /src/app/locale/uk_UK/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","Українська" 2 | "API Details","API Details" 3 | "API Enabled","API Enabled" 4 | "API Token","API Token" 5 | "API test connection failed","API test connection failed" 6 | "API test connection successful","API test connection successful" 7 | "API","API" 8 | "Agent Email Address","Agent Email Address" 9 | "Agent Token","Agent Token" 10 | "Are you sure you want to clear the entire Zendesk log?","Are you sure you want to clear the entire Zendesk log?" 11 | "Assignee","Assignee" 12 | "Chat","Chat" 13 | "Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct.","Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct." 14 | "Code to display Feedback Tab","Code to display Feedback Tab" 15 | "Connection to Zendesk API failed","Connection to Zendesk API failed" 16 | "Connection to Zendesk API successful","Connection to Zendesk API successful" 17 | "Create Ticket","Create Ticket" 18 | "Create tickets from Contact Us form","Create tickets from Contact Us form" 19 | "Customize Feedback Tab","Customize Feedback Tab" 20 | "Customize Web Widget","Customize Web Widget" 21 | "Dashboard","Dashboard" 22 | "Decide which features you would like turned on in your Magento store.","Decide which features you would like turned on in your Magento store." 23 | "Description","Description" 24 | "Display link to Zendesk Support in Magento footer","Display link to Zendesk Support in Magento footer" 25 | "Display link to Zendesk in Magento footer","Display link to Zendesk in Magento footer" 26 | "Email","Email" 27 | "Facebook","Facebook" 28 | "Features","Features" 29 | "Feedback Tab","Feedback Tab" 30 | "File size too large - only showing the last %s lines. Click Download to retrieve the entire file.","File size too large - only showing the last %s lines. Click Download to retrieve the entire file." 31 | "General settings that are required to connect Zendesk Support and Magento.","General settings that are required to connect Zendesk Support and Magento." 32 | "General settings that are required to connect Zendesk and Magento.","General settings that are required to connect Zendesk and Magento." 33 | "General","General" 34 | "Generate","Generate" 35 | "Group","Group" 36 | "Haven't set up Zendesk Support yet? Follow our easy setup guide to get started.","Haven't set up Zendesk Support yet? Follow our easy setup guide to get started." 37 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers." 38 | "High","High" 39 | "Incident","Incident" 40 | "Include Web Widget","Include Web Widget" 41 | "Launch Zendesk Support","Launch Zendesk Support" 42 | "Launch Zendesk","Launch Zendesk" 43 | "Low","Low" 44 | "New Support Ticket","New Support Ticket" 45 | "New","New" 46 | "No tickets found","No tickets found" 47 | "No views selected. Please select one or more from the settings page.","No views selected. Please select one or more from the settings page." 48 | "Normal","Normal" 49 | "On-hold","On-hold" 50 | "Open","Open" 51 | "Order number","Order number" 52 | "Pending","Pending" 53 | "Priority","Priority" 54 | "Problem","Problem" 55 | "Question","Question" 56 | "Remote Authentication Token","Remote Authentication Token" 57 | "Remote Authentication Token","Remote Authentication Token" 58 | "Requested","Requested" 59 | "Requester Email","Requester Email" 60 | "Requester Name","Requester Name" 61 | "Requester Website","Requester Website" 62 | "Requester","Requester" 63 | "Required for Magento App inside Zendesk to work.","Required for Magento App inside Zendesk to work." 64 | "Required for Magento app to work in Zendesk Support.","Required for Magento app to work in Zendesk Support." 65 | "Save Config","Save Config" 66 | "Settings","Settings" 67 | "Setup guide","Setup guide" 68 | "Setup","Setup" 69 | "Show support tickets on admin dashboard","Show support tickets on admin dashboard" 70 | "Show support tickets on customer view","Show support tickets on customer view" 71 | "Show support tickets on order view","Show support tickets on order view" 72 | "Single Sign-on - Admins and Agents","Single Sign-on - Admins and Agents" 73 | "Single Sign-on - End-users","Single Sign-on - End-users" 74 | "Single Sign-on Enabled","Single Sign-on Enabled" 75 | "Single Sign-on Enabled","Single Sign-on Enabled" 76 | "Solved","Solved" 77 | "Status","Status" 78 | "Subject","Subject" 79 | "Successfully generated a new API token","Successfully generated a new API token" 80 | "Support Channels","Support Channels" 81 | "Task","Task" 82 | "Test Connection","Test Connection" 83 | "The Zendesk log file has not been created. Check to see if logging has been enabled.","The Zendesk log file has not been created. Check to see if logging has been enabled." 84 | "Ticket #%s Created","Ticket #%s Created" 85 | "Tickets","Tickets" 86 | "To generate a token, sign in to Zendesk then select Manage > Channels > API > Token","To generate a token, sign in to Zendesk then select Manage > Channels > API > Token" 87 | "Twitter","Twitter" 88 | "Type","Type" 89 | "Updated","Updated" 90 | "Urgent","Urgent" 91 | "Use Magento to manage admin and agent authentication.","Use Magento to manage admin and agent authentication." 92 | "Use Magento to manage end-user authentication.","Use Magento to manage end-user authentication." 93 | "Use Magento to manage user authentication.","Use Magento to manage user authentication." 94 | "Used to link order in Magento with tickets in Zendesk Support","Used to link order in Magento with tickets in Zendesk Support" 95 | "Used to link order in Magento with tickets in Zendesk","Used to link order in Magento with tickets in Zendesk" 96 | "View All Tickets","View All Tickets" 97 | "View ticket in Zendesk Support","View ticket in Zendesk Support" 98 | "View ticket in Zendesk","View ticket in Zendesk" 99 | "Views to show on dashboards","Views to show on dashboards" 100 | "Voice","Voice" 101 | "Web Portal","Web Portal" 102 | "Zendesk Domain","Zendesk Domain" 103 | "Zendesk Log Viewer","Zendesk Log Viewer" 104 | "Zendesk Order Number field ID","Zendesk Order Number field ID" 105 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSO token not been set. Please add this to the settings page." 106 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use." 107 | "Zendesk domain not set. Please add this to the settings page.","Zendesk domain not set. Please add this to the settings page." 108 | -------------------------------------------------------------------------------- /src/app/locale/zh_CN/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","简体中文 (Simplified Chinese)" 2 | "API Details","API 详情" 3 | "API Enabled","启用 API" 4 | "API Token","API 密钥" 5 | "API test connection failed","API 测试连接失败" 6 | "API test connection successful","API 测试连接成功" 7 | "API","API" 8 | "Agent Email Address","专员电邮地址" 9 | "Agent Token","专员密钥" 10 | "Are you sure you want to clear the entire Zendesk log?","您确定要清除整个 Zendesk 日志吗?" 11 | "Assignee","受托人" 12 | "Chat","在线交谈" 13 | "Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct.","单击“保存配置”并重试。如果继续出现问题,检查输入的专员电邮地址和专员密钥组合是否正确。" 14 | "Code to display Feedback Tab","显示反馈标签的代码" 15 | "Connection to Zendesk API failed","连接到 Zendesk API 失败" 16 | "Connection to Zendesk API successful","连接到 Zendesk API 成功" 17 | "Create Ticket","创建工单" 18 | "Create tickets from Contact Us form","从“联系我们”表格创建工单" 19 | "Customize Feedback Tab","自定义反馈标签" 20 | "Customize Web Widget","自定义 Web Widget" 21 | "Dashboard","面板" 22 | "Decide which features you would like turned on in your Magento store.","决定您希望在 Magento 商店中打开的功能。" 23 | "Description","描述" 24 | "Display link to Zendesk Support in Magento footer","在 Magento 页脚中显示前往 Zendesk Support 的链接" 25 | "Display link to Zendesk in Magento footer","在 Magento 页脚中显示前往 Zendesk 的链接" 26 | "Email","电邮" 27 | "Facebook","Facebook" 28 | "Features","功能" 29 | "Feedback Tab","反馈标签" 30 | "File size too large - only showing the last %s lines. Click Download to retrieve the entire file.","文件太大 —— 仅显示最后 %s 行。单击“下载”检索整个文件。" 31 | "General settings that are required to connect Zendesk Support and Magento.","用于连接 Zendesk Support 和 Magento 的一般设置。" 32 | "General settings that are required to connect Zendesk and Magento.","用于连接 Zendesk 和 Magento 的一般设置。" 33 | "General","通用" 34 | "Generate","生成" 35 | "Group","组" 36 | "Haven't set up Zendesk Support yet? Follow our easy setup guide to get started.","尚未设置 Zendesk Support?跟着我们的简易设置指南开始。" 37 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","尚未设置 Zendesk?跟着我们的简易设置指南,开始使用 Zendesk 支持客户。" 38 | "High","高" 39 | "Incident","事务" 40 | "Include Web Widget","包括 Web Widget" 41 | "Launch Zendesk Support","启动 Zendesk Support" 42 | "Launch Zendesk","启动 Zendesk" 43 | "Low","低" 44 | "New Support Ticket","新建支持工单" 45 | "New","新建" 46 | "No tickets found","未找到工单" 47 | "No views selected. Please select one or more from the settings page.","未选择视图。请从设置页面选择一个或多个。" 48 | "Normal","正常" 49 | "On-hold","暂停" 50 | "Open","已开启" 51 | "Order number","订单号" 52 | "Pending","待回应" 53 | "Priority","优先级" 54 | "Problem","故障" 55 | "Question","问题" 56 | "Remote Authentication Token","远程身份验证密钥" 57 | "Remote Authentication Token","远程身份验证密钥" 58 | "Requested","请求于" 59 | "Requester Email","请求者电邮" 60 | "Requester Name","请求者名称" 61 | "Requester Website","请求者网站" 62 | "Requester","请求者" 63 | "Required for Magento App inside Zendesk to work.","供 Zendesk 内部的 Magento 应用运作所需。" 64 | "Required for Magento app to work in Zendesk Support.","供 Magento 应用在 Zendesk Support 内运作所需。" 65 | "Save Config","保存配置" 66 | "Settings","设置" 67 | "Setup guide","设置指南" 68 | "Setup","设置" 69 | "Show support tickets on admin dashboard","在管理员面板中显示支持工单。" 70 | "Show support tickets on customer view","在客户视图中显示支持工单" 71 | "Show support tickets on order view","在订单视图中显示支持工单" 72 | "Single Sign-on - Admins and Agents","单点登录 —— 管理员和专员" 73 | "Single Sign-on - End-users","单点登录 —— 终端用户" 74 | "Single Sign-on Enabled","单点登录已启用" 75 | "Single Sign-on Enabled","单点登录已启用" 76 | "Solved","已解决" 77 | "Status","状态" 78 | "Subject","标题" 79 | "Successfully generated a new API token","已成功生成新的 API 密钥" 80 | "Support Channels","支持渠道" 81 | "Task","任务" 82 | "Test Connection","测试连接" 83 | "The Zendesk log file has not been created. Check to see if logging has been enabled.","Zendesk 日志文件尚未创建。检查日志是否已启用。" 84 | "Ticket #%s Created","工单 #%s 已创建" 85 | "Tickets","工单" 86 | "To generate a token, sign in to Zendesk then select Manage > Channels > API > Token","要生成密钥,登录 Zendesk 然后选择管理 > 渠道 > API > 密钥" 87 | "Twitter","Twitter" 88 | "Type","类型" 89 | "Updated","更新于" 90 | "Urgent","紧急" 91 | "Use Magento to manage admin and agent authentication.","使用 Magento 管理管理员和专员的身份验证。" 92 | "Use Magento to manage end-user authentication.","使用 Magento 管理终端用户的身份验证。" 93 | "Use Magento to manage user authentication.","使用 Magento 管理用户身份验证。" 94 | "Used to link order in Magento with tickets in Zendesk Support","用于链接 Magento 订单与 Zendesk Support 工单" 95 | "Used to link order in Magento with tickets in Zendesk","用于链接 Magento 订单与 Zendesk 工单" 96 | "View All Tickets","查看所有工单" 97 | "View ticket in Zendesk Support","在 Zendesk Support 中查看工单" 98 | "View ticket in Zendesk","在 Zendesk 中查看工单" 99 | "Views to show on dashboards","在面板上显示的视图" 100 | "Voice","Voice" 101 | "Web Portal","网络门户" 102 | "Zendesk Domain","Zendesk 域名" 103 | "Zendesk Log Viewer","Zendesk 日志查看器" 104 | "Zendesk Order Number field ID","Zendesk 订单号字段 ID" 105 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSO 密钥尚未设置。请将此添加至设置页面。" 106 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendesk 允许您的客户用其偏好的方式联系您。使用下面的链接配置您希望使用的渠道。" 107 | "Zendesk domain not set. Please add this to the settings page.","Zendesk 域名尚未设置。请将此添加至设置页面。" 108 | -------------------------------------------------------------------------------- /src/app/locale/zh_TW/Zendesk_Zendesk.csv: -------------------------------------------------------------------------------- 1 | "English","繁體中文 (Traditional Chinese)" 2 | "API Details","API 詳情" 3 | "API Enabled","啟用 API" 4 | "API Token","API 金鑰" 5 | "API test connection failed","API 測試連線失敗" 6 | "API test connection successful","API 測試連線成功" 7 | "API","API" 8 | "Agent Email Address","代理電郵地址" 9 | "Agent Token","代理金鑰" 10 | "Are you sure you want to clear the entire Zendesk log?","是否確定要清除整個 Zendesk 記錄檔?" 11 | "Assignee","受託人" 12 | "Chat","交談" 13 | "Click 'Save Config' and try again. If the issue persist, check if the entered Agent Email Address and Agent Token combination is correct.","按一下「儲存設定」並重試。若問題持續請檢查輸入的代理電郵地址與代理金鑰組合是否正確。" 14 | "Code to display Feedback Tab","顯示反饋標籤的代碼" 15 | "Connection to Zendesk API failed","連線至 Zendesk API 失敗" 16 | "Connection to Zendesk API successful","連線至 Zendesk API 成功" 17 | "Create Ticket","建立工單" 18 | "Create tickets from Contact Us form","從「聯絡我們」表單建立工單" 19 | "Customize Feedback Tab","自訂反饋標籤" 20 | "Customize Web Widget","自訂 Web Widget" 21 | "Dashboard","儀表板" 22 | "Decide which features you would like turned on in your Magento store.","決定您希望在 Magento 商店中開啟的功能。" 23 | "Description","描述" 24 | "Display link to Zendesk Support in Magento footer","在 Magento 頁尾中顯示前往 Zendesk Support 的連結" 25 | "Display link to Zendesk in Magento footer","在 Magento 頁尾中顯示前往 Zendesk 的連結" 26 | "Email","電郵" 27 | "Facebook","Facebook" 28 | "Features","功能" 29 | "Feedback Tab","反饋標籤" 30 | "File size too large - only showing the last %s lines. Click Download to retrieve the entire file.","檔案過大 —— 僅顯示最後 %s 行。按一下「下載」擷取整個檔案。" 31 | "General settings that are required to connect Zendesk Support and Magento.","用於連線 Zendesk Support 和 Magento 的一般設定值。" 32 | "General settings that are required to connect Zendesk and Magento.","用於連線 Zendesk 和 Magento 的一般設定值。" 33 | "General","一般" 34 | "Generate","產生" 35 | "Group","小組" 36 | "Haven't set up Zendesk Support yet? Follow our easy setup guide to get started.","尚未設定 Zendesk Support?跟著我們的簡易設定指南開始。" 37 | "Haven't setup Zendesk yet? Follow our easy setup guide to start using Zendesk to support your customers.","尚未設定 Zendesk?跟著我們的簡易設定指南,開始使用 Zendesk 支援客戶。" 38 | "High","高" 39 | "Incident","事件" 40 | "Include Web Widget","包含 Web Widget" 41 | "Launch Zendesk Support","啟動 Zendesk Support" 42 | "Launch Zendesk","啟動 Zendesk" 43 | "Low","低" 44 | "New Support Ticket","新建支援工單" 45 | "New","新建" 46 | "No tickets found","找不到工單" 47 | "No views selected. Please select one or more from the settings page.","未選擇視圖。請從設定值頁面選擇一個或多個。" 48 | "Normal","正常" 49 | "On-hold","暫停" 50 | "Open","已開啟" 51 | "Order number","訂單號碼" 52 | "Pending","未決" 53 | "Priority","優先等級" 54 | "Problem","事故" 55 | "Question","問題" 56 | "Remote Authentication Token","遠端驗證金鑰" 57 | "Remote Authentication Token","遠端驗證金鑰" 58 | "Requested","請求於" 59 | "Requester Email","請求者電郵" 60 | "Requester Name","請求者名稱" 61 | "Requester Website","請求者網站" 62 | "Requester","請求者" 63 | "Required for Magento App inside Zendesk to work.","供 Zendesk 內 Magento App 運作所需。" 64 | "Required for Magento app to work in Zendesk Support.","供 Magento app 在 Zendesk Support 內運作所需。" 65 | "Save Config","儲存設定" 66 | "Settings","設定值" 67 | "Setup guide","設定指南" 68 | "Setup","設定" 69 | "Show support tickets on admin dashboard","在管理員儀表板中顯示支援工單。" 70 | "Show support tickets on customer view","在客戶視圖中顯示支援工單" 71 | "Show support tickets on order view","在訂單視圖中顯示支援工單" 72 | "Single Sign-on - Admins and Agents","單一登入 —— 管理員和代理" 73 | "Single Sign-on - End-users","單一登入 —— 終端使用者" 74 | "Single Sign-on Enabled","已啟用單一登入" 75 | "Single Sign-on Enabled","已啟用單一登入" 76 | "Solved","已解決" 77 | "Status","狀態" 78 | "Subject","標題" 79 | "Successfully generated a new API token","已成功產生新的 API 金鑰" 80 | "Support Channels","支援管道" 81 | "Task","任務" 82 | "Test Connection","測試連線" 83 | "The Zendesk log file has not been created. Check to see if logging has been enabled.","尚未建立 Zendesk 記錄檔。檢查是否已啟用記錄。" 84 | "Ticket #%s Created","工單 #%s 已建立" 85 | "Tickets","工單" 86 | "To generate a token, sign in to Zendesk then select Manage > Channels > API > Token","要產生金鑰,登入 Zendesk 然後選擇管理 > 管道 > API > 金鑰" 87 | "Twitter","Twitter" 88 | "Type","類型" 89 | "Updated","更新於" 90 | "Urgent","緊急" 91 | "Use Magento to manage admin and agent authentication.","使用 Magento 管理管理員和代理驗證。" 92 | "Use Magento to manage end-user authentication.","使用 Magento 管理終端使用者驗證。" 93 | "Use Magento to manage user authentication.","使用 Magento 管理使用者驗證。" 94 | "Used to link order in Magento with tickets in Zendesk Support","用於連結 Magento 訂單與 Zendesk Support 工單" 95 | "Used to link order in Magento with tickets in Zendesk","用於連結 Magento 訂單與 Zendesk 工單" 96 | "View All Tickets","檢視所有工單" 97 | "View ticket in Zendesk Support","在 Zendesk Support 中檢視工單" 98 | "View ticket in Zendesk","在 Zendesk 中檢視工單" 99 | "Views to show on dashboards","在儀表板上顯示的視圖" 100 | "Voice","Voice" 101 | "Web Portal","入口網站" 102 | "Zendesk Domain","Zendesk 網域" 103 | "Zendesk Log Viewer","Zendesk 記錄檔檢視器" 104 | "Zendesk Order Number field ID","Zendesk 訂單號碼欄位 ID" 105 | "Zendesk SSO token not been set. Please add this to the settings page.","Zendesk SSO 金鑰尚未設定。請將此新增至設定值頁面。" 106 | "Zendesk allows your customers to contact you using the methods they prefer. Use the links below to configure the channels you would like to use.","Zendesk 允許您的客戶用其偏好的方式聯絡您。使用下面的連結設定您希望使用的管道。" 107 | "Zendesk domain not set. Please add this to the settings page.","Zendesk 網域尚未設定。請將此新增至設定值頁面。" 108 | -------------------------------------------------------------------------------- /src/js/zendesk/validation.js: -------------------------------------------------------------------------------- 1 | Validation.addAllThese([ 2 | ['validate-zendesk-sso-token', 'Token cannot be empty', function (v) { 3 | if ($('zendesk_sso_enabled').getValue() === '1') { 4 | return !Validation.get('IsEmpty').test(v); 5 | } else { 6 | return true; 7 | } 8 | }], 9 | ['validate-zendesk-sso-frontend-token', 'Token cannot be empty', function (v) { 10 | if ($('zendesk_sso_frontend_enabled').getValue() === '1') { 11 | return !Validation.get('IsEmpty').test(v); 12 | } else { 13 | return true; 14 | } 15 | }] 16 | ]); 17 | -------------------------------------------------------------------------------- /src/skin/adminhtml/default/default/zendesk/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agnostack/magento_extension/d59d5ca42467f0e0df0471b20cf9efeeeabc779b/src/skin/adminhtml/default/default/zendesk/button.png -------------------------------------------------------------------------------- /src/skin/adminhtml/default/default/zendesk/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agnostack/magento_extension/d59d5ca42467f0e0df0471b20cf9efeeeabc779b/src/skin/adminhtml/default/default/zendesk/icon.png -------------------------------------------------------------------------------- /src/skin/adminhtml/default/default/zendesk/zendesk-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agnostack/magento_extension/d59d5ca42467f0e0df0471b20cf9efeeeabc779b/src/skin/adminhtml/default/default/zendesk/zendesk-logo.png -------------------------------------------------------------------------------- /src/skin/adminhtml/default/default/zendesk/zendesk-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agnostack/magento_extension/d59d5ca42467f0e0df0471b20cf9efeeeabc779b/src/skin/adminhtml/default/default/zendesk/zendesk-tab.png -------------------------------------------------------------------------------- /src/skin/adminhtml/default/default/zendesk/zendesk.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Zendesk Magento integration 3 | * 4 | * NOTICE OF LICENSE 5 | * 6 | * This source file is subject to The MIT License (MIT) that is bundled with 7 | * this package in the file LICENSE.txt. 8 | * It is also available through the world-wide-web at this URL: 9 | * http://opensource.org/licenses/mit-license.php 10 | * 11 | * @copyright Copyright (c) 2012 Zendesk (www.zendesk.com) 12 | * @license http://opensource.org/licenses/mit-license.php The MIT License (MIT) 13 | */ 14 | 15 | ul.tabs a.zendesk-section, 16 | ul.tabs a.zendesk-section:hover { 17 | border-bottom: 1px solid #BEBEBE; 18 | padding: 0.5em 0.5em 0 1.5em; 19 | text-indent: -9999px; 20 | } 21 | 22 | ul.tabs a.zendesk-section.active, 23 | ul.tabs a.zendesk-section.active:hover { 24 | background: none repeat scroll 0 0 white; 25 | } 26 | 27 | ul.tabs a.zendesk-section span, 28 | ul.tabs a.zendesk-section:hover span { 29 | background:url(zendesk-tab.png) no-repeat 0 0; 30 | overflow:hidden; 31 | padding:0; 32 | width:120px; 33 | height:22px; 34 | } 35 | 36 | h3.zendesk-header { 37 | background: url(zendesk-logo.png) no-repeat scroll 0 0 transparent; 38 | height: 65px; 39 | overflow: hidden; 40 | padding: 0; 41 | text-indent: -9999px; 42 | width: 200px; 43 | } 44 | 45 | button.zendesk span { 46 | background-image: url("button.png"); 47 | padding-left: 16px; 48 | } 49 | .grid tr.headings th.col-1 { 50 | width: 100%; 51 | } 52 | .grid tr.headings th.col-2 { 53 | width: 50%; 54 | } 55 | .grid tr.headings th.col-3 { 56 | width: 33.33%; 57 | } 58 | .grid tr.headings th.col-4 { 59 | width: 25%; 60 | } 61 | .grid tr.headings th.col-5 { 62 | width: 20%; 63 | } 64 | .grid tr.headings th.col-6 { 65 | width: 16.66%; 66 | } 67 | .grid tr.headings th.col-7 { 68 | width: 14.28%; 69 | } 70 | .grid tr.headings th.col-8 { 71 | width: 12.5%; 72 | } 73 | .grid tr.filter .range input { 74 | min-width: 61px !important; 75 | } 76 | div.entry-edit-head .fright { 77 | float: right; 78 | } 79 | #tickets_grid_tab_content tbody .zendesk-grid-tr:hover, 80 | #zendesk_create_customer_search_grid_table tbody tr:hover, 81 | #zendesk_create_order_search_grid_table tbody tr:hover, 82 | #zendesk_tab_tickets_grid_all_table .zendesk-grid-tr:hover { 83 | background: #fcf5dd; 84 | } 85 | #zendesk_create_order_search_grid_table tr.filter .range .range-line { 86 | min-width: 124px; 87 | } 88 | --------------------------------------------------------------------------------