diff options
-rw-r--r-- | misc/cog-select.png | bin | 0 -> 1218 bytes | |||
-rw-r--r-- | misc/contextual_links.css | 61 | ||||
-rw-r--r-- | misc/contextual_links.js | 21 | ||||
-rw-r--r-- | modules/system/system.module | 2 | ||||
-rw-r--r-- | themes/garland/style.css | 11 |
5 files changed, 66 insertions, 29 deletions
diff --git a/misc/cog-select.png b/misc/cog-select.png Binary files differnew file mode 100644 index 000000000..e30217cd9 --- /dev/null +++ b/misc/cog-select.png diff --git a/misc/contextual_links.css b/misc/contextual_links.css index 3158c8c81..4d2ac51e8 100644 --- a/misc/contextual_links.css +++ b/misc/contextual_links.css @@ -8,31 +8,68 @@ position: relative; } .contextual-links-region-active { - outline: #000 dashed 1px; + outline: #999 dashed 1px; } /** * Contextual links. */ -ul.contextual-links { - float: right; +div.contextual-links-wrapper { + display: none; font-size: 90%; + position: absolute; + right: 5px; + top: 0px; + z-index: 999; +} +html.js div.contextual-links-wrapper { + display: block; +} +a.contextual-links-trigger { + background: transparent url(cog-select.png) no-repeat center center; + display: none; + height: 20px; + margin-top: 2px; + outline: none; + text-indent: 34px; + width: 30px; + overflow: hidden; +} +a.contextual-links-trigger:hover, +div.contextual-links-active a.contextual-links-trigger { + background-color: #fff; +} +div.contextual-links-wrapper ul.contextual-links { + display: none; margin: 0; - padding: 0; + padding: 5px 10px; + position: absolute; + right: 0; + top: 20px; + white-space: nowrap; +} +.contextual-links-region:hover a.contextual-links-trigger, +div.contextual-links-active a.contextual-links-trigger, +div.contextual-links-active ul.contextual-links { + display: block; } ul.contextual-links li { - border-left: 1px solid #ccc; - display: inline; line-height: 100%; list-style: none; - margin: 0 0 0 0.3em; - padding: 0 0 0 0.6em; -} -ul.contextual-links li.first { - border-left: 0; + list-style-image: none; margin: 0; padding: 0; } -ul.contextual-links li a { +div.contextual-links-wrapper a { text-decoration: none; } +ul.contextual-links li a { + background: #fff; + color: #666; + display: block; + margin: 0.5em 0; + padding: 0.3em; +} +ul.contextual-links li a:hover { + text-decoration: underline; +} diff --git a/misc/contextual_links.js b/misc/contextual_links.js index d7fafbd25..0dfc9ddfa 100644 --- a/misc/contextual_links.js +++ b/misc/contextual_links.js @@ -8,8 +8,17 @@ Drupal.contextualLinks = Drupal.contextualLinks || {}; */ Drupal.behaviors.contextualLinks = { attach: function (context) { - $('ul.contextual-links', context).once('contextual-links', function () { - $(this).hover(Drupal.contextualLinks.hover, Drupal.contextualLinks.hoverOut); + $('div.contextual-links-wrapper', context).once('contextual-links', function () { + var $wrapper = $(this); + var $trigger = $('<a class="contextual-links-trigger" href="#" />').text(Drupal.t('Configure')).click( + function () { + $wrapper.find('ul.contextual-links').slideToggle(100); + $wrapper.toggleClass('contextual-links-active'); + return false; + } + ); + $wrapper.prepend($trigger) + .closest('.contextual-links-region').hover(Drupal.contextualLinks.hover, Drupal.contextualLinks.hoverOut); }); } }; @@ -18,16 +27,16 @@ Drupal.behaviors.contextualLinks = { * 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'); + $(this).closest('.contextual-links-region').addClass('contextual-links-region-active'); }; /** * 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'); + $(this).closest('.contextual-links-region').removeClass('contextual-links-region-active') + .find('.contextual-links-active').removeClass('contextual-links-active') + .find('ul.contextual-links').hide(); }; })(jQuery); diff --git a/modules/system/system.module b/modules/system/system.module index 9e771aa3f..f1d9851d4 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -3634,6 +3634,8 @@ function system_build_contextual_links($element) { $build = array(); if ($links) { $build = array( + '#prefix' => '<div class="contextual-links-wrapper">', + '#suffix' => '</div>', '#theme' => 'links', '#links' => $links, '#attributes' => array('class' => array('contextual-links')), diff --git a/themes/garland/style.css b/themes/garland/style.css index f52f5b4e4..f865cee3e 100644 --- a/themes/garland/style.css +++ b/themes/garland/style.css @@ -841,17 +841,6 @@ tr.even td.menu-disabled { } /** - * Contextual links. - */ -.contextual-links-region-active { - outline: #027AC6 dashed 1px; -} -.block ul.contextual-links { - margin: 0; - padding: 0; -} - -/** * Collapsible fieldsets */ fieldset { |