Index: openacs-4/packages/acs-object-management/catalog/acs-object-management.en_US.ISO-8859-1.xml
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/catalog/acs-object-management.en_US.ISO-8859-1.xml,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/acs-object-management/catalog/acs-object-management.en_US.ISO-8859-1.xml 29 Nov 2009 16:22:31 -0000 1.4
+++ openacs-4/packages/acs-object-management/catalog/acs-object-management.en_US.ISO-8859-1.xml 22 Dec 2009 19:59:15 -0000 1.5
@@ -40,6 +40,7 @@
Edit widget parameters
Chose the attrbiute for this widget.
Form elements
+ There was an error previewing your widget: %errmsg%. Click back to fix the problem.
Export
Form
Form Elements
@@ -50,13 +51,15 @@
Help Text
Inherited Attributes
Is Required
+ Literal
Manage Form
move down
move up
you must supply either -multirow or -indexed_array
No
node 'element' must have either a 'name' attribute or an 'attribute' attribute.
Object Type
+ Object View
Parameter
Parameter "%param%"
Source
@@ -77,7 +80,9 @@
Remove Element from Form
remove widget
Required?
+ source
Supertype
+ Tcl Proc
Types
unable to retrieve widget parameter %name% for attribute %attribute_id% - returning "" as parameter value
View
@@ -87,5 +92,6 @@
Widget Add/Edit
-- Default Widget --
Choose widget type
+ Widget Parameters
Yes
Index: openacs-4/packages/acs-object-management/sql/postgresql/acs-templating-changes-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/sql/postgresql/acs-templating-changes-create.sql,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/acs-object-management/sql/postgresql/acs-templating-changes-create.sql 10 Dec 2009 22:24:27 -0000 1.2
+++ openacs-4/packages/acs-object-management/sql/postgresql/acs-templating-changes-create.sql 22 Dec 2009 19:59:15 -0000 1.3
@@ -3,23 +3,41 @@
create table acs_form_widgets (
widget text
constraint acs_form_widgets_pk
- primary key
+ primary key
);
+comment on table acs_form_widgets is '
+ Canonical list of all template form widgets defined in the system.
+';
+
create table acs_form_default_widgets (
widget text
constraint acs_form_default_widgets_fk
- references acs_form_widgets,
+ references acs_form_widgets,
datatype text
constraint acs_form_default_widgets_datatype_fk
references acs_datatypes (datatype),
primary key (widget, datatype)
);
comment on table acs_form_widgets is '
- Canonical list of all template form widgets defined in the system.
+ List of all default template form widgets for each datatype.
';
+create table acs_form_allowable_widgets (
+ widget text
+ constraint acs_form_allowable_widgets_fk
+ references acs_form_widgets,
+ datatype text
+ constraint acs_form_allowable_widgets_datatype_fk
+ references acs_datatypes (datatype),
+ primary key (widget, datatype)
+);
+
+comment on table acs_form_allowable_widgets is '
+ List of all template form widgets mapped to possible datatypes.
+';
+
create sequence acs_form_widget_param_seq;
create table acs_form_widget_params (
@@ -39,6 +57,9 @@
html_p boolean
constraint acs_form_widget_params_html_p_nn
not null,
+ tcl_allowed_p boolean
+ constraint acs_form_widget_params_tcl_allowed_p_nn
+ not null,
default_value text
);
@@ -92,7 +113,7 @@
not null
constraint acs_view_attr_widg_params_param_src_ck
check (param_source in ('literal', 'query', 'eval')),
- value text,
+ value text,
constraint acs_view_attr_widg_params_attr_fk
foreign key (object_view, attribute_id)
@@ -115,155 +136,198 @@
insert into acs_form_widgets (widget) values ('text');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (10, 'text', 'size', 'f', 't', '30');
+ (10, 'text', 'size', 'f', 't', 'f', '30');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (11, 'text', 'maxlength', 'f', 't', null);
+ (11, 'text', 'maxlength', 'f', 't', 'f', null);
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (12, 'text', 'value', 'f', 'f', 't', null);
+
-- textarea widget
insert into acs_form_widgets (widget) values ('textarea');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (20, 'textarea', 'rows', 'f', 't', '6');
+ (20, 'textarea', 'rows', 'f', 't', 'f', '6');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (30, 'textarea', 'cols', 'f', 't', '60');
+ (30, 'textarea', 'cols', 'f', 't', 'f', '60');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (31, 'textarea', 'wrap', 'f', 't', 'physical');
+ (31, 'textarea', 'wrap', 'f', 't', 'f', 'physical');
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (32, 'textarea', 'value', 'f', 'f', 't', null);
+
-- radio widget
insert into acs_form_widgets (widget) values ('radio');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (40, 'radio', 'options', 't', 'f', null);
+ (40, 'radio', 'options', 't', 'f', 't', null);
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (41, 'radio', 'values', 'f', 'f', null);
+ (41, 'radio', 'values', 'f', 'f', 't', null);
-- checkbox widget
insert into acs_form_widgets (widget) values ('checkbox');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (50, 'checkbox', 'options', 't', 'f', null);
+ (50, 'checkbox', 'options', 't', 'f', 't', null);
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (51, 'checkbox', 'values', 'f', 'f', null);
+ (51, 'checkbox', 'values', 'f', 'f', 't', null);
-- select widget
insert into acs_form_widgets (widget) values ('select');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (60, 'select', 'options', 't', 'f', '{ -- {} }');
+ (60, 'select', 'options', 't', 'f', 't', '{ -- {} }');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (61, 'select', 'values', 'f', 'f', '{}');
+ (61, 'select', 'values', 'f', 'f', 't', '{}');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (70, 'select', 'size', 'f', 't', null);
+ (70, 'select', 'size', 'f', 't', 'f', null);
-- multiselect widget
insert into acs_form_widgets (widget) values ('multiselect');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (80, 'multiselect', 'options', 't', 'f', null);
+ (80, 'multiselect', 'options', 't', 'f', 't', null);
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (90, 'multiselect', 'size', 'f', 't', null);
+ (90, 'multiselect', 'size', 'f', 't', 'f', null);
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (91, 'multiselect', 'values', 'f', 'f', null);
+ (91, 'multiselect', 'values', 'f', 'f', 't', null);
-- timestamp widget
insert into acs_form_widgets (widget) values ('timestamp');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (92, 'timestamp', 'format', 'f', 'f', null);
+ (92, 'timestamp', 'format', 'f', 'f', 't', null);
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (93, 'timestamp', 'year_interval', 'f', 'f', null);
+ (93, 'timestamp', 'year_interval', 'f', 'f', 'f', null);
-- date widget
insert into acs_form_widgets (widget) values ('date');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (100, 'date', 'format', 'f', 'f', null);
+ (100, 'date', 'format', 'f', 'f', 't', null);
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (110, 'date', 'year_interval', 'f', 'f', null);
+ (110, 'date', 'year_interval', 'f', 'f', 'f', null);
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (111, 'date', 'value', 'f', 'f', 't', null);
+
-- richtext widget
insert into acs_form_widgets (widget) values ('richtext');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (200, 'richtext', 'rows', 'f', 't', '20');
+ (200, 'richtext', 'rows', 'f', 't', 'f', '20');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (230, 'richtext', 'cols', 'f', 't', '80');
+ (230, 'richtext', 'cols', 'f', 't', 'f', '80');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (231, 'richtext', 'wrap', 'f', 't', 'physical');
+ (231, 'richtext', 'wrap', 'f', 't', 'f', 'physical');
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (232, 'richtext', 'value', 'f', 'f', 't', null);
+
-- search widget
insert into acs_form_widgets (widget) values ('search');
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (120, 'search', 'search_query', 't', 'f', null);
+ (120, 'search', 'search_query', 't', 'f', 'f', null);
insert into acs_form_widget_params
- (param_id, widget, param, required_p, html_p, default_value)
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
values
- (121, 'search', 'result_datatype', 'f', 'f', 'search');
+ (121, 'search', 'result_datatype', 'f', 'f', 't', 'search');
-- currency widget
insert into acs_form_widgets (widget) values ('currency');
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (240, 'currency', 'format', 'f', 'f', 't', null);
+
+ -- file widget
+ insert into acs_form_widgets (widget) values ('file');
+
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (250, 'file', 'format', 'f', 'f', 't', null);
+
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (251, 'file', 'size', 'f', 't', 'f', null);
+
+ insert into acs_form_widget_params
+ (param_id, widget, param, required_p, html_p, tcl_allowed_p, default_value)
+ values
+ (252, 'file', 'maxlength', 'f', 't', 'f', null);
+
end;
-- default widgets for datatypes
@@ -359,5 +423,245 @@
(datatype, widget)
values
('naturalnum', 'text');
-
+
end;
+
+
+begin;
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('url', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('richtext', 'richtext');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('text', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('string', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('boolean', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('number', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('integer', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('currency', 'currency');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('currency', 'select');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('currency', 'multiselect');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('currency', 'radio');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('currency', 'checkbox');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('enumeration', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('email', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('file', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('keyword', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('date', 'date');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('timestamp', 'timestamp');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('time_of_day', 'timestamp');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('filename', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('float', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('naturalnum', 'text');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('file', 'file');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('text','textarea');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('string','textarea');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('richtext','textarea');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('text','radio');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('boolean','radio');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('integer','radio');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('naturalnum','radio');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('float','radio');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('text','checkbox');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('boolean','checkbox');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('integer','checkbox');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('naturalnum','checkbox');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('float','checkbox');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('text','select');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('keyword','select');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('integer','select');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('naturalnum','select');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('float','select');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('text','multiselect');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('keyword','multiselect');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('integer','multiselect');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('naturalnum','multiselect');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('float','multiselect');
+
+ insert into acs_form_allowable_widgets
+ (datatype, widget)
+ values
+ ('text','search');
+
+end;
\ No newline at end of file
Index: openacs-4/packages/acs-object-management/tcl/form-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/tcl/form-procs.xql,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/acs-object-management/tcl/form-procs.xql 11 Dec 2009 00:19:09 -0000 1.2
+++ openacs-4/packages/acs-object-management/tcl/form-procs.xql 22 Dec 2009 19:59:15 -0000 1.3
@@ -16,14 +16,14 @@
- select afwp.param, afwp.html_p, aovawp.value
+ select afwp.param, afwp.html_p, aovawp.value, aovawp.param_source
from acs_form_widget_params afwp, acs_view_attribute_widget_params aovawp,
acs_view_attribute_widgets avaw
where avaw.object_view = :object_view
and aovawp.attribute_id = :attribute_id
and afwp.param_id = aovawp.param_id
union
- select afwp2.param, afwp2.html_p, afwp2.default_value as value
+ select afwp2.param, afwp2.html_p, afwp2.default_value as value, '' as param_source
from acs_form_widget_params afwp2
where not exists (select 1
from acs_view_attribute_widgets
Index: openacs-4/packages/acs-object-management/tcl/widget-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/tcl/widget-procs.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-object-management/tcl/widget-procs.tcl 27 Nov 2009 00:38:50 -0000 1.1
+++ openacs-4/packages/acs-object-management/tcl/widget-procs.tcl 22 Dec 2009 19:59:15 -0000 1.2
@@ -79,10 +79,20 @@
db_dml delete {}
}
+ad_proc object_view::attribute::widget::param::delete_all {
+ -object_view:required
+ -attribute_id:required
+} {
+} {
+ db_dml delete_all {}
+}
+
ad_proc object_view::attribute::widget::param::set {
-object_view:required
-attribute_id:required
-param_id:required
+ {-param_type "onevalue"}
+ {-param_source "literal"}
-value:required
} {
} {
Index: openacs-4/packages/acs-object-management/tcl/widget-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/tcl/widget-procs.xql,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-object-management/tcl/widget-procs.xql 27 Nov 2009 00:38:50 -0000 1.1
+++ openacs-4/packages/acs-object-management/tcl/widget-procs.xql 22 Dec 2009 19:59:15 -0000 1.2
@@ -67,6 +67,14 @@
+
+
+ delete from acs_view_attribute_widget_params
+ where object_view = :object_view
+ and attribute_id = :attribute_id
+
+
+
select 1
@@ -80,7 +88,9 @@
update acs_view_attribute_widget_params
- set value = :value
+ set param_type = :param_type,
+ param_source = :param_source,
+ value = :value
where object_view = :object_view
and attribute_id = :attribute_id
and param_id = :param_id
@@ -90,9 +100,9 @@
insert into acs_view_attribute_widget_params
- (object_view, attribute_id, param_id, value)
+ (object_view, attribute_id, param_id, param_type, param_source, value)
values
- (:object_view, :attribute_id, :param_id, :value)
+ (:object_view, :attribute_id, :param_id, :param_type, :param_source, :value)
Index: openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.tcl 27 Nov 2009 00:38:50 -0000 1.1
+++ openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.tcl 22 Dec 2009 19:59:15 -0000 1.2
@@ -51,6 +51,9 @@
} -on_submit {
db_transaction {
if { [db_0or1row get_reg_widget {}] && $registered_widget ne $widget } {
+ object_view::attribute::widget::param::delete_all \
+ -object_view $object_view \
+ -attribute_id $attribute_id
object_view::attribute::widget::unregister \
-object_view $object_view \
-attribute_id $attribute_id
Index: openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.xql,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.xql 27 Nov 2009 00:38:50 -0000 1.1
+++ openacs-4/packages/acs-object-management/www/admin/widget-add-edit-1.xql 22 Dec 2009 19:59:15 -0000 1.2
@@ -4,7 +4,10 @@
select widget, widget
- from acs_form_widgets
+ from acs_form_allowable_widgets
+ where datatype = (select datatype
+ from acs_attributes
+ where attribute_id = :attribute_id)
Index: openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl 27 Nov 2009 00:38:50 -0000 1.1
+++ openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl 22 Dec 2009 19:59:15 -0000 1.2
@@ -10,31 +10,48 @@
ad_form -name widget_register -export {attribute_id object_view} -form {
{object_view_pretty:text(inform)
- {label "Object View"}
+ {label #acs-object-management.object_view#}
}
{attribute_name_pretty:text(inform)
- {label "Attribute"}
+ {label #acs-object-management.attribute#}
}
{widget:keyword(inform)
- {label "Widget"}
+ {label #acs-object-management.widget#}
}
- {-section "Widget Parameters" {legendtext "Widget Parameters"}}
+ {-section "Widget Parameters" {legendtext #acs-object-management.widget_parameters#}}
}
-db_multirow params get_params {} {
+db_multirow -unclobber params get_params {} {
+ if {$param_source eq "literal"} {
+ # reverse transform any escaped characters when we submitted
+ set value [string map {\\$ $ \\[ [ \\] ] \\\\ \\} $value]
+ }
set optional_flag [expr { $required_p ? "" : ",optional" }]
set param [lang::util::localize $param]
- ad_form -extend -name widget_register -form {
- {${param}:text(textarea)$optional_flag}
+ if { $tcl_allowed_p } {
+ set param_source_options {{#acs-object-management.literal# literal} {#acs-object-management.tcl_proc# eval}}
+ } else {
+ set param_source_options {{#acs-object-management.literal# literal}}
}
+ if {[lsearch -exact {value values options} $param] > -1} {
+ ad_form -extend -name widget_register -form {
+ {${param}_source:text(radio)
+ {label {$param #acs-object-management.source#}}
+ {options $param_source_options}
+ {value $param_source}
+ }
+ }
+ }
+ ad_form -extend -name widget_register -form {
+ {${param}:text(textarea)$optional_flag {html {rows 6 cols 50}}}
+ }
}
ad_form -extend -name widget_register -on_request {
db_1row get_attr_info ""
set object_view_pretty [lang::util::localize $object_view_pretty]
set attribute_name_pretty [lang::util::localize $attribute_name_pretty]
ad_set_form_values object_view_pretty attribute_name_pretty widget
-
for { set i 1 } { $i <= [template::multirow size params] } { incr i } {
ad_set_element_value -element [template::multirow get params $i param] \
[template::multirow get params $i value]
@@ -43,8 +60,17 @@
wizard submit widget_register -buttons { back next }
} -on_submit {
for { set i 1 } { $i <= [template::multirow size params] } { incr i } {
+ set param [template::multirow get params $i param]
set value [template::element::get_value widget_register [template::multirow get params $i param]]
set param_id [template::multirow get params $i param_id]
+ set param_source literal
+ if {[lsearch -exact {value values options} $param] > -1} {
+ set param_source [template::element::get_value widget_register ${param}_source]
+ }
+ if {$param_source eq "literal"} {
+ # escape malicious characters
+ set value [string map {$ \\$ [ \\[ ] \\] \\ \\\\} $value]
+ }
if { $value eq "" } {
object_view::attribute::widget::param::delete \
-object_view $object_view \
@@ -55,6 +81,7 @@
-object_view $object_view \
-attribute_id $attribute_id \
-param_id $param_id \
+ -param_source $param_source \
-value $value
}
}
Index: openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.xql,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.xql 27 Nov 2009 00:38:50 -0000 1.1
+++ openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.xql 22 Dec 2009 19:59:15 -0000 1.2
@@ -15,7 +15,8 @@
select
- afwp.param_id, afwp.param, afwp.required_p, afwp.html_p,
+ afwp.param_id, afwp.param, afwp.required_p, afwp.html_p,
+ afwp.tcl_allowed_p,
coalesce(aovawp.value, afwp.default_value) as value,
coalesce(aovawp.param_source,'literal') as param_source
from
Index: openacs-4/packages/acs-object-management/www/admin/widget-add-edit-3.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/www/admin/widget-add-edit-3.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-object-management/www/admin/widget-add-edit-3.tcl 27 Nov 2009 00:38:50 -0000 1.1
+++ openacs-4/packages/acs-object-management/www/admin/widget-add-edit-3.tcl 22 Dec 2009 19:59:15 -0000 1.2
@@ -11,10 +11,15 @@
set last_step [expr $step-1]
set back_url [wizard get_forward_url $last_step]
-ad_form -name widget_preview -has_submit 1 -form \
- [list [form::element \
- -object_view $object_view \
- -attribute_id $attribute_id]]
+if {[catch {
+ ad_form -name widget_preview -has_submit 1 -form \
+ [list [form::element \
+ -object_view $object_view \
+ -attribute_id $attribute_id]]
+} errmsg] } {
+ ad_return_error "[_ acs-subsite.Error]" "[_ acs-object-management.error_previewing_widget]"
+ ad_script_abort
+}
ad_form -name widget_buttons -form {
} -on_request {