http://drupal.org/node/684608

Index: modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/views/modules/taxonomy/Attic/views_plugin_argument_default_taxonomy_tid.inc,v
retrieving revision 1.1.6.2
diff -u -r1.1.6.2 views_plugin_argument_default_taxonomy_tid.inc
--- modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc	22 Mar 2010 22:34:18 -0000	1.1.6.2
+++ modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc	30 May 2010 13:29:59 -0000
@@ -6,98 +6,76 @@
  */
 
 class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_default {
-  function option_definition() {
-    $options = parent::option_definition();
+  var $option_name = 'default_argument_taxonomy_tid';
 
-    $options['term_page'] = array('default' => TRUE);
-    $options['node'] = array('default' => FALSE);
-    $options['limit'] = array('default' => FALSE);
-    $options['vids'] = array('default' => NULL);
+  function argument_form(&$form, &$form_state) {
 
-    return $options;
-  }
-
-  function options_form(&$form, &$form_state) {
-    $form['term_page'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Load default argument from term page'),
-      '#default_value' => $this->options['term_page'],
-    );
-    $form['node'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Load default argument from node page, thats good for related taxonomy blocks.'),
-      '#default_value' => $this->options['node'],
+    $options = array(
+      'term_page' => t('Load default argument from term page'),
+      'node' => t('Load default argument from node page, thats good for related taxonomy blocks.'),
     );
-
-    $form['limit'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Limit terms by vocabulary'),
-      '#default_value'=> $this->options['limit'],
-      '#process' => array('expand_checkboxes', 'views_process_dependency'),
-      '#dependency' => array(
-        'edit-options-argument-default-taxonomy-tid-node' => array(1),
-      ),
-    );
-
-    $options = array();
+    
     $vocabularies = taxonomy_get_vocabularies();
     foreach ($vocabularies as $voc) {
-      $options[$voc->vid] = check_plain($voc->name);
+      $options[$voc->vid] = t('Limit terms by vocabulary: '). check_plain($voc->name);
     }
 
-    $form['vids'] = array(
-      '#prefix' => '<div><div id="edit-options-vids">',
+    $form[$this->option_name] = array(
+      '#prefix' => '<div><div id="edit-options-default-argument-taxonomy-tid">',
       '#suffix' => '</div></div>',
       '#type' => 'checkboxes',
-      '#title' => t('Vocabularies'),
+      '#title' => t('Default taxonomy term'),
       '#options' => $options,
-      '#default_value' => $this->options['vids'],
+      '#default_value' => $this->get_argument(TRUE),
       '#process' => array('expand_checkboxes', 'views_process_dependency'),
       '#dependency' => array(
-        //'edit-options-argument-default-taxonomy-tid-limit' => array(1),
-        'edit-options-argument-default-taxonomy-tid-node' => array(1),
+        'radio:options[default_argument_type]' => array($this->id),
       ),
     );
   }
 
-  function options_submit(&$form, &$form_state, &$options) {
-    // Clear checkbox values.
-    $options['vids'] = array_filter($options['vids']);
-  }
-
-  function get_argument() {
+  function get_argument($raw = FALSE) {
     // Load default argument from taxonomy page.
-    if (!empty($this->options['term_page'])) {
-      if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) {
-        return arg(2);
-      }
+    if ($raw) {
+      return array_filter( (array)parent::get_argument() );
     }
-    // Load default argument from node.
-    if (!empty($this->options['node'])) {
-      foreach (range(1, 3) as $i) {
-        $node = menu_get_object('node', $i);
-        if (!empty($node)) {
-          break;
+    if ($argument = $this->argument->options[$this->option_name]) {
+      if (!empty($argument['term_page'])) {
+        if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) {
+          return arg(2);
         }
       }
-      // Just check, if a node could be detected.
-      if ($node) {
-        if (!empty($this->options['limit'])) {
+      // Load default argument from node.
+      if (!empty($argument['node'])) {
+        foreach (range(1, 3) as $i) {
+          $node = menu_get_object('node', $i);
+          if (!empty($node)) {
+            break;
+          }
+        }
+        // Just check, if a node could be detected.
+        if ($node) {
           $tids = array();
-          // filter by vid
-          foreach ($node->taxonomy as $tid => $term) {
-            if (!empty($this->options['vids'][$term->vid])) {
-              $tids[] = $tid;
+          $vids = array();
+          foreach ($argument as $vid) {
+            if ($vid && is_numeric((int)$vid)) {
+              $vids[$vid] = $vid;
             }
           }
-          return implode(",", $tids);
-        }
-        // Return all tids.
-        else {
-          return implode(",", array_keys($node->taxonomy));
+           // filter by vid
+          if (!empty($vids)) {
+            foreach ($node->taxonomy as $tid => $term) {
+              if (!empty($vids[$term->vid])) {
+                $tids[] = $tid;
+              }
+            }
+          }
+          // Return all tids.
+          return implode(",", ($tids? $tids: array_keys($node->taxonomy)));
         }
       }
     }
+    return NULL;
   }
 }
 
