Index: misc/contextual_links.css =================================================================== RCS file: /cvs/drupal/drupal/misc/contextual_links.css,v retrieving revision 1.1 diff -u -p -r1.1 contextual_links.css --- misc/contextual_links.css 17 Oct 2009 05:50:27 -0000 1.1 +++ misc/contextual_links.css 25 Nov 2009 09:07:09 -0000 @@ -11,6 +11,28 @@ outline: #000 dashed 1px; } + +/** + * Contextual links js controls. + */ +.contextual-links-wrapper { + position: absolute; + top: 0; + right: 0; + text-align: right; +} +.contextual-links-trigger { + right: 0; + opacity: 0.5; +} +.contextual-links-trigger:focus { + outline: none; +} +.contextual-links-wrapper:hover .contextual-links-trigger { + opacity: 1; +} + + /** * Contextual links. */ @@ -19,6 +41,13 @@ ul.contextual-links { font-size: 90%; margin: 0; padding: 0; + text-align: left; +} +.js ul.contextual-links { + display: none; + float: none; + border: 1px solid #ddd; + background-color: #fff; } ul.contextual-links li { border-left: 1px solid #ccc; @@ -28,11 +57,24 @@ ul.contextual-links li { margin: 0 0 0 0.3em; padding: 0 0 0 0.6em; } +.js ul.contextual-links li { + border: none; + display: list-item; + margin: 0; + padding: 0.4em; +} ul.contextual-links li.first { border-left: 0; margin: 0; padding: 0; } +.js ul.contextual-links li.first { + padding: 0.4em; +} ul.contextual-links li a { text-decoration: none; } +.js ul.contextual-links li a { + display: block; + zoom: 1; +} Index: misc/contextual_links.js =================================================================== RCS file: /cvs/drupal/drupal/misc/contextual_links.js,v retrieving revision 1.1 diff -u -p -r1.1 contextual_links.js --- misc/contextual_links.js 17 Oct 2009 05:50:27 -0000 1.1 +++ misc/contextual_links.js 25 Nov 2009 09:07:09 -0000 @@ -4,30 +4,46 @@ Drupal.contextualLinks = Drupal.contextualLinks || {}; /** - * Attach outline behavior for regions associated with contextual links. + * Attach behavior for regions associated with contextual links. */ Drupal.behaviors.contextualLinks = { attach: function (context) { - $('ul.contextual-links', context).once('contextual-links', function () { - $(this).hover(Drupal.contextualLinks.hover, Drupal.contextualLinks.hoverOut); - }); - } -}; + $('.contextual-links-region', context).once('contextual-links-region', function () { + // Caching the jQuery object for later. + var $region = $(this); -/** - * Enables outline for the region contextual links are associated with. - */ -Drupal.contextualLinks.hover = function () { - $(this).addClass('contextual-links-link-active') - .closest('.contextual-links-region').addClass('contextual-links-region-active'); -}; + // Add/remove appropriate region and trigger classes on mouseover/out. + $region.hover(function() { + $region.addClass('contextual-links-region-active') + .find('.contextual-links-trigger').removeClass('element-invisible'); + }, function() { + $region.removeClass('contextual-links-region-active') + .find('.contextual-links-trigger').addClass('element-invisible'); + }); -/** - * Disables outline for the region contextual links are associated with. - */ -Drupal.contextualLinks.hoverOut = function () { - $(this).removeClass('contextual-links-link-active') - .closest('.contextual-links-region').removeClass('contextual-links-region-active'); -}; + // Cache the selector for later. + var $links = $('ul.contextual-links', this) + // Wrap the contextual links with a helper div. + .wrap('') + // Add a trigger link. + .before('Menu') + // Resolve hover class changes and behavior on contextual links. + .hover(function() { + $(this).addClass('contextual-links-link-active'); + }, function() { + $(this).removeClass('contextual-links-link-active').hide(); + }); + // Clicking the trigger reveals the contextual links. + $('.contextual-links-wrapper', this).hover(function() { + $links.show(); + }, function(){ + $links.hide(); + }); + $('.contextual-links-trigger', this).click(function(){ + return false; + }); + }); + } +} })(jQuery);