private static $_surveyActionLinks;
private static $_petitionActionLinks;
+ public $_tabs;
+
/**
* Get the action links for this page.
*
];
$subPageType = CRM_Utils_Request::retrieve('type', 'String', $this);
+ // Load the data for a specific tab
if ($subPageType) {
if (!isset($this->_tabs[$subPageType])) {
CRM_Utils_System::permissionDenied();
$this->{'browse' . ucfirst($subPageType)}();
$this->assign('subPageType', ucfirst($subPageType));
}
+ // Initialize tabs
else {
- //build the tabs.
$this->buildTabs();
}
- CRM_Core_Resources::singleton()
- ->addScriptFile('civicrm', 'templates/CRM/common/TabHeader.js', 1, 'html-header')
- ->addSetting([
- 'tabSettings' => [
- 'active' => strtolower(CRM_Utils_Array::value('subPage', $_GET, 'campaign')),
- ],
- ]);
}
/**
}
$allTabs['campaign']['class'] = 'livePage';
$this->assign('tabHeader', $allTabs);
+ CRM_Core_Resources::singleton()
+ ->addScriptFile('civicrm', 'templates/CRM/common/TabHeader.js', 1, 'html-header')
+ ->addSetting([
+ 'tabSettings' => [
+ 'active' => strtolower(CRM_Utils_Array::value('subPage', $_GET, 'campaign')),
+ ],
+ ]);
}
}
// https://civicrm.org/licensing
-/**
- * By default this simply loads tabs via ajax CRM.loadPage method
- * Tabs with class 'ajaxForm' will use CRM.loadForm instead, suitable for most forms
- * Tabs with class 'livePage' will get popup action links, suitable for crud tables
- */
-CRM.$(function($) {
- var tabSettings = CRM.tabSettings || {};
- tabSettings.active = tabSettings.active ? $('#tab_' + tabSettings.active).prevAll().length : 0;
- $("#mainTabContainer")
- .on('tabsbeforeactivate', function(e, ui) {
- // CRM-14353 - Warn of unsaved changes for all forms except those which have opted out
- if (CRM.utils.initialValueChanged($('form:not([data-warn-changes=false])', ui.oldPanel))) {
- CRM.alert(ts('Your changes in the <em>%1</em> tab have not been saved.', {1: ui.oldTab.text()}), ts('Unsaved Changes'), 'warning');
- }
- })
- .on('tabsbeforeload', function(e, ui) {
- // Use civicrm ajax wrappers rather than the default $.load
- if (!ui.panel.data("civiCrmSnippet")) {
- var method = ui.tab.hasClass('ajaxForm') ? 'loadForm' : 'loadPage';
- var params = {target: ui.panel};
- if (method === 'loadForm') {
- params.autoClose = params.openInline = params.cancelButton = params.refreshAction = false;
- ui.panel.on('crmFormLoad', function() {
- // Hack: "Save and done" and "Cancel" buttons submit without ajax
- $('.cancel.crm-form-submit, button[name$=upload_done]', this).on('click', function(e) {
- $(this).closest('form').ajaxFormUnbind();
- });
- });
+(function($, _) {
+ /**
+ * By default this simply loads tabs via ajax CRM.loadPage method
+ * Tabs with class 'ajaxForm' will use CRM.loadForm instead, suitable for most forms
+ * Tabs with class 'livePage' will get popup action links, suitable for crud tables
+ */
+ $(function($) {
+ // CRM.tabSettings.active is the name of the tab which should open on page load
+ var tabSettings = CRM.tabSettings ? _.cloneDeep(CRM.tabSettings) : {};
+ tabSettings.active = tabSettings.active ? $('#tab_' + tabSettings.active).prevAll().length : 0;
+ $("#mainTabContainer")
+ .on('tabsbeforeactivate', function(e, ui) {
+ // CRM-14353 - Warn of unsaved changes for all forms except those which have opted out
+ if (CRM.utils.initialValueChanged($('form:not([data-warn-changes=false])', ui.oldPanel))) {
+ CRM.alert(ts('Your changes in the <em>%1</em> tab have not been saved.', {1: ui.oldTab.text()}), ts('Unsaved Changes'), 'warning');
}
- if (ui.tab.hasClass('livePage') && CRM.config.ajaxPopupsEnabled) {
+ })
+ .on('tabsbeforeload', function(e, ui) {
+ // Use civicrm ajax wrappers rather than the default $.load
+ if (!ui.panel.data("civiCrmSnippet")) {
+ var method = ui.tab.hasClass('ajaxForm') ? 'loadForm' : 'loadPage';
+ var params = {target: ui.panel};
+ if (method === 'loadForm') {
+ params.autoClose = params.openInline = params.cancelButton = params.refreshAction = false;
+ ui.panel.on('crmFormLoad', function() {
+ // Hack: "Save and done" and "Cancel" buttons submit without ajax
+ $('.cancel.crm-form-submit, button[name$=upload_done]', this).on('click', function(e) {
+ $(this).closest('form').ajaxFormUnbind();
+ });
+ });
+ }
+ if (ui.tab.hasClass('livePage') && CRM.config.ajaxPopupsEnabled) {
+ ui.panel
+ .off('click.crmLivePage')
+ .on('click.crmLivePage', 'a.button, a.action-item', CRM.popup)
+ .on('crmPopupFormSuccess.crmLivePage', 'a.button, a.action-item:not(.crm-enable-disable)', CRM.refreshParent);
+ }
ui.panel
- .off('click.crmLivePage')
- .on('click.crmLivePage', 'a.button, a.action-item', CRM.popup)
- .on('crmPopupFormSuccess.crmLivePage', 'a.button, a.action-item:not(.crm-enable-disable)', CRM.refreshParent);
- }
- ui.panel
- .off('.tabInfo')
- .on('crmLoad.tabInfo crmFormSuccess.tabInfo', function(e, data) {
- if (data) {
- if (typeof(data.tabCount) !== 'undefined') {
- CRM.tabHeader.updateCount(ui.tab, data.tabCount);
+ .off('.tabInfo')
+ .on('crmLoad.tabInfo crmFormSuccess.tabInfo', function(e, data) {
+ if (data) {
+ if (typeof(data.tabCount) !== 'undefined') {
+ CRM.tabHeader.updateCount(ui.tab, data.tabCount);
+ }
+ if (typeof(data.tabValid) !== 'undefined') {
+ var method = data.tabValid ? 'removeClass' : 'addClass';
+ ui.tab[method]('disabled');
+ }
}
- if (typeof(data.tabValid) !== 'undefined') {
- var method = data.tabValid ? 'removeClass' : 'addClass';
- ui.tab[method]('disabled');
- }
- }
- });
- CRM[method]($('a', ui.tab).attr('href'), params);
+ });
+ CRM[method]($('a', ui.tab).attr('href'), params);
+ }
+ e.preventDefault();
+ })
+ .tabs(tabSettings);
+ // Any load/submit event could potentially call for tabs to refresh.
+ $(document).on('crmLoad.tabInfo crmFormSuccess.tabInfo', function(e, data) {
+ if (data && $.isPlainObject(data.updateTabs)) {
+ $.each(data.updateTabs, CRM.tabHeader.updateCount);
+ $.each(data.updateTabs, CRM.tabHeader.resetTab);
}
- e.preventDefault();
- })
- .tabs(tabSettings);
- // Any load/submit event could potentially call for tabs to refresh.
- $(document).on('crmLoad.tabInfo crmFormSuccess.tabInfo', function(e, data) {
- if (data && $.isPlainObject(data.updateTabs)) {
- $.each(data.updateTabs, CRM.tabHeader.updateCount);
- $.each(data.updateTabs, CRM.tabHeader.resetTab);
- }
+ });
});
-});
-(function($) {
+
// Utility functions
CRM.tabHeader = CRM.tabHeader || {};
$panel.crmSnippet('destroy');
}
};
-})(CRM.$);
+})(CRM.$, CRM._);