Index: openacs-4/contrib/packages/simulation/lib/object-display.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/lib/Attic/object-display.adp,v diff -u -r1.1 -r1.2 --- openacs-4/contrib/packages/simulation/lib/object-display.adp 14 Oct 2003 13:58:03 -0000 1.1 +++ openacs-4/contrib/packages/simulation/lib/object-display.adp 17 Oct 2003 09:22:55 -0000 1.2 @@ -2,5 +2,7 @@ @page_title;noquote@ @context;noquote@ -

+@content_html;noquote@ + +Edit Index: openacs-4/contrib/packages/simulation/lib/object-display.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/lib/Attic/object-display.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/contrib/packages/simulation/lib/object-display.tcl 14 Oct 2003 14:59:50 -0000 1.2 +++ openacs-4/contrib/packages/simulation/lib/object-display.tcl 17 Oct 2003 09:22:55 -0000 1.3 @@ -20,16 +20,23 @@ # get the item by url if now revision id is given if { ![info exists revision_id] } { - array set current_item [bcms::item::get_item_by_url -root_id $root_id -url $extra_url -revision live] + array set item [bcms::item::get_item_by_url -root_id $root_id -url $extra_url -revision live] } else { - array set current_item [bcms::revision::get_revision -revision_id $revision_id] + array set item [bcms::revision::get_revision -revision_id $revision_id] } +item::get_content \ + -revision_id $item(revision_id) \ + -array content -item::get_revision_content $current_item(revision_id) +set content_html [ad_html_text_convert -from $content(mime_type) -to "text/html" -- $content(text)] -# TODO: Render using template -#set rendered [publish::merge_with_template $current_item(item_id)] +###### +# +# Temporary hack to dipslay attributes +# +##### + template::list::create \ -name attributes \ -multirow attributes \ @@ -42,12 +49,44 @@ } } + multirow create attributes attribute value -set page_title $current_item(title) +set page_title $item(title) set context [list [list ../object-list "Objects"] $page_title] foreach name [lsort [array names content]] { multirow append attributes $name $content($name) } + +if { [permission::write_permission_p -object_id $item(item_id)] } { + set edit_url [export_vars -base [ad_conn package_url]object-edit { { item_id $item(item_id) } }] +} + + +##### +# +# Render using template +# +##### + +# Dropped +return + +item::get_content \ + -revision_id [item::get_live_revision [item::get_template_id $item(item_id)]] \ + -array template + +# Make content available to rendered page +foreach __elm [array names content] { + set $__elm $content($__elm) +} + + +publish::push_id $item_id $revision_id +set code [template::adp_compile -string $template(text)] +set rendered_page [template::adp_eval code] +publish::pop_id + + Index: openacs-4/contrib/packages/simulation/sql/postgresql/simulation-content-types-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/sql/postgresql/Attic/simulation-content-types-create.sql,v diff -u -r1.1 -r1.2 --- openacs-4/contrib/packages/simulation/sql/postgresql/simulation-content-types-create.sql 14 Oct 2003 13:58:03 -0000 1.1 +++ openacs-4/contrib/packages/simulation/sql/postgresql/simulation-content-types-create.sql 17 Oct 2003 09:22:55 -0000 1.2 @@ -80,38 +80,16 @@ select content_type__create_attribute( 'sim_home', -- content_type 'stylesheet', -- attribute_name - 'string', -- datatype + 'text', -- datatype 'Stylesheet', -- pretty_name 'Stylesheets', -- pretty_plural 5, -- sort_order null, -- default_value - 'varchar(4000)' -- column_spec + 'text' -- column_spec ); --- sim_contact - -select content_type__create_type( - 'sim_contact', -- content_type - 'content_revision', -- supertype - 'Contact', -- pretty_name, - 'Contacts', -- pretty_plural - 'sim_contacts', -- table_name - 'contact_id', -- id_column - null -- name_method -); - -select content_type__create_attribute( - 'sim_contact', -- content_type - 'internal_mail_adress', -- attribute_name - 'string', -- datatype - 'Internal Mail Addresss', -- pretty_name - 'Internal Mail Addresses', -- pretty_plural - 1, -- sort_order - null, -- default_value - 'varchar(1000)' -- column_spec -); Index: openacs-4/contrib/packages/simulation/tcl/apm-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/tcl/Attic/apm-callback-procs.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/contrib/packages/simulation/tcl/apm-callback-procs.tcl 14 Oct 2003 13:58:03 -0000 1.1 +++ openacs-4/contrib/packages/simulation/tcl/apm-callback-procs.tcl 17 Oct 2003 09:22:55 -0000 1.2 @@ -21,6 +21,6 @@ -folder_label "${instance_name} Root" \ -parent_id 0 \ -package_id $package_id \ - -content_types { sim_character sim_prop sim_home sim_contact file_storage_object }] + -content_types { sim_character sim_prop sim_home file_storage_object content_template }] } Index: openacs-4/contrib/packages/simulation/www/object-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/www/Attic/object-edit.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/contrib/packages/simulation/www/object-edit.tcl 14 Oct 2003 14:59:51 -0000 1.2 +++ openacs-4/contrib/packages/simulation/www/object-edit.tcl 17 Oct 2003 09:22:55 -0000 1.3 @@ -4,27 +4,24 @@ @creation-date 2003-10-13 @cvs-id $Id$ } { - object_id:integer,optional + item_id:integer,optional parent_id:integer,optional content_type:optional } -validate { - not_object_id { - if { ![exists_and_not_null object_id] } { + not_item_id { + if { ![exists_and_not_null item_id] } { if { ![exists_and_not_null parent_id] } { - ad_complain parent_id "parent_id is required" + ad_complain "parent_id is required" } if { ![exists_and_not_null content_type] } { - ad_complain content_type "parent_id is required" + ad_complain "content_type is required" } } } } -set page_title "Create Object" -set context [list [list "object-list" "Objects"] $page_title] - -ad_form -name object -form { - {object_id:key} +ad_form -name object -cancel_url object-list -form { + {item_id:key} {content_type:text(hidden)} {parent_id:integer(hidden),optional} {title:text @@ -34,23 +31,65 @@ {name:text,optional {label "URL name"} {html {size 50}} - {help_text {[ad_decode [ad_form_new_p -key object_id] 1 "This will become part of the URL for the object." ""]}} - {mode {[ad_decode [ad_form_new_p -key object_id] 1 "edit" "display"]}} + {help_text {[ad_decode [ad_form_new_p -key item_id] 1 "This will become part of the URL for the object." ""]}} + {mode {[ad_decode [ad_form_new_p -key item_id] 1 "edit" "display"]}} } {description:text(textarea),optional {label "Description"} {html {cols 60 rows 8}} } } -if { ![ad_form_new_p -key object_id] } { +if { ![ad_form_new_p -key item_id] } { # Get data for existing object - array set item_info [bcms::item::get_item -item_id $object_id -revision live] + array set item_info [bcms::item::get_item -item_id $item_id -revision live] item::get_revision_content $item_info(revision_id) set content_type $item_info(content_type) + set page_title "Edit Object" +} else { + set object_type_pretty [db_string pretty { select pretty_name from acs_object_types where object_type = :content_type }] + set page_title "Create $object_type_pretty" } +set context [list [list "object-list" "Objects"] $page_title] +##### +# +# Content edit/upload method +# +##### + +array set content_method { + sim_character richtext + sim_home richtext + sim_prop richtext +} + +if { [info exists content_method($content_type)] } { + + switch $content_method($content_type) { + richtext { + ad_form -extend -name object -form { + {content_elm:richtext(richtext),optional + {label "Content"} + {html {cols 60 rows 8}} + } + } + } + upload { + + } + } + +} + + +##### +# +# Dynamic attributes for the content type +# +##### + # LARS: I'm doing this as a proof-of-concept type thing. If it works well enough for us, # we'll want to generalize and move into acs-content-repository @@ -161,11 +200,15 @@ -parent_id $parent_id \ -content_type $content_type] + set content_text [template::util::richtext::get_property contents $content_elm] + set mime_type [template::util::richtext::get_property format $content_elm] + set revision_id [bcms::revision::add_revision \ -item_id $item_id \ -title $title \ -content_type $content_type \ - -mime_type "text/plain" \ + -mime_type $mime_type \ + -content $content_text \ -description $description \ -additional_properties $attributes] @@ -183,13 +226,18 @@ set attr__${content_type}__${attribute_name} $content($attribute_name) } + set content_elm [template::util::richtext::create $content(text) $content(mime_type)] } -edit_data { + set content_text [template::util::richtext::get_property contents $content_elm] + set mime_type [template::util::richtext::get_property format $content_elm] + set revision_id [bcms::revision::add_revision \ - -item_id $object_id \ + -item_id $item_id \ -title $title \ -content_type $content_type \ - -mime_type "text/plain" \ + -mime_type $mime_type \ + -content $content_text \ -description $description \ -additional_properties $attributes] Index: openacs-4/contrib/packages/simulation/www/object-list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/www/Attic/object-list.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/contrib/packages/simulation/www/object-list.tcl 14 Oct 2003 14:59:51 -0000 1.2 +++ openacs-4/contrib/packages/simulation/www/object-list.tcl 17 Oct 2003 09:22:55 -0000 1.3 @@ -60,11 +60,11 @@ [template::list::orderby_clause -orderby -name "objects"] " { set description [string_truncate -len 200 $description] - set edit_url [export_vars -base "object-edit" { { object_id $item_id } }] + set edit_url [export_vars -base "object-edit" { item_id }] set view_url [export_vars -base "object/$name"] } -set sim_types { sim_character sim_prop sim_home sim_contact file_storage_object } +set sim_types { sim_character sim_prop sim_home } db_multirow -extend { create_url label } object_types select_object_types " select ot.object_type as content_type, @@ -74,4 +74,7 @@ " { set create_url [export_vars -base object-edit { content_type parent_id }] set label "Create new $pretty_name" + } + +#multirow append object_types content_template "Template" [export_vars -base template-edit] "Upload new Template" Index: openacs-4/packages/simulation/lib/object-display.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/lib/object-display.adp,v diff -u -r1.1 -r1.2 --- openacs-4/packages/simulation/lib/object-display.adp 14 Oct 2003 13:58:03 -0000 1.1 +++ openacs-4/packages/simulation/lib/object-display.adp 17 Oct 2003 09:22:55 -0000 1.2 @@ -2,5 +2,7 @@ @page_title;noquote@ @context;noquote@ -

