Index: openacs-4/packages/acs-subsite/www/pvt/home.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/pvt/home.tcl,v
diff -u -r1.8 -r1.9
--- openacs-4/packages/acs-subsite/www/pvt/home.tcl 15 Aug 2003 21:18:12 -0000 1.8
+++ openacs-4/packages/acs-subsite/www/pvt/home.tcl 28 Aug 2003 09:41:42 -0000 1.9
@@ -21,48 +21,89 @@
pvt_home_url:onevalue
}
-set user_id [ad_verify_and_get_user_id]
+ad_maybe_redirect_for_registration
-set subsite_url [subsite::get_element -element url]
-set pvt_home_url [ad_pvt_home]
+set user_id [ad_conn user_id]
-set user_exists_p [db_0or1row pvt_home_user_info {
- select first_names, last_name, email, url,
- nvl(screen_name,'< none set up >') as screen_name
- from cc_users
- where user_id=:user_id
-}]
+acs_user::get -array user -include_bio
-if { $user_exists_p && [empty_string_p $screen_name] } {
- set screen_name "[_ acs-subsite.no_screen_name_message]"
-}
+set page_title [ad_pvt_home_name]
-set bio [db_string biography "
-select attr_value
-from acs_attribute_values
-where object_id = :user_id
-and attribute_id =
- (select attribute_id
- from acs_attributes
- where object_type = 'person'
- and attribute_name = 'bio')" -default ""]
+set context [list $page_title]
-if { ! $user_exists_p } {
- if {$user_id == 0} {
- ad_redirect_for_registration
- ad_script_abort
+set ad_url [ad_url]
+
+set community_member_url [acs_community_member_url -user_id $user_id]
+
+set system_name [ad_system_name]
+
+set portrait_upload_url [export_vars -base "../user/portrait/upload" { { return_url [ad_return_url] } }]
+
+ad_form -name user_info -cancel_url [ad_conn url] -mode display -form {
+ {first_names:text
+ {label "First names"}
+ {html {size 50}}
}
- ad_return_error "Account Unavailable" "We can't find you (user #$user_id) in the users table. Probably your account was deleted for some reason. You can visit the log out page and then start over."
+ {last_name:text
+ {label "Last Name"}
+ {html {size 50}}
+ }
+ {email:text
+ {label "Email"}
+ {html {size 50}}
+ }
+ {screen_name:text,optional
+ {label "Screen name"}
+ {html {size 50}}
+ }
+ {url:text,optional
+ {label "Home Page"}
+ {html {size 80}}
+ }
+ {bio:text(textarea),optional
+ {label "About yourself"}
+ {html {rows 8 cols 60}}
+ }
+} -on_request {
+ foreach var { first_names last_name email screen_name url bio } {
+ set $var $user($var)
+ }
+} -on_submit {
+ db_transaction {
+ 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
+ }
+} -after_submit {
+ ad_returnredirect [ad_conn url]
ad_script_abort
}
-if { ![empty_string_p $first_names] || ![empty_string_p $last_name] } {
- set full_name "$first_names $last_name"
-} else {
- set full_name "name unknown"
+# 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]"
+ element set_properties user_info url -display_value "[element get_value user_info url]"
}
-set system_name [ad_system_name]
+# The template needs to know if this is a request
+set form_request_p [expr [form is_request user_info] && [empty_string_p [form get_action user_info]]]
if [ad_parameter SolicitPortraitP "user-info" 0] {
# we have portraits for some users
@@ -87,16 +128,3 @@
set portrait_state "none"
}
-set header [ad_header "$full_name's workspace at $system_name"]
-
-set context [list "[ad_pvt_home_name]"]
-
-set export_user_id [export_url_vars user_id]
-set ad_url [ad_url]
-
-set member_link [acs_community_member_link -user_id $user_id -label "${ad_url}[acs_community_member_url -user_id $user_id]"]
-
-set interest_items ""
-
-ad_return_template
-