Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.1021
diff -u -p -r1.1021 common.inc
--- includes/common.inc 15 Oct 2009 21:19:30 -0000 1.1021
+++ includes/common.inc 15 Oct 2009 22:32:03 -0000
@@ -3292,7 +3292,7 @@ function drupal_clear_css_cache() {
* @return
* The cleaned identifier.
*/
-function drupal_clean_css_identifier($identifier, $filter = array(' ' => '-', '_' => '-', '[' => '-', ']' => '')) {
+function drupal_clean_css_identifier($identifier, $filter = array(' ' => '-', '_' => '-', '/' => '-', '[' => '-', ']' => '')) {
// By default, we filter using Drupal's coding standards.
$identifier = strtr($identifier, $filter);
Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.353
diff -u -p -r1.353 menu.inc
--- includes/menu.inc 15 Oct 2009 14:07:26 -0000 1.353
+++ includes/menu.inc 16 Oct 2009 02:53:34 -0000
@@ -1578,6 +1578,9 @@ function menu_navigation_links($menu_nam
*
* @param $level
* The level of tasks you ask for. Primary tasks are 0, secondary are 1.
+ * @param $path
+ * (optional) A menu link path to collect tabs and actions for.
+ *
* @return
* An array containing
* - tabs: Local tasks for the requested level:
@@ -1589,25 +1592,28 @@ function menu_navigation_links($menu_nam
* - root_path: The router path for the current page. If the current page is
* a default local task, then this corresponds to the parent tab.
*/
-function menu_local_tasks($level = 0) {
+function menu_local_tasks($level = 0, $path = NULL) {
$data = &drupal_static(__FUNCTION__);
- $root_path = &drupal_static(__FUNCTION__ . ':root_path', '');
+
$empty = array(
'tabs' => array('count' => 0, 'output' => array()),
'actions' => array('count' => 0, 'output' => array()),
- 'root_path' => &$root_path,
+ 'root_path' => '',
);
- if (!isset($data)) {
- $data = array();
+ $router_item = menu_get_item($path);
+ if (!$router_item || !$router_item['access']) {
+ return $empty;
+ }
+ $root_path = $router_item['path'];
+ $empty['root_path'] = $root_path;
+
+ if (!isset($data[$root_path])) {
+ $data[$root_path] = $empty;
// Set defaults in case there are no actions or tabs.
$actions = $empty['actions'];
$tabs = array();
- $router_item = menu_get_item();
- if (!$router_item || !$router_item['access']) {
- return $empty;
- }
// Get all tabs and the root page.
$result = db_select('menu_router', NULL, array('fetch' => PDO::FETCH_ASSOC))
->fields('menu_router')
@@ -1615,10 +1621,9 @@ function menu_local_tasks($level = 0) {
->orderBy('weight')
->orderBy('title')
->execute();
- $map = arg();
+ $map = $router_item['original_map'];
$children = array();
$tasks = array();
- $root_path = $router_item['path'];
foreach ($result as $item) {
_menu_translate($item, $map, TRUE);
@@ -1682,7 +1687,7 @@ function menu_local_tasks($level = 0) {
$actions['output'] = $actions_current;
$depth++;
}
- $data['actions'] = $actions;
+ $data[$root_path]['actions'] = $actions;
// Find all tabs at the same level or above the current one.
$parent = $router_item['tab_parent'];
$path = $router_item['path'];
@@ -1706,7 +1711,7 @@ function menu_local_tasks($level = 0) {
// Use the path of the parent instead.
$link['href'] = $tasks[$p]['href'];
if ($item['path'] == $router_item['path']) {
- $root_path = $tasks[$p]['path'];
+ $data[$root_path]['root_path'] = $tasks[$p]['path'];
}
}
// We check for the active tab.
@@ -1739,23 +1744,53 @@ function menu_local_tasks($level = 0) {
ksort($tabs);
// Remove the depth, we are interested only in their relative placement.
$tabs = array_values($tabs);
- $data['tabs'] = $tabs;
+ $data[$root_path]['tabs'] = $tabs;
// Allow modules to alter local tasks or dynamically append further tasks.
- drupal_alter('menu_local_tasks', $data, $router_item, $root_path);
+ drupal_alter('menu_local_tasks', $data[$root_path], $router_item, $root_path);
}
- if (isset($data['tabs'][$level])) {
+ if (isset($data[$root_path]['tabs'][$level])) {
return array(
- 'tabs' => $data['tabs'][$level],
- 'actions' => $data['actions'],
- 'root_path' => $root_path,
+ 'tabs' => $data[$root_path]['tabs'][$level],
+ 'actions' => $data[$root_path]['actions'],
+ 'root_path' => $data[$root_path]['root_path'],
);
}
return $empty;
}
/**
+ * Retrieve contextual links for a system object.
+ *
+ * @param $path
+ * The menu router path of the object to retrieve local tasks for.
+ *
+ * @return
+ * A renderable array containing menu router items that are local tasks for
+ * the passed in path.
+ */
+function menu_context_links($path) {
+ // @todo This really doesn't belong into an API function.
+ if (!user_access('view contextual links')) {
+ return array();
+ }
+ $local_tasks = menu_local_tasks(0, $path);
+ $root_length = drupal_strlen($local_tasks['root_path']);
+ $tasks = $local_tasks['tabs']['output'];
+ foreach ($tasks as $key => $task) {
+ unset($tasks[$key]['#theme']);
+ // Extract the link "type" from the path.
+ $tasks[$key]['#link_type'] = drupal_substr($task['#link']['path'], $root_length + 1);
+ }
+ // If there is more than one tab, unset the default tab.
+ if (count($tasks) > 1) {
+ unset($tasks[0]);
+ }
+ return $tasks;
+}
+
+/**
* Returns the rendered local tasks at the top level.
*/
function menu_primary_local_tasks() {
Index: misc/attached_links.css
===================================================================
RCS file: misc/attached_links.css
diff -N misc/attached_links.css
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ misc/attached_links.css 16 Oct 2009 04:21:58 -0000
@@ -0,0 +1,41 @@
+/* $Id$ */
+
+/**
+ * Styling for attached links and the page regions they are associated with.
+ */
+.attached-links-link {
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ height: 19px;
+ width: 19px;
+ float: left;
+ display: block;
+ margin-right: 2px;
+}
+
+.attached-links-region {
+ outline: none;
+ position: relative;
+}
+
+.attached-links-region-active {
+ outline: #000 dashed 2px;
+}
+
+ul.attached-links {
+ float: right;
+ padding: 0;
+ margin: 0;
+}
+
+ul.attached-links li {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+ display: inline;
+ line-height: 100%;
+}
+
+ul.attached-links li a {
+ text-decoration: none;
+}
Index: misc/attached_links.js
===================================================================
RCS file: misc/attached_links.js
diff -N misc/attached_links.js
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ misc/attached_links.js 16 Oct 2009 02:44:57 -0000
@@ -0,0 +1,31 @@
+// $Id$
+(function ($) {
+
+/**
+ * Highlights the region of the page that an attached link is associated with.
+ */
+Drupal.behaviors.attachedLinks = {
+ attach: function (context) {
+ var addHighlight = function () {
+ // If the attached link has a CSS class containing an encoded version of
+ // the URL that the link points to, find the region of the page whose CSS
+ // class contains the same encoded URL.
+ var matches = $(this).attr('class').match(/\battached-links-link-to-(\S+)/);
+ if (matches) {
+ var className = '.attached-links-region-for-' + matches[1];
+ $(className).addClass('attached-links-region-active');
+ $(this).addClass('attached-links-link-active');
+ }
+ };
+
+ var removeHighlight = function () {
+ $('.active-attached-links-region').removeClass('attached-links-region-active');
+ $('.active-attached-links-link').removeClass('attached-links-link-active');
+ };
+
+ // Trigger the behavior when hovering over the link.
+ $('.attached-links-link').hover(addHighlight, removeHighlight);
+ }
+};
+
+})(jQuery);
Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.389
diff -u -p -r1.389 block.module
--- modules/block/block.module 14 Oct 2009 02:13:14 -0000 1.389
+++ modules/block/block.module 16 Oct 2009 01:30:00 -0000
@@ -280,6 +280,18 @@ function _block_get_renderable_array($li
foreach ($list as $key => $block) {
$build[$key] = $block->content;
unset($block->content);
+
+ // Attach links for this block; skip this for the system main block.
+ if ($key != 'system_main') {
+ // Add local task to configure block.
+ // @todo Implement proper path/subject/verb URL pattern for blocks.
+ $build[$key]['#pre_render'][] = 'system_pre_render_attached_links';
+ $build[$key]['#attached_links'][][] = array(
+ '#link' => menu_get_item("admin/structure/block/configure/{$block->module}/{$block->delta}"),
+ '#link_type' => 'configure',
+ );
+ }
+
$build[$key] += array(
'#block' => $block,
'#weight' => ++$weight,
@@ -752,6 +764,12 @@ function _block_render_blocks($region_bl
}
else {
$array = module_invoke($block->module, 'block_view', $block->delta);
+
+ // Allow modules to modify the block before it is viewed, via either
+ // hook_block_view_MODULE_DELTA_alter() or hook_block_view_alter().
+ drupal_alter("block_view_{$block->module}_{$block->delta}", $array);
+ drupal_alter('block_view', $array, $block->module, $block->delta);
+
if (isset($cid)) {
cache_set($cid, $array, 'cache_block', CACHE_TEMPORARY);
}
Index: modules/block/block.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.tpl.php,v
retrieving revision 1.4
diff -u -p -r1.4 block.tpl.php
--- modules/block/block.tpl.php 11 Sep 2009 06:48:02 -0000 1.4
+++ modules/block/block.tpl.php 10 Oct 2009 17:39:51 -0000
@@ -11,6 +11,12 @@
* - $block->module: Module that generated the block.
* - $block->delta: An ID for the block, unique within each module.
* - $block->region: The block region embedding the current block.
+ * - $attached_links: An array of links that are attached to the block on the
+ * page. Use render($attached_links) to print them all, or print a subset
+ * using render($attached_links['block']), which prints the configuration
+ * links for the block itself, or render($attached_links['block content']),
+ * which prints the links associated with the content that is displayed in
+ * the block.
* - $classes: String of classes that can be used to style contextually through
* CSS. It can be manipulated through the variable $classes_array from
* preprocess functions. The default values can be one or more of the following:
@@ -36,6 +42,11 @@
*/
?>
>
+
+
+
+
+
subject): ?>
>subject ?>
Index: modules/comment/comment.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.admin.inc,v
retrieving revision 1.34
diff -u -p -r1.34 comment.admin.inc
--- modules/comment/comment.admin.inc 10 Oct 2009 13:37:07 -0000 1.34
+++ modules/comment/comment.admin.inc 16 Oct 2009 04:27:34 -0000
@@ -206,27 +206,6 @@ function comment_multiple_delete_confirm
}
/**
- * Menu callback; delete a comment.
- *
- * @param $cid
- * The comment to be deleted.
- */
-function comment_delete_page($cid = NULL) {
- $comment = db_query('SELECT c.*, u.name AS registered_name, u.uid FROM {comment} c INNER JOIN {users} u ON u.uid = c.uid WHERE c.cid = :cid', array(':cid' => $cid))->fetch();
- $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
- $output = '';
-
- if (is_object($comment) && is_numeric($comment->cid)) {
- $output = drupal_get_form('comment_confirm_delete', $comment);
- }
- else {
- drupal_set_message(t('The comment no longer exists.'));
- }
-
- return $output;
-}
-
-/**
* Form builder; Builds the confirmation form for deleting a single comment.
*
* @ingroup forms
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.789
diff -u -p -r1.789 comment.module
--- modules/comment/comment.module 16 Oct 2009 03:40:40 -0000 1.789
+++ modules/comment/comment.module 16 Oct 2009 04:54:05 -0000
@@ -176,11 +176,23 @@ function comment_menu() {
'access arguments' => array('administer comments'),
'type' => MENU_LOCAL_TASK,
);
- $items['comment/delete'] = array(
+ $items['comment/%comment'] = array(
+ 'title' => 'Comment permalink',
+ 'page callback' => 'comment_permalink',
+ 'page arguments' => array(1),
+ 'access arguments' => array('access comments'),
+ 'type' => MENU_CALLBACK,
+ );
+ $items['comment/%comment/view'] = array(
+ 'title' => 'View comment',
+ 'type' => MENU_DEFAULT_LOCAL_TASK,
+ );
+ $items['comment/%comment/delete'] = array(
'title' => 'Delete comment',
- 'page callback' => 'comment_delete_page',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('comment_confirm_delete', 1),
'access arguments' => array('administer comments'),
- 'type' => MENU_CALLBACK,
+ 'type' => MENU_LOCAL_TASK,
'file' => 'comment.admin.inc',
);
$items['comment/edit/%comment'] = array(
@@ -208,13 +220,6 @@ function comment_menu() {
'type' => MENU_CALLBACK,
'file' => 'comment.pages.inc',
);
- $items['comment/%comment'] = array(
- 'title' => 'Comment permalink',
- 'page callback' => 'comment_permalink',
- 'page arguments' => array(1),
- 'access arguments' => array('access comments'),
- 'type' => MENU_CALLBACK,
- );
return $items;
}
@@ -795,6 +800,8 @@ function comment_build($comment, $node,
'#node' => $node,
'#build_mode' => $build_mode,
);
+ // Attach local tasks for this comment.
+ $build['#attached_links'][] = menu_context_links('comment/' . $comment->cid);
$prefix = '';
$is_threaded = isset($comment->divs) && variable_get('comment_default_mode_' . $node->type, COMMENT_MODE_THREADED) == COMMENT_MODE_THREADED;
@@ -880,7 +887,7 @@ function comment_links($comment, $node)
if (user_access('administer comments') && user_access('post comments')) {
$links['comment_delete'] = array(
'title' => t('delete'),
- 'href' => "comment/delete/$comment->cid",
+ 'href' => "comment/$comment->cid/delete",
'html' => TRUE,
);
$links['comment_edit'] = array(
Index: modules/comment/comment.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.test,v
retrieving revision 1.47
diff -u -p -r1.47 comment.test
--- modules/comment/comment.test 8 Oct 2009 08:16:54 -0000 1.47
+++ modules/comment/comment.test 16 Oct 2009 04:27:53 -0000
@@ -89,7 +89,7 @@ class CommentHelperCase extends DrupalWe
* Comment to delete.
*/
function deleteComment($comment) {
- $this->drupalPost('comment/delete/' . $comment->id, array(), t('Delete'));
+ $this->drupalPost('comment/' . $comment->id . '/delete', array(), t('Delete'));
$this->assertText(t('The comment and all its replies have been deleted.'), t('Comment deleted.'));
}
Index: modules/locale/locale.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.test,v
retrieving revision 1.46
diff -u -p -r1.46 locale.test
--- modules/locale/locale.test 16 Oct 2009 02:04:42 -0000 1.46
+++ modules/locale/locale.test 16 Oct 2009 03:35:50 -0000
@@ -1089,7 +1089,7 @@ class LanguageSwitchingFunctionalTest ex
$this->assertText(t('Languages'), t('Language switcher block found.'));
// Assert that only the current language is marked as active.
- list($language_switcher) = $this->xpath('//div[@id="block-locale-language"]');
+ list($language_switcher) = $this->xpath('//div[@id="block-locale-language"]/div[@class="content"]');
$links = array(
'active' => array(),
'inactive' => array(),
@@ -1098,7 +1098,7 @@ class LanguageSwitchingFunctionalTest ex
'active' => array(),
'inactive' => array(),
);
- foreach ($language_switcher->div->ul->li as $link) {
+ foreach ($language_switcher->ul->li as $link) {
$classes = explode(" ", (string) $link['class']);
list($language) = array_intersect($classes, array('en', 'fr'));
if (in_array('active', $classes)) {
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.209
diff -u -p -r1.209 menu.module
--- modules/menu/menu.module 13 Oct 2009 01:24:07 -0000 1.209
+++ modules/menu/menu.module 16 Oct 2009 01:00:59 -0000
@@ -431,10 +431,27 @@ function menu_block_view($delta = '') {
$menus = menu_get_menus(FALSE);
$data['subject'] = check_plain($menus[$delta]);
$data['content'] = menu_tree($delta);
+ // Attach local tasks for this block.
+ if (!empty($data['content'])) {
+ $data['content']['#attached_links'][] = menu_context_links('admin/structure/menu/manage/' . $delta);
+ }
return $data;
}
/**
+ * Implement hook_block_view_alter().
+ */
+function menu_block_view_alter(&$data, $module, $delta) {
+ // Attach links to system menu blocks.
+ if ($module == 'system' && !empty($data['content'])) {
+ $system_menus = menu_list_system_menus();
+ if (isset($system_menus[$delta])) {
+ $data['content']['#attached_links'][] = menu_context_links('admin/structure/menu/manage/' . $delta);
+ }
+ }
+}
+
+/**
* Implement hook_node_insert().
*/
function menu_node_insert($node) {
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1148
diff -u -p -r1.1148 node.module
--- modules/node/node.module 16 Oct 2009 03:21:23 -0000 1.1148
+++ modules/node/node.module 16 Oct 2009 03:35:51 -0000
@@ -1111,6 +1111,9 @@ function node_build($node, $build_mode =
'#node' => $node,
'#build_mode' => $build_mode,
);
+ // Attach local tasks for this node.
+ $build['#attached_links'][] = menu_context_links('node/' . $node->nid);
+
return $build;
}
Index: modules/node/node.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.tpl.php,v
retrieving revision 1.24
diff -u -p -r1.24 node.tpl.php
--- modules/node/node.tpl.php 11 Oct 2009 06:43:33 -0000 1.24
+++ modules/node/node.tpl.php 13 Oct 2009 20:11:26 -0000
@@ -18,6 +18,8 @@
* - $node_url: Direct url of the current node.
* - $terms: the themed list of taxonomy term links output from theme_links().
* - $display_submitted: whether submission information should be displayed.
+ * - $attached_links: An array of links that are attached to the node on the
+ * page. Use render($attached_links) to print them all.
* - $classes: String of classes that can be used to style contextually through
* CSS. It can be manipulated through the variable $classes_array from
* preprocess functions. The default values can be one or more of the following:
@@ -74,6 +76,10 @@
+
+
+
+
>
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.817
diff -u -p -r1.817 system.module
--- modules/system/system.module 16 Oct 2009 03:01:54 -0000 1.817
+++ modules/system/system.module 16 Oct 2009 04:53:34 -0000
@@ -255,6 +255,10 @@ function system_permission() {
'title' => t('Block IP addresses'),
'description' => t('Block IP addresses from accessing your site.'),
),
+ 'view contextual links' => array(
+ 'title' => t('View contextual links'),
+ 'description' => t('Access a global "edit mode" which displays contextual links associated with items on the page.'),
+ ),
);
}
@@ -3482,3 +3486,101 @@ function system_archiver_info() {
function theme_confirm_form($variables) {
return drupal_render_children($variables['form']);
}
+
+/**
+ * @defgroup attached_links Attached link handling
+ * @{
+ */
+
+/**
+ * Template variable preprocessor for attached links.
+ */
+function system_preprocess(&$variables, $hook) {
+ static $hooks;
+
+ if (!isset($hooks)) {
+ $hooks = theme_get_registry();
+ }
+
+ // Initialize attached links.
+ $variables['attached_links'] = array();
+
+ // Determine the primary theme function argument.
+ $keys = array_keys($hooks[$hook]['arguments']);
+ $key = $keys[0];
+ if (isset($variables[$key])) {
+ $element = $variables[$key];
+ }
+
+ if (isset($element) && is_array($element) && isset($element['#attached_links'])) {
+ // Transform contextual links into parameters suitable for theme_link().
+ $items = call_user_func_array('array_merge_recursive', $element['#attached_links']);
+ $links = array();
+ foreach ($items as $item) {
+ $links[$item['#link_type']] = array(
+ 'title' => $item['#link']['title'],
+ 'href' => $item['#link']['href'],
+ 'options' => (isset($item['#link']['localized_options']) ? $item['#link']['localized_options'] : array()),
+ );
+ }
+ if ($links) {
+ // We can use #attached here, because the page itself does not use
+ // attached links.
+ $variables['attached_links'] = array(
+ '#theme' => 'links',
+ '#links' => $links,
+ '#attributes' => array('class' => array('attached-links')),
+ '#attached' => array(
+ 'js' => array('misc/attached_links.js'),
+ 'css' => array('misc/attached_links.css'),
+ ),
+ );
+ $variables['classes_array'][] = 'attached-links-region';
+ }
+ // Add CSS classes that associate the element with the links
+ // that are attached to it.
+ #$attached_link_classes = system_generate_attached_link_classes($element['#attached_links']);
+ if (!empty($attached_link_classes)) {
+ #$variables['classes_array'] = array_merge($variables['classes_array'], $attached_link_classes);
+ }
+ }
+}
+
+/**
+ * Generate a list of relevant CSS classes from an array of attached links.
+ *
+ * The array of attached links is searched recursively for all items of type
+ * 'attached_links', and the 'href' parameter of each link is used to generate
+ * an appropriate CSS class.
+ *
+ * @param $attached_links
+ * An associative array containing the links that will be searched. Usually,
+ * this will be the '#attached_links' property of a page element.
+ * @return
+ * An array of CSS classes generated from the attached links.
+ *
+ * @see system_pre_render_attached_links()
+ */
+function system_generate_attached_link_classes($attached_links) {
+ $classes = array();
+ // If the array itself contains attached links, generate classes from them.
+ if (isset($attached_links['#type']) && $attached_links['#type'] == 'attached_links') {
+ if (isset($attached_links['#links'])) {
+ foreach ($attached_links['#links'] as $link) {
+ $classes[] = drupal_html_class('attached-links-region-for-' . $link['href']);
+ }
+ }
+ }
+ // Otherwise, recursively search the element's children for links.
+ else {
+ foreach (element_children($attached_links) as $group) {
+ $classes = array_merge($classes, system_generate_attached_link_classes($attached_links[$group]));
+ }
+ }
+ return $classes;
+}
+
+/**
+ * @} End of "defgroup module_group".
+ */
+
Index: themes/garland/block.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/block.tpl.php,v
retrieving revision 1.9
diff -u -p -r1.9 block.tpl.php
--- themes/garland/block.tpl.php 11 Sep 2009 06:48:03 -0000 1.9
+++ themes/garland/block.tpl.php 10 Oct 2009 17:39:51 -0000
@@ -3,6 +3,10 @@
?>
>
+
+
+
+
subject)): ?>
>subject ?>
Index: themes/garland/comment.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/comment.tpl.php,v
retrieving revision 1.17
diff -u -p -r1.17 comment.tpl.php
--- themes/garland/comment.tpl.php 10 Oct 2009 13:37:11 -0000 1.17
+++ themes/garland/comment.tpl.php 16 Oct 2009 04:48:54 -0000
@@ -5,6 +5,10 @@
+
+
+
+
—
Index: themes/garland/node.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/node.tpl.php,v
retrieving revision 1.17
diff -u -p -r1.17 node.tpl.php
--- themes/garland/node.tpl.php 11 Oct 2009 03:07:21 -0000 1.17
+++ themes/garland/node.tpl.php 11 Oct 2009 05:05:50 -0000
@@ -3,6 +3,10 @@
?>
>
+
+
+
+
Index: themes/garland/style.css
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/style.css,v
retrieving revision 1.65
diff -u -p -r1.65 style.css
--- themes/garland/style.css 5 Oct 2009 02:43:01 -0000 1.65
+++ themes/garland/style.css 16 Oct 2009 03:14:09 -0000
@@ -650,8 +650,8 @@ ul.secondary li.active a {
*/
.node {
border-bottom: 1px solid #e9eff3;
- margin: 0 -26px 1.5em;
- padding: 1.5em 26px;
+ margin: 0 -16px 1.5em;
+ padding: 1.5em 16px;
}
ul.links li, ul.inline li {
@@ -809,6 +809,19 @@ tr.even td.menu-disabled {
}
/**
+ * Styling for attached links.
+ */
+.attached-links-region-active {
+ outline: #027AC6 dashed 2px;
+}
+
+/* Override the styling applied to normal block lists. */
+.block ul.attached-links {
+ margin: 0;
+ padding: 0;
+}
+
+/**
* Collapsible fieldsets
*/
fieldset {