? .DS_Store
? 492834_2.patch
? awesome_tar.patch
? foo.php
? head.db
? hide_operations.patch
? includes/.DS_Store
? misc/.DS_Store
? misc/machine-name.js
? modules/.DS_Store
? modules/system/drupal-6.12.tar-6.gz
? modules/system/system.tar.inc
? modules/user/.DS_Store
? sites/default/files
? sites/default/settings.php
Index: misc/operations.js
===================================================================
RCS file: misc/operations.js
diff -N misc/operations.js
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ misc/operations.js	27 Jun 2009 19:11:56 -0000
@@ -0,0 +1,20 @@
+// $Id$
+(function ($) {
+
+Drupal.behaviors.operations = {
+  attach: function (context, settings) {
+    var width = 0;
+    $('table:not(.operations-processed) td.operations', context).each(function () {
+      if ($(this).width() > width) {
+        width = $(this).width();
+      }
+      $(this).wrapInner('<div class="js-hide operations-wrapper"></div>');
+      var wrapper = $(this).find('.operations-wrapper');
+      $(this).parent().hover(function () { wrapper.show(); }, function () { wrapper.hide(); });
+    }).each(function () {
+      $(this).width(width);
+    }).addClass('operations-processed');
+  }
+};
+
+})(jQuery);
Index: modules/block/block-admin-display-form.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block-admin-display-form.tpl.php,v
retrieving revision 1.6
diff -u -p -r1.6 block-admin-display-form.tpl.php
--- modules/block/block-admin-display-form.tpl.php	15 May 2008 21:30:02 -0000	1.6
+++ modules/block/block-admin-display-form.tpl.php	27 Jun 2009 19:11:57 -0000
@@ -24,7 +24,8 @@
  * @see theme_block_admin_display()
  */
 ?>
-<?php
+<?php  
+  drupal_add_js('misc/operations.js');
   // Add table javascript.
   drupal_add_js('misc/tableheader.js');
   drupal_add_js(drupal_get_path('module', 'block') . '/block.js');
@@ -39,7 +40,7 @@
       <th><?php print t('Block'); ?></th>
       <th><?php print t('Region'); ?></th>
       <th><?php print t('Weight'); ?></th>
-      <th colspan="2"><?php print t('Operations'); ?></th>
+      <th></th>
     </tr>
   </thead>
   <tbody>
@@ -56,8 +57,7 @@
         <td class="block"><?php print $data->block_title; ?></td>
         <td><?php print $data->region_select; ?></td>
         <td><?php print $data->weight_select; ?></td>
-        <td><?php print $data->configure_link; ?></td>
-        <td><?php print $data->delete_link; ?></td>
+        <td class="operations"><?php print $data->configure_link; ?> <?php print $data->delete_link; ?></td>
       </tr>
       <?php $row++; ?>
       <?php endforeach; ?>
