CRM-13817 - Move logout menu item and add CRM.status()
authorColeman Watts <coleman@civicrm.org>
Fri, 17 Jan 2014 05:30:26 +0000 (21:30 -0800)
committerColeman Watts <coleman@civicrm.org>
Fri, 17 Jan 2014 05:30:26 +0000 (21:30 -0800)
CRM/Core/BAO/Navigation.php
css/civicrm.css
js/Common.js
templates/CRM/common/Navigation.tpl

index 3ad5ca88c8bb0fe73a57a94ccd15ec96045e6085..61ace959997cb6d1a3b6d10b033245186f9c9e68 100644 (file)
@@ -577,12 +577,11 @@ ORDER BY parent_id, weight";
 
       //add additional navigation items
       $logoutURL = CRM_Utils_System::url('civicrm/logout', 'reset=1');
-      $appendString = "<li id=\"menu-logout\" class=\"menumain\"><a href=\"{$logoutURL}\">" . ts('Logout') . "</a></li>";
 
       // get home menu from db
       $homeParams = array('name' => 'Home');
       $homeNav = array();
-      $homeIcon = '<img src="' . $config->userFrameworkResourceURL . 'i/logo16px.png" />';
+      $homeIcon = '<img src="' . $config->userFrameworkResourceURL . 'i/logo16px.png" style="vertical-align:middle;" />';
       self::retrieve($homeParams, $homeNav);
       if ($homeNav) {
         list($path, $q) = explode('&', $homeNav['url']);
@@ -597,25 +596,32 @@ ORDER BY parent_id, weight";
         $homeURL = CRM_Utils_System::url('civicrm/dashboard', 'reset=1');
         $homeLabel = ts('CiviCRM Home');
       }
-
+      // Link to hide the menubar
       if (
         ($config->userSystem->is_drupal) &&
         ((module_exists('toolbar') && user_access('access toolbar')) ||
           module_exists('admin_menu') && user_access('access administration menu')
         )
       ) {
-        $prepandString = '<li class="menumain crm-link-home">' . $homeIcon . "<ul id=\"civicrm-home\"><li><a href=\"{$homeURL}\">" . $homeLabel . '</a></li><li><a href="#" class="crm-hidemenu">' . ts('Drupal Menu') . "</a></li></ul>";
+        $hideLabel = ts('Drupal Menu');
       }
       elseif ($config->userSystem->is_wordpress) {
-        $prepandString = '<li class="menumain crm-link-home">' . $homeIcon . "<ul id=\"civicrm-home\"><li><a href=\"{$homeURL}\">" . $homeLabel . '</a></li><li><a href="#" class="crm-hidemenu">' . ts('WordPress Menu') . "</a></li></ul>";
+        $hideLabel = ts('WordPress Menu');
       }
       else {
-        $prepandString = "<li class=\"menumain crm-link-home\"><a href=\"{$homeURL}\" title=\"" . $homeLabel . '">' . $homeIcon . "</a>";
+        $hideLabel = ts('Hide Menu');
       }
 
-      $navigation = $prepandString . $navigation . $appendString;
+      $prepandString = "
+        <li class='menumain crm-link-home'>$homeIcon
+          <ul id='civicrm-home'>
+            <li><a href='$homeURL'>$homeLabel</a></li>
+            <li><a href='#' class='crm-hidemenu'>$hideLabel</a></li>
+            <li><a href='$logoutURL' class='crm-logout-link'>". ts('Logout') ."</a></li>
+          </ul>";
+      // <li> tag doesn't need to be closed
     }
-    return $navigation;
+    return $prepandString . $navigation;
   }
 
   /**
index 5408d0b4499c58c8d60583473ec235de3d013b2a..5d5c0c9d9c45e4ef8cf03e763d66e1f53e4d128c 100644 (file)
@@ -2826,9 +2826,28 @@ div.grippie {
   padding: 2px 16px 3px 2px;
 }
 
-#civicrm-menu #menu-logout {
-  float: right;
-  border-left: 1px solid #5D5D5D;
+/* Status message bar */
+#civicrm-menu .crm-menubar-status-container {
+  position: absolute;
+  right: 2px;
+  top: 0;
+  border-top: 1px solid #1B1B1B;
+}
+
+#civicrm-menu .crm-menubar-status-progressbar {
+  padding: 3px 14px;
+  font-size: 14px !important;
+  font-weight: bold;
+  background: rgba(142, 136, 0, 0.9);
+  text-align: center;
+}
+
+#civicrm-menu .status-busy {
+  background: #F8FF03 url("../packages/jquery/jquery-ui/css/black-tie/images/animated-overlay.gif");
+}
+
+#civicrm-menu .status-done .crm-menubar-status-progressbar {
+  background: rgba(41, 152, 32, 0.7);
 }
 
 /* Pop-up help icon - eliminate forced line break */
index ed859b28167036994f1cadf7affb6fabf037891f..c85d38cb4a3fa8a8cff003ecc273e677d2dad5c5 100644 (file)
@@ -579,6 +579,33 @@ CRM.validate = CRM.validate || {
       }
     );
   };
+  /**
+   * @param startMsg string
+   * @param endMsg string|function
+   * @param deferred optional jQuery deferred object
+   * @return jQuery deferred object - if not supplied a new one will be created
+   */
+  var fadeOut;
+  CRM.status = function(startMsg, endMsg, deferred) {
+    var $bar = $('#civicrm-menu');
+    if (!$bar.length) {
+      console && console.log && console.log('CRM.status called on a page with no menubar');
+      return;
+    }
+    $('.crm-menubar-status-container', $bar).remove();
+    fadeOut && window.clearTimeout(fadeOut);
+    $bar.append('<li class="crm-menubar-status-container status-busy"><div class="crm-menubar-status-progressbar"><div class="crm-menubar-status-msg">' + startMsg + '</div></div></li>');
+    $('.crm-menubar-status-container', $bar).css('min-width', $('.crm-menubar-status-container', $bar).width());
+    deferred || (deferred = new $.Deferred());
+    deferred.done(function(data) {
+      var msg = typeof(endMsg) === 'function' ? endMsg(data) : endMsg;
+      $('.crm-menubar-status-container', $bar).removeClass('status-busy').addClass('status-done').find('.crm-menubar-status-msg').html(msg);
+      fadeOut = window.setTimeout(function() {
+        $('.crm-menubar-status-container', $bar).fadeOut('slow');
+      }, 2000);
+    });
+    return deferred;
+  };
 
   /**
    * @param string text Displayable message
index 36aa47ebdbf6cdfdc9e87fc205e23bfe22572413..265215a9bf6cf928f3837fcd2c3579b56a8dd102 100644 (file)
@@ -114,6 +114,14 @@ $('#civicrm-menu').ready(function() {
   $('.crm-hidemenu').click(function() {
     $.Menu.closeAll();
     $('#civicrm-menu').slideUp();
+    var alert = CRM.alert({/literal}'<a href="#" id="crm-restore-menu">{ts escape='js'}Restore Menu{/ts}</a>', "{ts escape='js'}CiviCRM Menu Hidden{/ts}"{literal});
+    $('#crm-notification-container')
+      .off('.hideMenu')
+      .on('click.hideMenu', '#crm-restore-menu', function() {
+        alert.close();
+        $('#civicrm-menu').slideDown();
+        return false;
+      });
     return false;
   });
   $('.crm-quickSearchField').click(function() {