zendesk - Version 2.1.1

Version Notes

Fixes:
- Sorting disabled on tickets grid (introduced in v2.1.0)
- PHP errors when saving incorrect configuration
- PHP error when clicking the sync users button multiple times

Changes:
- Set ticket submitter as logged in Magento user if email is a Zendesk agent or admin

Download this release

Release Info

Developer Jason Smale
Extension zendesk
Version 2.1.1
Comparing to
See all releases


Code changes from version 2.1.0 to 2.1.1

app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php CHANGED
@@ -31,11 +31,6 @@ class Zendesk_Zendesk_Block_Adminhtml_Dashboard extends Mage_Adminhtml_Block_Tem
31
  return 'Token token="' . Mage::helper('zendesk')->getApiToken(false) . '"';
32
  }
33
 
34
- public function isConnected() {
35
- $connection = Mage::helper('zendesk')->getConnectionStatus();
36
- return $connection['success'];
37
- }
38
-
39
  public function getTotals() {
40
  return Mage::helper("zendesk")->getTicketTotals();
41
  }
31
  return 'Token token="' . Mage::helper('zendesk')->getApiToken(false) . '"';
32
  }
33
 
 
 
 
 
 
34
  public function getTotals() {
35
  return Mage::helper("zendesk")->getTicketTotals();
36
  }
app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php CHANGED
@@ -29,7 +29,7 @@ class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Grids extends Mage_Adminhtml_Blo
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 ( !$this->getIsZendeskDashboard() && !Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard') )
33
  {
34
  return parent::_prepareLayout();
35
  }
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
  }
app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Abstract.php CHANGED
@@ -171,7 +171,6 @@ abstract class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Tab_Tickets_Grid_Abstra
171
  'filter' => $filter,
172
  'index' => $index,
173
  'type' => $this->getColumnType($index),
174
- 'users' => $this->getCollection()->users,
175
  );
176
 
177
  $renderer = $this->getColumnRenderer($index);
@@ -242,18 +241,4 @@ abstract class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Tab_Tickets_Grid_Abstra
242
 
243
  return $js;
244
  }
245
-
246
- /**
247
- * Override the parent method so that $this->_prepareCollection() is called first
248
- *
249
- * @return $this
250
- */
251
- protected function _prepareGrid()
252
- {
253
- $this->_prepareCollection();
254
- $this->_prepareColumns();
255
- $this->_prepareMassactionBlock();
256
-
257
- return $this;
258
- }
259
  }
171
  'filter' => $filter,
172
  'index' => $index,
173
  'type' => $this->getColumnType($index),
 
174
  );
175
 
176
  $renderer = $this->getColumnRenderer($index);
241
 
242
  return $js;
243
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  }
app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/All.php CHANGED
@@ -52,10 +52,8 @@ class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Tab_Tickets_Grid_All extends Zen
52
  $this->addColumn('requester_id', array(
53
  'header' => Mage::helper('zendesk')->__('Email'),
54
  'width' => '60',
55
- 'renderer' => 'zendesk/adminhtml_dashboard_tab_tickets_grid_renderer_email',
56
- 'index' => 'requester_id',
57
  'sortable' => false,
58
- 'users' => $this->getCollection()->users,
59
  ));
60
 
61
  $this->addColumn('type', array(
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(
app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Renderer/User.php CHANGED
@@ -19,7 +19,7 @@
19
  class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Tab_Tickets_Grid_Renderer_User extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
20
 
21
  public function render(Varien_Object $row) {
22
- $users = $this->getColumn()->users;
23
  $value = (int) $row->getData($this->getColumn()->getIndex());
24
 
25
  $found = array_filter($users, function($user) use($value) {
19
  class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Tab_Tickets_Grid_Renderer_User extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
20
 
21
  public function render(Varien_Object $row) {
22
+ $users = $row->users;
23
  $value = (int) $row->getData($this->getColumn()->getIndex());
24
 
25
  $found = array_filter($users, function($user) use($value) {
app/code/community/Zendesk/Zendesk/Helper/Data.php CHANGED
@@ -391,7 +391,17 @@ class Zendesk_Zendesk_Helper_Data extends Mage_Core_Helper_Abstract
391
  );
392
  }
393
  }
394
-
 
 
 
 
 
 
 
 
 
 
395
  public function storeDependenciesInCachedRegistry() {
396
  $cache = Mage::app()->getCache();
397
 
391
  );
392
  }
393
  }
394
+
395
+ /**
396
+ * Checks if the current connection details are valid.
397
+ *
398
+ * @return boolean
399
+ */
400
+ public function isConnected() {
401
+ $connection = $this->getConnectionStatus();
402
+ return $connection['success'];
403
+ }
404
+
405
  public function storeDependenciesInCachedRegistry() {
406
  $cache = Mage::app()->getCache();
407
 
app/code/community/Zendesk/Zendesk/Model/Api/Users.php CHANGED
@@ -59,7 +59,7 @@ class Zendesk_Zendesk_Model_Api_Users extends Zendesk_Zendesk_Model_Api_Abstract
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
  }
@@ -115,4 +115,21 @@ class Zendesk_Zendesk_Model_Api_Users extends Zendesk_Zendesk_Model_Api_Abstract
115
 
116
  return $response['user_field'];
117
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  }
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
  }
115
 
116
  return $response['user_field'];
117
  }
118
+
119
+ /**
120
+ * Fetch all user fields
121
+ *
122
+ * @return array $userFields
123
+ */
124
+ public function getUserFields()
125
+ {
126
+ $page = 1;
127
+ $userFields = array();
128
+ while($page && $response = $this->_call('user_fields.json?page=' . $page)) {
129
+ $userFields = array_merge($userFields, $response['user_fields']);
130
+ $page = is_null($response['next_page']) ? 0 : $page + 1;
131
+ }
132
+
133
+ return $userFields;
134
+ }
135
  }
app/code/community/Zendesk/Zendesk/Model/Resource/Tickets/Collection.php CHANGED
@@ -123,15 +123,19 @@ class Zendesk_Zendesk_Model_Resource_Tickets_Collection extends Varien_Data_Coll
123
 
