CRM-13932 - Fix deprecated useages of .attr
[civicrm-core.git] / templates / CRM / common / TabHeader.tpl
index ad9f9c91c277ad5912d77f4539a6991c5a0c6483..e528d7df07a5782814614ac9a841b381292d90c3 100644 (file)
 </div> {* crm-content-block ends here *}
 
 <script type="text/javascript">
-   var selectedTab = 'EventInfo';
-   {if $selectedTab}selectedTab = "{$selectedTab}";{/if}
-   var spinnerImage = '<img src="{$config->resourceBase}i/loading.gif" style="width:10px;height:10px"/>';
 {literal}
-
-cj( function() {
-    var tabIndex = cj('#tab_' + selectedTab).prevAll().length
-    cj("#mainTabContainer").tabs( {
-        selected: tabIndex,
-        spinner: spinnerImage,
-        select: function(event, ui) {
-            // we need to change the action of parent form, so that form submits to correct page
-            var url = ui.tab.href;
-
-            {/literal}{if $config->userSystem->is_drupal}{literal}
-                var actionUrl = url.split( '?' );
-                {/literal}{if $config->cleanURL}{literal}
-                  var actualUrl = actionUrl[0];
-                {/literal}{else}{literal}
-                  var getParams = actionUrl[1].split( '&' );
-                  var actualUrl = actionUrl[0] + '?' + getParams[0];
-                {/literal}{/if}{literal}
-            {/literal}{else}{literal}
-                var actionUrl = url.split( '&' );
-                var actualUrl = actionUrl[0] + '&' + actionUrl[1];
-            {/literal}{/if}{literal}
-
-            if ( !global_formNavigate ) {
-              var message = '{/literal}{ts escape="js"}Are you sure you want to navigate away from this tab?{/ts}' + '\n\n' + '{ts escape="js"}You have unsaved changes.{/ts}' + '\n\n' + '{ts escape="js"}Press OK to continue, or Cancel to stay on the current tab.{/ts}{literal}';
-              if ( !confirm( message ) ) {
-                return false;
-              } else {
-                global_formNavigate = true;
-              }
-            }
-            cj(this).parents("form").attr("action", actualUrl );
-
-            return true;
-        },
-        load: function(event, ui) {
-          if ((typeof(Drupal) != 'undefined') && Drupal.attachBehaviors) {
-            Drupal.attachBehaviors(ui.panel);
+  cj(function($) {
+    var tabSettings = {};
+    {/literal}{if $selectedTab}
+    var selectedTab = "{$selectedTab}";
+    tabSettings.active = $('#tab_' + selectedTab).prevAll().length;
+    {/if}{literal}
+    $("#mainTabContainer")
+      .on('tabsbeforeactivate',
+        function(e, ui) {
+          // Warn of unsaved changes - requires formNavigate.tpl to be included in each tab
+          if (!global_formNavigate) {
+            var message = '{/literal}{ts escape="js" 1='%1'}Your changes in the <em>%1</em> tab have not been saved.{/ts}{literal}';
+            CRM.alert(ts(message, {1: ui.oldTab.text()}), '{/literal}{ts escape="js"}Unsaved Changes{/ts}{literal}', 'warning');
+            global_formNavigate = true;
           }
-          cj(ui.panel).trigger('crmFormLoad');
-          // FIXME - decouple scanProfileSelectors and TabHeader
-          if (CRM.scanProfileSelectors) {
-            CRM.scanProfileSelectors();
+        })
+      .on('tabsbeforeload',
+        function(e, ui) {
+          // Use civicrm ajax wrappers rather than the default $.load
+          if (!ui.tab.data("loaded")) {
+            CRM.loadPage($('a', ui.tab).attr('href'), {
+              target: ui.panel
+            })
           }
-        }
-    });
+          ui.tab.data("loaded", true);
+          e.preventDefault();
+        })
+      .tabs(tabSettings);
 });
 {/literal}
 </script>