Index: modules/views_node.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/modules/views_node.inc,v retrieving revision 1.24.2.9 diff -u -r1.24.2.9 views_node.inc --- modules/views_node.inc 30 Nov 2006 19:44:20 -0000 1.24.2.9 +++ modules/views_node.inc 1 Dec 2006 17:51:36 -0000 @@ -223,6 +223,14 @@ 'handler' => 'views_handler_filter_body', 'help' => t('This filter allows nodes to be filtered by their body.'), ), + 'nid' => array( + 'name' => t('Node: Include/Exclude Nodes in View'), + 'field' => 'nid', + 'operator' => 'views_handler_operator_or', + 'value' => views_handler_filter_nid_value_form(), + 'value-type' => 'array', + 'help' => t('This filter allows you to limit your view to only apply to some specific nodes. You can limit your view to a specific list of nodes, or you can exclude specific nodes from every being returned.'), + ), ), ); @@ -735,6 +743,28 @@ views_handler_filter_like($op, $filter, $filterinfo, $query); } +/* + * Filter to a specific list of nodes + */ +function views_handler_filter_nid_value_form() { + $nodes = array(); + $sql = 'SELECT n.nid, n.title FROM node n'; + $set = db_query(db_rewrite_sql($sql)); // honor perms + while ($row = db_fetch_object($set)) { + $nodes[$row->nid] = check_plain($row->title); + } + + $form = array ( + '#type' => 'select', + '#multiple' => 'true', + '#options' => $nodes, + '#title' => t('Select Nodes'), + ); + + return $form; + +} + function views_handler_sort_random($action, &$query, $sortinfo, $sort) { switch ($GLOBALS['db_type']) { case 'mysql':