Your method calling this query page should actually be:
public WOComponent queryBillboarAction() {
return D2W.factory().pageForConfigurationNamed("QueryBillboard", session());
}
pageConfiguration = "QueryBillboard" => entity = "Grid"
[com.webobjects.directtoweb.EntityAssignment],
task is in the configurationName
On 2013-09-26, at 2:45 PM, David Holt <[email protected]> wrote:
> Yes! You're coming to the crux of D2W power. Congratulations :-)
>
> All you need to do is set some rules for task and entity of the custom
> configuration you need. Typed into Mail:
>
> pageConfiguration = "RowsAndRowsOfMyAwesomeBillboards" => task = 'list'
> [com.webobjects.directtoweb.Assignment]
> pageConfiguration = "RowsAndRowsOfMyAwesomeBillboards" => entity "Grid"
> [com.webobjects.directtoweb.EntityAssignment],
>
>
> public WOComponent queryBillboardAction() {
> QueryPageInterface qpi = (QueryPageInterface)
> D2W.factory().queryPageForEntityNamed("Grid", session());
> return (WOComponent) qpi;
> }
>
> pageConfiguration = 'QueryBillboard' => navigationState = 'Tab2'
> [com.webobjects.directtoweb.Assignment]
> pageConfiguration = "RowsAndRowsOfMyAwesomeBillboards" => navigationState =
> 'Tab2' [com.webobjects.directtoweb.Assignment]
>
> rule to return the custom page configuration:
>
> pageConfiguration = "QueryBillboard" => listConfigurationName =
> "RowsAndRowsOfMyAwesomeBillboards" [com.webobjects.directtoweb.Assignment],
>
> you can return the list in the same page like so:
>
> pageConfiguration = "QueryBillboard" => showListInSamePage = "true"
> [com.webobjects.directtoweb.BooleanAssignment]
>
> and don't forget the rule to set your query delegate to the QueryBillboard
> page.
>
> Of course you could be more reasonable and call your custom page
> configuration something like "ListBillboardGrid" and your task and entity
> should be picked up by the default assignment rules (since both "list" and
> "grid" are contained in the pageConfiguration name) but I exaggerated for
> effect.
>
>
> On 2013-09-26, at 2:24 PM, Theodore Petrosky <[email protected]> wrote:
>
>>
>> On Sep 26, 2013, at 5:07 PM, David Holt <[email protected]> wrote:
>>
>>> Hi Ted,
>>>
>>> well Grid is the entity, but you only want to display those grids that are
>>> billboards?
>>>
>>> "Pages.ListGrid" = "List Billboards"
>>> "Nav.ListGrid" = "List Billboards"
>>>
>>>>>>>> ((D2WComponent) qpi).d2wContext().takeValueForKey("ListBillboard",
>>>>>>>> "navigationState");
>>>>>>>> ((D2WComponent) qpi).d2wContext().takeValueForKey("QueryBillboard",
>>>>>>>> "pageConfiguration");
>>>
>>> I'm not sure these two rules make any sense (at least this is not how I do
>>> it). You probably should be setting navigation state in the rules. And if
>>> you want to use a custom pageConfiguration for your list page then you need
>>> to set it in your query page rules (either inline or as your
>>> listConfigurationName).
>>>
>>> If you actually NEED a ListGrid page as well as Billboard, you'll have to
>>> create a custom pageConfiguration for Billboards and assign the usual task
>>> and entity to it.
>>
>> and this is my issue. I NEED both the ListGrid and ListBillboard where the
>> underlying entity is Grid. (Tab1 is the ListGrid tab, Tab2 is the
>> ListBillboard tab) Are you suggesting here that I can do this with a custom
>> pageConfiguration? Is there some example of this that I can examine? Keep in
>> mind I have no problem when I enter the ListBillboard tab. My problem is
>> when I click the query button on a Query Billboard. the resultant page is a
>> ListGrid page that I want to call a List Billboard page.
>>
>> Ted
>>
>>> On 2013-09-26, at 12:21 PM, Theodore Petrosky <[email protected]> wrote:
>>>
>>>> yes, I use the Localizable.strings. I don't see how this would help? I
>>>> thought I wanted to change the context pageConfiguration.
>>>>
>>>> What did I miss?
>>>>
>>>>
>>>>
>>>>
>>>> On Sep 26, 2013, at 12:12 PM, David Holt <[email protected]> wrote:
>>>>
>>>>> Are you using Localizable.strings?
>>>>>
>>>>>
>>>>> On 2013-09-26, at 7:24 AM, Theodore Petrosky <[email protected]> wrote:
>>>>>
>>>>>>
>>>>>> On Sep 26, 2013, at 4:41 AM, Fabian Peters <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Ted,
>>>>>>>
>>>>>>> Am 26.09.2013 um 01:51 schrieb Theodore Petrosky:
>>>>>>>
>>>>>>>> yea sometimes the original answer to a post was over my head and I
>>>>>>>> didn't understand something, so I gave up.
>>>>>>>>
>>>>>>>> I have your solution working beautifully. I hope this helps me to
>>>>>>>> understand the delegates more.
>>>>>>>>
>>>>>>>> but here is an issue.
>>>>>>>>
>>>>>>>> here is the method that returns the QueryPage:
>>>>>>>>
>>>>>>>> public WOComponent queryBillboardAction() {
>>>>>>>> QueryPageInterface qpi = (QueryPageInterface)
>>>>>>>> D2W.factory().queryPageForEntityNamed("Grid", session());
>>>>>>>>
>>>>>>>> ((D2WComponent) qpi).d2wContext().takeValueForKey("ListBillboard",
>>>>>>>> "navigationState");
>>>>>>>> ((D2WComponent) qpi).d2wContext().takeValueForKey("QueryBillboard",
>>>>>>>> "pageConfiguration");
>>>>>>>>
>>>>>>>> return (WOComponent) qpi;
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> of course this is a 'subselect' of the entity 'Grid'. so the page that
>>>>>>>> returns is a ListGrid page.
>>>>>>>>
>>>>>>>> How can I control this? It needs to be a ListBillboard page.
>>>>>>>
>>>>>>> If your query page should return a list of billboards, then I guess the
>>>>>>> query page should be one for billboards. If a billboard has some
>>>>>>> relation to grid, you can still query for grid attributes by specifying
>>>>>>> key-paths from billboard. Something like "billboard.grids.id".
>>>>>>
>>>>>> it's the other way around. I have an entity 'Grid'. this entity has a
>>>>>> boolean attribute isBillboard. I have created a tab that gives a listing
>>>>>> of a subset of Grid where isBillboard is true.
>>>>>> In the action method that returns the ListGrid page, I set the
>>>>>> navigationState:
>>>>>>
>>>>>>>>>>> ((D2WComponent) lpi).d2wContext().takeValueForKey("ListBillboard",
>>>>>>>>>>> "navigationState");
>>>>>>
>>>>>> I have a search button that I set the delegate to return Grid entities
>>>>>> where isBillboard is true.
>>>>>>
>>>>>> Unfortunately, when you do a query, the returning page is a 'ListGrid'
>>>>>> page (As the entity is Grid). I am looking for a way such that when this
>>>>>> ListGrid page is returned, I can set the navigationState to
>>>>>> 'ListBillboard'.
>>>>>>
>>>>>> I could make this easy on myself and create a view on the backend called
>>>>>> Billboard. (CREATE VIEW billboard AS SELECT * FROM t_grid WHERE
>>>>>> isbillboard = true). I could even set up some rules and triggers on the
>>>>>> backend that would make it updatable. Then I could just treat it as a
>>>>>> separate entity and be done.
>>>>>>
>>>>>> But I thought I would just stay on the WO side of things.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Fabian
>>>>>>>
>>>>>>>> Thank you for your patience. When I first read your solution over a
>>>>>>>> year ago I felt it was too complex as I didn't have the knowledge to
>>>>>>>> understand it. Funny what another year looking at this stuff can do.
>>>>>>>>
>>>>>>>> Ted
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sep 25, 2013, at 4:26 PM, David Holt <[email protected]> wrote:
>>>>>>>>
>>>>>>>>> Nothing like a little deja vu, including the original poster.
>>>>>>>>>
>>>>>>>>> :-)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 2013-09-25, at 12:40 PM, Johnny Miller <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Like this?
>>>>>>>>>>
>>>>>>>>>> http://lists.apple.com/archives/webobjects-dev/2012/Apr/msg00260.html
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sep 25, 2013, at 9:23 AM, Theodore Petrosky <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I have an entity 'Grid' that has an attribute 'isBillboard'. I
>>>>>>>>>>> created the list billboard tab with:
>>>>>>>>>>>
>>>>>>>>>>> public WOComponent listBillboardAction() {
>>>>>>>>>>>
>>>>>>>>>>> EOEditingContext ec = ERXEC.newEditingContext();
>>>>>>>>>>> ListPageInterface lpi = (ListPageInterface)
>>>>>>>>>>> D2W.factory().pageForConfigurationNamed("ListGrid", session());
>>>>>>>>>>>
>>>>>>>>>>> EODatabaseDataSource ds = new EODatabaseDataSource(ec, "Grid");
>>>>>>>>>>>
>>>>>>>>>>> ERXFetchSpecification<Grid> fs = new
>>>>>>>>>>> ERXFetchSpecification<Grid>(Grid.ENTITY_NAME,
>>>>>>>>>>> Grid.IS_COMPLETE.eq(false).and(Grid.IS_BILLBOARD.eq(true)), null);
>>>>>>>>>>>
>>>>>>>>>>> ds.setFetchSpecification(fs);
>>>>>>>>>>>
>>>>>>>>>>> lpi.setDataSource(ds);
>>>>>>>>>>>
>>>>>>>>>>> ((D2WComponent) lpi).d2wContext().takeValueForKey("ListBillboard",
>>>>>>>>>>> "navigationState");
>>>>>>>>>>>
>>>>>>>>>>> return (D2WPage) lpi;
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> How can I apply the same limit to a Query page? I don't want to put
>>>>>>>>>>> a control on the page to select 'isBillboard', i want isBillboard
>>>>>>>>>>> to be true
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> public WOComponent queryBillboardAction() {
>>>>>>>>>>> QueryPageInterface qpi = (QueryPageInterface)
>>>>>>>>>>> D2W.factory().queryPageForEntityNamed("Grid", session());
>>>>>>>>>>>
>>>>>>>>>>> ((D2WComponent) qpi).d2wContext().takeValueForKey("ListBillboard",
>>>>>>>>>>> "navigationState");
>>>>>>>>>>>
>>>>>>>>>>> return (WOComponent) qpi;
>>>>>>>>>>>
>>>>>>>>>>> }
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/jlmiller%40kahalawai.com
>>>>>>>>>>>
>>>>>>>>>>> This email sent to [email protected]
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/programmingosx%40mac.com
>>>>>>>>>>
>>>>>>>>>> This email sent to [email protected]
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/lists.fabian%40e-lumo.com
>>>>>>>>
>>>>>>>> This email sent to [email protected]
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com
>>>>>>>
>>>>>>> This email sent to [email protected]
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/programmingosx%40mac.com
>>>>>>
>>>>>> This email sent to [email protected]
>>>>>
>>>>
>>>
>>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/programmingosx%40mac.com
>
> This email sent to [email protected]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]