Index: modules/filter/filter.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.admin.inc,v
retrieving revision 1.30
diff -u -p -r1.30 filter.admin.inc
--- modules/filter/filter.admin.inc	12 Jun 2009 08:39:37 -0000	1.30
+++ modules/filter/filter.admin.inc	27 Jun 2009 19:11:57 -0000
@@ -65,6 +65,7 @@ function filter_admin_overview_submit($f
  * @ingroup themeable
  */
 function theme_filter_admin_overview($form) {
+  drupal_add_js('misc/operations.js');
   $rows = array();
   foreach ($form as $id => $element) {
     if (isset($element['roles']) && is_array($element['roles'])) {
@@ -75,15 +76,17 @@ function theme_filter_admin_overview($fo
           drupal_render($element['roles']),
           drupal_render($form['default'][$id]),
           drupal_render($element['weight']),
-          drupal_render($element['configure']),
-          drupal_render($element['delete']),
+          array(
+            'data' => drupal_render($element['configure']) . ' ' . drupal_render($element['delete']),
+            'class' => 'operations',
+          ),
         ),
         'class' => 'draggable',
       );
       unset($form[$id]);
     }
   }
-  $header = array(t('Name'), t('Roles'), t('Default'), t('Weight'), array('data' => t('Operations'), 'colspan' => 2));
+  $header = array(t('Name'), t('Roles'), t('Default'), t('Weight'), '');
   $output = theme('table', $header, $rows, array('id' => 'text-format-order'));
   $output .= drupal_render_children($form);
 
Index: modules/menu/menu.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v
retrieving revision 1.50
diff -u -p -r1.50 menu.admin.inc
--- modules/menu/menu.admin.inc	27 Jun 2009 18:01:59 -0000	1.50
+++ modules/menu/menu.admin.inc	27 Jun 2009 19:11:57 -0000
@@ -10,14 +10,16 @@
  * Menu callback which shows an overview page of all the custom menus and their descriptions.
  */
 function menu_overview_page() {
+  drupal_add_js('misc/operations.js');
   $result = db_query("SELECT * FROM {menu_custom} ORDER BY title", array(), array('fetch' => PDO::FETCH_ASSOC));
-  $header = array(t('Title'), array('data' => t('Operations'), 'colspan' => '3'));
+  $header = array(t('Title'), '');
   $rows = array();
   foreach ($result as $menu) {
     $row = array(theme('menu_admin_overview', $menu['title'], $menu['menu_name'], $menu['description']));
-    $row[] = array('data' => l(t('list links'), 'admin/build/menu-customize/' . $menu['menu_name']));
-    $row[] = array('data' => l(t('edit menu'), 'admin/build/menu-customize/' . $menu['menu_name'] . '/edit'));
-    $row[] = array('data' => l(t('add link'), 'admin/build/menu-customize/' . $menu['menu_name'] . '/add'));
+    $row[] = array('data' => l(t('list links'), 'admin/build/menu-customize/' . $menu['menu_name']) .
+      ' ' . l(t('edit menu'), 'admin/build/menu-customize/' . $menu['menu_name'] . '/edit') .
+      ' ' . l(t('add link'), 'admin/build/menu-customize/' . $menu['menu_name'] . '/add'),
+      'class' => 'operations');
     $rows[] = $row;
   }
 
@@ -118,10 +120,7 @@ function _menu_overview_tree_form($tree)
         $operations['reset'] = l(t('reset'), 'admin/build/menu/item/' . $item['mlid'] . '/reset');
       }
 
-      $form[$mlid]['operations'] = array();
-      foreach ($operations as $op => $value) {
-        $form[$mlid]['operations'][$op] = array('#markup' => $value);
-      }
+      $form[$mlid]['operations'] = array('#markup' => implode(' ', $operations));
     }
 
     if ($data['below']) {
@@ -183,6 +182,7 @@ function menu_overview_form_submit($form
  * @ingroup themeable
  */
 function theme_menu_overview_form($form) {
+  drupal_add_js('misc/operations.js');
   drupal_add_tabledrag('menu-overview', 'match', 'parent', 'menu-plid', 'menu-plid', 'menu-mlid', TRUE, MENU_MAX_DEPTH - 1);
   drupal_add_tabledrag('menu-overview', 'order', 'sibling', 'menu-weight');
 
@@ -191,22 +191,13 @@ function theme_menu_overview_form($form)
     array('data' => t('Enabled'), 'class' => 'checkbox'),
     array('data' => t('Show as expanded'), 'class' => 'checkbox'),
     t('Weight'),
-    array('data' => t('Operations'), 'colspan' => '3'),
+    '',
   );
 
   $rows = array();
   foreach (element_children($form) as $mlid) {
     if (isset($form[$mlid]['hidden'])) {
       $element = &$form[$mlid];
-      // Build a list of operations.
-      $operations = array();
-      foreach (element_children($element['operations']) as $op) {
-        $operations[] = drupal_render($element['operations'][$op]);
-      }
-      while (count($operations) < 2) {
-        $operations[] = '';
-      }
-
       // Add special classes to be used for tabledrag.js.
       $element['plid']['#attributes']['class'] = 'menu-plid';
       $element['mlid']['#attributes']['class'] = 'menu-mlid';
@@ -220,7 +211,7 @@ function theme_menu_overview_form($form)
       $row[] = array('data' => drupal_render($element['hidden']), 'class' => 'checkbox');
       $row[] = array('data' => drupal_render($element['expanded']), 'class' => 'checkbox');
       $row[] = drupal_render($element['weight']) . drupal_render($element['plid']) . drupal_render($element['mlid']);
-      $row = array_merge($row, $operations);
+      $row[] = array('data' => drupal_render($element['operations']), 'class' => 'operations');
 
       $row = array_merge(array('data' => $row), $element['#attributes']);
       $row['class'] = !empty($row['class']) ? $row['class'] . ' draggable' : 'draggable';
Index: modules/node/content_types.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v
retrieving revision 1.76
diff -u -p -r1.76 content_types.inc
--- modules/node/content_types.inc	15 Jun 2009 10:10:47 -0000	1.76
+++ modules/node/content_types.inc	27 Jun 2009 19:11:57 -0000
@@ -10,9 +10,10 @@
  * Displays the content type admin overview page.
  */
 function node_overview_types() {
+  drupal_add_js('misc/operations.js');
   $types = node_type_get_types();
   $names = node_type_get_names();
-  $header = array(t('Name'), array('data' => t('Operations'), 'colspan' => '2'));
+  $header = array(t('Name'), '');
   $rows = array();
 
   foreach ($names as $key => $name) {
@@ -21,15 +22,13 @@ function node_overview_types() {
       $type_url_str = str_replace('_', '-', $type->type);
       $row = array(theme('node_admin_overview', $name, $type));
       // Set the edit column.
-      $row[] = array('data' => l(t('edit'), 'admin/build/node-type/' . $type_url_str));
+      $operations = l(t('edit'), 'admin/build/node-type/' . $type_url_str);
 
       // Set the delete column.
       if ($type->custom) {
-        $row[] = array('data' => l(t('delete'), 'admin/build/node-type/' . $type_url_str . '/delete'));
-      }
-      else {
-        $row[] = array('data' => '');
+        $operations .= ' ' . l(t('delete'), 'admin/build/node-type/' . $type_url_str . '/delete');
       }
+      $row[] = array('data' => $operations, 'class' => 'operations');
       $rows[] = $row;
     }
   }
Index: modules/node/node.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v
retrieving revision 1.54
diff -u -p -r1.54 node.admin.inc
--- modules/node/node.admin.inc	5 Jun 2009 05:28:28 -0000	1.54
+++ modules/node/node.admin.inc	27 Jun 2009 19:11:57 -0000
@@ -452,7 +452,7 @@ function node_admin_nodes() {
   if ($multilanguage) {
     $header[] = array('data' => t('Language'), 'field' => 'n.language');
   }
-  $header[] = array('data' => t('Operations'));
+  $header[] = '';
 
   $form['header'] = array(
    '#type' => 'value',
@@ -561,6 +561,7 @@ function node_admin_nodes_submit($form, 
  * @ingroup themeable
  */
 function theme_node_admin_nodes($form) {
+  drupal_add_js('misc/operations.js');
   $output = '';
   $output .= drupal_render($form['options']);
 
@@ -580,7 +581,7 @@ function theme_node_admin_nodes($form) {
       if (isset($form['language'])) {
         $row[] = drupal_render($form['language'][$key]);
       }
-      $row[] = drupal_render($form['operations'][$key]);
+      $row[] = array('data' => drupal_render($form['operations'][$key]), 'class' => 'operations');
       $rows[] = $row;
     }
   }
Index: modules/path/path.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/path/path.admin.inc,v
retrieving revision 1.23
diff -u -p -r1.23 path.admin.inc
--- modules/path/path.admin.inc	11 Jun 2009 04:59:26 -0000	1.23
+++ modules/path/path.admin.inc	27 Jun 2009 19:11:57 -0000
@@ -12,6 +12,7 @@
  * and return the list of matching URL aliases.
  */
 function path_admin_overview($keys = NULL) {
+  drupal_add_js('misc/operations.js');
   // Add the filter form above the overview table.
   $output = drupal_get_form('path_admin_filter_form', $keys);
   // Enable language column if locale is enabled or if we have any alias with language
@@ -21,7 +22,7 @@ function path_admin_overview($keys = NUL
   $header = array(
     array('data' => t('Alias'), 'field' => 'dst', 'sort' => 'asc'),
     array('data' => t('System'), 'field' => 'src'),
-    array('data' => t('Operations'), 'colspan' => '2')
+    '',
   );
   if ($multilanguage) {
     array_splice($header, 2, 0, array(array('data' => t('Language'), 'field' => 'language')));
@@ -48,8 +49,11 @@ function path_admin_overview($keys = NUL
       'data' => array(
         l($data->dst, $data->src),
         l($data->src, $data->src, array('alias' => TRUE)),
-        l(t('edit'), "admin/build/path/edit/$data->pid", array('query' => $destination)),
-        l(t('delete'), "admin/build/path/delete/$data->pid", array('query' => $destination)),
+        array(
+          'data' => l(t('edit'), "admin/build/path/edit/$data->pid", array('query' => $destination)) .
+            ' ' . l(t('delete'), "admin/build/path/delete/$data->pid", array('query' => $destination)),
+          'class' => 'operations'
+        ),
       ),
     );
     if ($multilanguage) {
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.158
diff -u -p -r1.158 system.admin.inc
--- modules/system/system.admin.inc	19 Jun 2009 20:35:05 -0000	1.158
+++ modules/system/system.admin.inc	27 Jun 2009 19:11:57 -0000
@@ -1085,14 +1085,18 @@ function system_modules_uninstall_submit
  * Menu callback. Display blocked IP addresses.
  */
 function system_ip_blocking() {
+  drupal_add_js('misc/operations.js'); 
   $output = '';
   $rows = array();
-  $header = array(t('IP address'), t('Operations'));
+  $header = array(t('IP address'), '');
   $result = db_query('SELECT * FROM {blocked_ips}');
   foreach ($result as $ip) {
     $rows[] = array(
       $ip->ip,
-      l(t('delete'), "admin/settings/ip-blocking/delete/$ip->iid"),
+      array(
+        'data' => l(t('delete'), "admin/settings/ip-blocking/delete/$ip->iid"),
+        'class' => 'operations',
+      ),
     );
   }
 
@@ -2170,6 +2174,7 @@ function theme_system_theme_select_form(
  * @ingroup themeable
  */
 function theme_system_themes_form($form) {
+  drupal_add_js('misc/operations.js');
   foreach (element_children($form) as $key) {
     // Only look for themes
     if (!isset($form[$key]['info'])) {
@@ -2210,12 +2215,12 @@ function theme_system_themes_form($form)
     $row[] = array('data' => $status, 'align' => 'center');
     if ($form['theme_default']) {
       $row[] = array('data' => drupal_render($form['theme_default'][$key]), 'align' => 'center');
-      $row[] = array('data' => drupal_render($form[$key]['operations']), 'align' => 'center');
+      $row[] = array('data' => drupal_render($form[$key]['operations']), 'class' => 'operations');
     }
     $rows[] = $row;
   }
 
-  $header = array(t('Screenshot'), t('Name'), t('Version'), t('Enabled'), t('Default'), t('Operations'));
+  $header = array(t('Screenshot'), t('Name'), t('Version'), t('Enabled'), t('Default'), '');
   $output = theme('table', $header, $rows);
   $output .= drupal_render_children($form);
   return $output;
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.715
diff -u -p -r1.715 system.module
--- modules/system/system.module	23 Jun 2009 12:11:19 -0000	1.715
+++ modules/system/system.module	27 Jun 2009 19:11:57 -0000
@@ -1874,6 +1874,7 @@ function system_action_info() {
  * Menu callback. Display an overview of available and configured actions.
  */
 function system_actions_manage() {
+  drupal_add_js('misc/operations.js');
   actions_synchronize();
   $actions = actions_list();
   $actions_map = actions_actions_map($actions);
@@ -1894,7 +1895,7 @@ function system_actions_manage() {
   $header = array(
     array('data' => t('Action type'), 'field' => 'type'),
     array('data' => t('Description'), 'field' => 'description'),
-    array('data' => $instances_present ? t('Operations') : '', 'colspan' => '2')
+    '',
   );
   $query = db_select('actions')->extend('PagerDefault')->extend('TableSort');
   $result = $query
@@ -1907,8 +1908,11 @@ function system_actions_manage() {
     $row[] = array(
       array('data' => $action->type),
       array('data' => $action->description),
-      array('data' => $action->parameters ? l(t('configure'), "admin/settings/actions/configure/$action->aid") : ''),
-      array('data' => $action->parameters ? l(t('delete'), "admin/settings/actions/delete/$action->aid") : '')
+      array(
+        'data' => $action->parameters ? l(t('configure'), "admin/settings/actions/configure/$action->aid") .
+          ' ' . l(t('delete'), "admin/settings/actions/delete/$action->aid") : '',
+        'class' => 'operations',
+      ),
     );
   }
 
Index: modules/taxonomy/taxonomy.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.admin.inc,v
retrieving revision 1.55
diff -u -p -r1.55 taxonomy.admin.inc
--- modules/taxonomy/taxonomy.admin.inc	20 Jun 2009 18:32:04 -0000	1.55
+++ modules/taxonomy/taxonomy.admin.inc	27 Jun 2009 19:11:57 -0000
@@ -64,6 +64,7 @@ function taxonomy_overview_vocabularies_
  */
 function theme_taxonomy_overview_vocabularies($form) {
   $rows = array();
+  drupal_add_js('misc/operations.js');
 
   foreach (element_children($form) as $key) {
     if (isset($form[$key]['name'])) {
@@ -76,9 +77,7 @@ function theme_taxonomy_overview_vocabul
         $vocabulary['weight']['#attributes']['class'] = 'vocabulary-weight';
         $row[] = drupal_render($vocabulary['weight']);
       }
-      $row[] = drupal_render($vocabulary['edit']);
-      $row[] = drupal_render($vocabulary['list']);
-      $row[] = drupal_render($vocabulary['add']);
+      $row[] = array('data' => drupal_render($vocabulary['edit']) . ' ' . drupal_render($vocabulary['list']) . ' ' . drupal_render($vocabulary['add']), 'class' => 'operations');
       $rows[] = array('data' => $row, 'class' => 'draggable');
     }
   }
@@ -91,7 +90,7 @@ function theme_taxonomy_overview_vocabul
     $header[] = t('Weight');
     drupal_add_tabledrag('taxonomy', 'order', 'sibling', 'vocabulary-weight');
   }
-  $header[] = array('data' => t('Operations'), 'colspan' => '3');
+  $header[] = '';
   return theme('table', $header, $rows, array('id' => 'taxonomy')) . drupal_render_children($form);
 }
 
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.58
diff -u -p -r1.58 user.admin.inc
--- modules/user/user.admin.inc	15 Jun 2009 09:49:58 -0000	1.58
+++ modules/user/user.admin.inc	27 Jun 2009 19:11:57 -0000
@@ -126,7 +126,6 @@ function user_filter_form_submit($form, 
  * @see user_admin_account_submit()
  */
 function user_admin_account() {
-
   $header = array(
     array(),
     array('data' => t('Username'), 'field' => 'u.name'),
@@ -134,7 +133,7 @@ function user_admin_account() {
     t('Roles'),
     array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc'),
     array('data' => t('Last access'), 'field' => 'u.access'),
-    t('Operations')
+    ''
   );
 
   $query = db_select('users', 'u');
@@ -816,6 +815,7 @@ function user_admin_role_submit($form, &
  * @ingroup themeable
  */
 function theme_user_admin_account($form) {
+  drupal_add_js('misc/operations.js');
   // Overview table:
   $header = array(
     theme('table_select_header_cell'),
@@ -824,7 +824,7 @@ function theme_user_admin_account($form)
     t('Roles'),
     array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc'),
     array('data' => t('Last access'), 'field' => 'u.access'),
-    t('Operations')
+    '',
   );
 
   $output = drupal_render($form['options']);
@@ -837,7 +837,7 @@ function theme_user_admin_account($form)
         drupal_render($form['roles'][$key]),
         drupal_render($form['member_for'][$key]),
         drupal_render($form['last_access'][$key]),
-        drupal_render($form['operations'][$key]),
+        array('data' => drupal_render($form['operations'][$key]), 'class' => 'operations'),
       );
     }
   }
@@ -861,14 +861,27 @@ function theme_user_admin_account($form)
  * @ingroup themeable
  */
 function theme_user_admin_new_role($form) {
+  drupal_add_js('misc/operations.js');
   $header = array(t('Name'), array('data' => t('Operations'), 'colspan' => 2));
   foreach (user_roles() as $rid => $name) {
     $edit_permissions = l(t('edit permissions'), 'admin/user/permissions/' . $rid);
     if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
-      $rows[] = array($name, l(t('edit role'), 'admin/user/roles/edit/' . $rid), $edit_permissions);
+      $rows[] = array(
+        $name,
+        array(
+          'data' => l(t('edit role'), 'admin/user/roles/edit/' . $rid) . ' ' . $edit_permissions,
+          'class' => 'operations',
+        ),
+      );
     }
     else {
-      $rows[] = array($name, t('locked'), $edit_permissions);
+      $rows[] = array(
+        $name,
+        array(
+          'data' => t('locked') . ' ' . $edit_permissions,
+          'class' => 'operations'
+        ),
+      );
     }
   }
   $rows[] = array(drupal_render($form['name']), array('data' => drupal_render($form['submit']), 'colspan' => 2));