+@content_html;noquote@ + +Edit Index: openacs-4/packages/simulation/lib/object-display.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/lib/object-display.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/simulation/lib/object-display.tcl 14 Oct 2003 14:59:50 -0000 1.2 +++ openacs-4/packages/simulation/lib/object-display.tcl 17 Oct 2003 09:22:55 -0000 1.3 @@ -20,16 +20,23 @@ # get the item by url if now revision id is given if { ![info exists revision_id] } { - array set current_item [bcms::item::get_item_by_url -root_id $root_id -url $extra_url -revision live] + array set item [bcms::item::get_item_by_url -root_id $root_id -url $extra_url -revision live] } else { - array set current_item [bcms::revision::get_revision -revision_id $revision_id] + array set item [bcms::revision::get_revision -revision_id $revision_id] } +item::get_content \ + -revision_id $item(revision_id) \ + -array content -item::get_revision_content $current_item(revision_id) +set content_html [ad_html_text_convert -from $content(mime_type) -to "text/html" -- $content(text)] -# TODO: Render using template -#set rendered [publish::merge_with_template $current_item(item_id)] +###### +# +# Temporary hack to dipslay attributes +# +##### + template::list::create \ -name attributes \ -multirow attributes \ @@ -42,12 +49,44 @@ } } + multirow create attributes attribute value -set page_title $current_item(title) +set page_title $item(title) set context [list [list ../object-list "Objects"] $page_title] foreach name [lsort [array names content]] { multirow append attributes $name $content($name) } + +if { [permission::write_permission_p -object_id $item(item_id)] } { + set edit_url [export_vars -base [ad_conn package_url]object-edit { { item_id $item(item_id) } }] +} + + +##### +# +# Render using template +# +##### + +# Dropped +return + +item::get_content \ + -revision_id [item::get_live_revision [item::get_template_id $item(item_id)]] \ + -array template + +# Make content available to rendered page +foreach __elm [array names content] { + set $__elm $content($__elm) +} + + +publish::push_id $item_id $revision_id +set code [template::adp_compile -string $template(text)] +set rendered_page [template::adp_eval code] +publish::pop_id + + Index: openacs-4/packages/simulation/sql/postgresql/simulation-content-types-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/sql/postgresql/simulation-content-types-create.sql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/simulation/sql/postgresql/simulation-content-types-create.sql 14 Oct 2003 13:58:03 -0000 1.1 +++ openacs-4/packages/simulation/sql/postgresql/simulation-content-types-create.sql 17 Oct 2003 09:22:55 -0000 1.2 @@ -80,38 +80,16 @@ select content_type__create_attribute( 'sim_home', -- content_type 'stylesheet', -- attribute_name - 'string', -- datatype + 'text', -- datatype 'Stylesheet', -- pretty_name 'Stylesheets', -- pretty_plural 5, -- sort_order null, -- default_value - 'varchar(4000)' -- column_spec + 'text' -- column_spec ); --- sim_contact - -select content_type__create_type( - 'sim_contact', -- content_type - 'content_revision', -- supertype - 'Contact', -- pretty_name, - 'Contacts', -- pretty_plural - 'sim_contacts', -- table_name - 'contact_id', -- id_column - null -- name_method -); - -select content_type__create_attribute( - 'sim_contact', -- content_type - 'internal_mail_adress', -- attribute_name - 'string', -- datatype - 'Internal Mail Addresss', -- pretty_name - 'Internal Mail Addresses', -- pretty_plural - 1, -- sort_order - null, -- default_value - 'varchar(1000)' -- column_spec -); Index: openacs-4/packages/simulation/tcl/apm-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/tcl/apm-callback-procs.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/simulation/tcl/apm-callback-procs.tcl 14 Oct 2003 13:58:03 -0000 1.1 +++ openacs-4/packages/simulation/tcl/apm-callback-procs.tcl 17 Oct 2003 09:22:55 -0000 1.2 @@ -21,6 +21,6 @@ -folder_label "${instance_name} Root" \ -parent_id 0 \ -package_id $package_id \ - -content_types { sim_character sim_prop sim_home sim_contact file_storage_object }] + -content_types { sim_character sim_prop sim_home file_storage_object content_template }] } Index: openacs-4/packages/simulation/www/object-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/www/Attic/object-edit.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/simulation/www/object-edit.tcl 14 Oct 2003 14:59:51 -0000 1.2 +++ openacs-4/packages/simulation/www/object-edit.tcl 17 Oct 2003 09:22:55 -0000 1.3 @@ -4,27 +4,24 @@ @creation-date 2003-10-13 @cvs-id $Id$ } { - object_id:integer,optional + item_id:integer,optional parent_id:integer,optional content_type:optional } -validate { - not_object_id { - if { ![exists_and_not_null object_id] } { + not_item_id { + if { ![exists_and_not_null item_id] } { if { ![exists_and_not_null parent_id] } { - ad_complain parent_id "parent_id is required" + ad_complain "parent_id is required" } if { ![exists_and_not_null content_type] } { - ad_complain content_type "parent_id is required" + ad_complain "content_type is required" } } } } -set page_title "Create Object" -set context [list [list "object-list" "Objects"] $page_title] - -ad_form -name object -form { - {object_id:key} +ad_form -name object -cancel_url object-list -form { + {item_id:key} {content_type:text(hidden)} {parent_id:integer(hidden),optional} {title:text @@ -34,23 +31,65 @@ {name:text,optional {label "URL name"} {html {size 50}} - {help_text {[ad_decode [ad_form_new_p -key object_id] 1 "This will become part of the URL for the object." ""]}} - {mode {[ad_decode [ad_form_new_p -key object_id] 1 "edit" "display"]}} + {help_text {[ad_decode [ad_form_new_p -key item_id] 1 "This will become part of the URL for the object." ""]}} + {mode {[ad_decode [ad_form_new_p -key item_id] 1 "edit" "display"]}} } {description:text(textarea),optional {label "Description"} {html {cols 60 rows 8}} } } -if { ![ad_form_new_p -key object_id] } { +if { ![ad_form_new_p -key item_id] } { # Get data for existing object - array set item_info [bcms::item::get_item -item_id $object_id -revision live] + array set item_info [bcms::item::get_item -item_id $item_id -revision live] item::get_revision_content $item_info(revision_id) set content_type $item_info(content_type) + set page_title "Edit Object" +} else { + set object_type_pretty [db_string pretty { select pretty_name from acs_object_types where object_type = :content_type }] + set page_title "Create $object_type_pretty" } +set context [list [list "object-list" "Objects"] $page_title] +##### +# +# Content edit/upload method +# +##### + +array set content_method { + sim_character richtext + sim_home richtext + sim_prop richtext +} + +if { [info exists content_method($content_type)] } { + + switch $content_method($content_type) { + richtext { + ad_form -extend -name object -form { + {content_elm:richtext(richtext),optional + {label "Content"} + {html {cols 60 rows 8}} + } + } + } + upload { + + } + } + +} + + +##### +# +# Dynamic attributes for the content type +# +##### + # LARS: I'm doing this as a proof-of-concept type thing. If it works well enough for us, # we'll want to generalize and move into acs-content-repository @@ -161,11 +200,15 @@ -parent_id $parent_id \ -content_type $content_type] + set content_text [template::util::richtext::get_property contents $content_elm] + set mime_type [template::util::richtext::get_property format $content_elm] + set revision_id [bcms::revision::add_revision \ -item_id $item_id \ -title $title \ -content_type $content_type \ - -mime_type "text/plain" \ + -mime_type $mime_type \ + -content $content_text \ -description $description \ -additional_properties $attributes] @@ -183,13 +226,18 @@ set attr__${content_type}__${attribute_name} $content($attribute_name) } + set content_elm [template::util::richtext::create $content(text) $content(mime_type)] } -edit_data { + set content_text [template::util::richtext::get_property contents $content_elm] + set mime_type [template::util::richtext::get_property format $content_elm] + set revision_id [bcms::revision::add_revision \ - -item_id $object_id \ + -item_id $item_id \ -title $title \ -content_type $content_type \ - -mime_type "text/plain" \ + -mime_type $mime_type \ + -content $content_text \ -description $description \ -additional_properties $attributes] Index: openacs-4/packages/simulation/www/object-list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/www/Attic/object-list.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/simulation/www/object-list.tcl 14 Oct 2003 14:59:51 -0000 1.2 +++ openacs-4/packages/simulation/www/object-list.tcl 17 Oct 2003 09:22:55 -0000 1.3 @@ -60,11 +60,11 @@ [template::list::orderby_clause -orderby -name "objects"] " { set description [string_truncate -len 200 $description] - set edit_url [export_vars -base "object-edit" { { object_id $item_id } }] + set edit_url [export_vars -base "object-edit" { item_id }] set view_url [export_vars -base "object/$name"] } -set sim_types { sim_character sim_prop sim_home sim_contact file_storage_object } +set sim_types { sim_character sim_prop sim_home } db_multirow -extend { create_url label } object_types select_object_types " select ot.object_type as content_type, @@ -74,4 +74,7 @@ " { set create_url [export_vars -base object-edit { content_type parent_id }] set label "Create new $pretty_name" + } + +#multirow append object_types content_template "Template" [export_vars -base template-edit] "Upload new Template"