+1, sounds good in general. Trusting you for the details. On Mon, Jul 9, 2012 at 1:54 AM, Sergiu Dumitriu <[email protected]> wrote: > Hi devs, > > Short story: > > Whenever adding new HTML content to the document, like loading the content > of a modal popup, or refreshing the Activity stream, an 'xwiki:dom:updated' > event should be fired, sending the list of added elements in the even memo. > All standard behaviors should also monitor these events and enhance the > newly inserted HTML content, for example adding support for the > suggestDocuments, withTip or maximizable behavior classnames. > > > Long story: > > One of the good features of XWiki is that we have the notion of "behavior > classnames", CSS class names that attach a certain behavior to the affected > element. This usually works by looking for such elements when the DOM is > loaded ('xwiki:dom:loaded' event) and enhancing them with the requested > behavior. > > The problem is that this behavior isn't automatically added for elements > inserted in the DOM after the initial xwiki:dom:loaded event, which means > that the code that inserted those new elements in the DOM tree must also > take extra steps to add the desired behavior, usually with copy/paste, > firing custom events or by re-sending the xwiki:dom:loaded event (which is > wrong). > > I'd like to propose a new standard, the 'xwiki:dom:updated' event. This > works in two ways: > > 1. All the code that inserts new elements will fire such an event, sending > the list of new HTML elements in the 'elements' field of the event memo. For > example: > >> document.fire('xwiki:dom:udated', {'elements': >> [dialog.dialogBox._x_contentPlug]}); > > > The 'elements' field must always be a list, even if only one root element is > inserted, so that adding a set of items (<li> or <tr> elements, for example) > is well supported. > > 2. All code that adds behavior to classnames must also listen to this event > and enhance the sub-elements that have been inserted. For example: > >> document.observe('xwiki:dom:udated', function(event) { >> event.memo.elements.each(function(element) { >> $(element).select('input.withTip').each(function(input) { >> input.observe... >> }); >> }); >> }); > > > I wonder if we should also list the removed elements. In general this would > be needed to cleanup resources, but as far as I know Prototype can take care > of its own cleanup, without any manual steps needed. > -- > Sergiu Dumitriu > http://purl.org/net/sergiu/ > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs
-- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

