[
https://jira.nuxeo.org/browse/NXP-4930?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anahide Tchertchian updated NXP-4930:
-------------------------------------
Description:
2.1 Currentexistingwidgets
There is a dozen of builtin widget types, to handle common field types: text,
int,
secret, textarea, datetime, file, htmltext, selectOneDirectory,
selectManyDirectory,
checkbox, template, list.
These "builtin" widget types are contributed to the layout service using
extension
points and java classes, in the layout-client module.
Most of them are coded in JAVA, and implement the widget behaviour depending on
the mode: for widget of type "text" for instance, a standard JSF component
"h:out-
putText" will be used in view mode, and "h:inputText" will be used in edit
mode, ac -
companied with a JSF component "h:message" to display conversion/validation er-
rors.
The "template" widget is a little special because it enables the use of a xhtml
page
to describe the widget behaviour: no JAVA code is then involved. Some variables
are
made available within these templates (but they are not properly documented
yet).
More variables could be made available to get more features already offered when
writing the JAVA code.
The "list" widget is also special because it is in fact a widget of type
"template" de -
signed to use an hardcoded template: "/widgets/list_widget_template.xhtml".
So when defining new widget types, two options are available:
- code in JAVA the widget behaviour
- use an xhtml page and hardcode its path in a JAVA class that inherits from
the template widget type handler.
2.2 Currentwidget templates
There is a lot of widget templates in several nuxeo packages: even if these tem-
plates are sometimes generic, they are not registered to the layout service
exten-
sion point. Using them requires to use a widget of type "template" and state in
the
widget properties the template path.
These widgets could be easily added to the list of "builtin" available widgets.
Here is the list of generic widgets:
- complex_widget_template.xhtml (from layout-client): makes it possible to map a
complex field (map-like) by defining sub-widgets for each item of the map. It
could be repackaged as a template widget named "complex".
- complex_list_item_widget_template.xhtml (from layout-client): makes it
possible
to map a complex field (map-like) when the field is held in a list. It is
different
from a simple complex widget because the mapping of sub-fields cannot be
done exactly in the same way in both cases. It could be repackaged as a tem-
plate widget named "complex_list_item".
- list_subwidget_template.xhtml (from layout-client): makes it possible to map
a
sub-field of type list by defining sub-widgets for each element of the list
(e.g
when defining a structure involving a list of lists). It could be repackaged
as a
template widget named "sublist".
It is different from the simple "list" widget handler because the first list
widget
will define an ajax region and an iteration variable that would get mixed up
with
the sublist ajax region and iteration variable: this template does not
define a
new ajax region, and uses a distinct iteration variable. Note that yet
another
template would be needed to handle a list of lists of lists, to use a
distinct itera -
tion variable.
- user_password_validation_widget_template.xhtml (from webapp-base): provides
an hidden field that performs validation over password and password confirma-
tion (to check that they match). It depends on webapp-base seam components,
so it should not be made available in layout-client, but it could be
repackaged
here as a template widget named "single_user_group_suggestion". It also
provides a basic cross-validation example.
- single_user_suggestion_widget_template.xhtml (from webapp-base): provides a
suggestion box for a single user/group selection. It depends on webapp-base
user management seam components, so it should not be made available in lay-
out-client, but it could be repackaged here as a template widget named
"single_user_group_suggestion".
- user_suggestion_widget_template.xhtml (from webapp-base): provides a sug-
gestion box for a list of users/group selection. It depends on webapp-base
user
management seam components, so it should not be made available in layout-cli-
ent, but it could be repackaged here as a template widget
named
"user_group_suggestion".
- user_prefixed_suggestion_widget_template.xhtml (ffrom webapp-base): sames
as above, but provides "user:" and "group:" prefixes when selecting users and
groups, which is useful when needing to identify the selection type (for
workflow
participants for instance). It could be repackaged as
"prefixed_user_group_sug-
gestion".
Here is the list of specific widgets that could be made generic:
- directive_widget_template.xhtml (from
jbpm-web),
protocol_type_widget_template.xhtml (from
mail-web),
moderation_type_widget_template.xhtml (from webapp) : these are select one
menus with specific values that are not stored in a directory. They could be
rewritten using a generic selection widget (see chapter 2.5)
- duedate_widget_template.xhtml (from jbpm-web): this is a datetime widget with
an additional validator. This can be expressed in the XML and does not
require a
template. It should be removed and the widget calling it should be rewritten.
- emails_limit_widget_template.xhtml (from mail-web): this is standard text
widget with a standard JSF validator. It could be rewritten using a generic
way-
of defining validators (see chapter 2.4)
- join_list_widget_widget_template.xhtml (from mail-web) and contributors-
widget.xhtml (from webapp): these are templates presenting a list of items
joined with a given character, and final delimiter. This could be addressed
providing more presentation options to the list widget in view mode (see
chapter 2.3)
- subjects_widget.xhtml (from webapp), coverage_widget.xhtml (from webapp),
chain_monoselect_2levels_widget.xhtml (from studio)
and
chain_multiselect_2levels_widget.xhtml (from studio): these are chain select
widget templates. Templates used in studio are more generic and could be
packaged as is in ui-web, naming them "chain_monoselect_2levels" and
"chain_multiselect_2levels", and subjects and coverage widgets rewritten to
use
them, but improvements to chain select may have to be considered first (see
chapter 2.5)
- nolabel_list_widget_template.xhtml (from
webapp),
studio_list_widget_template.xhtml (from studio)
and
files_list_widget_template.xhtml (from webapp) are all variations of the list
widget presentation: sometimes label should not be displayed for each
subwidget of the list, and sometimes input file values need to be kept using
some javascript hack so that chosen file paths are not removed from the DOM
when performing an AJAX action (add or remove a new item from the list for
instance). This could be addressed adding more presentation options for the
list
widget (see chapter 2.3)
- boolean_radio_widget_template.xhtml
and
integer_yes_no_widget_template.xhtml (from webapp): these are presenting
identical screens, but the value stored is either a boolean either an integer.
They could be rewritten using a generic selection widget (see chapter 2.5).
- extended_file_widget.xhtml and extended_subfile_widget.xhtml (from webapp)
are presenting, on top of the file, additional features (live edit, pdf
preview and
preview links). They depend on webapp-core features, so it should not be made
available in layout-client, but it could be repackaged here as template
widgets
named "extended_file" and "extended_subfile".
See
> Package more widgets
> --------------------
>
> Key: NXP-4930
> URL: https://jira.nuxeo.org/browse/NXP-4930
> Project: Nuxeo Enterprise Platform
> Issue Type: Sub-task
> Reporter: Anahide Tchertchian
>
> 2.1 Currentexistingwidgets
>
> There is a dozen of builtin widget types, to handle common field types: text,
> int,
> secret, textarea, datetime, file, htmltext, selectOneDirectory,
> selectManyDirectory,
> checkbox, template, list.
> These "builtin" widget types are contributed to the layout service using
> extension
> points and java classes, in the layout-client module.
> Most of them are coded in JAVA, and implement the widget behaviour depending
> on
> the mode: for widget of type "text" for instance, a standard JSF component
> "h:out-
> putText" will be used in view mode, and "h:inputText" will be used in edit
> mode, ac -
> companied with a JSF component "h:message" to display conversion/validation
> er-
> rors.
> The "template" widget is a little special because it enables the use of a
> xhtml page
> to describe the widget behaviour: no JAVA code is then involved. Some
> variables are
> made available within these templates (but they are not properly documented
> yet).
> More variables could be made available to get more features already offered
> when
> writing the JAVA code.
> The "list" widget is also special because it is in fact a widget of type
> "template" de -
> signed to use an hardcoded template: "/widgets/list_widget_template.xhtml".
> So when defining new widget types, two options are available:
> - code in JAVA the widget behaviour
> - use an xhtml page and hardcode its path in a JAVA class that inherits from
> the template widget type handler.
> 2.2 Currentwidget templates
>
> There is a lot of widget templates in several nuxeo packages: even if these
> tem-
> plates are sometimes generic, they are not registered to the layout service
> exten-
> sion point. Using them requires to use a widget of type "template" and state
> in the
> widget properties the template path.
> These widgets could be easily added to the list of "builtin" available
> widgets.
> Here is the list of generic widgets:
> - complex_widget_template.xhtml (from layout-client): makes it possible to
> map a
> complex field (map-like) by defining sub-widgets for each item of the map.
> It
> could be repackaged as a template widget named "complex".
> - complex_list_item_widget_template.xhtml (from layout-client): makes it
> possible
> to map a complex field (map-like) when the field is held in a list. It is
> different
> from a simple complex widget because the mapping of sub-fields cannot be
> done exactly in the same way in both cases. It could be repackaged as a
> tem-
> plate widget named "complex_list_item".
> - list_subwidget_template.xhtml (from layout-client): makes it possible to
> map a
> sub-field of type list by defining sub-widgets for each element of the
> list (e.g
> when defining a structure involving a list of lists). It could be
> repackaged as a
> template widget named "sublist".
> It is different from the simple "list" widget handler because the first
> list widget
> will define an ajax region and an iteration variable that would get mixed
> up with
> the sublist ajax region and iteration variable: this template does not
> define a
> new ajax region, and uses a distinct iteration variable. Note that yet
> another
> template would be needed to handle a list of lists of lists, to use a
> distinct itera -
> tion variable.
> - user_password_validation_widget_template.xhtml (from webapp-base): provides
> an hidden field that performs validation over password and password
> confirma-
> tion (to check that they match). It depends on webapp-base seam components,
> so it should not be made available in layout-client, but it could be
> repackaged
> here as a template widget named "single_user_group_suggestion". It also
> provides a basic cross-validation example.
> - single_user_suggestion_widget_template.xhtml (from webapp-base): provides a
> suggestion box for a single user/group selection. It depends on webapp-base
> user management seam components, so it should not be made available in lay-
> out-client, but it could be repackaged here as a template widget named
> "single_user_group_suggestion".
> - user_suggestion_widget_template.xhtml (from webapp-base): provides a sug-
> gestion box for a list of users/group selection. It depends on webapp-base
> user
> management seam components, so it should not be made available in
> layout-cli-
> ent, but it could be repackaged here as a template widget
> named
> "user_group_suggestion".
> - user_prefixed_suggestion_widget_template.xhtml (ffrom webapp-base): sames
> as above, but provides "user:" and "group:" prefixes when selecting users
> and
> groups, which is useful when needing to identify the selection type (for
> workflow
> participants for instance). It could be repackaged as
> "prefixed_user_group_sug-
> gestion".
> Here is the list of specific widgets that could be made generic:
> - directive_widget_template.xhtml (from
> jbpm-web),
> protocol_type_widget_template.xhtml (from
> mail-web),
> moderation_type_widget_template.xhtml (from webapp) : these are select one
> menus with specific values that are not stored in a directory. They could
> be
> rewritten using a generic selection widget (see chapter 2.5)
> - duedate_widget_template.xhtml (from jbpm-web): this is a datetime widget
> with
> an additional validator. This can be expressed in the XML and does not
> require a
> template. It should be removed and the widget calling it should be
> rewritten.
> - emails_limit_widget_template.xhtml (from mail-web): this is standard text
> widget with a standard JSF validator. It could be rewritten using a
> generic way-
> of defining validators (see chapter 2.4)
> - join_list_widget_widget_template.xhtml (from mail-web) and contributors-
> widget.xhtml (from webapp): these are templates presenting a list of items
> joined with a given character, and final delimiter. This could be addressed
> providing more presentation options to the list widget in view mode (see
> chapter 2.3)
> - subjects_widget.xhtml (from webapp), coverage_widget.xhtml (from webapp),
> chain_monoselect_2levels_widget.xhtml (from studio)
> and
> chain_multiselect_2levels_widget.xhtml (from studio): these are chain
> select
> widget templates. Templates used in studio are more generic and could be
> packaged as is in ui-web, naming them "chain_monoselect_2levels" and
> "chain_multiselect_2levels", and subjects and coverage widgets rewritten
> to use
> them, but improvements to chain select may have to be considered first (see
> chapter 2.5)
> - nolabel_list_widget_template.xhtml (from
> webapp),
> studio_list_widget_template.xhtml (from studio)
> and
> files_list_widget_template.xhtml (from webapp) are all variations of the
> list
> widget presentation: sometimes label should not be displayed for each
> subwidget of the list, and sometimes input file values need to be kept
> using
> some javascript hack so that chosen file paths are not removed from the DOM
> when performing an AJAX action (add or remove a new item from the list for
> instance). This could be addressed adding more presentation options for
> the list
> widget (see chapter 2.3)
> - boolean_radio_widget_template.xhtml
> and
> integer_yes_no_widget_template.xhtml (from webapp): these are presenting
> identical screens, but the value stored is either a boolean either an
> integer.
> They could be rewritten using a generic selection widget (see chapter 2.5).
> - extended_file_widget.xhtml and extended_subfile_widget.xhtml (from webapp)
> are presenting, on top of the file, additional features (live edit, pdf
> preview and
> preview links). They depend on webapp-core features, so it should not be
> made
> available in layout-client, but it could be repackaged here as template
> widgets
> named "extended_file" and "extended_subfile".
> See
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.nuxeo.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets