Index: openacs-4/packages/dynamic-types/lib/templates/add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/templates/Attic/add.tcl,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/dynamic-types/lib/templates/add.tcl 17 Feb 2005 15:03:12 -0000 1.1.2.1 +++ openacs-4/packages/dynamic-types/lib/templates/add.tcl 18 Feb 2005 17:03:11 -0000 1.1.2.2 @@ -17,8 +17,6 @@ -object_id $package_id \ -privilege "create" -template::form::create add - if {[info exists id_column] && $id_column ne ""} { dtype::form::add_elements \ -object_id $id_column \ @@ -30,7 +28,6 @@ } if {[template::form::is_submission add]} { dtype::form::process \ - -object_id $id_column \ -form add \ -object_type __object_type } Index: openacs-4/packages/dynamic-types/lib/templates/edit.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/templates/Attic/edit.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/templates/edit.adp 18 Feb 2005 17:03:11 -0000 1.1.2.1 @@ -0,0 +1,7 @@ + + @page_title@ + @header_stuff@ + @context@ + @focus@ + + \ No newline at end of file Index: openacs-4/packages/dynamic-types/lib/templates/edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/templates/Attic/edit.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/templates/edit.tcl 18 Feb 2005 17:03:11 -0000 1.1.2.1 @@ -0,0 +1,41 @@ +ad_page_contract { + +} -query { + id_column:integer,notnull +} -properties { + page_title + context + header_stuff + focus +} + +set user_id [ad_conn user_id] +set package_id [ad_conn package_id] + +permission::require_permission \ + -party_id $user_id \ + -object_id $id_column \ + -privilege "write" + +if {[info exists id_column] && $id_column ne ""} { + dtype::form::add_elements \ + -object_id $id_column \ + -form edit +} else { + dtype::form::add_elements \ + -form edit \ + -object_type __object_type +} +if {[template::form::is_submission edit]} { + dtype::form::process \ + -form edit \ + -object_type __object_type +} + +set page_title "Edit pretty_name" +set context [list $page_title] +set header_stuff "" +set focus "" + +ad_return_template + Index: openacs-4/packages/dynamic-types/lib/templates/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/templates/Attic/index.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/templates/index.adp 18 Feb 2005 17:03:11 -0000 1.1.2.1 @@ -0,0 +1,7 @@ + + @page_title@ + @header_stuff@ + @context@ + @focus@ + + \ No newline at end of file Index: openacs-4/packages/dynamic-types/lib/templates/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/templates/Attic/index.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/templates/index.tcl 18 Feb 2005 17:03:11 -0000 1.1.2.1 @@ -0,0 +1,48 @@ +# + +ad_page_contract { + + List objects + + @author Dave Bauer (dave@thedesignexperience.org) + @creation-date 2005-02-17 + @arch-tag: d994f019-d0e5-4ad5-8298-a33dd8d3e075 + @cvs-id $Id: index.tcl,v 1.1.2.1 2005/02/18 17:03:11 daveb Exp $ +} { + +} -properties { +} -validate { +} -errors { +} + +set user_id [ad_conn user_id] +set package_id [ad_conn package_id] + +set admin_p [permission::permission_p \ + -object_id $package_id \ + -party_id $user_id \ + -privilege "admin"] + +set actions [list] +if {$admin_p} { + set actions [list Add add "Add pretty_name"] +} + +db_multirow -extend {url} objects get_objects "select * from table_namei, cr_items ci where table_namei.id_column=ci.latest_revision" { + set url [export_vars -base one {id_column}] +} + +template::list::create \ + -name __object_type \ + -multirow objects \ + -actions $actions \ + -elements { + title {label "Title" link_url_col url} + } + +set page_title "pretty_plural" +set context [list $page_title] +set focus "" +set header_stuff "" + +ad_return_template Index: openacs-4/packages/dynamic-types/lib/templates/one.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/templates/Attic/one.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/templates/one.adp 18 Feb 2005 17:03:11 -0000 1.1.2.1 @@ -0,0 +1,7 @@ + + @page_title@ + @header_stuff@ + @context@ + @focus@ + + \ No newline at end of file Index: openacs-4/packages/dynamic-types/lib/templates/one.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/lib/templates/Attic/one.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dynamic-types/lib/templates/one.tcl 18 Feb 2005 17:03:11 -0000 1.1.2.1 @@ -0,0 +1,35 @@ +ad_page_contract { + +} -query { + id_column:integer,notnull,optional +} -properties { + page_title + context + header_stuff + focus +} + +set user_id [ad_conn user_id] +set package_id [ad_conn package_id] + +permission::require_permission \ + -party_id $user_id \ + -object_id $package_id \ + -privilege "read" + +dtype::form::add_elements \ + -object_id $id_column \ + -form display + +template::form::set_properties \ + display \ + -action "edit" \ + -mode display + + +set page_title "One pretty name" +set context [list $page_title] +set header_stuff "" +set focus "" + +ad_return_template \ No newline at end of file Index: openacs-4/packages/dynamic-types/sql/postgresql/dtype-package-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/sql/postgresql/dtype-package-create.sql,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/dynamic-types/sql/postgresql/dtype-package-create.sql 17 Feb 2005 03:12:37 -0000 1.1.2.1 +++ openacs-4/packages/dynamic-types/sql/postgresql/dtype-package-create.sql 18 Feb 2005 17:03:11 -0000 1.1.2.2 @@ -418,17 +418,9 @@ from acs_object_types where object_type = p_object_type; - select (case when p_object_type = ''content_revision'' then 1 - else 0 end) into v_content_revision_p - from dual; - - if not v_content_revision_p then - select count(*) > 0 into v_content_revision_p - from acs_object_type_supertype_map - where object_type = p_object_type - and ancestor_type = ''content_revision''; - end if; - + select content_type__is_content_type(p_object_type) + into v_content_revision_p; + -- -- start building rule code -- Index: openacs-4/packages/dynamic-types/sql/postgresql/metadata-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/sql/postgresql/metadata-create.sql,v diff -u -N -r1.2.2.2 -r1.2.2.3 --- openacs-4/packages/dynamic-types/sql/postgresql/metadata-create.sql 17 Feb 2005 15:03:13 -0000 1.2.2.2 +++ openacs-4/packages/dynamic-types/sql/postgresql/metadata-create.sql 18 Feb 2005 17:03:11 -0000 1.2.2.3 @@ -30,8 +30,6 @@ values (''email'', ''text''); insert into dtype_db_datatypes (datatype, db_type) values (''text'', ''text''); - insert into dtype_db_datatypes (datatype, db_type) - values (''string'', ''varchar(4000)''); raise notice ''Inserting standard widget metadata...''; @@ -404,14 +402,8 @@ -- create ''default'' form for acs_object with only object_id so that -- by default the dtype::form api doesn''t try to add acs_object -- attributes to forms - PERFORM dtype_widget__register_form_widget( - ''acs_object'', - ''default'', - ''object_id'', - ''hidden'', - ''t'', - ''t'' - ); + insert into dtype_forms (form_id, name, object_type) + values (nextval(''t_dtype_seq''), ''default'',''acs_object''); return 0; end;' language 'plpgsql'; 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.1.2.1 -r1.1.2.2 --- openacs-4/packages/dynamic-types/tcl/dynamic-type-procs.tcl 17 Feb 2005 03:12:37 -0000 1.1.2.1 +++ openacs-4/packages/dynamic-types/tcl/dynamic-type-procs.tcl 18 Feb 2005 17:03:11 -0000 1.1.2.2 @@ -371,7 +371,7 @@ if {[info exists type_dforms($type)]} { set type_dform $type_dforms($type) } else { - set type_dform "default" + set type_dform "implicit" } dtype::form::metadata::widgets -object_type $type \ @@ -382,8 +382,15 @@ set fk_array([lindex $l 0]) [lrange $l 1 end] } template::multirow foreach widgets { +ns_log debug " +DB -------------------------------------------------------------------------------- +DB DAVE debugging procedure dtype::create_form +DB -------------------------------------------------------------------------------- +DB attribute_name = '${attribute_name}' +DB widget = '${widget}' +DB --------------------------------------------------------------------------------" append code " - dtype::form::create_widget \ + dtype::form::metadata::create_widget \ -object_type $object_type \ -dform $dform \ -attribute_name $attribute_name \ @@ -400,11 +407,11 @@ if {!$object_p} { # create widget param for select list append code " - dtype::form::create_widget_param \ + dtype::form::metadata::create_widget_param \ -object_type $object_type \ -dform $dform \ -attribute_name $attribute_name \ - -param_name [dtype::table::pretty_name [lindex $fk_array($attribute_name) 0]] \ + -param_name options \ -type multilist \ -source query \ -value \"select $attribute_name, pretty_name from [lindex $fk_array($attribute_name) 1]\" @@ -416,8 +423,11 @@ } } - -return $code + if {$evaluate} { + eval $code + } else { + return $code + } } ad_proc -public dtype::get_table_name { 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.2.2.2 -r1.2.2.3 --- openacs-4/packages/dynamic-types/tcl/form-procs.tcl 17 Feb 2005 15:03:13 -0000 1.2.2.2 +++ openacs-4/packages/dynamic-types/tcl/form-procs.tcl 18 Feb 2005 17:03:11 -0000 1.2.2.3 @@ -172,7 +172,6 @@ # Pull the action out of the form set action [template::element::get_value $form ${prefix}dform_action] set new_p [string equal $action "new"] - if {$new_p} { set types [dtype::form::types_list \ -object_type $object_type] @@ -275,10 +274,6 @@ set columns [list] set values [list] - # DAVEB since add_elements excludes acs_object attributes, we need - # to set some of them to reasonable defaults - # object_type - # what do we do about context_id? Its application specific # LEED context_id and similar fields should be passed in using the # -defaults { context_id 1234 } argument @@ -382,7 +377,7 @@ values (:item_id, [join $values ", "])" } else { - set latest_revision [db_map latest_revision] + set latest_revision [content::item::get_latest_revision -item_id $item_id] db_dml insert_statement " insert into ${type_info(table_name)}i @@ -807,14 +802,6 @@ set metadata [dtype::form::metadata::widgets_list \ -object_type $object_type \ -dform $dform] -ns_log notice " - -DB -------------------------------------------------------------------------------- -DB DAVE debugging procedure dtype::form::metadata::widgets -DB -------------------------------------------------------------------------------- -DB object_type = '${object_type}' -DB metadata = '${metadata}' -DB --------------------------------------------------------------------------------" foreach widget $metadata { if {$multirow_p} { eval "template::multirow append \$multirow $widget" Index: openacs-4/packages/dynamic-types/tcl/page-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/tcl/page-procs.tcl,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/dynamic-types/tcl/page-procs.tcl 17 Feb 2005 15:03:13 -0000 1.1.2.1 +++ openacs-4/packages/dynamic-types/tcl/page-procs.tcl 18 Feb 2005 17:03:11 -0000 1.1.2.2 @@ -17,7 +17,7 @@ -package_key {-overwrite "t"} {-expand_form "t"} - {-pages {add}} + {-pages {add edit one index}} } { Generate a set of add/edit/delete/index pages for a dynamic type @@ -38,6 +38,9 @@ acs_object_type::get -object_type $object_type -array object_type_info set id_column $object_type_info(id_column) set pretty_name $object_type_info(pretty_name) + set pretty_plural $object_type_info(pretty_plural) + set table_name $object_type_info(table_name) + set dest [file join [acs_root_dir] packages dynamic-types lib ${object_type}] if {![file exists $dest]} { file mkdir $dest @@ -49,17 +52,25 @@ close $fd regsub -all {id_column} $code $id_column code regsub -all {pretty_name} $code $pretty_name code - regsub -all {__object_type} $code $object_type code + regsub -all {pretty_plural} $code $pretty_plural code + regsub -all {__object_type} $code $object_type code + regsub -all {table_name} $code $table_name code set fd [open [file join $dest ${page}.tcl] w] puts $fd $code close $fd # generate add adp page set fd [open [adp_template_path -page ${page}]] set code [read $fd] close $fd - if {$expand_form} { + regsub -all {id_column} $code $id_column code + regsub -all {pretty_name} $code $pretty_name code + regsub -all {pretty_plural} $code $pretty_plural code + regsub -all {__object_type} $code $object_type code + regsub -all {table_name} $code $table_name code + if {[regexp {" - set result "[expand_form -object_type $object_type]" + set result "[expand_form -object_type $object_type -page ${page}]" regsub $regexp $code $result code } set fd [open [file join $dest ${page}.adp] w] @@ -104,6 +115,7 @@ ad_proc -public dtype::page::expand_form { -object_type + -page } { Generate adp for formtemplate @@ -117,10 +129,15 @@ @error } { - set form_id __my_form + set form_id $page template::form::create $form_id dtype::form::add_elements \ -object_type $object_type \ - -form $form_id - return [template::form::template $form_id] + -form $form_id \ + -dform standard + # add a submit button + # FIXME do something smart here + template::element create $form_id formbutton:ok -widget submit -label " OK " -datatype text + set result [template::form::template $form_id] + return $result } Index: openacs-4/packages/dynamic-types/tcl/table-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dynamic-types/tcl/table-procs-postgresql.xql,v diff -u -N -r1.1.2.2 -r1.1.2.3 --- openacs-4/packages/dynamic-types/tcl/table-procs-postgresql.xql 17 Feb 2005 15:03:13 -0000 1.1.2.2 +++ openacs-4/packages/dynamic-types/tcl/table-procs-postgresql.xql 18 Feb 2005 17:03:11 -0000 1.1.2.3 @@ -20,6 +20,7 @@ money money date date timestamptz date "timestamp with time zone" date "timestamp without time zone" date + timestamp date "time without time zone" time_of_day "time with time zone" time_of_day time time_of_day "" enumeration "" url "" email "" keyword