Index: openacs-4/contrib/packages/simulation/www/simplay/control-bar.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/www/simplay/Attic/control-bar.tcl,v diff -u -N -r1.10 -r1.11 --- openacs-4/contrib/packages/simulation/www/simplay/control-bar.tcl 8 Jan 2004 16:02:34 -0000 1.10 +++ openacs-4/contrib/packages/simulation/www/simplay/control-bar.tcl 12 Jan 2004 13:43:14 -0000 1.11 @@ -1,75 +1,96 @@ -# an includelet showing messages and tasks for a user +simulation::include_contract { + Displays a menu/control bar for users in a sim + @author Joel Aufrecht + @creation-date 2003-11-12 + @cvs-id $Id$ +} { + case_id {} + role_id {} +} + set package_id [ad_conn package_id] set user_id [ad_conn user_id] set section_uri [apm_package_url_from_id $package_id]simplay/ set adminplayer_p [permission::permission_p -object_id $package_id -privilege sim_adminplayer] -if { ![info exists case_id] } { - set case_id {} - set workflow_id {} -} else { - set workflow_id [simulation::case::get_element -case_id $case_id -element workflow_id] -} +set workflow_id [simulation::case::get_element -case_id $case_id -element workflow_id] -if { !$adminplayer_p } { - # TODO: constrain queries based on case_id, which (another TODO) should be passed in -} +set case_home_url [export_vars -base "case" { case_id role_id }] -set case_home_url [export_vars -base "case" { case_id }] - -set message_count [db_string message_count_sql " +set message_count [db_string message_count_sql { select count(*) - from sim_messages sm, - workflow_case_role_party_map wcrmp, - party_approved_member_map pamm - where pamm.member_id = :user_id - and wcrmp.party_id = pamm.party_id - and wcrmp.role_id = sm.to_role_id - and wcrmp.case_id = sm.case_id - [ad_decode $case_id "" "" "and wcrmp.case_id = :case_id"] -"] -set messages_url [export_vars -base ${section_uri}messages { case_id }] + from sim_messages sm + where sm.to_role_id = :role_id + and sm.case_id = :case_id +}] +set messages_url [export_vars -base ${section_uri}messages { case_id role_id }] -# TODO: decide whether to replace direct sql with this API loop: -# get a list of cases in which the user participates -# for each case, do [workflow::case::get_available_actions -case_id case_id -user_id :user_id ] - -set task_count [db_string task_count_sql " +set task_count [db_string task_count_sql { select count(wcea.enabled_action_id) from workflow_case_enabled_actions wcea, - workflow_case_role_party_map wcrpm, - workflow_actions wa, - party_approved_member_map pamm - where pamm.member_id = :user_id - and wcrpm.party_id = pamm.party_id - and wcrpm.case_id = wcea.case_id - and wcrpm.role_id = wa.assigned_role + workflow_actions wa + where wa.assigned_role = :role_id and wa.action_id = wcea.action_id and wcea.enabled_state = 'enabled' - [ad_decode $case_id "" "" "and wcea.case_id = :case_id"] -"] + and wcea.case_id = :case_id +}] -set tasks_url [export_vars -base ${section_uri}tasks { case_id }] -set portfolio_url [export_vars -base ${section_uri}portfolio { case_id }] -set about_sim_url [export_vars -base ${section_uri}about-sim { case_id }] +set tasks_url [export_vars -base ${section_uri}tasks { case_id role_id }] +set portfolio_url [export_vars -base ${section_uri}portfolio { case_id role_id }] +set about_sim_url [export_vars -base ${section_uri}about-sim { case_id role_id }] -# TODO: exclude records where wcrpm.party_id includes current user -db_multirow -extend { character_url } roles select_roles " - select wcrpm.role_id, - wr.pretty_name as role_name, - scx.name, - scx.title - from workflow_case_role_party_map wcrpm, +db_1row your_role { + select wr.role_id, + wr.pretty_name as role_pretty, + scx.name as character_name, + scx.title as character_title, + scx.item_id as character_item_id + from workflow_roles wr, + sim_roles sr, + sim_charactersx scx, + cr_items ci + where wr.role_id = :role_id + and sr.role_id = wr.role_id + and scx.item_id = sr.character_id + and ci.item_id = scx.item_id + and ci.live_revision = scx.object_id +} -column_array role + +set role(character_url) [simulation::object::url -name $role(character_name)] + +array set thumbnail [lindex [util_list_of_ns_sets_to_list_of_lists -list_of_ns_sets [bcms::item::list_related_items -item_id $role(character_item_id) -relation_tag "thumbnail" -return_list]] 0] + +if { [exists_and_not_null thumbnail(name)] && [exists_and_not_null thumbnail(live_revision)] } { + set role(thumbnail_url) [simulation::object::content_url -name $thumbnail(name)] + set role(thumbnail_name) $thumbnail(name) + + array set thumbnail_rev [bcms::revision::get_revision \ + -revision_id $thumbnail(live_revision) \ + -additional_properties { width height }] + + set role(thumbnail_height) $thumbnail_rev(height) + set role(thumbnail_width) $thumbnail_rev(width) +} + +db_multirow -unclobber -extend { character_url } contacts select_contacts " + select wr.role_id, + wr.pretty_name as role_pretty, + scx.name as character_name, + scx.title as character_title + from workflow_cases wc, workflow_roles wr, sim_roles sr, - sim_charactersx scx - where wcrpm.case_id = :case_id - and wr.role_id = wcrpm.role_id - and sr.role_id = wcrpm.role_id - and scx.object_id = sr.character_id + sim_charactersx scx, + cr_items ci + where wc.case_id = :case_id + and wr.workflow_id = wc.workflow_id + and sr.role_id = wr.role_id + and scx.item_id = sr.character_id + and ci.item_id = scx.item_id + and ci.live_revision = scx.object_id + and wr.role_id != :role_id " { - set character_url [simulation::object::url -name $name] + set character_url [simulation::object::url -name $character_name] } -