Update of /cvs/scoop/scoop/lib/Scoop/Admin
In directory sodium.sabren.com:/tmp/cvs-serv14523/lib/Scoop/Admin

Modified Files:
	Prefs.pm 
Log Message:
Fixes for userprefs (and comment post form) and some patented rusty 
"wouldn't it be cool if" features for userprefs.

-janra



Index: Prefs.pm
===================================================================
RCS file: /cvs/scoop/scoop/lib/Scoop/Admin/Prefs.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Prefs.pm	4 Aug 2004 21:49:48 -0000	1.1
--- Prefs.pm	17 Aug 2004 19:03:41 -0000	1.2
***************
*** 67,71 ****
  	$keys->{pref_visible}	= $params->{visible} ? ' CHECKED' : '';
  	$keys->{pref_enabled}	= $params->{enabled} ? ' CHECKED' : '';
! 	$keys->{pref_required}	= $params->{required} ? ' CHECKED' : '';
  
  	# and finally the selectboxes
--- 67,75 ----
  	$keys->{pref_visible}	= $params->{visible} ? ' CHECKED' : '';
  	$keys->{pref_enabled}	= $params->{enabled} ? ' CHECKED' : '';
! 
! 	# radio buttons
! 	$keys->{pref_signup_normal} = ( $params->{signup} eq 'normal' ) ? ' CHECKED' : '';
! 	$keys->{pref_signup_signup} = ( $params->{signup} eq 'signup' ) ? ' CHECKED' : '';
! 	$keys->{pref_signup_required} = ( $params->{signup} eq 'required' ) ? ' CHECKED' : '';
  
  	# and finally the selectboxes
***************
*** 93,97 ****
  
  	my $params;
! 	foreach my $item (qw(prefname title description visible html perm_view perm_edit var req_tu default_value length regex page field display_order template display_fmt enabled required)) {
  		$params->{$item} = $S->cgi->param($item);
  	}
--- 97,101 ----
  
  	my $params;
! 	foreach my $item (qw(prefname title description visible html perm_view perm_edit var req_tu default_value length regex page field display_order template display_fmt enabled signup)) {
  		$params->{$item} = $S->cgi->param($item);
  	}
***************
*** 107,110 ****
--- 111,117 ----
  		$set =~ s/, $//;
  
+ 		# mangle the display_order
+ 		$S->_pref_display_order($params->{prefname},$params->{display_order},$params->{page});
+ 
  		my $q_pref = $S->dbh->quote($pref);
  		my ($rv, $sth) = $S->db_update({
***************
*** 316,319 ****
--- 323,351 ----
  
  	return $values;
+ }
+ 
+ sub _pref_display_order {
+ 	my $S = shift;
+ 	my $prefname = shift;
+ 	my $order = shift;
+ 	my $page = shift;
+ 
+ 	# check to see if there's a pref using the display order value we're saving
+ 	my ($rv,$sth) = $S->db_select({
+ 		DEBUG => $DEBUG,
+ 		WHAT => '*',
+ 		FROM => 'pref_items',
+ 		WHERE => qq|prefname!=$prefname AND display_order=$order AND page=$page|
+ 	});
+ 	return if ( $rv == 0 );
+ 
+ 	# ok, something on the same page has the same display order and it isn't the current pref
+ 	($rv,$sth) = $S->db_update({
+ 		DEBUG => $DEBUG,
+ 		WHAT => 'pref_items',
+ 		SET => qq|display_order=display_order+1|,
+ 		WHERE => qq|page=$page AND display_order>=$order|
+ 	});
+ 	return;
  }