Hi Marius, glad to see progress on this. I just tested it and it's great for a first version :-)
I've been able to add and edit some fields pretty seamlessly, that's very cool! We're moving closer and closer to turning XWiki into the easy-to-use app development platform it longs to be. Please see my other remarks below. On Wed, Oct 26, 2011 at 5:31 PM, Marius Dumitru Florea < [email protected]> wrote: > Hi devs, > > I just committed a prototype of the class editor that will be used by > the Application Within Minutes. If you want to try it out, you can > either checkout the feature-applicationWithinMinutes platform branch > (see > https://github.com/xwiki/xwiki-platform/tree/feature-applicationWithinMinutes/xwiki-platform-core/xwiki-platform-applicationWithinMinutes > ) and build the latest XAR by yourself or you can download the > snapshot I put at http://ubuntuone.com/5dPv28OKz1p3ysY2ypjzrZ . It > requires XWiki Enterprise 3.2+ . Follow this steps after you import > the XAR: > > * choose an existing class or any document if you want to create a new > class > * add an object of type XWiki.DocumentSheetBinding and set the sheet > property to ApplicationWithinMinutes.ClassEditSheet > * edit the class/document in "Inline form" edit mode (simply click on > the Edit button) > > Notes: > > * I only tested the editor on Firefox for now but it should work on > other browsers too > * The "hint" and "required" meta properties are not saved yet. I > included them on the prototype just to show you the direction I'm > going in. > > A few words about the design: > > The class editor is an edit sheet for XWiki documents holding class > definitions. The editor supports only property types described by > FormFieldClass, which are grouped by FormFieldCategoryClass. For > instance ApplicationWithinMinutes.TextArea has an object of type > FormFieldClass which specifies the field icon, category and the list > of meta (configuration) properties that should be displayed. Moreover, > ApplicationWithinMinutes.TextArea holds a class definition with a > single TextArea field that serves as a template for all TextArea > fields added through the class editor. The class editor can store the > default field values in the class template and can generate a basic > class sheet (binding included). > > Open questions and limitations: > > (1) The editor relies heavily on JavaScript. If we're going to replace > the current class editor with the one used by the Application Within > Minutes then we need to decide if it needs to work without JavaScript. > I don't think that's an issue, especially given that users with JavaScript deactivated can always revert to the old interface if needed. The interface is designed as a helper, it does not prevent the core functionality from working so I believe it's an acceptable tradeoff. (2) The editor doesn't save intermediary changes (like the current > editor does when you add a new field or when you delete a field). All > changes are saved when you hit Save. > That's ok for now but I think that for the future it's important that when clicking on the green checkmark a minor save be performed (is that in the plans?). It would be too frustrating to create a long class and have all your work lost due to a browser crash. (3) I don't think the Preview button is really needed because the edit > form already offers a preview of how the sheet will look like > Agreed. (4) The problem with the Save & Continue button is this: the action > servlet filter forwards the request based on the action_* request > parameter. In order to prevent this (because I want to handle the > submit by myself) I renamed the submit buttons to xaction_* but > actionbuttons.js looks explicitly for action_saveandcontinue submit > button, and since it doesn't find it, it doesn't include it in the > POST request parameters, so I don't know the request is a Save & > Continue request. > If step-by-step saving can be implemented (see above), I don't think that's a problem. (5) Because I process the submit myself (i.e. the form action is '') I > need to find a good way to handle errors so that the user doesn't > loose unsaved changes due to an invalid value (e.g. invalid field > name). > Live validation would be a way to achieve that, step-by-step saving as well. (6) Although the UI allows it, you can't really swap the names of two > fields (e.g. rename 'title' to 'description' and 'description' to > 'title'). > Live validation would allow to catch and prevent such cases. Great work! Guillaume > I'm waiting your feedback. > > Thanks, > Marius > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > -- Guillaume Lerouge Sales - XWiki SAS Skype: wikibc Office: +33 1 45 42 40 90 Mobile: +33 6 10 79 76 70 _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

