From 0d84b9184948372469480fa32daab66d37c95df6 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Sat, 27 Sep 2008 20:23:30 +0000
Subject: [PATCH] - Patch #296197 by Gabor: made the language order use
 drag-n-drop instead of weight drop-down menus.

---
 CHANGELOG.txt       |  1 +
 includes/locale.inc | 28 +++++++++++++++++-----------
 2 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index acc4c3a93923..b2cf7387fe45 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -15,6 +15,7 @@ Drupal 7.0, xxxx-xx-xx (development version)
       hashing and authentication schemes.
 - Usability:
     * Implemented drag-and-drop positioning for input format listings.
+    * Implemented drag-and-drop positioning for language listing.
     * Implemented drag-and-drop positioning for poll options.
     * Provided descriptions for user permissions.
     * Removed comment controls for users.
diff --git a/includes/locale.inc b/includes/locale.inc
index 5d1c9e352e93..950a2a36b502 100644
--- a/includes/locale.inc
+++ b/includes/locale.inc
@@ -44,7 +44,8 @@ function locale_languages_overview_form() {
     }
     $form['weight'][$langcode] = array(
       '#type' => 'weight',
-      '#default_value' => $language->weight
+      '#default_value' => $language->weight,
+      '#attributes' => array('class' => 'language-order-weight'),
     );
     $form['name'][$langcode] = array('#markup' => check_plain($language->name));
     $form['native'][$langcode] = array('#markup' => check_plain($language->native));
@@ -79,20 +80,25 @@ function theme_locale_languages_overview_form($form) {
         $form['enabled'][$key]['#attributes']['disabled'] = 'disabled';
       }
       $rows[] = array(
-        array('data' => drupal_render($form['enabled'][$key]), 'align' => 'center'),
-        check_plain($key),
-        '<strong>' . drupal_render($form['name'][$key]) . '</strong>',
-        drupal_render($form['native'][$key]),
-        drupal_render($form['direction'][$key]),
-        drupal_render($form['site_default'][$key]),
-        drupal_render($form['weight'][$key]),
-        l(t('edit'), 'admin/settings/language/edit/' . $key) . (($key != 'en' && $key != $default->language) ? ' ' . l(t('delete'), 'admin/settings/language/delete/' . $key) : '')
+        'data' => array(
+          '<strong>' . drupal_render($form['name'][$key]) . '</strong>',
+          drupal_render($form['native'][$key]),
+          check_plain($key),
+          drupal_render($form['direction'][$key]),
+          array('data' => drupal_render($form['enabled'][$key]), 'align' => 'center'),
+          drupal_render($form['site_default'][$key]),
+          drupal_render($form['weight'][$key]),
+          l(t('edit'), 'admin/settings/language/edit/' . $key) . (($key != 'en' && $key != $default->language) ? ' ' . l(t('delete'), 'admin/settings/language/delete/' . $key) : '')
+        ),
+        'class' => 'draggable'
       );
     }
   }
-  $header = array(array('data' => t('Enabled')), array('data' => t('Code')), array('data' => t('English name')), array('data' => t('Native name')), array('data' => t('Direction')), array('data' => t('Default')), array('data' => t('Weight')), array('data' => t('Operations')));
-  $output = theme('table', $header, $rows);
+  $header = array(array('data' => t('English name')), array('data' => t('Native name')), array('data' => t('Code')), array('data' => t('Direction')), array('data' => t('Enabled')), array('data' => t('Default')), array('data' => t('Weight')), array('data' => t('Operations')));
+  $output = theme('table', $header, $rows, array('id' => 'language-order'));
   $output .= drupal_render($form);
+  
+  drupal_add_tabledrag('language-order', 'order', 'sibling', 'language-order-weight');
 
   return $output;
 }
-- 
GitLab