Just to add to what I just wrote, I don't see how your ModelView can be applied to User, which already extends a class, MegaProtoUser. Maybe I'm not comprehending this correctly.
Glenn... On Aug 3, 3:48 pm, glenn <[email protected]> wrote: > Naftoli, > > Liked your OneToMany article, but not sure how the new > ModelView and ModelSnippet code can be applied to ManyToMany. > Can you provide a sample? > > Glenn... > > On Aug 2, 1:21 pm, Naftoli Gugenheim <[email protected]> wrote: > > > I put an article on the wiki about OneToMany > > --http://wiki.github.com/dpp/liftweb/how-to-work-with-one-to-many-relat... > > . > > > On Sun, Aug 2, 2009 at 11:20 AM, Naftoli Gugenheim > > <[email protected]>wrote: > > > > Glad to hear. Also see mapper.view.ItemsList (anyone have a better name?), > > > which is used by TableEditor. It's a similar idea without relationships. > > > Should MappedOne/ManyToMany be based on ItemsList? > > > Also should I take Mapped out of those names? After all, they're not > > > MappedFields and they don't correspond to a table column. > > > > ------------------------------------- > > > Magnus Alvestad<[email protected]> wrote: > > > > This work that you've done in Mapper fits in very well with something > > > I've been planning to do. In a Java project some time ago we > > > implemented a 'change engine'. We were loading big pension agreements, > > > manipulating them in a web interface and finally saving them back to > > > the database. While the user was working on the agreement, we > > > generated a list of changes, containing enough information to replay > > > or unroll the change. We could use this to implement undo and some > > > semi-intelligent merging when two users were trying to commit changes > > > to the same agreement. We also let the user review his changes before > > > saving, and we indicated changed fields visually. We were even > > > thinking of implementing some kind of macro or replay functionality, > > > but never got that far. > > > > I've been trying to implement something similar as a lift component, > > > but with the old relationship handling it wasn't practical. With your > > > changes it should be. Thanks! > > > > -Magnus > > > > On Jul 27, 9:57 pm, Naftoli Gugenheim <[email protected]> wrote: > > > > I committed some code last night, which can help building mapper-based > > > view snippets, with G-d's help. It includes the following classes: > > > > (1-2) net.liftweb.mapper.OneToMany, ManyToMany: Gives a more > > > object-oriented approach to managing related entites. You can manage the > > > many side of a 1-n and n-n as a mutable collection of children, and the > > > parent of a child can be set directly, instead of via its id. And the > > > children are not saved to the database when you add them until you call > > > save > > > on it or its parent, nor deleted when you remove tem until you call > > > delete_!, which is very helpful when you need to keep track of > > > adds/removes > > > through multiple requests. For example, if you are displaying a list and > > > you > > > can click delete, but it shouldn't be permanently deleted until you click > > > save. > > > > There is a new package, ...mapper.view, which contains a number of > > > utilities for mapper-based views: > > > > (3-4) ModelView and ModelSnippet provide a number of building blocks for > > > views that are too complex to CRUDify. Inherit ModelSnippet (which extends > > > StatefulSnippet) and wrap your entities in ModelView (view is used in the > > > sense of a wrapper). > > > > (5) Util provides some more building blocks that just be imported, > > > without needing a ModelSnippet context. > > > > (6-7) Paginator makes it easy to create paginated, user sortable > > > listings. You can use PaginatedSnippet instead of ModelSnippet to help. > > > > (8-10) ItemsList lets you manage a list of entities with pending > > > additions and deletions. It's used by TableEditor, which is a very easy to > > > use and customizable snippet to edit tables directly. It's useful for > > > editing short lists, e.g., a lookup table like cities. Don't forget to > > > register the table in Boot. > > > > (11) Then there's the experimental FormProcessor, if you need your form > > > to be processed in one block instead of separate closures, e.g., to > > > surround > > > with try. > > > > (12) Also experimental is sitemap.XmlMenu which lets you write menus in > > > xml. > > > > (13) I may add CaseEnum, which lets you write case classes that > > > automatically double as an Enumeration. > > > > Questions, comments, suggestions, and constructive criticism are more > > > than welcome! > > > > Thanks. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
