From 6be69d64387405f67a2993deb0c7a271683944cb Mon Sep 17 00:00:00 2001 From: Jose Consador Date: Tue, 15 Sep 2015 16:22:04 +0800 Subject: [PATCH] check connection status before controller actions and rendering the grid --- .../Zendesk/Zendesk/Block/Adminhtml/Dashboard.php | 5 ----- .../Zendesk/Block/Adminhtml/Dashboard/Grids.php | 2 +- .../code/community/Zendesk/Zendesk/Helper/Data.php | 12 +++++++++++- .../controllers/Adminhtml/ZendeskController.php | 12 ++++++------ .../default/template/zendesk/dashboard/index.phtml | 2 +- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php index 06f5d4da..36aeb6c7 100644 --- a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php +++ b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php @@ -31,11 +31,6 @@ public function getAuthHeader() { return 'Token token="' . Mage::helper('zendesk')->getApiToken(false) . '"'; } - public function isConnected() { - $connection = Mage::helper('zendesk')->getConnectionStatus(); - return $connection['success']; - } - public function getTotals() { return Mage::helper("zendesk")->getTicketTotals(); } diff --git a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php index b9eb2ea5..a93618f3 100644 --- a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php +++ b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php @@ -29,7 +29,7 @@ public function __construct() { protected function _prepareLayout() { // Check if we are on the main admin dashboard and, if so, whether we should be showing the grid // Note: an additional check in the template is needed, but this will prevent unnecessary API calls to Zendesk - if ( !$this->getIsZendeskDashboard() && !Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard') ) + if ( !Mage::helper('zendesk')->isConnected() || (!$this->getIsZendeskDashboard() && !Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard')) ) { return parent::_prepareLayout(); } diff --git a/src/app/code/community/Zendesk/Zendesk/Helper/Data.php b/src/app/code/community/Zendesk/Zendesk/Helper/Data.php index 7dc7eb38..a13ec7d3 100644 --- a/src/app/code/community/Zendesk/Zendesk/Helper/Data.php +++ b/src/app/code/community/Zendesk/Zendesk/Helper/Data.php @@ -391,7 +391,17 @@ public function getConnectionStatus() { ); } } - + + /** + * Checks if the current connection details are valid. + * + * @return boolean + */ + public function isConnected() { + $connection = $this->getConnectionStatus(); + return $connection['success']; + } + public function storeDependenciesInCachedRegistry() { $cache = Mage::app()->getCache(); diff --git a/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php b/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php index b07988ed..be7a8ebe 100644 --- a/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php +++ b/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php @@ -252,11 +252,12 @@ public function createAction() public function launchAction() { - $domain = $this->_domainConfigured(); - if (!$domain) { + if (!$this->_domainConfigured()) { return; } + $domain = Mage::getStoreConfig('zendesk/general/domain'); + $sso = Mage::getStoreConfig('zendesk/sso/enabled'); if (!$sso) { @@ -749,13 +750,12 @@ protected function getMassActionResponse($response, $ids, $message = '%d out of private function _domainConfigured() { - $domain = Mage::getStoreConfig('zendesk/general/domain'); - if(!$domain) { - Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__('Please set up Zendesk connection.')); + if (!Mage::helper('zendesk')->isConnected()) { + Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__('Please set up a Zendesk connection.')); $this->_redirect('adminhtml/dashboard'); return false; } else { - return $domain; + return true; } } diff --git a/src/app/design/adminhtml/default/default/template/zendesk/dashboard/index.phtml b/src/app/design/adminhtml/default/default/template/zendesk/dashboard/index.phtml index e21e6df8..81d7ffd2 100644 --- a/src/app/design/adminhtml/default/default/template/zendesk/dashboard/index.phtml +++ b/src/app/design/adminhtml/default/default/template/zendesk/dashboard/index.phtml @@ -15,7 +15,7 @@ * limitations under the License. */ ?> -isConnected() ): ?> +isConnected() ): ?> getIsZendeskDashboard() || Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard')): ?> getIsZendeskDashboard()): ?>