124
  $all = Mage::getModel('zendesk/api_tickets')->search($params);
125
 
 
 
 
 
 
126
  foreach ($all['results'] as $ticket) {
 
 
127
  $obj = new Varien_Object();
128
  $obj->setData($ticket);
129
  $this->addItem($obj);
130
  }
131
 
132
- // Set the users for this collection
133
- $this->users = $all['users'];
134
-
135
  $this->setPageSize($params['per_page']);
136
  $this->setCurPage($params['page']);
137
  $this->setOrder($params['sort_by'], $params['sort_order']);
@@ -146,9 +150,13 @@ class Zendesk_Zendesk_Model_Resource_Tickets_Collection extends Varien_Data_Coll
146
  public function getCollectionFromView($viewId, array $params = array()) {
147
  $view = Mage::getModel('zendesk/api_views')->execute($viewId, $params);
148
 
 
 
 
149
  if (is_array($view['rows'])) {
150
  foreach ($view['rows'] as $row) {
151
  $ticket = array_merge($row, $row['ticket']);
 
152
 
153
  $this->appendParamsWithoutIdPostfix($ticket, array('requester', 'assignee', 'group'));
154
 
@@ -158,9 +166,6 @@ class Zendesk_Zendesk_Model_Resource_Tickets_Collection extends Varien_Data_Coll
158
  }
159
  }
160
 
161
- // Set the users for this collection
162
- $this->users = (isset($view['users'])) ? $view['users'] : array();
163
-
164
  $this->_viewColumns = $view['columns'] ? $view['columns'] : array();
165
 
166
  $this->setPageSize($params['per_page']);
123
 
124
  $all = Mage::getModel('zendesk/api_tickets')->search($params);
125
 
126
+ // Set the users for this collection
127
+ $this->users = $all['users'];
128
+
129
+ $emails = array_column($this->users, 'email', 'id');
130
+
131
  foreach ($all['results'] as $ticket) {
132
+ $ticket['requester_email'] = (isset($emails[$ticket['requester_id']]) ? $emails[$ticket['requester_id']] : '');
133
+
134
  $obj = new Varien_Object();
135
  $obj->setData($ticket);
136
  $this->addItem($obj);
137
  }
138
 
 
 
 
139
  $this->setPageSize($params['per_page']);
140
  $this->setCurPage($params['page']);
141
  $this->setOrder($params['sort_by'], $params['sort_order']);
150
  public function getCollectionFromView($viewId, array $params = array()) {
151
  $view = Mage::getModel('zendesk/api_views')->execute($viewId, $params);
152
 
153
+ // Set the users for this collection
154
+ $this->users = (isset($view['users'])) ? $view['users'] : array();
155
+
156
  if (is_array($view['rows'])) {
157
  foreach ($view['rows'] as $row) {
158
  $ticket = array_merge($row, $row['ticket']);
159
+ $ticket['users'] = $this->users;
160
 
161
  $this->appendParamsWithoutIdPostfix($ticket, array('requester', 'assignee', 'group'));
162
 
166
  }
167
  }
168
 
 
 
 
169
  $this->_viewColumns = $view['columns'] ? $view['columns'] : array();
170
 
171
  $this->setPageSize($params['per_page']);
app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php CHANGED
@@ -252,11 +252,12 @@ class Zendesk_Zendesk_Adminhtml_ZendeskController extends Mage_Adminhtml_Control
252
 
253
  public function launchAction()
254
  {
255
- $domain = $this->_domainConfigured();
256
- if (!$domain) {
257
  return;
258
  }
259
 
 
 
260
  $sso = Mage::getStoreConfig('zendesk/sso/enabled');
261
 
262
  if (!$sso) {
@@ -340,11 +341,18 @@ class Zendesk_Zendesk_Adminhtml_ZendeskController extends Mage_Adminhtml_Control
340
  }
341
 
342
  try {
343
- $admin = Mage::getModel('zendesk/api_users')->me();
 
 
 
 
 
 
 
344
  $ticket = array(
345
  'ticket' => array(
346
  'requester_id' => $requesterId,
347
- 'submitter_id' => $admin['id'],
348
  'subject' => $data['subject'],
349
  'status' => $data['status'],
350
  'priority' => $data['priority'],
@@ -526,7 +534,9 @@ class Zendesk_Zendesk_Adminhtml_ZendeskController extends Mage_Adminhtml_Control
526
  $this->getResponse()->clearHeaders()->setHeader('Content-type','application/json',true);
527
  Mage::log('Synchronization started', null, 'zendesk.log');
528
  try {
529
- $user = Mage::getModel('zendesk/api_users')->all();
 
 
530
  if (is_null($user))
531
  throw new Exception("Connection Failed");
532
 
@@ -593,7 +603,11 @@ class Zendesk_Zendesk_Adminhtml_ZendeskController extends Mage_Adminhtml_Control
593
  );
594
 
595
  foreach($data as $field) {
 
 
 
596
  $response = Mage::getModel('zendesk/api_users')->createUserField($field);
 
597
  if (!isset($response['active']) || $response['active'] === false)
598
  Mage::log('Unable to create User Field with key '.$field['user_field']['key'], null, 'zendesk.log');
599
  }
@@ -749,13 +763,12 @@ class Zendesk_Zendesk_Adminhtml_ZendeskController extends Mage_Adminhtml_Control
749
 
750
  private function _domainConfigured()
751
  {
752
- $domain = Mage::getStoreConfig('zendesk/general/domain');
753
- if(!$domain) {
754
- Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__('Please set up Zendesk connection.'));
755
  $this->_redirect('adminhtml/dashboard');
756
  return false;
757
  } else {
758
- return $domain;
759
  }
760
  }
761
 
252
 
253
  public function launchAction()
254
  {
255
+ if (!$this->_domainConfigured()) {
 
256
  return;
257
  }
258
 
259
+ $domain = Mage::getStoreConfig('zendesk/general/domain');
260
+
261
  $sso = Mage::getStoreConfig('zendesk/sso/enabled');
262
 
263
  if (!$sso) {
341
  }
342
 
343
  try {
344
+ $admin = Mage::getSingleton('admin/session')->getUser();
345
+ $submitter = Mage::getModel('zendesk/api_users')->find($admin->getEmail());
346
+
347
+ if (!$submitter) {
348
+ // Default to the user set in the agent email field under Configuration
349
+ $submitter = Mage::getModel('zendesk/api_users')->me();
350
+ }
351
+
352
  $ticket = array(
353
  'ticket' => array(
354
  'requester_id' => $requesterId,
355
+ 'submitter_id' => $submitter['id'],
356
  'subject' => $data['subject'],
357
  'status' => $data['status'],
358
  'priority' => $data['priority'],
534
  $this->getResponse()->clearHeaders()->setHeader('Content-type','application/json',true);
535
  Mage::log('Synchronization started', null, 'zendesk.log');
536
  try {
537
+ $userFieldKeys = array_column(Mage::getModel('zendesk/api_users')->getUserFields(), 'key');
538
+ $user = Mage::getModel('zendesk/api_users')->me();
539
+
540
  if (is_null($user))
541
  throw new Exception("Connection Failed");
542
 
603
  );
604
 
605
  foreach($data as $field) {
606
+ if (in_array($field['user_field']['key'], $userFieldKeys))
607
+ continue;
608
+
609
  $response = Mage::getModel('zendesk/api_users')->createUserField($field);
610
+
611
  if (!isset($response['active']) || $response['active'] === false)
612
  Mage::log('Unable to create User Field with key '.$field['user_field']['key'], null, 'zendesk.log');
613
  }
763
 
764
  private function _domainConfigured()
765
  {
766
+ if (!Mage::helper('zendesk')->isConnected()) {
767
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__('Please set up a Zendesk connection.'));
 
768
  $this->_redirect('adminhtml/dashboard');
769
  return false;
770
  } else {
771
+ return true;
772
  }
773
  }
774
 
app/code/community/Zendesk/Zendesk/etc/config.xml CHANGED
@@ -19,7 +19,7 @@
19
  <config>
20
  <modules>
21
  <Zendesk_Zendesk>
22
- <version>2.1.0</version>
23
  </Zendesk_Zendesk>
24
  </modules>
25
  <zendesk>
19
  <config>
20
  <modules>
21
  <Zendesk_Zendesk>
22
+ <version>2.1.1</version>
23
  </Zendesk_Zendesk>
24
  </modules>
25
  <zendesk>
app/code/community/Zendesk/Zendesk/functions.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!function_exists('array_column')) {
4
+ /**
5
+ * This file is part of the array_column library
6
+ *
7
+ * For the full copyright and license information, please view the LICENSE
8
+ * file that was distributed with this source code.
9
+ *
10
+ * @copyright Copyright (c) Ben Ramsey (http://benramsey.com)
11
+ * @license http://opensource.org/licenses/MIT MIT
12
+ */
13
+
14
+ /**
15
+ * Returns the values from a single column of the input array, identified by
16
+ * the $columnKey.
17
+ *
18
+ * Optionally, you may provide an $indexKey to index the values in the returned
19
+ * array by the values from the $indexKey column in the input array.
20
+ *
21
+ * @param array $input A multi-dimensional array (record set) from which to pull
22
+ * a column of values.
23
+ * @param mixed $columnKey The column of values to return. This value may be the
24
+ * integer key of the column you wish to retrieve, or it
25
+ * may be the string key name for an associative array.
26
+ * @param mixed $indexKey (Optional.) The column to use as the index/keys for
27
+ * the returned array. This value may be the integer key
28
+ * of the column, or it may be the string key name.
29
+ * @return array
30
+ */
31
+ function array_column($input = null, $columnKey = null, $indexKey = null)
32
+ {
33
+ // Using func_get_args() in order to check for proper number of
34
+ // parameters and trigger errors exactly as the built-in array_column()
35
+ // does in PHP 5.5.
36
+ $argc = func_num_args();
37
+ $params = func_get_args();
38
+
39
+ if ($argc < 2) {
40
+ trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING);
41
+ return null;
42
+ }
43
+
44
+ if (!is_array($params[0])) {
45
+ trigger_error(
46
+ 'array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given',
47
+ E_USER_WARNING
48
+ );
49
+ return null;
50
+ }
51
+
52
+ if (!is_int($params[1])
53
+ && !is_float($params[1])
54
+ && !is_string($params[1])
55
+ && $params[1] !== null
56
+ && !(is_object($params[1]) && method_exists($params[1], '__toString'))
57
+ ) {
58
+ trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING);
59
+ return false;
60
+ }
61
+
62
+ if (isset($params[2])
63
+ && !is_int($params[2])
64
+ && !is_float($params[2])
65
+ && !is_string($params[2])
66
+ && !(is_object($params[2]) && method_exists($params[2], '__toString'))
67
+ ) {
68
+ trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING);
69
+ return false;
70
+ }
71
+
72
+ $paramsInput = $params[0];
73
+ $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null;
74
+
75
+ $paramsIndexKey = null;
76
+ if (isset($params[2])) {
77
+ if (is_float($params[2]) || is_int($params[2])) {
78
+ $paramsIndexKey = (int) $params[2];
79
+ } else {
80
+ $paramsIndexKey = (string) $params[2];
81
+ }
82
+ }
83
+
84
+ $resultArray = array();
85
+
86
+ foreach ($paramsInput as $row) {
87
+ $key = $value = null;
88
+ $keySet = $valueSet = false;
89
+
90
+ if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row)) {
91
+ $keySet = true;
92
+ $key = (string) $row[$paramsIndexKey];
93
+ }
94
+
95
+ if ($paramsColumnKey === null) {
96
+ $valueSet = true;
97
+ $value = $row;
98
+ } elseif (is_array($row) && array_key_exists($paramsColumnKey, $row)) {
99
+ $valueSet = true;
100
+ $value = $row[$paramsColumnKey];
101
+ }
102
+
103
+ if ($valueSet) {
104
+ if ($keySet) {
105
+ $resultArray[$key] = $value;
106
+ } else {
107
+ $resultArray[] = $value;
108
+ }
109
+ }
110
+
111
+ }
112
+
113
+ return $resultArray;
114
+ }
115
+
116
+ }
app/design/adminhtml/default/default/template/zendesk/dashboard/index.phtml CHANGED
@@ -15,7 +15,7 @@
15
  * limitations under the License.
16
  */
17
  ?>
18
- <?php if( $this->isConnected() ): ?>
19
  <?php if ($this->getIsZendeskDashboard() || Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard')): ?>
20
  <?php if ($this->getIsZendeskDashboard()): ?>
21
  <div class="content-header">
15
  * limitations under the License.
16
  */
17
  ?>
18
+ <?php if( Mage::helper('zendesk')->isConnected() ): ?>
19
  <?php if ($this->getIsZendeskDashboard() || Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard')): ?>
20
  <?php if ($this->getIsZendeskDashboard()): ?>
21
  <div class="content-header">
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>zendesk</name>
4
- <version>2.1.0</version>
5
  <stability>stable</stability>
6
  <license>Apache Software License v2</license>
7
  <channel>community</channel>
@@ -17,17 +17,17 @@
17
  - Create support tickets from Contact Us requests&lt;br /&gt;&#xD;
18
  - Easily add the Web Widget to your site&#xD;
19
  </description>
20
- <notes>Sideload users instead of caching them all while making multiple API calls&#xD;
 
 
 
21
  &#xD;
22
- Fixes&#xD;
23
- - Memory limit is reached when retrieving a huge number of users&#xD;
24
- &#xD;
25
- Changes&#xD;
26
- - Removes the Priority field from the admin tickets grid</notes>
27
  <authors><author><name>Jason Smale</name><user>zendesk</user><email>jsmale@zendesk.com</email></author><author><name>Fontis</name><user>fontis</user><email>magento@fontis.com.au</email></author></authors>
28
- <date>2015-09-09</date>
29
- <time>06:04:59</time>
30
- <contents><target name="magecommunity"><dir name="Zendesk"><dir name="Zendesk"><dir name="Block"><dir name="Adminhtml"><dir name="Config"><dir name="Buttons"><file name="Generate.php" hash="7fa35e3e71b4bfb94f2dceddb19e86a0"/><file name="MagentoTest.php" hash="005323c12510f8ac07b46bede8df6349"/><file name="Signup.php" hash="f0d9ec9bc9a99f8643f1c2e6ac9989f2"/><file name="Sync.php" hash="d561b6fcbf69d284e866113e7d9afd44"/><file name="ZendeskTest.php" hash="83b67b5e66f8a9757ec424a72121133c"/></dir><file name="Link.php" hash="779827427e11db311b6e1de9d42818f2"/></dir><dir name="Create"><dir name="Customer"><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="4c599ec0b7210b32733318ca40b403f1"/></dir></dir><file name="Grid.php" hash="d5da59c8bd8f939a578d776648a1920c"/></dir><file name="Customer.php" hash="afe5c04c6ac7aa0cfaefded4ceacef37"/><dir name="Edit"><file name="Form.php" hash="c94acf32924a5140edeef7eae238aa4e"/></dir><file name="Edit.php" hash="fae5df1b1f5c5f524257bdf31bd569b4"/><dir name="Order"><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="7e9aa2cbd5600865fc77ce35fd6cb73a"/></dir></dir><file name="Grid.php" hash="0e4f085158ce9cc9d3566411b80d4592"/></dir><file name="Order.php" hash="857150ae3de0e3ded29ff972732060b3"/></dir><dir name="Dashboard"><file name="Grids.php" hash="70ed1b41f5a0ea5370ef2ec949117412"/><dir name="Tab"><dir name="Tickets"><dir name="Grid"><file name="Abstract.php" hash="24ef0eb0b5f1a69a07123514f7572ac8"/><file name="All.php" hash="b3cd0bc57392c5d768aa062913d61587"/><file name="Massaction.php" hash="9d3ba44e00b40f4585e167c200b4bfa6"/><dir name="Renderer"><file name="Action.php" hash="53a3b787e3f473a86bd896a0f8d7992e"/><file name="Email.php" hash="6cddcfb5e5517c36f65d9f5a7c938bf2"/><file name="Group.php" hash="814178c8eabb9d8444d2beadd1c07a84"/><file name="Type.php" hash="4f0cd9a88be44fbe7faa4e1f1ba55a38"/><file name="User.php" hash="daae7903e33255421e5ad94eea7f9f31"/></dir><file name="View.php" hash="5b5320a258e838e680bfbde6a8491d88"/></dir></dir></dir></dir><file name="Dashboard.php" hash="3b2ff1e8355be7750f19b93dcfcb50ec"/><file name="Log.php" hash="da85421d71f2e50c1ef2384eedd5688a"/><file name="Menu.php" hash="0f6a56232356c46cd1da31c910985d3b"/><dir name="Order"><dir name="View"><file name="Tickets.php" hash="a83a2ad42801ddbddad2d761779a597b"/></dir></dir></dir><dir name="Customer"><dir name="Tickets"><file name="List.php" hash="eddae13553494e6689ba1736896327a7"/></dir><file name="Tickets.php" hash="619b990e39222018831a42b9bee3f07b"/></dir><file name="WebWidget.php" hash="292d16516b754c0ff0609ac3a8b8e5d2"/></dir><dir name="Helper"><file name="Data.php" hash="1396235bbd7bd575eecdabfa5d03b8bc"/><file name="JWT.php" hash="6610b92191eccedb8edcf993730c3dc0"/><file name="Log.php" hash="358c44a7a478dc6166208eb59ccd53fb"/></dir><file name="LICENSE.txt" hash="d9922043f61f536de5d4d7af831e7f73"/><dir name="Model"><dir name="Api"><file name="Abstract.php" hash="86a16008112175b4448e6abd729fce17"/><file name="Groups.php" hash="7c2694b292399083c8209d297a1e6746"/><file name="Requesters.php" hash="9cb06bc83c45b4874ee29750bfc91f0b"/><file name="SupportAddresses.php" hash="819b2e43055e97c58d80ab867c305db3"/><file name="Tickets.php" hash="827e7b286ba74629bb3effd24571864b"/><file name="Users.php" hash="cb9fa80ef3b4f0a362a6f024df9d37be"/><file name="Views.php" hash="e7198804886820e685afedfc65ebadab"/></dir><file name="Observer.php" hash="8097cbd3fcd0352b1b317a55d97f5804"/><dir name="Resource"><dir name="Tickets"><file name="Collection.php" hash="40a539ebc315cd476cbc345d8a1c2654"/></dir><file name="Tickets.php" hash="8eed34a07f8d65e3680ba3e735a3a4a1"/></dir><dir name="Search"><file name="Field.php" hash="2961022121af96a4bc599141d82e6732"/></dir><file name="Search.php" hash="cac21f222a240bab7ea813023c4523f0"/><dir name="Source"><file name="Sortdir.php" hash="916a3319d52661df8a77438935bae56f"/><file name="Sortorder.php" hash="1c58234e5253987027c174aa192a2b5f"/><file name="Views.php" hash="1c7527338bf40082016a62e45fe44622"/></dir><file name="Tickets.php" hash="796782889d46c6bc658f3cd03ee74a1c"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ZendeskController.php" hash="a0dccfd6cca44f9f00c26b5a4eaa46a8"/></dir><file name="ApiController.php" hash="84672fb7c6110ebadb9414e9c99ddfd0"/><dir name="Customer"><file name="TicketsController.php" hash="89164100a9640def75e94345e0fe1a14"/></dir><file name="IndexController.php" hash="f2caa943c4619d5add2149ef26443108"/><file name="SsoController.php" hash="2b99171f2c81573405d2258df835fa26"/></dir><dir name="data"><dir name="zendesk_setup"><file name="data-upgrade-1.3.0-1.4.0.php" hash="bcf2b209ab108ed2fc045176262d35ad"/><file name="data-upgrade-1.3.1-1.4.0.php" hash="bcf2b209ab108ed2fc045176262d35ad"/><file name="data-upgrade-1.4.2-2.0.0.php" hash="2b8f26c843de7435cc2bc53ad9e5cdb9"/><file name="data-upgrade-2.0.1-2.0.2.php" hash="2b8f26c843de7435cc2bc53ad9e5cdb9"/><file name="data-upgrade-2.0.5-2.0.6.php" hash="da5a78a75da35ec27e4cbea9704c9f36"/></dir></dir><dir name="etc"><file name="config.xml" hash="9a54236e8732f2bb86c6beba0d3a9526"/><file name="jstranslator.xml" hash="3f3bd74e4b6484613126a2b2f7e34aac"/><file name="system.xml" hash="2f37034472542a19e7fa67e37bb05da4"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="zendesk.xml" hash="b824f0f7099d22a7f1c0a31d83cd9efc"/></dir><dir name="template"><dir name="zendesk"><file name="autocomplete.phtml" hash="01f42e0bbe3337c058ebc0a8832ddca9"/><dir name="config"><file name="button-generate.phtml" hash="21a25898c1fdea93d31b02ae91c1dd6f"/><file name="button-signup.phtml" hash="8871a0aa0bad7f85a7419853db8e0ce4"/><file name="button-sync.phtml" hash="0a79ffa3cb7021e2883844d37133af3e"/><file name="button-test-magento.phtml" hash="e86287ab32a2ee29ce44aad62249bcab"/><file name="button-test-zendesk.phtml" hash="434623e895e3044fe826639824f90dc9"/><file name="link.phtml" hash="ce55d65900113183e770b2905a31b0eb"/></dir><dir name="create"><file name="customer.phtml" hash="4195705109186f619780613f31d3799d"/><file name="order.phtml" hash="6565383d06a6428ce91238d90a1a0a1a"/></dir><dir name="customer"><file name="tickets.phtml" hash="8e0ecab043f1f988a51e57f848c51348"/></dir><dir name="dashboard"><file name="empty.phtml" hash="d0c30af25f17ff45215d210b48063a46"/><file name="index.phtml" hash="2ea21311d37450c55adff7b44601f00b"/></dir><file name="left-menu.phtml" hash="167b660cb9e7f0bf9fadfbd15a950c42"/><dir name="log"><file name="index.phtml" hash="c54c187ce5f09da6f56078cbfdf3ca29"/></dir><dir name="order"><file name="tickets.phtml" hash="4fe433f11c40708b0eb56aef5b0ce663"/></dir><dir name="tickets"><file name="tickets.phtml" hash="fc60966507ec30a2521413cb9b998770"/></dir><file name="translations.phtml" hash="663af777fa809b84ea9001afa740109f"/><dir name="widget"><file name="grid.phtml" hash="5e7beb2c7e37c9efe225ea3e80f1ffd7"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="zendesk.xml" hash="09058ecabaf99b91c7a57e12c74b0b0d"/></dir><dir name="template"><dir name="zendesk"><dir name="customer"><dir name="tickets"><file name="list.phtml" hash="70faead25efe6e55d4e45d0923ba55e2"/></dir><file name="tickets.phtml" hash="1a33c2429f13b16a98225b43e345ac37"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Zendesk_Zendesk.xml" hash="a630cf18c788dafb70d4c156a33eaa07"/></dir></target><target name="magelocale"><dir name="da_DA"><file name="Zendesk_Zendesk.csv" hash="7c20868dcfedb4be3d4c3acd688d0572"/></dir><dir name="de_DE"><file name="Zendesk_Zendesk.csv" hash="3892feb95f2173d3f934fe964708b75b"/></dir><dir name="en_CA"><file name="Zendesk_Zendesk.csv" hash="96f26f9fa0b6060ec5e47ceb5bfee923"/></dir><dir name="en_GB"><file name="Zendesk_Zendesk.csv" hash="6d38497b88ad5da6d2eafa6a7677fd1a"/></dir><dir name="en_US"><file name="Zendesk_Zendesk.csv" hash="82849b0c8a98daf56f6153bbccd8e957"/><file name="Zendesk_Zendesk.yml" hash="ac0019dc50c32ae173adb76cca430214"/></dir><dir name="es_419"><file name="Zendesk_Zendesk.csv" hash="59edae01cec3de6fd62228f391222529"/></dir><dir name="es_ES"><file name="Zendesk_Zendesk.csv" hash="a0c3268b8136b65ee5a5a961212323c0"/></dir><dir name="fr_CA"><file name="Zendesk_Zendesk.csv" hash="e8fba8cc289173cec7db70a527cd5ceb"/></dir><dir name="fr_FR"><file name="Zendesk_Zendesk.csv" hash="7a7609df060c812fb3c30c935b157a75"/></dir><dir name="it_IT"><file name="Zendesk_Zendesk.csv" hash="64de62c856de4c83a69dac292c2f04a7"/></dir><dir name="ja_JA"><file name="Zendesk_Zendesk.csv" hash="d0b39c43faa0a858cf89602d6424d652"/></dir><dir name="ja_JP"><file name="Zendesk_Zendesk.csv" hash="8d0ab1a39457a8ba2dcf986faf4eb742"/></dir><dir name="ko_KO"><file name="Zendesk_Zendesk.csv" hash="46a5072434274f035a34272c5fbf5042"/></dir><dir name="ko_KR"><file name="Zendesk_Zendesk.csv" hash="38aee57e5520d82f607999ce25ba5dc2"/></dir><dir name="nl_NL"><file name="Zendesk_Zendesk.csv" hash="985790d52273a6127c9e941dacc6a25d"/></dir><dir name="no_NO"><file name="Zendesk_Zendesk.csv" hash="455b220ca4d9a2362f78855032ad2482"/></dir><dir name="pt_BR"><file name="Zendesk_Zendesk.csv" hash="90568149b111a18cc7db9debf82f9dfc"/></dir><dir name="pt_PT"><file name="Zendesk_Zendesk.csv" hash="ab137db1555f19a61cfffef603bed878"/></dir><dir name="ru_RU"><file name="Zendesk_Zendesk.csv" hash="534791f7ae25eb537b9fa5c2be70d2d3"/></dir><dir name="sv_SV"><file name="Zendesk_Zendesk.csv" hash="7e0b337874ff0352c1020c56a0649b62"/></dir><dir name="tr_TR"><file name="Zendesk_Zendesk.csv" hash="a0c73068b30d7c1ab4f3100123415249"/></dir><dir name="uk_UK"><file name="Zendesk_Zendesk.csv" hash="cc4e4541ff307b51be5a089e6c5e0f38"/></dir><dir name="zh_CN"><file name="Zendesk_Zendesk.csv" hash="c8bfa3b4398c99ec8fd498b1635be1db"/></dir><dir name="zh_TW"><file name="Zendesk_Zendesk.csv" hash="2fff120a9ee211608f505400b60c733f"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="zendesk"><file name="button.png" hash="58e62edb7f4be46e3b29c0bb774c7ad7"/><file name="icon.png" hash="b5bfce535c987d1e9e604823ac4b3943"/><file name="zendesk-logo.png" hash="ad03156afe04a9dcc8fbf82e1913ac23"/><file name="zendesk-tab.png" hash="0f322d15c392528c212d6491732bc133"/><file name="zendesk.css" hash="b5db959c683981f11b9a83c8787fa461"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="zendesk"><file name="validation.js" hash="488b2fe21b2d34ce0814815e745771a0"/></dir></dir></target></contents>
31
  <compatible/>
32
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
33
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>zendesk</name>
4
+ <version>2.1.1</version>
5
  <stability>stable</stability>
6
  <license>Apache Software License v2</license>
7
  <channel>community</channel>
17
  - Create support tickets from Contact Us requests&lt;br /&gt;&#xD;
18
  - Easily add the Web Widget to your site&#xD;
19
  </description>
20
+ <notes>Fixes:&#xD;
21
+ - Sorting disabled on tickets grid (introduced in v2.1.0)&#xD;
22
+ - PHP errors when saving incorrect configuration&#xD;
23
+ - PHP error when clicking the sync users button multiple times&#xD;
24
  &#xD;
25
+ Changes:&#xD;
26
+ - Set ticket submitter as logged in Magento user if email is a Zendesk agent or admin</notes>
 
 
 
27
  <authors><author><name>Jason Smale</name><user>zendesk</user><email>jsmale@zendesk.com</email></author><author><name>Fontis</name><user>fontis</user><email>magento@fontis.com.au</email></author></authors>
28
+ <date>2015-09-16</date>
29
+ <time>06:28:12</time>
30
+ <contents><target name="magecommunity"><dir name="Zendesk"><dir name="Zendesk"><dir name="Block"><dir name="Adminhtml"><dir name="Config"><dir name="Buttons"><file name="Generate.php" hash="7fa35e3e71b4bfb94f2dceddb19e86a0"/><file name="MagentoTest.php" hash="005323c12510f8ac07b46bede8df6349"/><file name="Signup.php" hash="f0d9ec9bc9a99f8643f1c2e6ac9989f2"/><file name="Sync.php" hash="d561b6fcbf69d284e866113e7d9afd44"/><file name="ZendeskTest.php" hash="83b67b5e66f8a9757ec424a72121133c"/></dir><file name="Link.php" hash="779827427e11db311b6e1de9d42818f2"/></dir><dir name="Create"><dir name="Customer"><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="4c599ec0b7210b32733318ca40b403f1"/></dir></dir><file name="Grid.php" hash="d5da59c8bd8f939a578d776648a1920c"/></dir><file name="Customer.php" hash="afe5c04c6ac7aa0cfaefded4ceacef37"/><dir name="Edit"><file name="Form.php" hash="c94acf32924a5140edeef7eae238aa4e"/></dir><file name="Edit.php" hash="fae5df1b1f5c5f524257bdf31bd569b4"/><dir name="Order"><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="7e9aa2cbd5600865fc77ce35fd6cb73a"/></dir></dir><file name="Grid.php" hash="0e4f085158ce9cc9d3566411b80d4592"/></dir><file name="Order.php" hash="857150ae3de0e3ded29ff972732060b3"/></dir><dir name="Dashboard"><file name="Grids.php" hash="1489d6addfdad17f23bfd34ccaaeb809"/><dir name="Tab"><dir name="Tickets"><dir name="Grid"><file name="Abstract.php" hash="b9cbb0629a4970e39539893869a3cfd2"/><file name="All.php" hash="27a968cc57b9514de3bb9d60e1fda068"/><file name="Massaction.php" hash="9d3ba44e00b40f4585e167c200b4bfa6"/><dir name="Renderer"><file name="Action.php" hash="53a3b787e3f473a86bd896a0f8d7992e"/><file name="Email.php" hash="6cddcfb5e5517c36f65d9f5a7c938bf2"/><file name="Group.php" hash="814178c8eabb9d8444d2beadd1c07a84"/><file name="Type.php" hash="4f0cd9a88be44fbe7faa4e1f1ba55a38"/><file name="User.php" hash="ce383119807c67b55892d404afc2d21c"/></dir><file name="View.php" hash="5b5320a258e838e680bfbde6a8491d88"/></dir></dir></dir></dir><file name="Dashboard.php" hash="330e44b755b2eacf218e4c23210dd709"/><file name="Log.php" hash="da85421d71f2e50c1ef2384eedd5688a"/><file name="Menu.php" hash="0f6a56232356c46cd1da31c910985d3b"/><dir name="Order"><dir name="View"><file name="Tickets.php" hash="a83a2ad42801ddbddad2d761779a597b"/></dir></dir></dir><dir name="Customer"><dir name="Tickets"><file name="List.php" hash="eddae13553494e6689ba1736896327a7"/></dir><file name="Tickets.php" hash="619b990e39222018831a42b9bee3f07b"/></dir><file name="WebWidget.php" hash="292d16516b754c0ff0609ac3a8b8e5d2"/></dir><dir name="Helper"><file name="Data.php" hash="87e07b2164d5b67ad259911b977e1af8"/><file name="JWT.php" hash="6610b92191eccedb8edcf993730c3dc0"/><file name="Log.php" hash="358c44a7a478dc6166208eb59ccd53fb"/></dir><file name="LICENSE.txt" hash="d9922043f61f536de5d4d7af831e7f73"/><dir name="Model"><dir name="Api"><file name="Abstract.php" hash="86a16008112175b4448e6abd729fce17"/><file name="Groups.php" hash="7c2694b292399083c8209d297a1e6746"/><file name="Requesters.php" hash="9cb06bc83c45b4874ee29750bfc91f0b"/><file name="SupportAddresses.php" hash="819b2e43055e97c58d80ab867c305db3"/><file name="Tickets.php" hash="827e7b286ba74629bb3effd24571864b"/><file name="Users.php" hash="0e0a75686717dcb6ed6538c9bcd68da6"/><file name="Views.php" hash="e7198804886820e685afedfc65ebadab"/></dir><file name="Observer.php" hash="8097cbd3fcd0352b1b317a55d97f5804"/><dir name="Resource"><dir name="Tickets"><file name="Collection.php" hash="511195d66873bc8496ee9f7ed081df79"/></dir><file name="Tickets.php" hash="8eed34a07f8d65e3680ba3e735a3a4a1"/></dir><dir name="Search"><file name="Field.php" hash="2961022121af96a4bc599141d82e6732"/></dir><file name="Search.php" hash="cac21f222a240bab7ea813023c4523f0"/><dir name="Source"><file name="Sortdir.php" hash="916a3319d52661df8a77438935bae56f"/><file name="Sortorder.php" hash="1c58234e5253987027c174aa192a2b5f"/><file name="Views.php" hash="1c7527338bf40082016a62e45fe44622"/></dir><file name="Tickets.php" hash="796782889d46c6bc658f3cd03ee74a1c"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ZendeskController.php" hash="6ed95972ae39ff00117e44e3734a1594"/></dir><file name="ApiController.php" hash="84672fb7c6110ebadb9414e9c99ddfd0"/><dir name="Customer"><file name="TicketsController.php" hash="89164100a9640def75e94345e0fe1a14"/></dir><file name="IndexController.php" hash="f2caa943c4619d5add2149ef26443108"/><file name="SsoController.php" hash="2b99171f2c81573405d2258df835fa26"/></dir><dir name="data"><dir name="zendesk_setup"><file name="data-upgrade-1.3.0-1.4.0.php" hash="bcf2b209ab108ed2fc045176262d35ad"/><file name="data-upgrade-1.3.1-1.4.0.php" hash="bcf2b209ab108ed2fc045176262d35ad"/><file name="data-upgrade-1.4.2-2.0.0.php" hash="2b8f26c843de7435cc2bc53ad9e5cdb9"/><file name="data-upgrade-2.0.1-2.0.2.php" hash="2b8f26c843de7435cc2bc53ad9e5cdb9"/><file name="data-upgrade-2.0.5-2.0.6.php" hash="da5a78a75da35ec27e4cbea9704c9f36"/></dir></dir><dir name="etc"><file name="config.xml" hash="dbfa5af16d771db0ace7e263d095d904"/><file name="jstranslator.xml" hash="3f3bd74e4b6484613126a2b2f7e34aac"/><file name="system.xml" hash="2f37034472542a19e7fa67e37bb05da4"/></dir><file name="functions.php" hash="b6376678adc0a336dc56ede8bc2ec60b"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="zendesk.xml" hash="b824f0f7099d22a7f1c0a31d83cd9efc"/></dir><dir name="template"><dir name="zendesk"><file name="autocomplete.phtml" hash="01f42e0bbe3337c058ebc0a8832ddca9"/><dir name="config"><file name="button-generate.phtml" hash="21a25898c1fdea93d31b02ae91c1dd6f"/><file name="button-signup.phtml" hash="8871a0aa0bad7f85a7419853db8e0ce4"/><file name="button-sync.phtml" hash="0a79ffa3cb7021e2883844d37133af3e"/><file name="button-test-magento.phtml" hash="e86287ab32a2ee29ce44aad62249bcab"/><file name="button-test-zendesk.phtml" hash="434623e895e3044fe826639824f90dc9"/><file name="link.phtml" hash="ce55d65900113183e770b2905a31b0eb"/></dir><dir name="create"><file name="customer.phtml" hash="4195705109186f619780613f31d3799d"/><file name="order.phtml" hash="6565383d06a6428ce91238d90a1a0a1a"/></dir><dir name="customer"><file name="tickets.phtml" hash="8e0ecab043f1f988a51e57f848c51348"/></dir><dir name="dashboard"><file name="empty.phtml" hash="d0c30af25f17ff45215d210b48063a46"/><file name="index.phtml" hash="a09f9036123888914d347e99312f4039"/></dir><file name="left-menu.phtml" hash="167b660cb9e7f0bf9fadfbd15a950c42"/><dir name="log"><file name="index.phtml" hash="c54c187ce5f09da6f56078cbfdf3ca29"/></dir><dir name="order"><file name="tickets.phtml" hash="4fe433f11c40708b0eb56aef5b0ce663"/></dir><dir name="tickets"><file name="tickets.phtml" hash="fc60966507ec30a2521413cb9b998770"/></dir><file name="translations.phtml" hash="663af777fa809b84ea9001afa740109f"/><dir name="widget"><file name="grid.phtml" hash="5e7beb2c7e37c9efe225ea3e80f1ffd7"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="zendesk.xml" hash="09058ecabaf99b91c7a57e12c74b0b0d"/></dir><dir name="template"><dir name="zendesk"><dir name="customer"><dir name="tickets"><file name="list.phtml" hash="70faead25efe6e55d4e45d0923ba55e2"/></dir><file name="tickets.phtml" hash="1a33c2429f13b16a98225b43e345ac37"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Zendesk_Zendesk.xml" hash="a630cf18c788dafb70d4c156a33eaa07"/></dir></target><target name="magelocale"><dir name="da_DA"><file name="Zendesk_Zendesk.csv" hash="7c20868dcfedb4be3d4c3acd688d0572"/></dir><dir name="de_DE"><file name="Zendesk_Zendesk.csv" hash="3892feb95f2173d3f934fe964708b75b"/></dir><dir name="en_CA"><file name="Zendesk_Zendesk.csv" hash="96f26f9fa0b6060ec5e47ceb5bfee923"/></dir><dir name="en_GB"><file name="Zendesk_Zendesk.csv" hash="6d38497b88ad5da6d2eafa6a7677fd1a"/></dir><dir name="en_US"><file name="Zendesk_Zendesk.csv" hash="82849b0c8a98daf56f6153bbccd8e957"/><file name="Zendesk_Zendesk.yml" hash="ac0019dc50c32ae173adb76cca430214"/></dir><dir name="es_419"><file name="Zendesk_Zendesk.csv" hash="59edae01cec3de6fd62228f391222529"/></dir><dir name="es_ES"><file name="Zendesk_Zendesk.csv" hash="a0c3268b8136b65ee5a5a961212323c0"/></dir><dir name="fr_CA"><file name="Zendesk_Zendesk.csv" hash="e8fba8cc289173cec7db70a527cd5ceb"/></dir><dir name="fr_FR"><file name="Zendesk_Zendesk.csv" hash="7a7609df060c812fb3c30c935b157a75"/></dir><dir name="it_IT"><file name="Zendesk_Zendesk.csv" hash="64de62c856de4c83a69dac292c2f04a7"/></dir><dir name="ja_JA"><file name="Zendesk_Zendesk.csv" hash="d0b39c43faa0a858cf89602d6424d652"/></dir><dir name="ja_JP"><file name="Zendesk_Zendesk.csv" hash="8d0ab1a39457a8ba2dcf986faf4eb742"/></dir><dir name="ko_KO"><file name="Zendesk_Zendesk.csv" hash="46a5072434274f035a34272c5fbf5042"/></dir><dir name="ko_KR"><file name="Zendesk_Zendesk.csv" hash="38aee57e5520d82f607999ce25ba5dc2"/></dir><dir name="nl_NL"><file name="Zendesk_Zendesk.csv" hash="985790d52273a6127c9e941dacc6a25d"/></dir><dir name="no_NO"><file name="Zendesk_Zendesk.csv" hash="455b220ca4d9a2362f78855032ad2482"/></dir><dir name="pt_BR"><file name="Zendesk_Zendesk.csv" hash="90568149b111a18cc7db9debf82f9dfc"/></dir><dir name="pt_PT"><file name="Zendesk_Zendesk.csv" hash="ab137db1555f19a61cfffef603bed878"/></dir><dir name="ru_RU"><file name="Zendesk_Zendesk.csv" hash="534791f7ae25eb537b9fa5c2be70d2d3"/></dir><dir name="sv_SV"><file name="Zendesk_Zendesk.csv" hash="7e0b337874ff0352c1020c56a0649b62"/></dir><dir name="tr_TR"><file name="Zendesk_Zendesk.csv" hash="a0c73068b30d7c1ab4f3100123415249"/></dir><dir name="uk_UK"><file name="Zendesk_Zendesk.csv" hash="cc4e4541ff307b51be5a089e6c5e0f38"/></dir><dir name="zh_CN"><file name="Zendesk_Zendesk.csv" hash="c8bfa3b4398c99ec8fd498b1635be1db"/></dir><dir name="zh_TW"><file name="Zendesk_Zendesk.csv" hash="2fff120a9ee211608f505400b60c733f"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="zendesk"><file name="button.png" hash="58e62edb7f4be46e3b29c0bb774c7ad7"/><file name="icon.png" hash="b5bfce535c987d1e9e604823ac4b3943"/><file name="zendesk-logo.png" hash="ad03156afe04a9dcc8fbf82e1913ac23"/><file name="zendesk-tab.png" hash="0f322d15c392528c212d6491732bc133"/><file name="zendesk.css" hash="b5db959c683981f11b9a83c8787fa461"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="zendesk"><file name="validation.js" hash="488b2fe21b2d34ce0814815e745771a0"/></dir></dir></target></contents>
31
  <compatible/>
32
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
33
  </package>