Sorry, didn't reply all with my last reply.

Begin forwarded message:

> Thanks David and Ramsey.  I seem to be having issues, unfortunately.
> 
> To clarify, originally, I was planning to have the admin component be a 
> subcomponent within the normal wrapper (by "normal I mean pre-d2w -- not 
> "non"-d2w as I previously suggested.  I meant the site works without d2w, I 
> just thought adding the admin as d2w would be a good way to learn d2w).  
> Anyway, I attempted to accomplish this by making my Admin component 
> essentially a copy of the PageWrapper from ERModernMoviesDemo . . . but got 
> confused by the head and body stuff.  Now I see that was likely the source of 
> many of my issues.  
> 
> So now I am trying to  do exactly what you suggest and open a new window with 
> a page level admin component via D2W.  (restoring the html, head and body 
> tags).  Now, however, when ERD2WHead asks for this: 
> 
>            D2WContext context = (D2WContext) 
> context().page().valueForKey("d2wContext");
> 
> I am getting null.  I have the d2wContext method inside my Admin component 
> (copied from the modern movies demo), and also have the body class method.  
> 
>    public D2WContext d2wContext() {
>       if (context().page() instanceof D2WPage) {
>                       D2WPage d2wPage = (D2WPage) context().page();
>                       return d2wPage.d2wContext();
>               }
>       return null;
>    }
> 
>       public String bodyClass() {
>               String result = null;
>               String pageConfig = 
> (String)d2wContext().valueForKey("pageConfiguration");
>               if (pageConfig != null && pageConfig.length() > 0) {
>                       result = pageConfig + "Body";
>               }
>               return result;
>       }
> 
> HTML: 
> 
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
> "http://www.w3.org/TR/html4/loose.dtd";>
> <html>
>       <webobject name = "HeadTag">
>           <webobject name = "StyleSheets" />
>       </webobject>
>       <webobject name = "BodyTag">
>               <webobject name = "IsDebug">
>                   <div id="ERD2WDebugFlags"><webobject name = 
> "ERD2WDebugFlags" /></div>
>               </webobject>
>               <div id = "ContentWrapper">
>                 <div id = "MenuHeader">
>                   <webobject name = "ERXNavigationMenu"/>
>                 </div>
>                 <div id = "MainContent"> 
>                   <webobject name = "MainContent" />
>                 </div>
>               </div>
>               <webobject name = "WOLToolBar"/>
>               <webobject name = "ERMD2WStyleSheetInjector"/>
>       </webobject>
> </html>
> 
> wod:
> 
> ERXNavigationMenu : ERXNavigationMenu {
>  navigationContext = navigationContext;
> }
> 
> MainContent : WOComponentContent {
>    _unroll = YES;
> }
> 
> BodyTag : WOBody {
>    class = bodyClass;
> }
> 
> HeadTag : ERD2WHead {
> }
> 
> EntitiesMenu : MenuHeader {
> }
> 
> ERD2WDebugFlags : ERD2WDebugFlags {
>    context = d2wContext;
> }
> 
> IsDebug : WOConditional {
>    condition = application.isDevelopmentMode;
> }
> 
> StyleSheets : ERMD2WCSSReference {
>    localContext = d2wContext;
> }
> 
> WOLToolBar : WOLToolBar {
>  expanded = true;
> }
> 
> ERMD2WStyleSheetInjector : ERMD2WStyleSheetInjector {
>  localContext = d2wContext;
> }
> 
> 
> I still have the rule in my rule file telling the pageWrapperName to be 
> "Admin"
> 
> Still isn't loading.  I assume there is something else I am missing.  (Note I 
> am for now, abandoning doing the subcomponent method.)
> 
> 
> On Jun 9, 2010, at 3:32 PM, David Holt wrote:
> 
>> Hi Andrew,
>> 
>> In order to minimize the work that you need to do, I would consider 
>> rethinking your approach to the admin side. Instead of it opening inside 
>> your AUC, why don't you have the admin link open up a nice full page 
>> completely outside your current pagewrapper with the unchanged ERModernLook 
>> all ready to go? 
>> 
>> Your admin link will call something like session.navController.adminAction() 
>> (see the ModernMoviesDemo for examples), and you will include the 
>> PageWrapper and MenuHeader from the example in your application. Then the 
>> D2W rule system will find the pagewrapper, menuheader and skin framework 
>> required to make the complete page. Part of your navigation strategy on the 
>> Admin/D2W side will need to include a link back to reload the "normal" page 
>> wrapper.
>> 
>> Once you figure out how D2W ties all this together, it will be easier to 
>> figure out how to frame it within your original strategy.
>> 
>> If you want to go ahead with your current strategy see further notes below...
>> 
>> Also see David LeBer's responses in the thread from a few weeks ago which 
>> will give you some idea of the complexity involved in the opposite problem: 
>> "embedding standard components into ERModernDirectToWeb"
>> 
>> On 9-Jun-10, at 11:10 AM, Andrew R. Kinnie wrote:
>> 
>>> Thanks.  I added a rule in the d2wmodel file for pageWrapperName.  However, 
>>> I managed to discover several other problems.
>> 
>> The pagewrapper will need to include a call to the D2W context. Every 
>> ERModernLook page needs access to this.
>> 
>>> 
>>> My page wrapper was for a non-d2w page and site,
>> 
>> <aside>This is a common misconception. There's really no such thing as a 
>> non-D2W site. You can use as much or as little D2W as you wish. Your pages 
>> are either created by the D2W factory or they're not. Your web application 
>> either includes the D2W frameworks or it doesn't. Those are the 
>> distinctions, rather than "D2W App" or "non-D2W app".</aside>
>> 
>>> and I want the d2w stuff to be a subcomponent of this.  It is very simple, 
>>> I have a header, sidebar navigation, and an AjaxUpdateContainer which 
>>> changes based on what link the user clicks on the navigation sidebar.  One 
>>> of these links is the Admin link, which will (I hope) cause the D2W stuff 
>>> to be loaded into the AjaxUpdateContainer, without disturbing anything else.
>> 
>> Your PageWrapper component will need to provide the D2WContext. If you plan 
>> to go with ERModernLook you're going to have to look carefully at the CSS. I 
>> am pretty sure that it also depends on the body class being in your 
>> PageWrapper.
>> 
>>> 
>>> I therefore made my Admin component into the "pageWrapperName" for the 
>>> purposes of the D2W rule, and created it based on the pageWrapper from 
>>> ERModernMoviesDemo.  
>> 
>> Not sure what you mean here. Is the Admin component included inside the AUC 
>> or is it going to be a page level component?
>> 
>>> 
>>> 1. I changed it to remove the header because this is a subcomponent.  
>>> However, this removed the stylesheets tag.  I also eliminated the bodyTag 
>>> webobject, again, as this is a subcomponent.  Neither of these seem to 
>>> affect this problem though.
>> 
>> I think that D2W expects whatever component you use for the PageWrapper to 
>> contain the page level HTML. All the D2W page level components would depend 
>> on that. Otherwise what you might be looking for are the embeddable 
>> components (remember that there was a palette of these things in WOBuilder?).
>> 
>>> 
>>> This works, sort of, but the WOLToolbar appears as a ul above the ul of the 
>>> entities.  (I had an error here until I added the WOLips framework and 
>>> password) I assume this is related to the navigation panel not being styled 
>>> properly.
>> 
>> Yeah you're messing with the assumptions that were made in creating the CSS 
>> for ModernLook, I expect. The WOLToolbar is styled to be at the bottom of 
>> the page.
>> 
>>> The real problem is that when I click an entity, now I get an NPE error:
>>> 
>>> ERMD2WStyleSheetInjector.java       39      resourceFrameworkName   
>>> er.modern.directtoweb.components
>>> Which apparently means it's not getting the skin framework (and also isn't 
>>> supplying the default of "app")  I added the property to the skin 
>>> framework's properties file (then added it to the app's properties too to 
>>> see if that changed anything.  It didn't.  I assume this is related to the 
>>> missing stylesheets from the head.
>> 
>> This is established by the rules. You've messed with the framework's 
>> assumptions for the styling.
>> 
>>> 
>>> 2. I then added the head and body back (along with the bodyClass method 
>>> lifted from the ERModernMoviesDemo's pageWrapper).  I changed it from an 
>>> Ajax link to a regular WOHyperlink and set target = "new" but now I get an 
>>> NPE like this (before I get to the uls from the WOLToolbar or the 
>>> entitities) :
>>> 
>>> ERD2WHead.java      32      displayNameForPageConfiguration 
>>> er.directtoweb.components
>>> 
>>> (Note this also happens inside the AjaxUpdateContainer if I keep it as an 
>>> AjaxUpdateLink with the appropriate containerid)
>> 
>> You can't use the head and body tag nested inside a component that contains 
>> head and body tags (which I am assuming your Main component does).
>> 
>>> 
>>> So, while I am doing better than I was, I guess I am just fundamentally 
>>> missing what I am supposed to be doing in relation to dropping an 
>>> ERModernLook component with navigation into an AjaxUpdateContainer of an 
>>> existing site.  
>> 
>> I am pretty sure that the assumptions for ModernLook is that it is providing 
>> the full pages. I don't think nesting is going to work for you unless you 
>> look at how the styling is affected by being nested like this.
>> 
>>> 
>>> Is there some configuration I am supposed to be doing to set the resources 
>>> other than in the properties file of the look framework (and adding that 
>>> framework to the app)?
>> 
>> Just setting the property worked for me. Try your admin pages as full 
>> ModernLook pages by dropping in PageWrapper and MenuHeader and see if it 
>> picking up all the elements from the ModernD2W/Look/Skin frameworks.
>> 
>>> 
>>> Thanks.  This technology looks very cool, and I would like to think it's 
>>> fairly easy to do this, rather than re-creating entirely new D2W projects, 
>>> even for a D2W novice.
>> 
>> It is very cool, and you WILL be able to include D2W pages in your existing 
>> application. You just have to keep in mind that the look frameworks are not 
>> trivial to create or change in my experience. I would hate to guess how long 
>> David LeBer spent creating this look.
>> 
>> In my opinion you're going to have a much easier time of it if you just use 
>> the look as intended. Then, once you are familiar with how it works, you can 
>> start to see where customizations are possible.
>> 
>> HTH,
>> 
>> David
>> 
>>> 
>>> Andrew
>>> 
>>> On Jun 9, 2010, at 9:36 AM, Ramsey Gurley wrote:
>>> 
>>>> 
>>>> On Jun 9, 2010, at 9:22 AM, Andrew R. Kinnie wrote:
>>>> 
>>>>> I am again attempting to use D2W for the admin portion of an existing 
>>>>> app.  
>>>>> 
>>>>> Basically, I have an existing site, and wanted to add an admin link to 
>>>>> the home page navigation bar, based on whether the user has logged in and 
>>>>> has admin privileges.  When the user clicks on the link, I want to load a 
>>>>> D2W generated admin component into the AjaxUpdate area for the content.  
>>>>> Seems all fairly simple and straight forward.
>>>>> 
>>>>> I created a new framework, copied the ERModernSkin WSR into its WSR, 
>>>>> added er.modern.look.skinframework = MySitesERModernSkinFramework to its 
>>>>> (i.e. the skin framework's) properties then added the framework to my 
>>>>> app.  I also added ERD2W's framework, etc. to the app.
>>>>> 
>>>>> I also created a NavigationMenu.plist, based on the one in 
>>>>> ERModernMoviesDemo, and modified it to present my entities, modified the 
>>>>> session to present my navController and created actions appropriate to it 
>>>>> within it.
>>>>> 
>>>>> Now however, first, none of the ERModernLook css is loading, but I figure 
>>>>> I can fix that later.  The big problem is I can click the link and get a 
>>>>> ul of the entities, but when I click an entity link, I get this error:
>>>>> 
>>>>> com.webobjects.appserver._private.WODynamicElementCreationException: : 
>>>>> cannot find component or dynamic element named PageWrapper
>>>>> 
>>>>> I don't have a component named PageWrapper (ERModernMoviesDemo does), I 
>>>>> perform that function in my "Main" component.  I searched the 
>>>>> ERModernMoviesDemo and found no references to PageWrapper in it, other 
>>>>> than in the class itself.
>>>>> 
>>>>> Is there someplace I can globally change a setting to point to my Main 
>>>>> component?  Is this going to work like this at all?  The 
>>>>> ERModernMoviesDemo is obviously a self-contained app, and not a 
>>>>> subcomponent within another app that has its own custom html and css.
>>>>> 
>>>>> Any assistance would be appreciated.
>>>>> 
>>>>> Andrew
>>>> 
>>>> The page wrapper is typically part of the app rather than the framework, 
>>>> so if you don't have one, you'll need to designate one.  I believe the D2W 
>>>> key you need is pageWrapperName and you can set it in the rule with a 
>>>> single assignment.  If your Main component is a wrapper, then it should be 
>>>> simple.  You might want to download the modern look template to have a 
>>>> look at the PageWrapper component in there, as loading the CSS was a bit 
>>>> more involved.
>>>> 
>>>> http://avendasora.svn.beanstalkapp.com/repository/
>>>> 
>>>> Ramsey
>>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> http://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:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to