this is the issue, and yes it is still an issue. Yes, please do a pull request, in the meantime is there any way I could get what you have?
Ted On Jul 30, 2013, at 12:48 PM, Fabian Peters <lists.fab...@e-lumo.com> wrote: > Ted, > > I'm not entirely sure why you would want this behaviour. Is this still to do > with your initial problem?: > >>>>>> If I add an object and immediately click its delete button, my app >>>>>> throws a hissy-fit because the object can not be deleted as it is not >>>>>> saved in the first place. > > > This was registered as <https://github.com/wocommunity/wonder/issues/89>. I > have a test case covering it that hasn't failed for a long time. If this is > still a problem in a current wonder version, I may have fixed it in my code > and should do a pull request. > > Fabian > > Am 30.07.2013 um 18:05 schrieb Theodore Petrosky: > >> This is not directly a reply to David. I am about to try my hand at >> implementing this in my app. >> >> David asks the sensible question if anyone thinks there is a better way to >> do this. Maybe someone can chime in here. >> >> Basically, in a D2W app with to Many relations, when you add a new >> relationship object, and press the 'save' button, it doesn't call >> saveChanges() on the EC. It is just added to the relationship and you must >> complete the transaction or risk fire and brimstone. >> >> The result I want would be that when you press the 'save' button in a >> 'Create new embedded object', WO will actually save the object and >> relationship to the backend. >> >> Ted >> >> On Jul 18, 2013, at 12:50 PM, David Holt <programming...@mac.com> wrote: >> >>> Hi Ted, >>> >>> This is how I handled it. It isn't pretty and it was early days in my >>> experience with D2W, so there may be a better way… >>> >>> David >>> >>> Rule >>> >>> 101 : ((pageConfiguration = 'EditRelationshipEmbeddedAnswer' and >>> parentPageConfiguration = 'EditTestItem') => branchChoices = >>> ("_scoreOptionInline") [com.webobjects.directtoweb.Assignment] >>> >>> BranchDelegate >>> >>> /** >>> * Score the option >>> * >>> * @return >>> */ >>> public WOComponent _scoreOptionInline(WOComponent sender) { >>> WOComponent nextPage; >>> // Get the objects we need >>> PossibleAnswer possibleAnswer = (PossibleAnswer) object(sender); >>> >>> // Create a new editing context and setup validation >>> EOEditingContext newEc = >>> ERXEC.newEditingContext(possibleAnswer.editingContext()); >>> newEc.revert(); >>> Person currentPerson = Person.currentUser(newEc); >>> // Choose the option to be scored >>> PossibleAnswer newAnswer = possibleAnswer.localInstanceIn(newEc); >>> >>> // Create scoring object >>> System.out.println("What is the value of the score? " + >>> newAnswer.score() + " for " + newAnswer.answerDescription()); >>> EOQualifier qual = >>> Score.PERSON.eq(currentPerson).and(Score.ANSWER.eq(newAnswer)); >>> if (newAnswer.aScore() != null) { >>> System.out.println("We're populating an existing object " + >>> newAnswer.score()); >>> nextPage = >>> session(sender).navController().createScore(Score.fetchScore(newEc, qual)); >>> //// See method in NavController below >>> } else { >>> Score newScore = Score.createScore(newEc, currentPerson, newAnswer); >>> if (newAnswer instanceof ERXGenericRecord) { >>> ((ERXGenericRecord) newAnswer).setValidatedWhenNested(false); >>> } >>> System.out.println("We're creating a new object " + newAnswer.score()); >>> nextPage = session(sender).navController().createaScoreScore(newScore); >>> } >>> >>> return nextPage; >>> } >>> >>> >>> NavigationController >>> >>> public WOComponent createScore(Score aScore) { >>> EditPageInterface newEditPage = >>> D2W.factory().editPageForEntityNamed(Score.ENTITY_NAME, session()); >>> newEditPage.setObject(aScore); >>> newEditPage.setNextPageDelegate(new SaveBeforeReturning ( >>> // return to current page after saving new score >>> session().context().page())); >>> WOComponent nextPage = (WOComponent) newEditPage; >>> return nextPage; >>> } >>> >>> public class SaveBeforeReturning implements NextPageDelegate { >>> >>> public SaveBeforeReturning(WOComponent afterSaving) { >>> // remember where to go after the save >>> theRealNextPage = afterSaving; >>> } >>> >>> private WOComponent theRealNextPage; >>> >>> // when the person hits save on the page >>> // this method will be called >>> >>> public WOComponent nextPage(WOComponent sender) { >>> // set up for branching based on whether the cancel button, or the save >>> // button was pressed >>> D2WPage page = (D2WPage) theRealNextPage; >>> EOEnterpriseObject eo = page.object(); >>> // a null editing context means that the cancel button was pressed >>> if (eo.editingContext() == null) { >>> return theRealNextPage; >>> } >>> // otherwise, the save button was pressed >>> else { >>> eo.editingContext().saveChanges(); >>> return theRealNextPage; >>> } >>> } >>> } >>> >>> >>> On 2013-07-18, at 8:29 AM, Theodore Petrosky <tedp...@yahoo.com> wrote: >>> >>>> David, >>>> >>>> How did you do this? I have been mucking around, but have not found a >>>> solution. >>>> >>>> playing with some Logs in the submitAction() method makes me realize that >>>> the object need to be entered into the EC. I will keep playing. >>>> >>>> Ted >>>> >>>> >>>> On Jul 12, 2013, at 12:27 PM, David Holt <programming...@mac.com> wrote: >>>> >>>>> The trade-off is that if you save the parent EC form the related EC, you >>>>> may save an edit on the parent that the user is not expecting. In most >>>>> cases I agree with you and I have implemented a true save on the related >>>>> component to reduce the user confusion about the "double save". >>>>> >>>>> >>>>> On 2013-07-12, at 8:33 AM, Theodore Petrosky <tedp...@yahoo.com> wrote: >>>>> >>>>>> when I create a new to-many object there is a button with a label >>>>>> 'Save'. I understood that this new object was inserted into the EC and I >>>>>> had to click the save button at the bottom of my parent EO to actually >>>>>> save the related object. >>>>>> >>>>>> but of course there is a problem. If I add an object and immediately >>>>>> click its delete button, my app throws a hissy-fit because the object >>>>>> can not be deleted as it is not saved in the first place. >>>>>> >>>>>> So the question is. when I create a new object, and click save, >>>>>> shouldn't d2w do just that? saveChanges() on the EC? >>>>>> >>>>>> this is the saveButton's action (from ERMODWizardCreationPage). >>>>>> /** >>>>>> * Performs submit action. Overridden to reset the nested validation >>>>>> setting on the >>>>>> * object. >>>>>> */ >>>>>> // FIXME - Is this needed here? davidleber >>>>>> @Override >>>>>> public WOComponent submitAction() throws Throwable { >>>>>> WOComponent result = super.submitAction(); >>>>>> if (object() instanceof ERXGenericRecord) { >>>>>> ((ERXGenericRecord)object()).setValidatedWhenNested(true); >>>>>> } >>>>>> return result; >>>>>> } >>>>>> >>>>>> I keep following back the super.submitAction() to see what it does but >>>>>> there is no implied saveChanges() anywhere that I can find. >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Do not post admin requests to the list. They will be ignored. >>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>> Help/Unsubscribe/Update your Subscription: >>>>>> https://lists.apple.com/mailman/options/webobjects-dev/programmingosx%40mac.com >>>>>> >>>>>> This email sent to programming...@mac.com >>>>> >>>> >>> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/webobjects-dev/lists.fabian%40e-lumo.com >> >> This email sent to lists.fab...@e-lumo.com > _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com