// Saving current employer affects relationship tab, and possibly related memberships and contributions
$this->ajaxResponse['updateTabs'] = array(
'#tab_rel' => CRM_Contact_BAO_Contact::getCountComponent('rel', $this->_contactId),
- '#tab_contribute' => CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId),
- '#tab_member' => CRM_Contact_BAO_Contact::getCountComponent('membership', $this->_contactId),
);
+ if (CRM_Core_Permission::access('CiviContribute')) {
+ $this->ajaxResponse['updateTabs']['#tab_contribute'] = CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId);
+ }
+ if (CRM_Core_Permission::access('CiviMember')) {
+ $this->ajaxResponse['updateTabs']['#tab_member'] = CRM_Contact_BAO_Contact::getCountComponent('membership', $this->_contactId);
+ }
$this->response();
}
$this->ajaxResponse['tabCount'] = CRM_Contact_BAO_Contact::getCountComponent('participant', $this->_contactId);
// Refresh other tabs with related data
$this->ajaxResponse['updateTabs'] = array(
- '#tab_contribute' => CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId),
'#tab_activity' => CRM_Contact_BAO_Contact::getCountComponent('activity', $this->_contactId),
);
+ if (CRM_Core_Permission::access('CiviContribute')) {
+ $this->ajaxResponse['updateTabs']['#tab_contribute'] = CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId);
+ }
}
}
$this->ajaxResponse['tabCount'] = CRM_Contact_BAO_Contact::getCountComponent('membership', $this->_contactId);
// Refresh other tabs with related data
$this->ajaxResponse['updateTabs'] = array(
- '#tab_contribute' => CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId),
'#tab_activity' => CRM_Contact_BAO_Contact::getCountComponent('activity', $this->_contactId),
'#tab_rel' => CRM_Contact_BAO_Contact::getCountComponent('rel', $this->_contactId),
);
+ if (CRM_Core_Permission::access('CiviContribute')) {
+ $this->ajaxResponse['updateTabs']['#tab_contribute'] = CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId);
+ }
}
}
*/
CRM.tabHeader.getActiveTab = function() {
return $('.ui-tabs-active', '#mainTabContainer');
- }
+ };
/**
* Make a given tab the active one
* @returns panel jQuery object
*/
CRM.tabHeader.getTabPanel = function(tab) {
- return $('#' + $(tab).attr('aria-controls'));
+ var selector = $(tab).attr('aria-controls');
+ return selector ? $('#' + selector) : $();
};
- CRM.tabHeader.getCount = function(tab) {
- return parseInt($(tab).find('a em').text(), 10);
+ /**
+ * @param tab jQuery selector
+ * @returns {string|null}
+ */
+ function getCountClass(tab) {
+ var $tab = $(tab),
+ css = $tab.attr('class') || '',
+ val = css.match(/(crm-count-\d+)/);
+ return val && val.length ? val[0] : null;
}
+ /**
+ * @param tab jQuery selector
+ * @returns {Number|null}
+ */
+ CRM.tabHeader.getCount = function(tab) {
+ var cssClass = getCountClass(tab);
+ return cssClass ? parseInt(cssClass.slice(10), 10) : null;
+ };
+
/**
* Update the counter in a tab
* @param tab jQuery selector
- * @param count number
+ * @param count {Number}
*/
CRM.tabHeader.updateCount = function(tab, count) {
- var oldClass = $(tab).attr('class').match(/(crm-count-\d+)/);
+ var oldClass = getCountClass(tab);
if (oldClass) {
- $(tab).removeClass(oldClass[0]);
+ $(tab).removeClass(oldClass);
}
$(tab)
.addClass('crm-count-' + count)
};
/**
- * Clears tab content so that it will be refreshed next time the user clicks on it
+ * Refresh tab immediately if it is active, otherwise ensure it will be refreshed next time the user clicks on it
* @param tab
*/
CRM.tabHeader.resetTab = function(tab) {
var $panel = CRM.tabHeader.getTabPanel(tab);
if ($(tab).hasClass('ui-tabs-active')) {
$panel.crmSnippet('refresh');
- } else {
- $panel.data("civiCrmSnippet") && $panel.crmSnippet('destroy');
+ }
+ else if ($panel.data("civiCrmSnippet")) {
+ $panel.crmSnippet('destroy');
}
};
})(CRM.$);