From aa3f05d8192f4f278c7290a2c43e59d069a69540 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Mon, 3 May 2004 17:38:40 +0000
Subject: [PATCH] - Patch #7096 by bylund: fixed a bug with the node filters at
 the node administration page (administration > content)

---
 modules/node.module      | 18 ++++++++++++------
 modules/node/node.module | 18 ++++++++++++------
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/modules/node.module b/modules/node.module
index 6b827f269afa..1aadba70b5d9 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -685,11 +685,13 @@ function node_admin_nodes() {
     $_SESSION['node_overview_filter'] = 0;
   }
 
-  if (isset($_POST['edit']['filter'])) {
+  $op = $_POST['op'];
+
+  if ($op == t('Filter') && isset($_POST['edit']['filter'])) {
     $_SESSION['node_overview_filter'] = $_POST['edit']['filter'];
   }
 
-  if (isset($_POST['edit']['operation'])) {
+  if ($op == t('Update') && isset($_POST['edit']['operation']) && isset($_POST['edit']['status'])) {
     $operation = $operations[$_POST['edit']['operation']][1];
     foreach ($_POST['edit']['status'] as $nid => $value) {
       if ($value) {
@@ -712,7 +714,7 @@ function node_admin_nodes() {
   }
 
   $form  = form_select(NULL, 'filter', $filter, $options);
-  $form .= form_submit(t('Go'));
+  $form .= form_submit(t('Filter'));
 
   $output .= '<h3>'. t('Filter options') .'</h3>';
   $output .= "<div class=\"container-inline\">$form</div>";
@@ -721,13 +723,18 @@ function node_admin_nodes() {
   ** Render operations form:
   */
 
+  $result = pager_query('SELECT n.*, u.name, u.uid FROM {node} n INNER JOIN {users} u ON n.uid = u.uid '. $filters[$filter][1], 50);
+
+  // Make sure the update controls are disabled if we don't have any rows to select from.
+  $disabled = !db_num_rows($result);
+
   $options = array();
   foreach ($operations as $key => $value) {
     $options[] = $value[0];
   }
 
-  $form = form_select(NULL, 'operation', 0, $options);
-  $form .= form_submit(t('Go'));
+  $form = form_select(NULL, 'operation', 0, $options, NULL, ($disabled ? 'disabled="disabled"' : ''));
+  $form .= form_submit(t('Update'), 'op', ($disabled ? array('disabled' => 'disabled') : array()));
 
   $output .= '<h3>'. t('Update options') .'</h3>';
   $output .= "<div class=\"container-inline\">$form</div>";
@@ -736,7 +743,6 @@ function node_admin_nodes() {
   ** Overview table:
   */
 
-  $result = pager_query('SELECT n.*, u.name, u.uid FROM {node} n INNER JOIN {users} u ON n.uid = u.uid '. $filters[$filter][1], 50);
   $header = array(NULL, t('title'), t('type'), t('author'), t('status'), array('data' => t('operations'), 'colspan' => 2));
 
   while ($node = db_fetch_object($result)) {
diff --git a/modules/node/node.module b/modules/node/node.module
index 6b827f269afa..1aadba70b5d9 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -685,11 +685,13 @@ function node_admin_nodes() {
     $_SESSION['node_overview_filter'] = 0;
   }
 
-  if (isset($_POST['edit']['filter'])) {
+  $op = $_POST['op'];
+
+  if ($op == t('Filter') && isset($_POST['edit']['filter'])) {
     $_SESSION['node_overview_filter'] = $_POST['edit']['filter'];
   }
 
-  if (isset($_POST['edit']['operation'])) {
+  if ($op == t('Update') && isset($_POST['edit']['operation']) && isset($_POST['edit']['status'])) {
     $operation = $operations[$_POST['edit']['operation']][1];
     foreach ($_POST['edit']['status'] as $nid => $value) {
       if ($value) {
@@ -712,7 +714,7 @@ function node_admin_nodes() {
   }
 
   $form  = form_select(NULL, 'filter', $filter, $options);
-  $form .= form_submit(t('Go'));
+  $form .= form_submit(t('Filter'));
 
   $output .= '<h3>'. t('Filter options') .'</h3>';
   $output .= "<div class=\"container-inline\">$form</div>";
@@ -721,13 +723,18 @@ function node_admin_nodes() {
   ** Render operations form:
   */
 
+  $result = pager_query('SELECT n.*, u.name, u.uid FROM {node} n INNER JOIN {users} u ON n.uid = u.uid '. $filters[$filter][1], 50);
+
+  // Make sure the update controls are disabled if we don't have any rows to select from.
+  $disabled = !db_num_rows($result);
+
   $options = array();
   foreach ($operations as $key => $value) {
     $options[] = $value[0];
   }
 
-  $form = form_select(NULL, 'operation', 0, $options);
-  $form .= form_submit(t('Go'));
+  $form = form_select(NULL, 'operation', 0, $options, NULL, ($disabled ? 'disabled="disabled"' : ''));
+  $form .= form_submit(t('Update'), 'op', ($disabled ? array('disabled' => 'disabled') : array()));
 
   $output .= '<h3>'. t('Update options') .'</h3>';
   $output .= "<div class=\"container-inline\">$form</div>";
@@ -736,7 +743,6 @@ function node_admin_nodes() {
   ** Overview table:
   */
 
-  $result = pager_query('SELECT n.*, u.name, u.uid FROM {node} n INNER JOIN {users} u ON n.uid = u.uid '. $filters[$filter][1], 50);
   $header = array(NULL, t('title'), t('type'), t('author'), t('status'), array('data' => t('operations'), 'colspan' => 2));
 
   while ($node = db_fetch_object($result)) {
-- 
GitLab