authority.tcl
Page for adding and editing an authority.
- Location:
- /packages/acs-admin/www/auth/authority.tcl
- Author:
- Peter Marklund
- Created:
- 2003-09-08
Related Files
[ hide source ] | [ make this the default ]
File Contents
ad_page_contract { Page for adding and editing an authority. @author Peter Marklund @creation-date 2003-09-08 } { authority_id:naturalnum,optional {ad_form_mode display} } set page_title "" if { [info exists authority_id] && $authority_id ne "" } { # Initial request in display or edit mode or a submit of the form set authority_exists_p [db_string authority_exists_p { select count(*) from auth_authorities where authority_id = :authority_id }] } else { # Initial request in add mode set page_title "New Authority" set ad_form_mode edit set authority_exists_p 0 } set form_widgets_full { authority_id:key(acs_object_id_seq) {-section "gen" {legendtext \#acs-admin.General\#}} {pretty_name:text {html {size 50}} {label "\#acs-admin.Name\#"} } {short_name:text,optional {html {size 50}} {label "\#acs-admin.Short_Name\#"} {mode {[expr {$local_authority_p ? "display" : ""}]}} {help_text "[_ acs-admin.Authority_short_name_help_text]"} } {enabled_p:text(radio) {label "\#acs-admin.Enabled\#"} {options {{[_ acs-admin.Yes] t} {[_ acs-admin.No] f}}} } {help_contact_text:richtext,optional {html {cols 60 rows 13}} {label "\#acs-admin.Help_contact_text\#"} {help_text "[_ acs-admin.Help_contact_help_text]"} } {-section "auth" {legendtext \#acs-admin.Authentication\#}} {auth_impl_id:integer(select),optional {label "\#acs-admin.Authentication\#"} {options {[acs_sc::impl::get_options -empty_label "--Disabled--" -contract_name auth_authentication]}} } {-section "pwmngt" {legendtext \#acs-admin.Password_Management\#}} {pwd_impl_id:integer(select),optional {label "\#acs-admin.Password_Management\#"} {options {[acs_sc::impl::get_options -empty_label "--Disabled--" -contract_name auth_password]}} } {forgotten_pwd_url:text(url),optional {html {size 50}} {label "\#acs-admin.Recover_password_URL\#"} {help_text "[_ acs-admin.Recover_password_URL_help_text]"} } {change_pwd_url:text(url),optional {html {size 50}} {label "\#acs-admin.Change_password_URL\#"} {help_text "[_ acs-admin.Change_password_URL_help_text]"} } {-section "accreg" {legendtext \#acs-admin.Account_Registration\#}} {register_impl_id:integer(select),optional {label "\#acs-admin.Account_Registration\#"} {options {[acs_sc::impl::get_options -empty_label "--Disabled--" -contract_name auth_registration]}} } {register_url:text(url),optional {html {size 50}} {label "\#acs-admin.Account_registration_URL\#"} {help_text "[_ acs-admin.Account_reg_URL_help_text]"} } {-section "ondemsyn" {legendtext \#acs-admin.On-Demand_Sync\#}} {user_info_impl_id:integer(select),optional {label "\#acs-admin.User_Info\#"} {options {[acs_sc::impl::get_options -empty_label "--Disabled--" -contract_name auth_user_info]}} {help_text "[_ acs-admin.User_Info_help_text]"} } {-section "batchsyn" {legendtext \#acs-admin.Batch_Synchronization\#}} {batch_sync_enabled_p:text(radio) {label "\#acs-admin.Batch_sync_enabled\#"} {options {{[_ acs-admin.Yes] t} {[_ acs-admin.No] f}}} } {get_doc_impl_id:integer(select),optional {label "\#acs-admin.GetDocument_implementation\#"} {options {[acs_sc::impl::get_options -empty_label "--Disabled--" -contract_name auth_sync_retrieve]}} } {process_doc_impl_id:integer(select),optional {label "\#acs-admin.ProcessDocument_implementation\#"} {options {[acs_sc::impl::get_options -empty_label "--Disabled--" -contract_name auth_sync_process]}} } } # For the local authority we allow only limited editing # Is this the local authority? set local_authority_p 0 if { $authority_exists_p && $authority_id eq [auth::authority::local] } { set local_authority_p 1 } if { $local_authority_p } { # Local authority # The form elements we use for local authority set local_editable_elements { authority_id pretty_name short_name forgotten_pwd_url change_pwd_url register_url } foreach element $form_widgets_full { regexp {^[a-zA-Z_]+} [lindex $element 0] element_name if {$element_name in $local_editable_elements} { lappend form_widgets $element } } } else { # Not local authority - use full form set form_widgets $form_widgets_full } ad_form -name authority \ -mode $ad_form_mode \ -form $form_widgets \ -cancel_url "." \ -new_request { set enabled_p t set batch_sync_enabled_p f } \ -edit_request { auth::authority::get -authority_id $authority_id -array element_array set page_title $element_array(pretty_name) foreach element_name [array names element_array] { set $element_name $element_array($element_name) } if { !$local_authority_p } { # Set the value of the help_contact_text element - both contents and format attributes set help_contact_text [template::util::richtext::create] set help_contact_text [template::util::richtext::set_property contents $help_contact_text \ $element_array(help_contact_text)] if { $element_array(help_contact_text_format) eq "" } { set element_array(help_contact_text_format) "text/enhanced" } set help_contact_text_format [template::util::richtext::set_property format $help_contact_text \ $element_array(help_contact_text_format)] } } -new_data { set page_title $pretty_name foreach var_name [template::form::get_elements -no_api authority] { set element_array($var_name) [set $var_name] } set element_array(sort_order) "" if { !$local_authority_p } { set element_array(help_contact_text) [template::util::richtext::get_property contents $help_contact_text] set element_array(help_contact_text_format) [template::util::richtext::get_property format $help_contact_text] } auth::authority::create \ -authority_id $authority_id \ -array element_array } -edit_data { foreach var_name [template::form::get_elements -no_api authority] { if { $var_name ne "authority_id" } { set element_array($var_name) [set $var_name] } } if { !$local_authority_p } { set element_array(help_contact_text) [template::util::richtext::get_property contents $help_contact_text] set element_array(help_contact_text_format) [template::util::richtext::get_property format $help_contact_text] if { [info exists element_array(short_name)] } { unset element_array(short_name) } } auth::authority::edit \ -authority_id $authority_id \ -array element_array } -after_submit { ad_returnredirect [export_vars -base [ad_conn url] { authority_id }] ad_script_abort } # Show recent batch jobs for existing authorities list::create \ -name batch_jobs \ -multirow batch_jobs \ -key job_id \ -elements { start_time_pretty { label "\#acs-admin.Start_time\#" link_url_eval {$job_url} } end_time_pretty { label "\#acs-admin.End_time\#" } run_time { label "\#acs-admin.Run_time\#" html { align right } } num_actions { label "\#acs-admin.Actions\#" html { align right } } num_problems { label "\#acs-admin.Problems\#" html { align right } } actions_per_minute { label "\#acs-admin.Actions_Minute\#" html { align right } } short_message { label "\#acs-admin.Message\#" } interactive_pretty { label "\#acs-admin.Interactive\#" html { align center } } } set display_batch_history_p [expr {$authority_exists_p && $ad_form_mode eq "display"}] if { $display_batch_history_p } { set yes [_ acs-kernel.common_Yes] set no [_ acs-kernel.common_No] db_multirow -extend { job_url start_time_pretty end_time_pretty interactive_pretty short_message actions_per_minute run_time run_time_seconds } batch_jobs select_batch_jobs { select job_id, to_char(job_start_time, 'YYYY-MM-DD HH24:MI:SS') as start_time_ansi, to_char(job_end_time, 'YYYY-MM-DD HH24:MI:SS') as end_time_ansi, snapshot_p, (select count(*) from auth_batch_job_entries where job_id = auth_batch_jobs.job_id) as num_actions, (select count(*) from auth_batch_job_entries where job_id = auth_batch_jobs.job_id and not success_p) as num_problems, interactive_p, message from auth_batch_jobs where authority_id = :authority_id order by start_time_ansi } { set run_time_seconds [expr {[clock scan $end_time_ansi -format "%Y-%m-%d %H:%M:%S"] - [clock scan $start_time_ansi -format "%Y-%m-%d %H:%M:%S"]}] set job_url [export_vars -base batch-job { job_id }] set start_time_pretty [lc_time_fmt $start_time_ansi "%x %X"] set end_time_pretty [lc_time_fmt $end_time_ansi "%x %X"] set interactive_pretty [expr {$interactive_p eq "t" ? $yes : $no}] set short_message [ad_string_truncate -len 30 -- $message] set actions_per_minute {} if { $run_time_seconds > 0 && $num_actions > 0 } { set actions_per_minute [expr {round(60.0 * $num_actions / $run_time_seconds)}] } set run_time [util::interval_pretty -seconds $run_time_seconds] } if { [info exists get_doc_impl_id] && $get_doc_impl_id ne "" && [info exists process_doc_impl_id] && $process_doc_impl_id ne "" } { set batch_sync_run_url [export_vars -base batch-job-run { authority_id }] template::add_confirm_handler \ -id batch-sync-run \ -message "Are you sure you want to run a batch job to sync the user database now?" } else { # If there's neither a driver, nor any log history to display, hide any mention of batch jobs if { ${batch_jobs:rowcount} == 0 } { set display_batch_history_p 0 } } } set context [list [list "." "Authentication"] $page_title] if { [info exists authority_id] && $authority_id ne "" } { set num_users [lc_numeric [db_string num_users_in_authority { select count(*) from users where authority_id = :authority_id }]] } else { set num_users 0 } set show_users_url [export_vars -base ../users/complex-search { authority_id { target one } }] # This code should be executed for non-local authorities in the following types of requests: # - initial request of the form (display mode) # - The form is being submitted (display mode) set initial_request_p [expr {[form get_action authority] eq ""}] set submit_p [form is_valid authority] if { ($initial_request_p || $submit_p) && !$local_authority_p } { # Add parameter links for implementations in display mode foreach element_name [auth::authority::get_sc_impl_columns] { # Only offer link if there is an implementation chosen and that implementation has # parameters to configure if { [info exists element_array($element_name)] && $element_array($element_name) ne "" && [auth::driver::get_parameters -impl_id $element_array($element_name)] ne "" } { set configure_url [export_vars -base authority-parameters { authority_id }] break } } } # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: