Index: decisions.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/decisions/decisions.install,v
retrieving revision 1.2
diff -u -F^f -r1.2 decisions.install
--- decisions.install	21 Aug 2006 09:37:07 -0000	1.2
+++ decisions.install	23 Aug 2006 20:33:38 -0000
@@ -9,7 +9,8 @@ function decisions_install() {
           `nid` int(10) NOT NULL,
           `quorum` int(10) NOT NULL,
           `mode` varchar(32) NOT NULL,
-					`uselist` tinyint default '1',
+					`uselist` tinyint,
+					`status` tinyint,
           PRIMARY KEY  (`nid`)
       ) ENGINE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 */");
 
@@ -32,12 +33,21 @@ function decisions_install() {
 }
 
 
-function decions_update_1() {
+function decisions_update_1() {
   switch ($GLOBALS['db_type']) {
     case 'mysql':
     case 'mysqli':
       db_query("ALTER TABLE {decisions} ADD COLUMN uselist TINYINT DEFAULT '1'");
-		break;
+			break;
 	}
 }
 
+
+function decisions_update_2() {
+	switch ($GLOBALS('db_type']) {
+		case 'mysql':
+		case 'mysqli':
+			db_query("ALTER TABLE {decisions} ADD COLUMN status TINYINT DEFAULT '1'");
+			break;
+	}
+}
Index: decisions.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/decisions/decisions.module,v
retrieving revision 1.65
diff -u -F^f -r1.65 decisions.module
--- decisions.module	21 Aug 2006 10:12:17 -0000	1.65
+++ decisions.module	23 Aug 2006 20:33:38 -0000
@@ -97,10 +97,27 @@ function decisions_form($node) {
 
   // to pick a reasonable default, configurable
   $modes = _decisions_mode_list();
-	
+
+	$form['settings'] = array(
+    '#type' => 'fieldset',
+    '#tree' => TRUE,
+    '#title' => t('Settings'),
+    '#collapsible' => TRUE,
+  );
+
+	$active = array(1 => t('Active'), 0 => t('Closed'));
+	$form['settings']['decisionstatus'] = array(
+		'#type' => 'radios',
+		'#title' => t('Decision Status'),
+		'#options' => $active,
+		'#default_value' => (isset($node->decisionstatus)? $node->decisionstatus : 1),
+		'#description' => t('When a decision is closed users may no longer vote on it.'),
+	);
+
+
 	// only show for new decisions (not when editing)
 	if (!(isset($node) && $node->nid)) {
-	  $form['mode'] = array(
+	  $form['settings']['mode'] = array(
 			'#type' => 'select',
 			'#title' => t('Decision mode'),
 			'#required' => TRUE,
@@ -108,7 +125,7 @@ function decisions_form($node) {
 			'#default_value' => variable_get('decisions_default_mode', $modes[0]),
   	);
 
-		$form['uselist'] = array(
+		$form['settings']['uselist'] = array(
 			'#type' => 'radios',
 			'#title' => t('Set the eligible voters upon creation'),
 			'#options' => $enabled,
@@ -270,7 +287,7 @@ function decisions_settings() {
  * This is called upon node edition.
  */
 function decisions_update($node) {
-  db_query("UPDATE {decisions} SET mode = '%s' WHERE nid = %d", $node->mode, $node->nid);
+  db_query("UPDATE {decisions} SET decisionstatus=%d WHERE nid = %d", $node->settings['decisionstatus'], $node->nid);
   # XXX: should update decisions here, when it has some parameters
   # XXX: ... but before doing so, the code below must be factored out in a seperate function for usage in decisions_insert()
   db_query('DELETE FROM {decisions_options} WHERE nid = %d', $node->nid);
@@ -291,7 +308,7 @@ function decisions_update($node) {
  */
 function decisions_insert($node) {
   # just create an empty entry for now
-  db_query("INSERT INTO {decisions} (nid, mode, uselist) VALUES (%d, '%s', %d)", $node->nid, $node->mode, $node->uselist);
+  db_query("INSERT INTO {decisions} (nid, mode, uselist, decisionstatus) VALUES (%d, '%s', %d)", $node->nid, $node->mode, $node->uselist, $node->decisionstatus);
 
   # create the electoral list if desired
 
@@ -329,7 +346,9 @@ function decisions_validate($node) {
 function decisions_view(&$node, $teaser = FALSE, $page = FALSE, $block = FALSE) {
   $node = node_prepare($node, $teaser);
 
-  if (votingapi_get_user_votes('decisions', $node->nid)) { // show results only if the user has voted
+  if (!$node->decisionstatus
+		|| votingapi_get_user_votes('decisions', $node->nid)) {
+		// show results only if the user has voted or decision is closed
     $output .= decisions_view_results(&$node, $teaser, $page, $block);
   }
   else { // otherwise, show the vote form or record vote
@@ -475,7 +494,7 @@ function decisions_vote($node) {
  */
 function decisions_vote_validate($node) {
   $mode = $node->mode;
-  if ( function_exists("decisions_vote_validate_$mode") ) {
+  if (function_exists("decisions_vote_validate_$mode") ) {
     return call_user_func("decisions_vote_validate_$mode", $node);
   }
   return TRUE;
