On Mon, 07 Apr 2008 19:35:31 +0200, Ludovic Dubost wrote > This is something we would also like to be doing but is significant > work to implement. The querying part would for example be quite complex.. > > Ludovic >
Yes. From other side -- may be putting this in general picture as goal will help with amount of documentation needed and contribution. For example in our case: 1. We need a short text, which is described: what is needed to write mapping of a class. (Main objects and what is needed) and may be one 'placeholder' for specifing access method for fields and database) (visual or some other) 2. (Somebody, already interested in subject [may be I]) can write code to build XWikiclass from value-objects description (sorry, without terms now) 3. If original idea will fail during complexity of task, documentation will be still useful. May be abstraction of pluggable 'Objects backend' [which can be as xwiki (default)] or other can be usefull. It will incapsulate: - form for creating/viewing/editing objects. - actions (or callbucks) for create/read/write task - form for displaying objects in table view - action for querying of such objects in some way. > rssh wrote: > > I like this point. > > BTW, I don't know - are anybody use xwiki in the same manner as I, > > but it would be good also to: > > > > - allows associate XWikiclass with external HQL object > > (or as some ORM mapping from external database). > > - automatically generate form/crud by analyzing VO class > > (or as alternative -- database metadata) > > > > > > > > On Mon, 07 Apr 2008 16:44:27 +0200, Ludovic Dubost wrote > > > >> I've done some experiments to improve applications creating in XWiki. > >> > >> Here is a proposal to allow CRUD (Create, Read, Update, Delete) in > >> XWiki in a more easy manner. > >> > >> The proposal is also available here: > >> http://dev.xwiki.org/xwiki/bin/view/Design/XWikiCRUD > >> > >> The idea is to be able to control all this from an XWiki Class. Some > >> configuration fields would be available for the edit class user interface. > >> > >> Let's take the following use case of creating a client database: > >> > >> - the developer would define an XWiki class with the field > >> describing the clients: name, address, client type, city, country - > >> the developer would choose in the XWiki class the default space to > >> hold the client documents: Clients - the developer would choose an > >> alias for the URL to access the CRUD features: clients - the > >> developer would choose optionnaly to override sheets for the view, > >> edit, create, search, list actions - the developer would choose > >> optionnaly validation controls for the fields or for the whole class > >> (would be used by the create and edit forms automatically) - the > >> developer would choose optionnaly which fields should be visible on > >> the view/edit form and the list/search results - the developer would > >> choose the field to be used to generate the wiki page name for the > >> created documents. If none is set a counter would be used. > >> > >> By doing this. automatically would be made available the following URLs: > >> > >> - /xwiki/bin/clients/create > >> > >> This URL would show the creation form. It would either be the > >> standard one showing the visible fields or the custom form defined > >> in the Create sheet. This is currently equivalent to the 2 step > >> process to create a document with a form. It would be in one step, > >> thanks to the automatic generating of page name using the field in > >> the settings. The document would automatically be created in the > >> space specified in the class settings. > >> > >> /xwiki/bin/clients/view/PageName or /xwiki/bin/clients/PageName > >> > >> This URL would show the view form. It would either be the standard > >> one showing the visible fields or the custom form defined in the > >> Create sheet. This is equivalent to the current document view of a > >> document with a form. Now it would not be necessary to add > >> #includeForm in the content of the document. The content field would > >> still be usable. > >> > >> The wiki document would still be available through it's standard > >> document URL in the space where it is. We would need to decide if we > >> automatically redirect one URL to the other. > >> /xwiki/bin/clients/edit/PageName > >> > >> This URL would show the edit form. It would either be the standard > >> one showing the visible fields or the custom form defined in the > >> Create sheet. This is equivalend to the inline view of a document > >> with a form. Now it would not be necessary to add #includeForm in > >> the content of the document. The content field would still be usable. > >> > >> /xwiki/bin/clients/list or /xwiki/bin/clients/ > >> > >> This URL would allow to show a list of documents with pagination. It > >> would show the columns specified in the class settings. This is > >> equivalent to velocity script we usually create to show the list of > >> documents matching a class. > >> > >> /xwiki/bin/clients/search > >> > >> This URL would allow to show a search interface allowing to choose > >> multiple criterias and search for documents of the class. The > >> results would be similar to the list action. > >> > >> Automatically similar actions would return the same results in XML, > >> RSS or JSON giving a REST interface to the data of the class. The > >> results from these forms would also be available through easy to use > >> velocity macros to be used in other places of the XWiki site. > >> > >> Some questions are still open: > >> > >> - In this scheme, the pages are still available through 2 URLs. We > >> could decide the alias is the space name (automatically) and then > >> the "create, search, list" would be implicit page names in the > >> space. The normal page name URL could be used instead of the new > >> view and edit URLs. The skins can handle this and look for the class > >> params as long as there is some information telling us with class > >> information to use. - The URLs are inverted versus our current URL > >> scheme. An approach could be to stay with the current way to handle > >> URLs and add the create, search, list actions on a space with our > >> without using the alias but the space name. > >> > >> Without alias (only one class by space) > >> /xwiki/bin/create/Clients/ > >> /xwiki/bin/list/Clients/ > >> /xwiki/bin/search/Clients/ > >> With alias (with multiple classes per space, but conflict between > >> alias and space name in view and edit mode): /xwiki/bin/create/clients/ > >> /xwiki/bin/list/clients/ > >> /xwiki/bin/search/clients/ > >> > >> Any ideas, suggestions, remarks ? > >> > >> -- > >> Ludovic Dubost > >> Blog: http://blog.ludovic.org/ > >> XWiki: http://www.xwiki.com > >> Skype: ldubost GTalk: ldubost > >> > > > > > > > > -- > > Ruslan Shevchenko > > GradSoft. http://www.gradsoft.ua > > > > _______________________________________________ > > devs mailing list > > [email protected] > > http://lists.xwiki.org/mailman/listinfo/devs > > > > > > -- > Ludovic Dubost > Blog: http://blog.ludovic.org/ > XWiki: http://www.xwiki.com > Skype: ldubost GTalk: ldubost > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs -- Ruslan Shevchenko GradSoft. http://www.gradsoft.ua _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

