ad_library { Ticket tracker lite support procs. @author dvr@arsdigita.com @author Vinod Kurup (vinod@kurup.com) @creation-date 2001-02-18 @cvs-id $Id: ticket-tracker-lite-procs.tcl,v 1.6 2009/02/13 20:40:39 jeffd Exp $ } ad_proc ttl_master_template {} { return /packages/ticket-tracker-lite/www/master } ad_proc ttl_restrict_to_ttl_users {} { set user_id [auth::require_login] set package_id [ad_conn package_id] db_1row get_privilege { select ttl_top_privilege_for_object(:package_id, :user_id) as privilege from dual } if [string equal "" $privilege] { ttl_return_complaint "Access denied" "You're not allowed to access this page" ad_script_abort } return $privilege } ad_proc ttl_text_format_widget { -name {-default formatted} } { return "" } ad_proc ttl_format_text_for_display { {-format formatted} {-wrap 60} text } { if [string equal $format formatted] { return "
[ttl_paragraph_wrap $text $wrap]" } else { return $text } } ad_proc ttl_paragraph_wrap {paragraph max_line_length} {
# # Converts a parargraph with long lines into a paragraph with lines # no longer than $max_line_length characters. If the paragraph # contains words longer than $max_line_length, they'll be given # their own line. # # Useful for converting form input into emails. Better than using # WRAP=HARD in your forms because that will break long strings # (like URLs.) # # -dvr 1/14/2001 #} { set new_paragraph "" regsub -all "\r\n" $paragraph "\n" paragraph set lines [split [string trimright $paragraph] \n] foreach line $lines { if {[string length $line] <= $max_line_length} { append new_paragraph "$line\n" } else { set counter 0 while {[string length $line] > $max_line_length} { incr counter if {$counter > 1000} { error "Infinite loop in gf_word_wrap" } # Find me the last space in the string within # the first $max_line_length characters set last_space [string last " " $line $max_line_length] if {$last_space != -1} { append new_paragraph "[string range $line 0 $last_space]\n" set line [string range $line [expr $last_space + 1] end] # set line [string trimleft $line] } else { # two things could be happening: either the first # word is longer than $max_line_length characters, or # we have no spaces in this line. set first_space [string first " " $line] if {$first_space == -1} { # there are no spaces append new_paragraph "$line\n" set line "" } else { # The first word is longer than $max_line_length append new_paragraph "[string range $line 0 $first_space]\n" set line [string range $line [expr $first_space + 1] end] # set line [string trimleft $line] } } } append new_paragraph "$line\n" } } return "[string trimright $new_paragraph]" } proc ttl_return_url_clause {} { set url [ns_conn url] set url_variables [ns_conn query] if ![string match "" $url_variables] { append url "?$url_variables" } return "return_url=[ns_urlencode $url]" } ad_proc ttl_type_optionlist { {default_type ""} } { set external_list [list Defect Enhancement Task] set internal_list [list defect enhancement task] return "" } ad_proc ttl_area_optionlist { -all_option:boolean {default ""} } { set package_id [ad_conn package_id] set area_query "select name, area_id from ttl_va_areas where context_id = $package_id order by name" if { $all_option_p } { return [ad_db_select_widget -default $default -option_list {{"" "All areas"}} ttl $area_query area_id] } else { return [ad_db_select_widget -default $default ttl $area_query area_id] } } ad_proc ttl_priority_optionlist { {default_priority 2} } { set external_list [list High Medium Low] set internal_list [list 1 2 3] return "" } ad_proc ttl_status_optionlist { {default_status ""} } { set status_query "select status_name, status from ttl_status order by sort_key" set status_optionlist [ad_db_select_widget -default $default_status ttl $status_query status] } ad_proc ttl_navbar_list { -admin:boolean -nohome:boolean {navbar_list_list ""} } { set package_home [ad_conn package_url] set default_elements {{/pvt/home "My workspace"}} if { !$nohome_p } { lappend default_elements [list $package_home "Ticket Tracker"] } if { $admin_p } { lappend default_elements [list $package_home/admin "Administration"] } set navbar_list_list [concat $default_elements $navbar_list_list] set navbar_list {} foreach pair $navbar_list_list { lappend navbar_list "[lindex $pair 1]" } return $navbar_list } ad_proc ttl_pref_choices {var_name args} {
#} { upvar $var_name pref_key set list_of_links {} foreach {var_value linktitle} $args { if {[info exists pref_key] && [string equal $var_value $pref_key]} { lappend list_of_links "$linktitle" } else { lappend list_of_links "$linktitle" } } if {[llength $list_of_links] > 1} { return "\[ [join $list_of_links " | "] \]" } else { return [lindex $list_of_links 0] } } proc ttl_pref_sliders_off {variable_name extra_url_vars target args} { upvar $variable_name $variable_name set choices_l {} foreach option $args { set pretty_name [lindex $option 0] set value [lindex $option 1] set url "$target?" if ![empty_string_p $extra_url_vars] { append url "$extra_url_vars&" } if ![empty_string_p $value] { append url "$variable_name=[ns_urlencode $value]" } if ![info exists $variable_name] { if [empty_string_p $value] { lappend choices_l $pretty_name } else { lappend choices_l "$pretty_name" } } else { if {[set $variable_name] == "$value"} { lappend choices_l $pretty_name } else { lappend choices_l "$pretty_name" } } } set num_choices [llength $choices_l] if {$num_choices == 0} { return } elseif {$num_choices == 1} { return [lindex $choices_l 0] } else { return "\[ [join $choices_l " | "] \]" } } ad_proc ttl_return_complaint { page_title {page_body ""} } { set master_template [ttl_master_template] ns_return 200 text/html " [ad_header $page_title]
$page_body [ad_footer]" } ad_proc ttl_util_default {variable_name {default_value ""}} {
# # If the variable exists and isn't equal to the empty string, # returns the variable's value. Otherwise, returns $default_value. # Use like: # # set all_or_nothing [default all_or_nothing "nothing"] #} { upvar 1 $variable_name $variable_name if {![info exists $variable_name] || [empty_string_p [set $variable_name]]} { return $default_value } else { return [set $variable_name] } } ad_proc ttl_util_boolean {variable {true_value 1} {false_value 0} {default_action false}} {
# # Looks inside $variable to see whether it's "true" or "false" # # 1) A variable is "true" if it's 1, "True", "T", "Yes", or "Y" # 2) A variable is "false" if it's 0, "False", "F", "No", or "N" # 3) If it's neither of these, the value of $default_action decides # whether it's true or false. # # Example: if a variable is probably 1 or 0, but might not exist or # might be set to the empty string. Instead of doing: # # if {[info exists something_p] && [string equal $something_p "f"]}... # # You can do... # # if [boolean something_p] ... #} { upvar $variable $variable if {![info exists $variable] || [empty_string_p [set $variable]]} { if {[string match $default_action false] == 1} { return $false_value } else { return $true_value } } set lower_value [string tolower [set $variable]] if {[lsearch -exact [list f false off no 0] $lower_value] != -1} { return $false_value } elseif {[lsearch -exact [list t true on yes 1] $lower_value] != -1} { return $true_value } else { if {[string match $default_action false] == 1} { return $false_value } else { return $true_value } } }