Index: openacs-4/packages/acs-tcl/tcl/table-display-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/Attic/table-display-procs.tcl,v diff -u -r1.23.2.1 -r1.23.2.2 --- openacs-4/packages/acs-tcl/tcl/table-display-procs.tcl 25 Aug 2015 11:09:37 -0000 1.23.2.1 +++ openacs-4/packages/acs-tcl/tcl/table-display-procs.tcl 25 Aug 2015 22:09:07 -0000 1.23.2.2 @@ -5,58 +5,9 @@ } -ad_proc ad_dimensional_sql { - option_list - {what "where"} - {joiner "and"} - {options_set ""} -} { - see ad_dimensional for the format of option_list -

- Given what clause we are asking for and the joiner this returns - the sql fragment -} { - set out {} - if {$option_list eq ""} { - return - } - if {$options_set eq ""} { - set options_set [ns_getform] - } - - foreach option $option_list { - # find out what the current option value is. - # check if a default is set otherwise the first value is used - set option_key [lindex $option 0] - set option_val {} - # get the option from the form - if { $options_set ne ""} { - set option_val [ns_set get $options_set $option_key] - } - #otherwise get from default - if { $option_val eq "" } { - set option_val [lindex $option 2] - } - - foreach option_value [lindex $option 3] { - set thisoption [lindex $option_value 0] - if {$option_val eq $thisoption } { - set code [lindex $option_value 2] - if {$code ne ""} { - if {[lindex $code 0] eq $what } { - append out " $joiner [uplevel [list subst [lindex $code 1]]]" - } - } - } - } - } - - return $out -} - -ad_proc ad_dimensional_set_variables {option_list {options_set ""}} { +ad_proc -deprecated ad_dimensional_set_variables {option_list {options_set ""}} { set the variables defined in option_list from the form provided (form defaults to ad_conn form) or to default value from option_list if not in the form data. @@ -714,7 +665,7 @@ return $html } -ad_proc ad_order_by_from_sort_spec {sort_by tabledef} { +ad_proc -deprecated ad_order_by_from_sort_spec {sort_by tabledef} { Takes a sort_by spec, and translates it into into an "order by" clause with each sort_by key dictated by the sort info in tabledef } { @@ -782,7 +733,7 @@ } } -ad_proc ad_same_page_link {variable value text {form ""}} { +ad_proc -deprecated ad_same_page_link {variable value text {form ""}} { Makes a link to this page, with a new value for "variable". } { if { $form eq "" } { @@ -793,7 +744,7 @@ return [subst {[ns_quotehtml $text]}] } -ad_proc ad_reverse order { +ad_proc -deprecated ad_reverse order { returns the opposite sort order from the one it is given. Mostly for columns whose natural sort order is not the default. @@ -805,7 +756,7 @@ return $order } -ad_proc ad_custom_load {user_id item_group item item_type} { +ad_proc -deprecated ad_custom_load {user_id item_group item item_type} { load a persisted user customization as saved by for example table-custom.tcl. } { @@ -825,7 +776,7 @@ return $value } -ad_proc ad_custom_list {user_id item_group item_set item_type target_url custom_url {new_string "new view"}} { +ad_proc -deprecated ad_custom_list {user_id item_group item_set item_type target_url custom_url {new_string "new view"}} { Generates the html fragment for choosing, editing and creating user customized data } { @@ -852,7 +803,7 @@ } -ad_proc ad_custom_page_defaults {defaults} { +ad_proc -deprecated ad_custom_page_defaults {defaults} { set the page defaults. If the form is empty do a returnredirect with the defaults set } { @@ -880,7 +831,7 @@ } } -ad_proc ad_custom_form {return_url item_group item} { +ad_proc -deprecated ad_custom_form {return_url item_group item} { sets up the head of a form to feed to /tools/form-custom.tcl } { append html "

\n" @@ -895,7 +846,7 @@ append html "" } -ad_proc ad_dimensional_settings {define current} { +ad_proc -deprecated ad_dimensional_settings {define current} { given a dimensional slider definition this routine returns a form to set the defaults for the given slider. Index: openacs-4/packages/acs-templating/tcl/dimensional-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/dimensional-procs.tcl,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/acs-templating/tcl/dimensional-procs.tcl 25 Aug 2015 11:09:37 -0000 1.1.2.1 +++ openacs-4/packages/acs-templating/tcl/dimensional-procs.tcl 25 Aug 2015 22:09:07 -0000 1.1.2.2 @@ -1,26 +1,10 @@ ad_library { - Definition of dimensional selection bar widget + Definition of dimensional selection bar widget and helper functions. @cvs-id $Id$ } -# TODOS: -# May be deprecate the following functions of table-display-procs. # -# ad_dimensional_sql -# ad_dimensional_set_variables -# ad_order_by_from_sort_spec -# ad_same_page_link -# ad_reverse -# ad_custom_load -# ad_custom_list -# ad_custom_page_defaults -# ad_custom_form -# ad_dimensional_settings -# -# Add Package Parameter DefaultDimensionalStyle to acs-subsite -# Check style-switcher callback in theme package -# # Dimensional selection bars. # @@ -31,42 +15,40 @@ {options_set ""} {optionstype url} } { - Generate an option bar: - - @param style name of the adp file (without extension) - @param option_list the structure with the option data provided - @param url url target for select (if blank we set it to ad_conn url). - @param options_set if not provided defaults to [ns_getform], for hilite of selected options. - @param optionstype only url is used now, was thinking about extending - so we get radio buttons and a form since with a slow select updating one - thing at a time would be stupid. - @return HTML rendering - -

- option_list structure is + Generate an option bar from an option_list, which has the structure:

     { 
         {variable "Title" defaultvalue
             {
-                {value "Label"}
+                {value "Label" {key sql-clause}}
                 ...
             }
         }
         ...
     }
+    
- an example: - + Here is an example of the option_list: +
     set dimensional_list {
         {visited "Last Visit" 1w {
-            {never "Never"}
-            {1m "Last Month"}
-            {1w "Last Week"}
-            {1d "Today"}
+            {never "Never" {where "last_visit is null"}}
+            {1m "Last Month" {where "last_visit + 30 > sysdate"}}
+            {1w "Last Week" {where "last_visit + 7 > sysdate"}}
+            {1d "Today" {where "last_visit > trunc(sysdate)"}}
         }}
         ..(more of the same)..
     }
     
+ + @param style name of the adp file (without extension) + @param option_list the structure with the option data provided + @param url url target for select (if blank we set it to ad_conn url). + @param options_set if not provided defaults to [ns_getform], for hilite of selected options. + @param optionstype only url is used now, was thinking about extending + so we get radio buttons and a form since with a slow select updating one + thing at a time would be stupid. + @return HTML rendering } { if {$option_list eq ""} { return @@ -145,3 +127,60 @@ return [template::adp_include -uplevel 2 -- $adp_stub [list &dimensional dimensional {*}$arrays]] } +ad_proc ad_dimensional_sql { + option_list + {what "where"} + {joiner "and"} + {options_set ""} +} { + + Given what clause we are asking for and the joiner this returns + the sql fragment + + @param option_list the structure with the option data provided + @param what look for such keys in the option_list + @param joiner join string for combining multiple clases + @param options_set ns_set for reading variables + @return SQL clause + + @see ad_dimensional +} { + set out {} + + if {$option_list eq ""} { + return + } + + if {$options_set eq ""} { + set options_set [ns_getform] + } + + foreach option $option_list { + # find out what the current option value is. + # check if a default is set otherwise the first value is used + set option_key [lindex $option 0] + set option_val {} + # get the option from the form + if { $options_set ne ""} { + set option_val [ns_set get $options_set $option_key] + } + #otherwise get from default + if { $option_val eq "" } { + set option_val [lindex $option 2] + } + + foreach option_value [lindex $option 3] { + set thisoption [lindex $option_value 0] + if {$option_val eq $thisoption } { + set code [lindex $option_value 2] + if {$code ne ""} { + if {[lindex $code 0] eq $what } { + append out " $joiner [uplevel [list subst [lindex $code 1]]]" + } + } + } + } + } + + return $out +}