Index: openacs-4/packages/dynamic-types/dynamic-types.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/dynamic-types.info,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/dynamic-types/dynamic-types.info 26 May 2005 10:27:57 -0000 1.2 +++ openacs-4/packages/dynamic-types/dynamic-types.info 4 Jun 2005 12:50:03 -0000 1.3 @@ -7,17 +7,18 @@ f f - + Rob Denison Lee Denison Dynamic Object Type management API Xarg Allows creation, manipulation and ui generation of dynamically generated object types. - + + 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 -N -r1.2 -r1.3 --- openacs-4/packages/dynamic-types/catalog/dynamic-types.en_US.ISO-8859-1.xml 26 May 2005 10:27:57 -0000 1.2 +++ openacs-4/packages/dynamic-types/catalog/dynamic-types.en_US.ISO-8859-1.xml 4 Jun 2005 12:50:03 -0000 1.3 @@ -9,6 +9,7 @@ Add Add a Dynamic Attribute + Add a Form element Add a Form Attribute Add Attribute @@ -21,12 +22,19 @@ Datatype Dynamic Types Management Dynamic Types + Edit Form Name + Form elements Form Name + Form "%form_name%" Forms + you must supply either -multirow or -indexed_array Object Type Pretty Name Pretty Plural - you must supply either -multirow or -indexed_array + Remove + Remove Element from Form + Required? unable to retrieve widget parameter %name% for attribute %attribute_id% - returning "" as parameter value + Widget Index: openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-oracle.xql,v diff -u -N -r1.1 -r1.2 --- openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-oracle.xql 14 Feb 2005 14:33:28 -0000 1.1 +++ openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-oracle.xql 4 Jun 2005 12:50:03 -0000 1.2 @@ -67,11 +67,20 @@ - + select a.attribute_name as name, - a.pretty_name, a.attribute_id, a.datatype + a.pretty_name, + a.attribute_id, + a.datatype, + a.table_name, + nvl(a.column_name, a.attribute_name) as column_name, + a.default_value, + a.min_n_values, + a.max_n_values, + a.storage, + a.static_p from acs_object_type_attributes a, (select t.object_type, level as type_level from acs_object_types_t @@ -81,7 +90,33 @@ and t.object_type = a.ancestor_type $storage_clause order by type_level, a.sort_order + + + + + + select a.attribute_name as name, + a.pretty_name, + a.attribute_id, + a.datatype, + a.table_name, + nvl(a.column_name, a.attribute_name) as column_name, + a.default_value, + a.min_n_values, + a.max_n_values, + a.storage, + a.static_p + from acs_object_type_attributes a, dtype_attributes d, + (select t.object_type, level as type_level + from acs_object_types_t + start with t.object_type = :start_with + connect by prior t.object_type = t.supertype) t + where a.object_type = :name + and d.attribute_id = a.attribute_id + and t.object_type = a.ancestor_type $storage_clause + order by type_level, a.sort_order + Index: openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-postgresql.xql,v diff -u -N -r1.1 -r1.2 --- openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-postgresql.xql 14 Feb 2005 14:33:28 -0000 1.1 +++ openacs-4/packages/dynamic-types/tcl/dynamic-type-procs-postgresql.xql 4 Jun 2005 12:50:03 -0000 1.2 @@ -47,7 +47,7 @@ - + select a.attribute_name as name, a.pretty_name, @@ -71,6 +71,31 @@ + + + select a.attribute_name as name, + a.pretty_name, + a.attribute_id, + a.datatype, + a.table_name, + coalesce(a.column_name, a.attribute_name) as column_name, + a.default_value, + a.min_n_values, + a.max_n_values, + a.storage, + a.static_p + from acs_object_type_attributes a, dtype_attributes d, + (select t.object_type, tree_level(t.tree_sortkey) - tree_level(t2.tree_sortkey) as type_level + from acs_object_types t, acs_object_types t2 + where t2.object_type = :start_with + and t.tree_sortkey between t2.tree_sortkey and tree_right(t2.tree_sortkey)) t + where a.object_type = :name + and d.attribute_id = a.attribute_id + and t.object_type = a.ancestor_type $storage_clause + order by type_level, a.sort_order + + + Index: openacs-4/packages/dynamic-types/tcl/dynamic-type-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/tcl/dynamic-type-procs.tcl,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/dynamic-types/tcl/dynamic-type-procs.tcl 26 May 2005 10:27:58 -0000 1.3 +++ openacs-4/packages/dynamic-types/tcl/dynamic-type-procs.tcl 4 Jun 2005 12:50:03 -0000 1.4 @@ -23,10 +23,11 @@ {-object_id:required} {-object_type:required} {-array:required} + {-exclude_static:boolean} } { Populates array with the data for the object specified. } { - set attributes_list [dtype::get_attributes_list -name $object_type -start_with acs_object -storage_types type_specific] + set attributes_list [dtype::get_attributes_list -name $object_type -start_with acs_object -storage_types type_specific -exclude_static_p $exclude_static_p] upvar $array local set columns [list] @@ -180,15 +181,20 @@ {-name:required} {-start_with:required} {-storage_types:required} + {-exclude_static_p 0} } { Gets all the attributes of a object_type. } { if {$no_cache_p} { set storage_clause "and a.storage in ('[join $storage_types "', '"]')" - return [db_list_of_lists select_attributes {}] + if {$exclude_static_p} { + return [db_list_of_lists select_attributes_dynamic {}] + } else { + return [db_list_of_lists select_attributes {}] + } } else { - return [util_memoize "dtype::get_attributes_list -no_cache -name \"$name\" -start_with \"$start_with\" -storage_types \"$storage_types\""] + return [util_memoize "dtype::get_attributes_list -no_cache -name \"$name\" -start_with \"$start_with\" -storage_types \"$storage_types\" -exclude_static_p $exclude_static_p"] } } 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 -N -r1.6 -r1.7 --- openacs-4/packages/dynamic-types/tcl/form-procs.tcl 26 May 2005 10:27:58 -0000 1.6 +++ openacs-4/packages/dynamic-types/tcl/form-procs.tcl 4 Jun 2005 12:50:03 -0000 1.7 @@ -502,7 +502,6 @@ array set override $overrides set new_p [string equal $object(object_id) ""] - ns_log notice "\#\#\# new_p: $new_p" ############################################################ # Get the widget metadata @@ -519,6 +518,7 @@ set widget_count [template::multirow size widgets] set param_count [template::multirow size params] + set default_locale [lang::system::site_wide_locale] set p 1 # Generate form elements for each attribute / widget @@ -533,7 +533,13 @@ } # set the default values for overridable options - set overridables(label) $widgets(pretty_name) + set overridables(help_text) "[_ acs-translations.$widgets(object_type)\_$widgets(attribute_name)\_help]" + set message_key "acs-translations.$widgets(object_type)\_$widgets(attribute_name)" + if {[lang::message::message_exists_p $default_locale $message_key]} { + set overridables(label) "[_ $message_key]" + } else { + set overridables(label) $widgets(pretty_name) + } # Create the main element create line set element_create_cmd "template::element create \ @@ -1139,3 +1145,36 @@ -dform $dform } } + +ad_proc -public dtype::form::new { + {-object_type:required} + {-form_name:required} + {-form_id ""} +} { + Create new dynamic form +} { + if {[empty_string_p $form_id]} { + set form_id [db_nextval t_dtype_seq] + } + + db_dml insert_form {} + + set event(object_type) $object_type + set event(dform) $form_name + set event(action) created + util::event::fire -event dtype.form event +} + +ad_proc -public dtype::form::edit { + {-form_name:required} + {-form_id:required} +} { + Update dynamic form name +} { + db_dml update_form {} + + set event(object_type) $object_type + set event(dform) $form_name + set event(action) updated + util::event::fire -event dtype.form event +} Index: openacs-4/packages/dynamic-types/tcl/form-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/tcl/form-procs.xql,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/dynamic-types/tcl/form-procs.xql 26 May 2005 10:27:58 -0000 1.2 +++ openacs-4/packages/dynamic-types/tcl/form-procs.xql 4 Jun 2005 12:50:03 -0000 1.3 @@ -160,4 +160,23 @@ + + + + insert into dtype_forms (form_id, name, object_type) + values (:form_id, :form_name, :object_type) + + + + + + + + update dtype_forms + set name = :form_name + where form_id = :form_id + + + + Index: openacs-4/packages/dynamic-types/www/attribute.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/attribute.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/attribute.adp 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,5 @@ + +@page_title@ +@context@ + + Index: openacs-4/packages/dynamic-types/www/attribute.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/attribute.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/attribute.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,88 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-05-02 + @cvs-id $Id: attribute.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ + +} { + {attribute_id:optional} + {object_type:notnull} +} + +acs_object_type::get -object_type $object_type -array type_info + +if {[info exists attribute_id]} { + set page_title "[_ dynamic-types.attribute_edit]" +} else { + set page_title "[_ dynamic-types.attribute_add]" +} + +set context [list [list dtypes "[_ dynamic-types.dynamic_types]"] [list [export_vars -base dtype {object_type}] $type_info(pretty_name)] $page_title] +set table_name $type_info(table_name) +set datatype_options [db_list_of_lists get_datatypes {}] + +ad_form -name attribute_form -export {object_type} -form { + {attribute_id:key} + {attribute_name:text {label "[_ dynamic-types.attribute_name]"} {html {size 30 maxlength 100}} {help_text "[_ dynamic-types.attribute_name_help]"}} + {pretty_name:text,optional {label "[_ dynamic-types.pretty_name]"} {html {size 30 maxlength 100}} {help_text "[_ dynamic-types.attribute_pname_help]"}} + {pretty_plural:text,optional {label "[_ dynamic-types.pretty_plural]"} {html {size 30 maxlength 100}} {help_text "[_ dynamic-types.attribute_pplural_help]"}} +} + +if {![ad_form_new_p -key attribute_id]} { + ad_form -extend -name attribute_form -form { + {datatype:text(inform) {label "[_ dynamic-types.datatype]"} {options $datatype_options} {help_text "[_ dynamic-types.datatype_help]"}} + } +} else { + ad_form -extend -name attribute_form -form { + {datatype:text(select) {label "[_ dynamic-types.datatype]"} {options $datatype_options} {help_text "[_ dynamic-types.datatype_help]"}} + } +} + +ad_form -extend -name attribute_form -form { + {default_value:text(textarea),optional {label "[_ dynamic-types.attribute_default]"} {html {rows 3 cols 40}} {help_text "[_ dynamic-types.attribute_default_help]"}} +} -new_request { + set attribute_name "" + set pretty_name "" + set pretty_plural "" + set datatype string + set default_value "" +} -edit_request { + db_1row attribute_data {} +} -on_submit { + if {[empty_string_p $pretty_name]} { + foreach word [split $attribute_name] { + lappend pretty_name [string totitle $word] + } + set pretty_name [join $pretty_name] + } + if {[empty_string_p $pretty_name]} { + set pretty_plural "${pretty_name}s" + } + set default_locale [lang::system::site_wide_locale] +} -new_data { + dtype::create_attribute \ + -name $attribute_name \ + -object_type $object_type \ + -data_type $datatype \ + -pretty_name $pretty_name \ + -pretty_plural $pretty_plural \ + -default_value $default_value +} -edit_data { + dtype::edit_attribute \ + -name $attribute_name \ + -object_type $object_type \ + -pretty_name $pretty_name \ + -pretty_plural $pretty_plural \ + -default_value $default_value +} -after_submit { + lang::message::register -update_sync $default_locale acs-translations "${object_type}_$attribute_name" $pretty_name + lang::message::register -update_sync $default_locale acs-translations "${object_type}_${attribute_name}s" $pretty_plural + + util_memoize_flush "dtype::form::metadata::widgets_list -no_cache -object_type \"$object_type\" -dform \"implicit\" -exclude_static_p 0" + util_memoize_flush "dtype::form::metadata::widgets_list -no_cache -object_type \"$object_type\" -dform \"implicit\" -exclude_static_p 1" + + ad_returnredirect [export_vars -base dtype {object_type}] + ad_script_abort +} + +ad_return_template Index: openacs-4/packages/dynamic-types/www/attribute.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/attribute.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/attribute.xql 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,25 @@ + + + + + + + + select datatype, datatype + from dtype_db_datatypes + order by datatype + + + + + + + + select attribute_name, pretty_name, pretty_plural, datatype, default_value + from acs_attributes + where attribute_id = :attribute_id + + + + + Index: openacs-4/packages/dynamic-types/www/dtype.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/dtype.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/dtype.adp 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,9 @@ + +@page_title@ +@context@ + +

