Skip to content

Commit 00dc133

Browse files
committed
Merge master
2 parents c315eb5 + e1535e1 commit 00dc133

File tree

22 files changed

+202
-83
lines changed

22 files changed

+202
-83
lines changed

README.md

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,8 @@ The API can be enabled in the Zendesk settings page in the Magento admin panel.
2626

2727
### Single Sign-on (SSO)
2828

29-
* Admins & Agents
30-
31-
Remote login URL: http://your_site_base_url/admin/zendesk/authenticate
32-
Remote logout URL: http://your_site_base_url/admin/zendesk/logout
33-
34-
* End-user
35-
36-
Remote login URL: http://your_site_base_url/zendesk/sso/login
37-
Remote logout URL: http://your_site_base_url/zendesk/sso/logout
29+
**Remote login URL** http://your_site_base_url/zendesk/sso/login
30+
**Remote logout URL** http://your_site_base_url/zendesk/sso/logout
3831

3932
### Responses
4033

src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Customer.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class Zendesk_Zendesk_Block_Adminhtml_Create_Customer extends Mage_Adminhtml_Blo
2020

2121
public function __construct()
2222
{
23+
$this->_controller = false;
2324
parent::__construct();
2425
$this->setId('zendesk_create_customer_search');
2526
}
@@ -29,7 +30,7 @@ public function getHeaderText()
2930
return Mage::helper('zendesk')->__('Please Select User to Add');
3031
}
3132

32-
public function getButtonsHtml()
33+
public function getButtonsHtml($area = null)
3334
{
3435
$addButtonData = array(
3536
'label' => Mage::helper('zendesk')->__('Select User'),

src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Edit.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class Zendesk_Zendesk_Block_Adminhtml_Create_Edit extends Mage_Adminhtml_Block_W
1919
{
2020
protected function _construct()
2121
{
22+
$this->_controller = false;
2223
parent::_construct();
2324
}
2425

src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Edit/Form.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,11 @@ protected function _prepareForm()
116116
'title' => Mage::helper('zendesk')->__('Description'),
117117
'required' => true
118118
));
119+
120+
if (Mage::registry('zendesk_create_data')) {
121+
$form->setValues(Mage::registry('zendesk_create_data'));
122+
}
119123

120-
$form->setValues(Mage::registry('zendesk_create_data'));
121124
$form->setUseContainer(true);
122125
$form->setMethod('post');
123126
$this->setForm($form);

src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Order.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class Zendesk_Zendesk_Block_Adminhtml_Create_Order extends Mage_Adminhtml_Block_
2020

2121
public function __construct()
2222
{
23+
$this->_controller = false;
2324
parent::__construct();
2425
$this->setId('zendesk_create_order_search');
2526
}
@@ -29,7 +30,7 @@ public function getHeaderText()
2930
return Mage::helper('zendesk')->__('Please Select Order to Add');
3031
}
3132

