Index: openacs-4/packages/acs-subsite/lib/user-info.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/lib/user-info.tcl,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/acs-subsite/lib/user-info.tcl 17 Sep 2003 12:03:00 -0000 1.3
+++ openacs-4/packages/acs-subsite/lib/user-info.tcl 17 Sep 2003 14:25:54 -0000 1.4
@@ -18,7 +18,7 @@
set action_url "[subsite::get_element -element url]user/basic-info-update"
-acs_user::get -array user -include_bio
+acs_user::get -user_id $user_id -array user -include_bio
set authority_name [auth::authority::get_element -authority_id $user(authority_id) -element pretty_name]
@@ -30,17 +30,19 @@
foreach elm $read_only_elements {
set mode($elm) {display}
}
-set focus {}
+set first_element {}
foreach elm $form_elms {
if { [empty_string_p $mode($elm)] } {
- set focus "user_login.$elm"
+ set first_element $elm
break
}
}
+set focus "user_info.$first_element"
set read_only_notice_p [expr [llength $read_only_elements] > 0]
set edit_mode_p [expr ![empty_string_p [form::get_action user_info]]]
ad_form -name user_info -cancel_url $return_url -action $action_url -mode display -form {
+ {user_id:integer(hidden),optional}
{return_url:text(hidden),optional {value $return_url}}
}
@@ -90,42 +92,50 @@
{label "About yourself"}
{html {rows 8 cols 60}}
{mode $mode(bio)}
+ {display_value {[ad_text_to_html -- $user(bio)]}}
}
} -on_request {
foreach var { first_names last_name email username screen_name url bio } {
set $var $user($var)
}
} -on_submit {
- db_transaction {
+ set user_info(authority_id) $user(authority_id)
+ set user_info(username) $user(username)
+ foreach elm $form_elms {
+ if { [empty_string_p $mode($elm)] } {
+ set user_info($elm) [string trim [set $elm]]
+ }
+ }
- # TODO: Only change editable elements
+ array set result [auth::update_local_account \
+ -authority_id $user(authority_id) \
+ -username $user(username) \
+ -array user_info]
- person::update \
- -person_id $user_id \
- -first_names $first_names \
- -last_name $last_name
-
- party::update \
- -party_id $user_id \
- -email $email \
- -url $url
- acs_user::update \
- -user_id $user_id \
- -screen_name $screen_name
-
- person::update_bio \
- -person_id $user_id \
- -bio $bio
+ # Handle authentication problems
+ switch $result(update_status) {
+ ok {
+ # Continue below
+ }
+ default {
+ # Adding the error to the first element, but only if there are no element messages
+ if { [llength $result(element_messages)] == 0 } {
+ form set_error user_info $first_element $result(update_message)
+ }
+
+ # Element messages
+ foreach { elm_name elm_error } $result(element_messages) {
+ form set_error user_info $elm_name $elm_error
+ }
+ break
+ }
}
} -after_submit {
ad_returnredirect $return_url
ad_script_abort
}
-# TODO: Validate email: [util_email_valid_p $email]
-# TODO: Validate email unique
-
# LARS HACK: Make the URL and email elements real links
if { ![form is_valid user_info] } {
element set_properties user_info email -display_value "[element get_value user_info email]"
@@ -137,3 +147,4 @@
"[element get_value user_info url]"
}
}
+