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