Index: openacs-4/packages/dynamic-types/catalog/dynamic-types.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/catalog/dynamic-types.en_US.ISO-8859-1.xml,v diff -u -r1.4 -r1.5 --- openacs-4/packages/dynamic-types/catalog/dynamic-types.en_US.ISO-8859-1.xml 4 Jun 2005 16:09:54 -0000 1.4 +++ openacs-4/packages/dynamic-types/catalog/dynamic-types.en_US.ISO-8859-1.xml 5 Jun 2005 12:36:45 -0000 1.5 @@ -32,12 +32,26 @@ Forms you must supply either -multirow or -indexed_array Object Type + Parameter "%param%" + Parameter + Source + Tcl Function + Constant + DB Query + Type + List with multiple columns + List with one column + Single Value + Value + Parameters of "%attribute_name%" + Parameters Pretty Name Pretty Plural Remove Remove Element from Form Required? unable to retrieve widget parameter %name% for attribute %attribute_id% - returning "" as parameter value Widget + -- Default Widget -- Index: openacs-4/packages/dynamic-types/lib/dtype-code-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/dtype-code-oracle.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/dtype-code-oracle.xql 5 Jun 2005 12:36:45 -0000 1.1 @@ -0,0 +1,22 @@ + + + oracle8.1.6 + + + + + select f.form_id, f.name as form_name, a.attribute_name, e.element_id, + e.widget, e.is_required, wp.param, ep.param_type, + ep.param_source, ep.value as param_value + from dtype_forms f, acs_attributes a, dtype_form_elements e, + dtype_element_params ep, dtype_widget_params wp + where f.object_type = :object_type + and e.form_id = f.form_id + and a.attribute_id = e.attribute_id + and e.element_id = ep.element_id (+) + and ep.param_id = wp.param_id (+) + + + + + Index: openacs-4/packages/dynamic-types/lib/dtype-code-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/dtype-code-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/dtype-code-postgresql.xql 5 Jun 2005 12:36:45 -0000 1.1 @@ -0,0 +1,21 @@ + + + postgresql7.3 + + + + + select f.form_id, f.name as form_name, a.attribute_name, e.element_id, + e.widget, e.is_required, wp.param, ep.param_type, + ep.param_source, ep.value as param_value + from dtype_forms f, acs_attributes a, dtype_form_elements e + left outer join dtype_element_params ep using (element_id) + left outer join dtype_widget_params wp using (param_id) + where f.object_type = :object_type + and e.form_id = f.form_id + and a.attribute_id = e.attribute_id + + + + + Index: openacs-4/packages/dynamic-types/lib/dtype-code.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/dtype-code.adp,v diff -u -r1.1 -r1.2 --- openacs-4/packages/dynamic-types/lib/dtype-code.adp 4 Jun 2005 16:09:54 -0000 1.1 +++ openacs-4/packages/dynamic-types/lib/dtype-code.adp 5 Jun 2005 12:36:45 -0000 1.2 @@ -28,6 +28,18 @@ -attribute_name {@forms.attribute_name@} \ -widget {@forms.widget@} \ -required_p {@forms.is_required@} + + +dtype::form::metadata::create_widget_param \ + -object_type {@object_type@} \ + -dform {@forms.form_name@} \ + -attribute_name {@forms.attribute_name@} \ + -param_name {@forms.param@} \ + -type {@forms.param_type@} \ + -source {@forms.param_source@} \ + -value {@forms.param_value@} + + Index: openacs-4/packages/dynamic-types/lib/dtype-code.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/dtype-code.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/dynamic-types/lib/dtype-code.xql 4 Jun 2005 16:09:54 -0000 1.1 +++ openacs-4/packages/dynamic-types/lib/dtype-code.xql 5 Jun 2005 12:36:45 -0000 1.2 @@ -15,17 +15,4 @@ - - - - select f.form_id, f.name as form_name, a.attribute_name, - e.widget, e.is_required - from dtype_forms f, dtype_form_elements e, acs_attributes a - where f.object_type = :object_type - and e.form_id = f.form_id - and a.attribute_id = e.attribute_id - - - - Index: openacs-4/packages/dynamic-types/sql/postgresql/forms-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/sql/postgresql/forms-create.sql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/dynamic-types/sql/postgresql/forms-create.sql 24 Feb 2005 14:21:50 -0000 1.3 +++ openacs-4/packages/dynamic-types/sql/postgresql/forms-create.sql 5 Jun 2005 12:36:45 -0000 1.4 @@ -177,7 +177,7 @@ not null constraint dtype_wgt_tpls_pm_src_ck check (param_source in ('literal', 'query', 'eval')), - value text, + value text, constraint dtype_wgt_tpls_pm_pk primary key(template_id, param_id) ); @@ -232,7 +232,7 @@ form_id integer constraint dtype_felements_form_id_fk references dtype_forms, - widget varchar(100) + widget varchar(100) constraint dtype_felements_widget_fk references dtype_widgets constraint dtype_felements_widget_nil @@ -262,7 +262,7 @@ not null, constraint dtype_element_param_src_ck check (param_source in ('literal', 'query', 'eval')), - value text, + value text, constraint dtype_element_param_pk primary key(element_id, param_id) ); Index: openacs-4/packages/dynamic-types/tcl/form-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/tcl/form-procs.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/dynamic-types/tcl/form-procs.tcl 4 Jun 2005 12:50:03 -0000 1.7 +++ openacs-4/packages/dynamic-types/tcl/form-procs.tcl 5 Jun 2005 12:36:45 -0000 1.8 @@ -991,12 +991,12 @@ if {[string equal $type dtype] || [string equal $type dtype.attribute]} { # flush the default form - util_memoize_flush_regexp "$function $object_type -dform \"default\"" + util_memoize_flush_regexp "$function $object_type -dform \"implicit\".*" } else { set dform $dtype_event(dform) # flush the form specified in the event - util_memoize_flush_regexp "$function $object_type -dform \"$dform\"" + util_memoize_flush_regexp "$function $object_type -dform \"$dform\".*" } } Index: openacs-4/packages/dynamic-types/www/element-param.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-param.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-param.adp 5 Jun 2005 12:36:46 -0000 1.1 @@ -0,0 +1,5 @@ + +@page_title@ +@context;noquote@ + + Index: openacs-4/packages/dynamic-types/www/element-param.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-param.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-param.tcl 5 Jun 2005 12:36:46 -0000 1.1 @@ -0,0 +1,46 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-06-05 + @cvs-id $Id: element-param.tcl,v 1.1 2005/06/05 12:36:46 timoh Exp $ + +} { + {form_id:notnull} + {object_type:notnull} + {element_id:notnull} + {param_id:notnull} +} + +acs_object_type::get -object_type $object_type -array type_info +db_1row get_data {} + +set page_title "[_ dynamic-types.param_one]" +set context [list [list [export_vars -base dtype {object_type}] $type_info(pretty_name)] [list [export_vars -base form {object_type form_id}] "[_ dynamic-types.form_one]"] [list [export_vars -base element-params {object_type form_id element_id}] "[_ dynamic-types.parameters]"] $page_title] + +set type_options [list [list "[_ dynamic-types.param_type_onevalue]" onevalue] [list "[_ dynamic-types.param_type_onelist]" onelist] [list "[_ dynamic-types.param_type_multilist]" multilist]] + +set source_options [list [list "[_ dynamic-types.param_source_literal]" literal] [list "[_ dynamic-types.param_source_query]" query] [list "[_ dynamic-types.param_source_eval]" eval]] + + +ad_form -name parameter_form -export {object_type form_id element_id} -form { + {param_id:key} + {param_type:text(select) {label "[_ dynamic-types.param_type]"} {options $type_options} {help_text "[_ dynamic-types.param_type_help]"}} + {param_source:text(select) {label "[_ dynamic-types.param_source]"} {options $source_options} {help_text "[_ dynamic-types.param_source_help]"}} + {value:text(textarea) {label "[_ dynamic-types.param_value]"} {html {rows 5 cols 80}} {help_text "[_ dynamic-types.param_value_help]"}} +} -edit_request { + db_1row get_param_data {} +} -edit_data { + dtype::form::metadata::create_widget_param \ + -object_type $object_type \ + -dform $form_name \ + -attribute_name $attribute_name \ + -param_name $param \ + -type $param_type \ + -source $param_source \ + -value $value +} -after_submit { + ad_returnredirect [export_vars -base element-params {object_type form_id element_id}] + ad_script_abort +} + +ad_return_template Index: openacs-4/packages/dynamic-types/www/element-param.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-param.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-param.xql 5 Jun 2005 12:36:46 -0000 1.1 @@ -0,0 +1,30 @@ + + + + + + + + select p.form_name, a.attribute_name, p.param + from dtype_element_params_all p, acs_attributes a + where p.form_id = :form_id + and p.element_id = :element_id + and p.param_id = :param_id + and a.attribute_id = p.attribute_id + + + + + + + + select param_type, param_source, value + from dtype_element_params_all + where form_id = :form_id + and element_id = :element_id + and param_id = :param_id + + + + + Index: openacs-4/packages/dynamic-types/www/element-params.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-params.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-params.adp 5 Jun 2005 12:36:46 -0000 1.1 @@ -0,0 +1,5 @@ + +@page_title@ +@context;noquote@ + + Index: openacs-4/packages/dynamic-types/www/element-params.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-params.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-params.tcl 5 Jun 2005 12:36:46 -0000 1.1 @@ -0,0 +1,52 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-06-05 + @cvs-id $Id: element-params.tcl,v 1.1 2005/06/05 12:36:46 timoh Exp $ + +} { + {object_type:notnull} + {form_id:notnull} + {element_id:notnull} +} + +acs_object_type::get -object_type $object_type -array type_info +db_1row get_data {} + +set page_title "[_ dynamic-types.parameters]" +set context [list [list [export_vars -base dtype {object_type}] $type_info(pretty_name)] [list [export_vars -base form {object_type form_id}] "[_ dynamic-types.form_one]"] $page_title] + +# Parameters of this form element + +list::create \ + -name parameters \ + -multirow parameters \ + -key param_id \ + -row_pretty_plural "[_ dynamic-types.params]" \ + -pass_properties { + object_type form_id element_id + } -elements { + param_name { + label "[_ dynamic-types.param_name]" + link_url_eval $param_url + } + param_type { + label "[_ dynamic-types.param_type]" + } + param_source { + label "[_ dynamic-types.param_source]" + } + param_value { + label "[_ dynamic-types.param_value]" + } + } -filters { + object_type {} + form_id {} + element_id {} + } + +db_multirow -extend { param_url } parameters get_parameters {} { + set param_url [export_vars -base element-param {object_type form_id element_id param_id}] +} + +ad_return_template Index: openacs-4/packages/dynamic-types/www/element-params.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-params.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-params.xql 5 Jun 2005 12:36:46 -0000 1.1 @@ -0,0 +1,29 @@ + + + + + + + + select form_name, attribute_name + from dtype_form_elements_all + where form_id = :form_id + and element_id = :element_id + + + + + + + + select param_id, param as param_name, param_type, param_source, + value as param_value + from dtype_element_params_all + where form_id = :form_id + and element_id = :element_id + order by lower(param) + + + + + Index: openacs-4/packages/dynamic-types/www/element.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/dynamic-types/www/element.tcl 5 Jun 2005 08:19:03 -0000 1.2 +++ openacs-4/packages/dynamic-types/www/element.tcl 5 Jun 2005 12:36:46 -0000 1.3 @@ -17,22 +17,28 @@ set attribute_options [db_list_of_lists get_attributes {}] set boolean_options [list [list "[_ acs-kernel.common_Yes]" 1] [list "[_ acs-kernel.common_no]" 0]] +set widget_options [concat [list [list "[_ dynamic-types.widget_default]" ""]] [db_list_of_lists get_widgets {}]] ad_form -name element_form -export {object_type} -form { {form_id:key} {attribute_id:text(select) {label "[_ dynamic-types.attribute_name]"} {options $attribute_options} {help_text "[_ dynamic-types.element_name_help]"}} + {widget:text(select) {label "[_ dynamic-types.widget]"} {options $widget_options} {help_text "[_ dynamic-types.widget_help]"}} {required_p:text(select) {label "[_ dynamic-types.required_p]"} {options $boolean_options} {help_text "[_ dynamic-types.required_p_help]"}} } -edit_request { set attribute_id "" set required_p t } -edit_data { db_1row attribute_widget {} + if {[empty_string_p $widget]} { + set widget $default_widget + } + dtype::form::metadata::create_widget \ -object_type $object_type \ -dform $form_name \ -attribute_name $attribute_name \ - -widget $default_widget \ + -widget $widget \ -required_p $required_p } -after_submit { ad_returnredirect [export_vars -base form {object_type form_id}] Index: openacs-4/packages/dynamic-types/www/element.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/dynamic-types/www/element.xql 4 Jun 2005 12:51:20 -0000 1.1 +++ openacs-4/packages/dynamic-types/www/element.xql 5 Jun 2005 12:36:46 -0000 1.2 @@ -27,6 +27,16 @@ + + + + select widget, widget + from dtype_widgets + order by lower(widget) + + + + Index: openacs-4/packages/dynamic-types/www/form.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/form.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/dynamic-types/www/form.tcl 5 Jun 2005 08:19:03 -0000 1.2 +++ openacs-4/packages/dynamic-types/www/form.tcl 5 Jun 2005 12:36:46 -0000 1.3 @@ -41,16 +41,19 @@ } widget { label "[_ dynamic-types.widget]" + link_url_eval $param_url } is_required { label "[_ dynamic-types.required_p]" } } -filters { object_type {} + form_id {} } -db_multirow -extend { element_url } elements get_elements {} { +db_multirow -extend { element_url param_url } elements get_elements {} { set element_url [export_vars -base element {object_type form_id element_id}] + set param_url [export_vars -base element-params {object_type form_id element_id}] set is_required [ad_decode $is_required t "[_ acs-kernel.common_Yes]" "[_ acs-kernel.common_no]"] }