? modules/translation/.svn
Index: modules/translation/views_handler_filter_node_language.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/modules/translation/views_handler_filter_node_language.inc,v
retrieving revision 1.1
diff -u -p -r1.1 views_handler_filter_node_language.inc
--- modules/translation/views_handler_filter_node_language.inc	30 Sep 2008 22:07:15 -0000	1.1
+++ modules/translation/views_handler_filter_node_language.inc	13 Mar 2009 17:39:25 -0000
@@ -4,11 +4,44 @@
  * Filter by language
  */
 class views_handler_filter_node_language extends views_handler_filter_in_operator {
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    // The type of language list provided. Feature of i18n_language_list.
+    $options['all_languages']['default'] = 'enabled';
+    return $options;
+  }
+
+  function value_form(&$form, &$form_state) {
+    parent::value_form($form, $form_state);
+
+    // Shift the expose button above our options so the form makes more sense.
+    if (!empty($form['expose_button'])) {
+      $form['expose_button']['#weight'] = -2;
+    }
+
+    $form['all_languages'] = array(
+      '#title' => t('Enabled Languages'),
+      '#description' => t('This changes the behavior of the language list used to populate the options for this filter. This should be used carefully.<br />
+        <strong>Enabled</strong> will limit choosing from only the enabled languages.<br />
+        <strong>All</strong> will enable choosing from all installed languages.<br />
+        <em>Note: It will affect the list of languages available on this form.</em>'),
+      '#type' => 'select',
+      '#options' => array(
+        0 => t('Enabled'),
+        1 => t('All'),
+      ),
+      '#weight' => -1, // above in_operator options so its visible.
+      '#default_value' => $this->options['all_languages'],
+    );
+  }
+
   function get_value_options() {
     if (!isset($this->value_options)) {
       $this->value_title = t('Language');
       $languages = array('***CURRENT_LANGUAGE***' => t("Current user's language"), '***DEFAULT_LANGUAGE***' => t("Default site language"), '***NO_LANGUAGE***' => t('No language'));
-      $languages = array_merge($languages, locale_language_list());
+      $languages = array_merge($languages, locale_language_list('name', (bool) $this->options['all_languages']));
       $this->value_options = $languages;
     }
   }