#dynamic-types.attributes#

+ + +

#dynamic-types.forms#

+ Index: openacs-4/packages/dynamic-types/www/dtype.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/dtype.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/dtype.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,68 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-05-02 + @cvs-id $Id: dtype.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ + +} { + {object_type:notnull} +} + +acs_object_type::get -object_type $object_type -array type_info + +set page_title $type_info(pretty_name) +set context [list [list dtypes "[_ dynamic-types.dynamic_types]"] $page_title] + +list::create \ + -name attributes \ + -multirow attributes \ + -key attribute_name \ + -row_pretty_plural "[_ dynamic-types.attributes]" \ + -pass_properties { + object_type + } -actions [list "[_ dynamic-types.add]" [export_vars -base attribute {object_type}] "[_ dynamic-types.add_attribute]"] \ + -bulk_actions { + } -elements { + pretty_name { + label "[_ dynamic-types.pretty_name]" + link_url_eval $attribute_url + } + attribute_name { + label "[_ dynamic-types.attribute]" + } + datatype { + label "[_ dynamic-types.datatype]" + } + } -filters { + object_type {} + } + +db_multirow -extend { attribute_url } attributes get_attributes {} { + set attribute_url [export_vars -base attribute {object_type attribute_id}] +} + +# Forms associated with this object type + +list::create \ + -name forms \ + -multirow forms \ + -key form_id \ + -row_pretty_plural "[_ dynamic-types.forms]" \ + -pass_properties { + object_type + } -actions [list "[_ dynamic-types.add]" [export_vars -base form-ae {object_type}] "[_ dynamic-types.add_form]"] \ + -bulk_actions { + } -elements { + name { + label "[_ dynamic-types.form_name]" + link_url_eval $form_url + } + } -filters { + object_type {} + } + +db_multirow -extend { form_url } forms get_forms {} { + set form_url [export_vars -base form {object_type form_id}] +} + +ad_return_template Index: openacs-4/packages/dynamic-types/www/dtype.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/dtype.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/dtype.xql 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,28 @@ + + + + + + + + select attribute_id, attribute_name, pretty_name, + pretty_plural, datatype + from acs_attributes + where object_type = :object_type + order by sort_order + + + + + + + + select form_id, name + from dtype_forms + where object_type = :object_type + order by lower(name) + + + + + Index: openacs-4/packages/dynamic-types/www/dtypes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/Attic/dtypes.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/dtypes.adp 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,5 @@ + +@page_title@ +@context@ + + Index: openacs-4/packages/dynamic-types/www/dtypes.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/Attic/dtypes.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/dtypes.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,36 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-05-02 + @cvs-id $Id: dtypes.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ +} { + {orderby "pretty_name,asc"} +} + +set page_title "[_ dynamic-types.dynamic_types]" +set context [list $page_title] + +list::create \ + -name dtypes \ + -multirow dtypes \ + -key object_type \ + -row_pretty_plural "[_ dynamic-types.dynamic_types]" \ + -elements { + pretty_name { + label "[_ dynamic-types.pretty_name]" + link_url_eval $dtype_url + orderby "lower(pretty_name)" + } + object_type { + label "[_ dynamic-types.object_type]" + orderby "object_type" + } + } + +set orderby_clause [list::orderby_clause -orderby -name dtypes] + +db_multirow -extend { dtype_url } dtypes select_dtypes {} { + set dtype_url [export_vars -base dtype {object_type}] +} + +ad_return_template Index: openacs-4/packages/dynamic-types/www/dtypes.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/Attic/dtypes.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/dtypes.xql 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,15 @@ + + + + + + + + select object_type, pretty_name + from acs_object_types + $orderby_clause + + + + + Index: openacs-4/packages/dynamic-types/www/element-remove.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-remove.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-remove.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,27 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-06-03 + @cvs-id $Id: element-remove.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ + +} { + {form_id:notnull} + {object_type:notnull} + {element_id:multiple} +} + +db_1row get_form_name {} + +db_transaction { + foreach e_id $element_id { + db_1row attribute_name {} + + dtype::form::metadata::delete_widget \ + -object_type $object_type \ + -dform $form_name \ + -attribute_name $attribute_name \ + -delete_form_p 0 + } +} + +ad_returnredirect [export_vars -base form {object_type form_id}] Index: openacs-4/packages/dynamic-types/www/element-remove.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element-remove.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element-remove.xql 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,26 @@ + + + + + + + + select name as form_name + from dtype_forms + where form_id = :form_id + + + + + + + + select a.attribute_name + from acs_attributes a, dtype_form_elements e + where a.attribute_id = e.attribute_id + and e.element_id = :e_id + + + + + Index: openacs-4/packages/dynamic-types/www/element.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/element.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element.adp 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,5 @@ + +@page_title@ +@context;noquote@ + + 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 -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,42 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-06-03 + @cvs-id $Id: element.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ + +} { + {form_id:notnull} + {object_type:notnull} +} + +acs_object_type::get -object_type $object_type -array type_info +db_1row get_form_name {} + +set page_title "[_ dynamic-types.add_element]" +set context [list [list dtypes "[_ dynamic-types.dynamic_types]"] [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] + +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]] + +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]"}} + {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 {} + + dtype::form::metadata::create_widget \ + -object_type $object_type \ + -dform $form_name \ + -attribute_name $attribute_name \ + -widget $default_widget \ + -required_p $required_p +} -after_submit { + ad_returnredirect [export_vars -base form {object_type form_id}] + ad_script_abort +} + +ad_return_template 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 -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/element.xql 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,44 @@ + + + + + + + + select name as form_name + from dtype_forms + where form_id = :form_id + + + + + + + + select attribute_name, attribute_id + from acs_attributes a + where object_type = :object_type + and not exists (select 1 + from dtype_form_elements e + where e.form_id = :form_id + and e.attribute_id = a.attribute_id) + order by sort_order + + + + + + + + select a.attribute_name, wt.widget as default_widget + from acs_attributes a, dtype_default_widgets dw, + dtype_widget_templates wt + where a.attribute_id = :attribute_id + and a.datatype = dw.datatype + and dw.template_id = wt.template_id + and dw.datatype = wt.datatype + + + + + Index: openacs-4/packages/dynamic-types/www/form-ae.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/form-ae.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/form-ae.adp 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,5 @@ + +@page_title@ +@context@ + + Index: openacs-4/packages/dynamic-types/www/form-ae.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/form-ae.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/form-ae.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,38 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-06-03 + @cvs-id $Id: form-ae.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ + +} { + {form_id:optional} + {object_type:notnull} +} + +acs_object_type::get -object_type $object_type -array type_info + +if {[info exists form_id]} { + set page_title "[_ dynamic-types.edit_form]" +} else { + set page_title "[_ dynamic-types.add_form]" +} + +set context [list [list dtypes "[_ dynamic-types.dynamic_types]"] [list [export_vars -base dtype {object_type}] $type_info(pretty_name)] $page_title] + +ad_form -name form_name -export {object_type} -form { + {form_id:key(t_dtype_seq)} + {name:text {label "[_ dynamic-types.form_name]"} {html {size 30 maxlength 100}} {help_text "[_ dynamic-types.form_name_help]"}} +} -new_request { + set name "" +} -edit_request { + db_1row form_data {} +} -new_data { + dtype::form::new -object_type $object_type -form_name $name -form_id $form_id +} -edit_data { + dtype::form::edit -form_name $name -form_id $form_d +} -after_submit { + ad_returnredirect [export_vars -base form {object_type form_id}] + ad_script_abort +} + +ad_return_template Index: openacs-4/packages/dynamic-types/www/form-ae.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/form-ae.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/form-ae.xql 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,15 @@ + + + + + + + + select name + from dtype_forms + where form_id = :form_id + + + + + Index: openacs-4/packages/dynamic-types/www/form.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/form.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/form.adp 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,8 @@ + +@page_title@ +@context;noquote@ + +#dynamic-types.edit_form# + +