32-
public function getButtonsHtml()
33+
public function getButtonsHtml($area = null)
3334
{
3435
$addButtonData = array(
3536
'label' => Mage::helper('zendesk')->__('Select Order'),

src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ protected function _prepareLayout() {
3434
return parent::_prepareLayout();
3535
}
3636

37+
Mage::helper('zendesk')->storeDependenciesInCachedRegistry();
38+
3739
//check if module is setted up
3840
$configured = (bool) Mage::getStoreConfig('zendesk/general/domain');
3941
$viewsIds = Mage::getStoreConfig('zendesk/backend_features/show_views') ? Mage::helper('zendesk')->getChosenViews() : array();
@@ -57,24 +59,38 @@ protected function _prepareLayout() {
5759
$this->addTab('all-tickets', $all);
5860
}
5961

60-
if(count($viewsIds) AND $configured) {
61-
try {
62-
$allTicketView = Mage::getModel('zendesk/api_views')->active();
63-
$ticketsCounts = Mage::getModel('zendesk/api_views')->countByIds($viewsIds);
62+
try {
63+
$allTicketView = Mage::getModel('zendesk/api_views')->active();
64+
$ticketsCounts = Mage::getModel('zendesk/api_views')->countByIds($viewsIds);
6465

65-
} catch (Exception $ex) {
66-
$allTicketView = array();
67-
}
68-
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
6974
foreach($viewsIds as $viewId) {
70-
$view = array_shift(array_filter($allTicketView, function($view) use($viewId) {
71-
return $view['id'] === (int) $viewId;
72-
}));
73-
74-
$count = array_shift(array_filter($ticketsCounts['view_counts'], function($view) use($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) {
7590
return $view['view_id'] === (int) $viewId;
76-
}));
77-
91+
});
92+
$count = array_shift($count);
93+
7894
if($count['value']) {
7995
$label = $view['title'] . ' (' . $count['value'] . ')';
8096
$this->addTab($viewId, array(
@@ -92,11 +108,12 @@ protected function _prepareLayout() {
92108
));
93109
}
94110
}
95-
} else {
96-
if ($this->getIsZendeskDashboard() AND !Mage::getStoreConfig('zendesk/backend_features/show_all')) {
97-
$block = $this->getLayout()->createBlock('core/template', 'zendesk_dashboard_empty')->setTemplate('zendesk/dashboard/empty.phtml');
98-
$this->getLayout()->getBlock('zendesk_dashboard')->append($block);
99-
}
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);
100117
}
101118

102119
return parent::_prepareLayout();

src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Renderer/Email.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Tab_Tickets_Grid_Renderer_Email extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
2020

2121
public function render(Varien_Object $row) {
22-
$users = Mage::registry('zendesk_users');
22+
$users = Mage::registry('zendesk_users') ? Mage::registry('zendesk_users') : array();
2323
$value = (int) $row->getData($this->getColumn()->getIndex());
2424

2525
$found = array_filter($users, function($user) use($value) {

src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Tab/Tickets/Grid/Renderer/User.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
class Zendesk_Zendesk_Block_Adminhtml_Dashboard_Tab_Tickets_Grid_Renderer_User extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
2020

2121
public function render(Varien_Object $row) {
22-
$users = Mage::registry('zendesk_users');
22+
$users = Mage::registry('zendesk_users') ? Mage::registry('zendesk_users') : array();
2323
$value = (int) $row->getData($this->getColumn()->getIndex());
2424

2525
$found = array_filter($users, function($user) use($value) {

src/app/code/community/Zendesk/Zendesk/Block/Customer/Tickets.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ public function __construct()
2424
}
2525

2626
public function getSubmitAction() {
27-
$url = Mage::helper('adminhtml')->getUrl('*/sso/login', array("return_url" => Mage::helper('core')->urlEncode("http://".Mage::getStoreConfig('zendesk/general/domain')."/requests/new")));
27+
if (!$return_url = Mage::getStoreConfig('zendesk/sso_frontend/new')) {
28+
$return_url = "http://".Mage::getStoreConfig('zendesk/general/domain')."/requests/new";
29+
}
30+
$url = Mage::helper('adminhtml')->getUrl('*/sso/login', array("return_url" => Mage::helper('core')->urlEncode($return_url)));
31+
2832
return $url;
2933
}
3034
}

src/app/code/community/Zendesk/Zendesk/Helper/Data.php

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,9 @@ public function getZendeskUnauthUrl()
120120
{
121121
$protocol = 'https://';
122122
$domain = $this->getZendeskDomain();
123-
$route = '/access/unauthenticated';
123+
//Zendesk will automatically redirect to login if user is not logged in
124+
//previous URL followed to login page even if user has already logged in
125+
$route = '/home';
124126

125127
return $protocol . $domain . $route;
126128
}
@@ -279,7 +281,7 @@ public function getTicketUrl($row, $link = false)
279281

280282
$subject = $row['subject'] ? $row['subject'] : $this->__('No Subject');
281283

282-
return '<a href="' . $url . '" target="_blank">' . $subject. '</a>';
284+
return '<a href="' . $url . '" target="_blank">' . Mage::helper('core')->escapeHtml($subject) . '</a>';
283285
}
284286

285287
public function getStatusMap()
@@ -368,4 +370,27 @@ public function getConnectionStatus() {
368370
}
369371
}
370372

373+
public function storeDependenciesInCachedRegistry() {
374+
$cache = Mage::app()->getCache();
375+
376+
if (null == Mage::registry('zendesk_users')) {
377+
if( $cache->load('zendesk_users') === false) {
378+
$users = serialize( Mage::getModel('zendesk/api_users')->all() );
379+
$cache->save($users, 'zendesk_users', array('zendesk', 'zendesk_users'), 300);
380+
}
381+
382+
$users = unserialize( $cache->load('zendesk_users') );
383+
Mage::register('zendesk_users', $users);
384+
}
385+
386+
if (null == Mage::registry('zendesk_groups')) {
387+
if( $cache->load('zendesk_groups') === false) {
388+
$groups = serialize( Mage::getModel('zendesk/api_groups')->all() );
389+
$cache->save($groups, 'zendesk_groups', array('zendesk', 'zendesk_groups'), 1200);
390+
}
391+
392+
$groups = unserialize( $cache->load('zendesk_groups') );
393+
Mage::register('zendesk_groups', $groups);
394+
}
395+
}
371396
}

0 commit comments

Comments
 (0)