#dynamic-types.elements#

+ 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 -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/form.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,57 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-06-04 + @cvs-id $Id: form.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ + +} { + {object_type:notnull} + {form_id:optional 0} +} + +acs_object_type::get -object_type $object_type -array type_info +db_1row get_form_name {} + +set page_title "[_ dynamic-types.form_one]" +set context [list [list dtypes "[_ dynamic-types.dynamic_types]"] [list [export_vars -base dtype {object_type}] $type_info(pretty_name)] $page_title] +set edit_form_url [export_vars -base form-ae {object_type form_id}] + +# Form associated with this object type + +list::create \ + -name elements \ + -multirow elements \ + -key element_id \ + -row_pretty_plural "[_ dynamic-types.elements]" \ + -pass_properties { + object_type form_id + } -actions [list "[_ dynamic-types.add]" [export_vars -base element {object_type form_id}] "[_ dynamic-types.add_element]"] \ + -bulk_action_export_vars {object_type form_id} \ + -bulk_actions [list "[_ dynamic-types.remove]" element-remove "[_ dynamic-types.remove_element]"] \ + -elements { + pretty_name { + label "[_ dynamic-types.pretty_name]" + link_url_eval $element_url + } + attribute_name { + label "[_ dynamic-types.attribute]" + } + datatype { + label "[_ dynamic-types.datatype]" + } + widget { + label "[_ dynamic-types.widget]" + } + is_required { + label "[_ dynamic-types.required_p]" + } + } -filters { + object_type {} + } + +db_multirow -extend { element_url } elements get_elements {} { + set element_url [export_vars -base element {object_type form_id element_id}] + set is_required [ad_decode $is_required t "[_ acs-kernel.common_Yes]" "[_ acs-kernel.common_no]"] +} + +ad_return_template Index: openacs-4/packages/dynamic-types/www/form.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/form.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/form.xql 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,28 @@ + + + + + + + + select name as form_name + from dtype_forms + where form_id = :form_id + + + + + + + + select e.element_id, a.attribute_name, a.pretty_name, + a.pretty_plural, a.datatype, e.widget, e.is_required + from acs_attributes a, dtype_form_elements e + where a.attribute_id = e.attribute_id + and e.form_id = :form_id + order by a.sort_order + + + + + Index: openacs-4/packages/dynamic-types/www/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/index.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/index.adp 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,7 @@ + +@page_title@ +@context@ + + Index: openacs-4/packages/dynamic-types/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/www/index.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/www/index.tcl 4 Jun 2005 12:51:20 -0000 1.1 @@ -0,0 +1,12 @@ +ad_page_contract { + + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2005-05-02 + @cvs-id $Id: index.tcl,v 1.1 2005/06/04 12:51:20 timoh Exp $ +} { +} + +set page_title "[_ dynamic-types.dtypes_admin]" +set context {} + +ad_return_template