svn commit: r499264 [2/2] - in /ofbiz/trunk: applications/content/data/ applications/ecommerce/ applications/ecommerce/config/ applications/ecommerce/data/ applications/ecommerce/webapp/ecommerce/WEB-INF/ applications/ecommerce/webapp/ecommerce/blog/ a...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r499264 [2/2] - in /ofbiz/trunk: applications/content/data/ applications/ecommerce/ applications/ecommerce/config/ applications/ecommerce/data/ applications/ecommerce/webapp/ecommerce/WEB-INF/ applications/ecommerce/webapp/ecommerce/blog/ a...

byersa-3
Added: ofbiz/trunk/applications/ecommerce/webapp/ecommerce/images/blog.css
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/images/blog.css?view=auto&rev=499264
==============================================================================
--- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/images/blog.css (added)
+++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/images/blog.css Tue Jan 23 21:17:03 2007
@@ -0,0 +1,639 @@
+.treeHeader, .treeHeaderCurrent {
+        color:blue;
+        font-size:12;
+        text-decoration:none;
+        }
+.treeHeaderCurrent {
+        color:black;
+        font-size:14;
+        font-weight:bold;
+        }
+.treeHeaderOutline {
+        color:black;
+        font-size:14;
+        font-weight:medium;
+        }
+.treeHeaderPage {
+        color:blue;
+        font-size:14;
+        font-weight:bold;
+        text-decoration:none;
+        }
+.treeHeaderSubPage {
+        color:blue;
+        font-size:12;
+        font-weight:medium;
+        text-decoration:none;
+        text-align:right;
+        width:100%;
+        }
+.tocItem {
+        color:blue;
+        font-size:12;
+        text-decoration:none;
+        }
+.tocItemCurrent {
+        color:black;
+        font-size:14;
+        font-weight:bold;
+        }
+.editwrapper {
+        color:black;
+        background:#ffffff;
+        font-size:16;
+        text-decoration:none;
+        margin-left:12px;
+        margin-top:2px;
+        border-top:1px solid black;
+        border-left:1px solid black;
+        }
+.contentwrapper {
+        color:black;
+        background:#ffffff;
+        font-size:16;
+        text-decoration:none;
+        margin-left:12px;
+        margin-top:2px;
+        }
+.tocwrapper {
+        color:black;
+        background:#ffffff;
+        font-size:16;
+        text-decoration:none;
+        margin-left:12px;
+        margin-top:2px;
+        }
+.menuwrapper {
+        color:#DDDDDD;
+        background:#ffffff;
+        font-size:10;
+        text-decoration:none;
+        margin-left:12px;
+        margin-right:20px;
+        width:80%;
+        text-align:right;
+        }
+.menuButton {
+        color:black;
+        background:#ffffff;
+        font-size:10;
+        text-decoration:none;
+        border-width:1px;
+        border-style:solid;
+        border-color:black;
+        }
+        
+.appbarleft {
+        border-width:0px;
+        border-style:solid;
+        border-color:black;
+        width:45%;
+        position:relative;
+        top:0;
+        height:20px;
+ }        
+
+.appbarmid {
+        border-width:0px;
+        border-style:solid;
+        border-color:black;
+        width:20%;
+        position:relative;
+        top:-20px;
+ }        
+
+.appbarright {
+        border-width:0px;
+        border-style:solid;
+        border-color:black;
+        width:15%;
+        position:relative;
+        float:right;
+        top:-20px;
+        text-align:left;
+ }        
+
+.contenttext {
+        color:black;
+        background:#ffffff;
+        font-size:14;
+        text-decoration:none;
+        margin-left:12px;
+        margin-right:20px;
+        margin-top:8px;
+        }
+
+/*
+.expandcollapse { color:black; background:lightblue; font-size:16; text-decoration:none;
+       border-width:2px; border-color:black; border-style:solid;
+        }
+*/
+.header, .header0, .header1, .header2, .header3, .header4, .header5, .header6, .header7, {
+        color:black;
+        font-family:serif;
+        }
+.header0 {
+        font-size:17pt;
+        }
+.header1 {
+        font-size:16pt;
+        }
+.header2 {
+        font-size:15pt;
+        }
+.header3 {
+        font-size:14pt;
+        }
+.header4 {
+        font-size:13pt;
+        }
+.header5 {
+        font-size:12pt;
+        }
+.header6 {
+        font-size:12pt;
+        }
+.header7 {
+        font-size:12pt;
+        }
+.header8 {
+        font-size:12pt;
+        }
+.header9 {
+        font-size:12pt;
+        }
+.header10 {
+        font-size:12pt;
+        }
+.largetitle, .largetitlePlum, .largetitleCharcoal, .largetitleBlack {
+        font-size:60px;
+        color:black;
+        font-family:Times New Roman;
+        font-weight:medium;
+    text-align:center;
+        margin-left:0px;
+        margin-right:0px;
+        }
+        
+.largetitlePlum {
+        color:darkmagenta;
+        }
+.largetitleCharcoal {
+        color:#666666;
+        }
+.largetitleBlack {
+        color:black;
+        }
+        
+.smalltitle {
+        font-size:16pt;
+        color:black;
+        font-family:serif;
+ text-align:center;
+        margin-left:20px;
+        margin-right:20px;
+        }
+
+.floatleft {
+        display:inline;
+        float:left;
+        }
+.topcentered {
+        display:block;
+        text-align:center;
+        }
+        
+.blogheader {
+ color:black;
+ font-size:12pt;
+ font-weight:bold;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+ margin-left:10px;
+ }
+
+.blogtext {
+ color:#222222;
+ font-size:12pt;
+ font-weight:medium;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+ margin-left:20px;
+ }
+
+.blogtitle{
+        color: black;
+        background:#D4D0C8;
+        font-size:22;
+ font-weight:bold;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+        text-decoration:none;
+        display:inline;
+        float:left;
+        }
+        
+.blogtitleboxed {
+        color: black;
+        background:#D4D0C8;
+        font-size:22;
+        text-decoration:none;
+        border:1px solid black;
+        padding:4px;
+        display:inline;
+        float:left;
+        }
+        
+.bloghr {
+        color: black;
+        background:#D4D0C8;
+        padding:4px;
+        height:22pt;
+        }        
+        
+.blogwrapper {
+ position: relative;
+        background:#eeeeee;
+        padding:4px;
+        margin-top:6px;
+ font-size:12pt;
+ font-weight:medium;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+        }        
+
+.blogcontentwrapper {
+        background:#f8f8f8;
+        border:1px solid #000000;
+        padding:4px;
+        margin-top:6px;
+ color:black;
+ font-size:12pt;
+ font-weight:medium;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+        }        
+
+
+.responseheader {
+ color:black;
+ font-size:12pt;
+ font-weight:bold;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+ margin-left:10px;
+ }
+
+.responsetext {
+ color:#222222;
+ font-size:12pt;
+ font-weight:medium;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+ margin-left:20px;
+ }
+
+.responseTreeWrapper {
+        color:black;
+        background:#ffffff;
+        font-size:12pt;
+ font-weight:medium;
+ font-family:verdana, arial, sans-serif;
+ text-align:left;
+        text-decoration:none;
+        margin-left:12px;
+        margin-top:2px;
+        border-top:1px solid black;
+        border-left:1px solid black;
+        }
+        
+.responseSelected {
+        background:#BBBBBB;
+        border:1px dashed black;
+        }        
+.forummenuwrapper {
+        color:#8B008B;
+        background:#D4D0C8;
+        font-size:10;
+        text-decoration:none;
+        margin-left:12px;
+        margin-right:20px;
+        float:right;
+        text-align:right;
+        max-width:50%;
+        padding-left:14px;
+        }
+.forumheader {
+ color:black;
+ font-size:12pt;
+ font-weight:bold;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+ margin-left:10px;
+ }
+
+.forumtext {
+ color:#222222;
+ font-size:12pt;
+ font-weight:medium;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+ margin-left:20px;
+ }
+
+.forumtitle{
+        color:#8B008B;
+        background:#D4D0C8;
+        font-size:22;
+ font-weight:bold;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+        text-decoration:none;
+        display:inline;
+        float:left;
+        }
+        
+.forumtitleboxed {
+        color:#8B008B;
+        background:#D4D0C8;
+        font-size:22;
+        text-decoration:none;
+        border:1px solid black;
+        padding:4px;
+        display:inline;
+        float:left;
+        }
+        
+.forumhr {
+        color:#8B008B;
+        background:#D4D0C8;
+        border:1px solid #8B008B;
+        padding:4px;
+        height:22pt;
+        }        
+        
+.forumwrapper {
+        background:#D4D0C8;
+        border:1px solid #8B008B;
+        padding:4px;
+        margin-top:6px;
+ font-size:12pt;
+ font-weight:medium;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+        }        
+
+.forumcontentwrapper {
+        background:#f8f8f8;
+        border:1px solid #000000;
+        padding:4px;
+        margin-top:6px;
+ color:black;
+ font-size:12pt;
+ font-weight:medium;
+ text-align:left;
+ font-family:verdana, arial, sans-serif;
+        }        
+
+
+.blogboxoutside {
+background: #FFFFFF;
+padding: 0px;
+border-color: #999999;
+border-style: solid;
+border-width: 1px 1px 1px 1px;
+max-width:40%;
+}
+.boxleft {
+position: relative;
+background: #FFFFFF;
+padding: 0px;
+border-color: #999999;
+border-style: solid;
+border-width: 1px 1px 1px 1px;
+max-width:48%;
+width:40%;
+margin-left:40px;
+}
+.boxright {
+position: relative;
+background: #FFFFFF;
+padding: 0px;
+border-color: #999999;
+border-style: solid;
+border-width: 1px 1px 1px 1px;
+max-width:48%;
+width:40%;
+margin-right:40px;
+margin-bottom:10px;
+text-align:center;
+}
+
+.sidebarleft {
+position: absolute;
+left: 0px;
+top: 160px;
+width: 19%;
+max-width: 19%;
+min-width: 120px;
+height: 100%;
+
+background: #FFFFFF;
+padding: 8px;
+border-color: #666666;
+border-style: dashed;
+border-width: 1px 1px 1px 1px;
+z-index: 1;
+}
+
+.sidebarright {
+position: absolute;
+left: 840px;
+top: 140px;
+width: 140;
+
+background: white;
+padding: 8px;
+}
+
+.midbar {
+position: absolute;
+left: 0;
+top: 140px;
+width: 800px;
+min-width: 356px;
+max-width:80%;
+
+background: #FFFFFF;
+padding: 8px;
+border-color: #666666;
+border-style: solid;
+border-width: 1px 1px 1px 1px;
+z-index: 3;
+vertical-align: top;
+margin-left: 10px;
+margin-right: 10px;
+margin-top: 0px;
+margin-bottom: 5px;
+}
+
+.midbarcontent, .midbarleft, .midbarright {
+padding: 8px;
+margin: 4px;
+}
+
+.midbarleft {
+left:0px;
+top:0px;
+max-width:360px;
+}
+
+.midbarright {
+left:400px;
+top:0px;
+max-width:360px;
+}
+
+.topleft {
+background: #ffffff;
+border: 2px dashed black;
+padding: 8px;
+font-size:14pt;
+font-family:Arial;
+font-weight: bolder;
+color:black;
+max-width:200px;
+vertical-align: top;
+float: left;
+margin-top: 4px;
+margin-left: 4px;
+margin-bottom: 4px;
+margin-right: 8px;
+}
+
+.toparea {
+position:absolute;
+top: 0px;
+left: 0px;
+width: 100%;
+min-width: 600px;
+height: 120px;
+margin-left: 10px;
+margin-right: 10px;
+margin-top: 5px;
+margin-bottom: 5px;
+background: #ffffff;
+border: 1px solid black;
+}
+
+.boxheadbrk {
+font-family: Verdana, Arial, Helvetica, sans-serif;
+margin: 0px;
+font-size: 8pt;
+font-weight: bold;
+text-decoration: none;
+color: #FFFFFF;
+display: block;
+}
+
+.boxtopright {
+float: right;
+width: 59%;
+text-align: right;
+}
+.boxtopleft{
+float: left;
+width: 39%;
+text-align: left;
+}
+.alignfill{
+width: 100%;
+min-width: 30%;
+}
+.alignindent{
+text-indent: 20px;
+}
+.required-field {
+font-family: Verdana, Arial, Helvetica, sans-serif;
+font-size: 10px;
+font-weight: bold;
+text-decoration: none;
+color: blue;
+}
+
+.acqqbox {
+position:absolute;
+left:500px;
+top:0px;
+width:300px;
+height:120px;
+}
+
+A.tabButton {
+font-family: Verdana, Arial, Helvetica, sans-serif;
+font-size: 10px;
+font-weight: bold;
+text-decoration: none;
+color: #666666;
+background: #D4D0C8;
+padding-right: 5px;
+padding-left: 5px;
+padding-top: 1px;
+padding-bottom: 1px;
+border: solid #666666 1px;
+}
+
+A.tabButton:hover {
+color: #FFFFFF;
+background: #666666;
+border: solid #666666 1px;
+}
+
+A.tabButtonSelected {
+font-family: Verdana, Arial, Helvetica, sans-serif;
+font-size: 10px;
+font-weight: bold;
+text-decoration: none;
+color: #FFFFFF;
+background: #666666;
+padding-right: 5px;
+padding-left: 5px;
+padding-top: 1px;
+padding-bottom: 1px;
+border: solid #666666 1px;
+}
+
+A.tabButtonSelected:hover {
+color: #FFFFFF;
+border: solid #666666 1px;
+}
+
+.tableheadtext {
+font-family: Verdana, Arial, Helvetica, sans-serif;
+font-size: 10px;
+font-weight: bold;
+text-decoration: none;
+color: black;
+}
+
+.columncenter {
+position: absolute;
+left: 0;
+top: 140px;
+width: 800px;
+min-width: 356px;
+max-width:80%;
+
+background: #FFFFFF;
+padding: 8px;
+border-color: #666666;
+border-style: solid;
+border-width: 1px 1px 1px 1px;
+z-index: 3;
+vertical-align: top;
+margin-left: 10px;
+margin-right: 10px;
+margin-top: 0px;
+margin-bottom: 5px;
+}
+

Modified: ofbiz/trunk/applications/ecommerce/webapp/ecommerce/includes/header.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/includes/header.ftl?view=diff&rev=499264&r1=499263&r2=499264
==============================================================================
--- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/includes/header.ftl (original)
+++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/includes/header.ftl Tue Jan 23 21:17:03 2007
@@ -25,6 +25,7 @@
     <script language="javascript" src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" type="text/javascript"></script>
     <script language="javascript" src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" type="text/javascript"></script>
     <link rel="stylesheet" href="<@ofbizContentUrl>${(productStore.styleSheet)?default("/images/ecommain.css")}</@ofbizContentUrl>" type="text/css"/>
+    <link rel='stylesheet' href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' type='text/css'>
     ${layoutSettings?if_exists.extraHead?if_exists}
 
     <#-- Append CSS for catalog -->

Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?view=diff&rev=499264&r1=499263&r2=499264
==============================================================================
--- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original)
+++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Tue Jan 23 21:17:03 2007
@@ -70,6 +70,7 @@
                     <include-screen name="minipoll" location="component://ecommerce/widget/ContentScreens.xml"/>
                     <include-screen name="forums" location="component://ecommerce/widget/ForumScreens.xml"/>
                     <include-screen name="content_categories" location="component://ecommerce/widget/ContentScreens.xml"/>
+                    <include-screen name="blogs" location="component://ecommerce/widget/blog/BlogScreens.xml"/>
                 </container>
             </widgets>
         </section>

Added: ofbiz/trunk/applications/ecommerce/widget/blog/BlogForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/blog/BlogForms.xml?view=auto&rev=499264
==============================================================================
--- ofbiz/trunk/applications/ecommerce/widget/blog/BlogForms.xml (added)
+++ ofbiz/trunk/applications/ecommerce/widget/blog/BlogForms.xml Tue Jan 23 21:17:03 2007
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations
+under the License.
+-->
+<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-form.xsd">
+
+    <form name="findBlogContent" default-title-style="tableheadtext"
+        default-tooltip-style="tabletext" default-widget-style="inputBox"
+        default-entity-name="ContentAssocDataResourceViewFrom"
+        target="CMSContentFind" title="" type="single">
+        <field name="caContentIdTo" title="Publish-to content" >
+            <drop-down>
+               <option key="OFBIZBLOGROOT" description="Blogs"/>
+               <option key="OFBIZFORUMROOT" description="Forums"/>
+            </drop-down>
+        </field>
+        <field name="caMapKey" title="Map Key" ><text-find/></field>
+        <field name="caContentAssocTypeId" title="Assoc Type Id" ><text-find/></field>
+        <field name="caFromDate" title="From Date" ><date-find/></field>
+        <field name="contentId" title="Content Id" ><text-find/></field>
+        <field name="dataResourceId" title="Data Resource Id" ><text-find/></field>
+        <field name="contentName" title="Name" ><text-find/></field>
+        <field name="submitButton" title="Find" widget-style="smallSubmit"><submit button-type="button"/></field>
+        <field name="createBlog" title=" " widget-style="buttontext">
+            <hyperlink also-hidden="false" description="New Blog"  target="EditBlogArticle"/>
+        </field>
+        <field name="createForum" title=" " widget-style="buttontext">
+            <hyperlink also-hidden="false" description="New Forum"  target="EditForumArticle"/>
+        </field>
+
+    </form>
+
+    <form name="listFindBlogContent" type="list" target="" default-title-style="tableheadtext" default-widget-style="inputBox" default-tooltip-style="tabletext" paginate-target="/CMSContentFind" view-size="20">
+        <actions>
+            <service service-name="performFind" result-map-list-iterator-name="listIt">
+                <field-map field-name="inputFields" env-name="requestParameters"/>
+                <field-map field-name="entityName" env-name="entityName"/>
+            </service>
+        </actions>
+    
+        <field name="editContent" title="">
+            <hyperlink also-hidden="false" description="Edit" target="CMSContentEdit?contentId=${contentId}&amp;drDataResourceId=${drDataResourceId}&amp;contentIdTo=${contentIdTo}"/>
+        </field>
+        <field name="contentId" title="Content Id" ><display/></field>
+        <field name="dataResourceId" title="Data Resource Id" ><display/></field>
+        <field name="contentName" title="Name" ><display/></field>
+    </form>
+
+    <form name="AddBlogResponse" target="persistBlogResponse" title="" type="single"
+        default-title-style="treeHeader"
+        default-tooltip-style="tabletext" default-widget-style="inputBox">
+        <auto-fields-entity entity-name="ContentAssocDataResourceViewTo" default-field-type="hidden" map-name="rsp" />
+        <field name="contentName" title="Short title" entry-name="contentName" map-name="rsp">
+          <text size="40"/>
+        </field>
+        <field name="description" title="Slightly longer title (250 chars max)" map-name="rsp">
+          <textarea cols="40" rows="6"/>
+        </field>
+        <field name="contentId" entry-name="contentId" map-name="rsp">
+          <hidden/>
+        </field>
+        <field name="articleContentId" entry-name="articleContentId" map-name="rsp">
+          <hidden/>
+        </field>
+        <field name="ownerContentId" entry-name="ownerContentId" map-name="rsp">
+          <hidden/>
+        </field>
+        <field name="caContentId" entry-name="caContentId" map-name="rsp">
+          <hidden/>
+        </field>
+ <!--
+        <field name="contentContentId" entry-name="caContentIdTo" map-name="rsp">
+          <hidden/>
+        </field>
+ -->
+        <field name="contentTypeId" entry-name="contentTypeId" map-name="rsp">
+          <hidden/>
+        </field>
+        <field name="drDataResourceTypeId" entry-name="drDataResourceTypeId" map-name="rsp">
+          <hidden/>
+        </field>
+        <field name="caContentAssocTypeId" entry-name="caContentAssocTypeId" map-name="rsp">
+          <hidden/>
+        </field>
+        <field name="textData" title="Response"  map-name="rsp">
+            <textarea cols="60" rows="12"/>
+        </field>
+        <field name="statusId" >
+           <radio no-current-selected-key="BLOG_DRAFT">
+             <option key="BLOG_PUBLISHED" description="POST"/>
+             <option key="BLOG_DRAFT" description="PREVIEW"/>
+           </radio>
+        </field>
+        <field name="submitButton" title="Submit" widget-style="smallSubmit">
+            <submit button-type="button"/>
+        </field>
+       <field name="deactivateExisting" >
+                <hidden value="false"/>
+        </field>
+       <field name="contentPurposeString" >
+                <hidden value="RESPONSE"/>
+        </field>
+        <sort-order>
+            <sort-field name="contentName"/>
+            <sort-field name="description"/>
+            <sort-field name="textData"/>
+            <sort-field name="statusId"/>
+            <sort-field name="submitButton"/>
+        </sort-order>
+    </form>
+    <form name="EditBlogResponse" target="persistBlogResponse" title="" type="single"
+        default-title-style="treeHeader"
+        default-tooltip-style="tabletext" default-widget-style="inputBox">
+        <sort-order>
+            <sort-field name="contentId"/>
+            <sort-field name="contentName"/>
+            <sort-field name="description"/>
+            <sort-field name="textData"/>
+            <sort-field name="statusId"/>
+            <sort-field name="submitButton"/>
+        </sort-order>
+      <auto-fields-entity entity-name="Content" default-field-type="hidden"  map-name="content" />
+      <auto-fields-entity entity-name="DataResource" default-field-type="hidden"  map-name="dataResource" />
+        <field name="contentName" title="Short title" entry-name="contentName" map-name="rsp">
+          <text size="40"/>
+        </field>
+        <field name="description" title="Slightly longer title (250 chars max)">
+          <textarea cols="40" rows="6"/>
+        </field>
+        <field name="contentId" entry-name="contentId" map-name="parameters">
+          <display/>
+        </field>
+        <field name="articleContentId" entry-name="articleContentId" map-name="rsp">
+          <hidden/>
+        </field>
+        <field name="textData" title="Response" map-name="electronicText">
+            <textarea cols="60" rows="12"/>
+        </field>
+        <field name="statusId" >
+           <radio no-current-selected-key="BLOG_DRAFT">
+             <option key="BLOG_PUBLISHED" description="POST"/>
+             <option key="BLOG_DRAFT" description="PREVIEW"/>
+           </radio>
+        </field>
+        <field name="submitButton" title="Submit" widget-style="smallSubmit">
+            <submit button-type="button"/>
+        </field>
+       <field name="deactivateExisting" >
+                <hidden value="true"/>
+        </field>
+       <field name="contentPurposeString" >
+                <hidden value="RESPONSE"/>
+        </field>
+    </form>
+    <form name="EditBlogAll" target="persistBlogAll" title="" type="upload"
+        default-title-style="treeHeader"
+        skip-end="true"
+        default-tooltip-style="tabletext" default-widget-style="inputBox">
+    <field name="contentIdStart" map-name="view"><hidden/></field>
+    <field name="caContentId" map-name="view"><hidden/></field>
+    <field name="caContentIdTo" map-name="view"><hidden/></field>
+    <field name="caContentAssocTypeId" map-name="view"><hidden/></field>
+    <field name="caFromDate" map-name="view"><hidden/></field>
+    <field name="caThruDate" map-name="view"><hidden/></field>
+    <field name="caContentAssocPredicateId" map-name="view"><hidden/></field>
+    <field name="caDataSourceId" map-name="view"><hidden/></field>
+    <field name="caSequenceNum" map-name="view"><hidden/></field>
+    <field name="caMapKey" map-name="view"><hidden/></field>
+    <field name="caUpperCoordinate" map-name="view"><hidden/></field>
+    <field name="caLeftCoordinate" map-name="view"><hidden/></field>
+    <field name="caCreatedDate" map-name="view"><hidden/></field>
+    <field name="caCreatedByUserLogin" map-name="view"><hidden/></field>
+    <field name="caLastModifiedDate" map-name="view"><hidden/></field>
+    <field name="caLastModifiedByUserLogin" map-name="view"><hidden/></field>
+    <field name="contentTypeId" map-name="view"><hidden/></field>
+    <field name="ownerContentId" map-name="view"><hidden/></field>
+    <field name="instanceOfContentId" map-name="view"><hidden/></field>
+    <field name="dataResourceId" map-name="view"><hidden/></field>
+    <field name="templateDataResourceId" map-name="view"><hidden/></field>
+    <field name="dataSourceId" map-name="view"><hidden/></field>
+    <field name="privilegeEnumId" map-name="view"><hidden/></field>
+    <field name="serviceName" map-name="view"><hidden/></field>
+    <field name="localeString" map-name="view"><hidden/></field>
+    <field name="mimeTypeId" map-name="view"><hidden/></field>
+    <field name="characterSetId" map-name="view"><hidden/></field>
+    <field name="childLeafCount" map-name="view"><hidden/></field>
+    <field name="childBranchCount" map-name="view"><hidden/></field>
+    <field name="createdDate" map-name="view"><hidden/></field>
+    <field name="createdByUserLogin" map-name="view"><hidden/></field>
+    <field name="lastModifiedDate" map-name="view"><hidden/></field>
+    <field name="lastModifiedByUserLogin" map-name="view"><hidden/></field>
+    <field name="drDataResourceId" map-name="view"><hidden/></field>
+    <field name="drDataResourceTypeId" map-name="view"><hidden/></field>
+    <field name="drDataTemplateTypeId" map-name="view"><hidden/></field>
+    <field name="drDataCategoryId" map-name="view"><hidden/></field>
+    <field name="drDataSourceId" map-name="view"><hidden/></field>
+    <field name="drStatusId" map-name="view"><hidden/></field>
+    <field name="drDataResourceName" map-name="view"><hidden/></field>
+    <field name="drLocaleString" map-name="view"><hidden/></field>
+    <field name="drMimeTypeId" map-name="view"><hidden/></field>
+    <field name="drCharacterSetId" map-name="view"><hidden/></field>
+    <field name="drObjectInfo" map-name="view"><hidden/></field>
+    <field name="drRelatedDetailId" map-name="view"><hidden/></field>
+    <field name="drIsPublic" map-name="view"><hidden/></field>
+    <field name="drCreatedDate" map-name="view"><hidden/></field>
+    <field name="drCreatedByUserLogin" map-name="view"><hidden/></field>
+    <field name="drLastModifiedDate" map-name="view"><hidden/></field>
+    <field name="drLastModifiedByUserLogin" map-name="view"><hidden/></field>
+    <field name="deactivateExisting" map-name="view"><hidden/></field>
+    <field name="contentPurposeString" map-name="view"><hidden/></field>          <field name="contentName" title="Short title" map-name="view" >
+          <text size="40"/>
+        </field>
+        <field name="description" title="Slightly longer title (250 chars max)" map-name="view" >
+          <textarea cols="40" rows="2"/>
+        </field>
+       <field name="contentId" title="Blog ID"  map-name="parameters" use-when="contentId!=null">
+          <display/>
+        </field>
+        <field name="summaryData" title="Summary" entry-name="textData" map-name="summaryText" >
+            <textarea cols="60" rows="4"/>
+        </field>
+        <!--
+        <field name="textData" title="Article" map-name="electronicText">
+            <textarea cols="60" rows="12"/>
+        </field>
+            -->
+        <field name="statusId" >
+           <radio no-current-selected-key="BLOG_DRAFT">
+             <option key="BLOG_PUBLISHED" description="POST"/>
+             <option key="BLOG_DRAFT" description="PREVIEW"/>
+           </radio>
+        </field>
+       <field name="deactivateExisting" >
+                <hidden value="false"/>
+        </field>
+       <field name="contentPurposeString" >
+                <hidden value="ARTICLE"/>
+        </field>
+        <sort-order>
+            <sort-field name="contentId"/>
+            <sort-field name="contentName"/>
+            <sort-field name="description"/>
+            <sort-field name="summaryData"/>
+            <sort-field name="textData"/>
+            <sort-field name="statusId"/>
+            <sort-field name="submitButton"/>
+        </sort-order>
+    </form>
+    
+    <form name="editFormSubmit" target="" title="" type="single"
+        default-title-style="treeHeader"
+        skip-start="true"
+        skip-end="true"
+        default-tooltip-style="tabletext" default-widget-style="inputBox">
+        <field name="submitButton" title="Submit" widget-style="smallSubmit"><submit button-type="button"/></field>
+    </form>
+    
+    <form name="editFormEnd" target="" title="" type="single"
+        default-title-style="treeHeader"
+        skip-start="true"
+        default-tooltip-style="tabletext" default-widget-style="inputBox">
+    </form>
+    
+</forms>

Added: ofbiz/trunk/applications/ecommerce/widget/blog/BlogMenus.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/blog/BlogMenus.xml?view=auto&rev=499264
==============================================================================
--- ofbiz/trunk/applications/ecommerce/widget/blog/BlogMenus.xml (added)
+++ ofbiz/trunk/applications/ecommerce/widget/blog/BlogMenus.xml Tue Jan 23 21:17:03 2007
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations
+under the License.
+-->
+<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-menu.xsd">
+  
+  <menu name="blogmenu" default-title-style="tabButton"
+        default-selected-style="tabButtonSelected"
+        default-menu-item-name="all"
+        orientation="horizontal"
+        menu-width="100%"
+        default-tooltip-style="tabletext" default-widget-style="tabButton"
+        menu-wrapper-style="blogmenuwrapper"
+        title="" type="simple">
+        <menu-item name="BLOGROOTJAZ" title="Andy's Blog" >
+            <link target="MainBlog?contentContentId=BLOGROOTJAZ&amp;currentMenuItemName=BLOGROOTJAZ" target-window="_top" style="tabButton" />
+        </menu-item>
+        <menu-item name="BLOGROOTJONES" title="David's Blog" >
+            <link target="MainBlog?contentContentId=BLOGROOTJONES&amp;currentMenuItemName=BLOGROOTJONES" target-window="_top" style="tabButton" />
+        </menu-item>
+        <menu-item name="all" title="All" >
+            <link target="MainBlog?contentContentId=BLOGROOTJAZ|BLOGROOTJONES&amp;currentMenuItemName=all" target-window="_top" style="tabButton" />
+        </menu-item>
+  </menu>
+  <menu name="view_edit" default-title-style="tabButton"
+        default-selected-style="tabButtonSelected"
+        default-menu-item-name="all"
+        orientation="horizontal"
+        menu-width="100%"
+        default-tooltip-style="tabletext" default-widget-style="tabButton"
+        menu-wrapper-style="blogmenuwrapper"
+        title="" type="simple">
+        <menu-item name="view" title="View" >
+                      <!--<link  text="View" target="ViewBlog?articleContentId=${blog.contentId}&amp;ownerContentId=${blog.ownerContentId}" style="tabButton" />-->
+                      <link  text="View" target="ViewBlog?articleContentId=${blog.contentId}&amp;caContentId=${blog.contentIdStart}&amp;caContentIdTo=${blog.caContentIdTo}&amp;contentId=${blog.contentId}&amp;caContentAssocTypeId=${blog.caContentAssocTypeId}&amp;caFromDate=${blog.caFromDate}&amp;drDataResourceId=${blog.dataResourceId}" style="tabButton" url-mode="inter-app"/>
+        </menu-item>
+        <menu-item name="edit" title="Edit" >
+          <condition>
+            <and>
+            <if-compare field-name="blog.statusId" operator="not-equals" value="BLOG_PUBLISHED"/>
+            <if-entity-permission entity-id="${blog.contentId}" entity-name="Content" target-operation="CONTENT_UPDATE"/>
+            </and>
+          </condition>
+                      <link  text="Edit" target="EditBlog?caContentId=${blog.contentIdStart}&amp;caContentIdTo=${blog.caContentIdTo}&amp;contentId=${blog.contentId}&amp;caContentAssocTypeId=${blog.caContentAssocTypeId}&amp;caFromDate=${blog.caFromDate}&amp;drDataResourceId=${blog.dataResourceId}" style="tabButton"  url-mode="inter-app"/>
+        </menu-item>
+  </menu>
+</menus>

Added: ofbiz/trunk/applications/ecommerce/widget/blog/BlogScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/blog/BlogScreens.xml?view=auto&rev=499264
==============================================================================
--- ofbiz/trunk/applications/ecommerce/widget/blog/BlogScreens.xml (added)
+++ ofbiz/trunk/applications/ecommerce/widget/blog/BlogScreens.xml Tue Jan 23 21:17:03 2007
@@ -0,0 +1,731 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations
+under the License.
+-->
+
+<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-screen.xsd">
+
+    <screen name="CommonBlog">
+        <section>
+            <actions>
+                <set field="currentMenuItemName"
+                    from-field="currentMenuItemName" default-value="all"
+                    from-scope="user" />
+                <set field="leftbarScreenName" value="leftbar" />
+                <set field="rightbarScreenName" value="rightbar" />
+                <set field="leftbarScreenLocation"
+                    value="component://ecommerce/widget/CommonScreens.xml" />
+                <set field="rightbarScreenLocation"
+                    value="component://ecommerce/widget/CommonScreens.xml" />
+            </actions>
+            <widgets>
+                <decorator-screen name="main-decorator"
+                    location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <container style="bloghr">
+                            <label text="Blogs: " style="blogtitle" />
+                            <!--
+                                <container style="appbarleft">
+                                <include-menu name="blogmenu" location="component://ecommerce/widget/blog/BlogMenus.xml" />
+                                </container>
+                            -->
+                        </container>
+                        <decorator-section-include name="body" />
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+
+    <screen name="MainBlog">
+        <section>
+            <actions>
+                <set field="MainColumnStyle" value="center" />
+                <property-to-field property="blog.view.size"
+                    field="blogViewSize" resource="blog" default="10"/>
+                <set field="caContentId"
+                    from-field="parameters.caContentId" />
+                <entity-condition entity-name="ContentAssocViewTo"
+                    use-cache="false" list-name="blogList">
+                    <condition-list combine="and">
+                        <condition-expr field-name="contentIdStart"
+                            operator="equals" env-name="caContentId" />
+                        <condition-expr
+                            field-name="caContentAssocTypeId" operator="equals"
+                            value="PUBLISH_LINK" />
+                        <condition-expr field-name="caThruDate"
+                            operator="equals" value="" />
+                        <condition-expr field-name="statusId"
+                            operator="equals" value="BLOG_PUBLISHED" />
+                    </condition-list>
+                    <order-by field-name="caFromDate DESC" />
+                </entity-condition>
+                <set field="viewIndex"
+                    from-field="requestParameters.VIEW_INDEX" type="Integer" />
+            </actions>
+            <widgets>
+                <section>
+                    <!-- if viewer has update permission, show all blogs, even those that were preview only -->
+                    <condition>
+                        <if-entity-permission entity-id="${caContentId}"
+                            entity-name="Content" target-operation="CONTENT_CREATE" />
+                    </condition>
+                    <actions>
+                        <service
+                            service-name="getOwnedOrPublishedBlogEntries"
+                            result-map-name="result">
+                            <field-map field-name="contentId"
+                                env-name="caContentId" />
+                            <field-map field-name="userLogin"
+                                env-name="userLogin" />
+                        </service>
+                        <set field="blogList"
+                            from-field="result.blogList" default-value="${blogList}" />
+                    </actions>
+                    <widgets />
+
+
+                </section>
+                <decorator-screen name="CommonBlog">
+                    <decorator-section name="body">
+                        <section>
+                            <condition>
+                                <if-entity-permission
+                                    entity-id="${caContentId}" entity-name="Content"
+                                    target-operation="CONTENT_CREATE" />
+                            </condition>
+                            <widgets>
+                                <link text="Add New"
+                                    target="EditBlog?caContentId=${caContentId}&amp;ownerContentId=${parameters.ownerContentId}"
+                                    style="tabButton" url-mode="inter-app" />
+                            </widgets>
+                        </section>
+                        <iterate-section list-name="blogList"
+                            entry-name="blog" view-size="${blogViewSize}" paginate="true"
+                            paginate-target="MainBlog?caContentId=${parameters.caContentId}&amp;ownerContentId=${parameters.ownerContentId}">
+                            <section name="firstBlog">
+                                <condition>
+                                    <if-compare field-name="itemIndex"
+                                        operator="equals" type="Integer" value="0" />
+                                </condition>
+                                <widgets>
+                                    <container style="blogwrapper">
+                                        <include-menu name="view_edit"
+                                            location="component://ecommerce/widget/blog/BlogMenus.xml" />
+                                        <label
+                                            text="${blog.contentName}" style="blogheader" />
+                                        <!--
+                                            <link  text="Latest" target="LatestResponses?ownerContentId=${blog.ownerContentId}" />
+                                        -->
+                                        <label text="&lt;br/&gt;" />
+                                        <container style="blogtext">
+                                            <sub-content
+                                                map-key="SUMMARY" content-id="${blog.contentId}" />
+                                        </container>
+                                    </container>
+                                </widgets>
+                            </section>
+                            <section name="allOtherBlogs">
+                                <condition>
+                                    <if-compare field-name="itemIndex"
+                                        operator="greater" type="Integer" value="0" />
+                                </condition>
+                                <widgets>
+                                    <container style="blogwrapper">
+                                        <include-menu name="view_edit"
+                                            location="component://ecommerce/widget/blog/BlogMenus.xml" />
+                                        <label
+                                            text="${blog.contentName}[${blog.contentId}]"
+                                            style="blogheader" />
+                                        <!--
+                                            <link  text="Latest" target="LatestResponses?ownerContentId=${blog.ownerContentId}" />
+                                        -->
+                                        <label text="&lt;br/&gt;" />
+                                        <container style="blogtext">
+                                            <label
+                                                text="${blog.description}" style="blogtext" />
+                                        </container>
+                                    </container>
+                                </widgets>
+                            </section>
+                        </iterate-section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+
+
+    <screen name="EditBlog">
+        <section>
+            <condition>
+                <or>
+                    <if-has-permission permission="CONTENTMGR"
+                        action="CREATE" />
+                    <if-entity-permission
+                        entity-id="${parameters.caContentId}" entity-name="Content"
+                        target-operation="CONTENT_CREATE" />
+                </or>
+            </condition>
+            <actions>
+                <set field="contentId"
+                    from-field="parameters.contentId" />
+                <entity-one entity-name="ContentAssocDataResourceViewTo"
+                    value-name="view">
+                    <field-map env-name="parameters.caContentId"
+                        field-name="contentIdStart" />
+                    <field-map env-name="parameters.caContentId"
+                        field-name="caContentId" />
+                    <field-map env-name="parameters.caContentIdTo"
+                        field-name="caContentIdTo" />
+                    <field-map env-name="parameters.contentId"
+                        field-name="contentId" />
+                    <field-map env-name="parameters.caFromDate"
+                        field-name="caFromDate" />
+                    <field-map
+                        env-name="parameters.caContentAssocTypeId"
+                        field-name="caContentAssocTypeId" />
+                    <field-map env-name="parameters.drDataResourceId"
+                        field-name="drDataResourceId" />
+                </entity-one>
+                <set field="view.contentId" from-field="view.contentId"
+                    default-value="${parameters.contentId}" />
+                <set field="view.caContentId"
+                    from-field="view.caContentId"
+                    default-value="${parameters.caContentId}" />
+                <set field="view.ownerContentId"
+                    from-field="view.ownerContentId"
+                    default-value="${parameters.caContentId}" />
+                <set field="view.contentTypeId" value="DOCUMENT" />
+                <set field="view.drDataResourceTypeId"
+                    value="ELECTRONIC_TEXT" />
+                <set field="view.caContentAssocTypeId"
+                    value="PUBLISH_LINK" />
+                <set field="thisContentId" from-field="view.contentId" />
+                <set field="drMimeTypeId"
+                    from-field="view.drMimeTypeId" />
+                <set field="drDataTemplateTypeId"
+                    from-field="view.drDataTemplateTypeId" />
+                <entity-one entity-name="ElectronicText"
+                    value-name="electronicText" use-cache="true">
+                    <field-map env-name="parameters.drDataResourceId"
+                        field-name="dataResourceId" />
+                </entity-one>
+                <set field="summaryMapKey" value="SUMMARY" />
+                <service service-name="getSubContent"
+                    result-map-name="result" auto-field-map="false">
+                    <field-map field-name="contentId"
+                        env-name="view.contentId" />
+                    <field-map field-name="mapKey"
+                        env-name="summaryMapKey" />
+                </service>
+                <entity-one entity-name="ElectronicText"
+                    value-name="summaryText" use-cache="false">
+                    <field-map field-name="dataResourceId"
+                        env-name="result.view.dataResourceId" />
+                </entity-one>
+
+                <set field="imageMapKey" value="IMAGE" />
+                <service service-name="getSubContent"
+                    result-map-name="imageResult" auto-field-map="false">
+                    <field-map field-name="contentId"
+                        env-name="view.contentId" />
+                    <field-map field-name="mapKey"
+                        env-name="imageMapKey" />
+                </service>
+                <set field="imageContent" from-field="imageResult.view"
+                    type="Object" />
+
+                <set field="mainMapKey" value="MAIN" />
+                <service service-name="getSubContent"
+                    result-map-name="textResult" auto-field-map="false">
+                    <field-map field-name="contentId"
+                        env-name="view.contentId" />
+                    <field-map field-name="mapKey"
+                        env-name="mainMapKey" />
+                </service>
+                <set field="textContent" from-field="textResult.view"
+                    type="Object" />
+                <entity-one entity-name="ElectronicText"
+                    value-name="textElectronicText" use-cache="true">
+                    <field-map env-name="textResult.view.dataResourceId"
+                        field-name="dataResourceId" />
+                </entity-one>
+
+                <set field="view.contentTypeId" value="DOCUMENT" />
+                <set field="view.caContentAssocTypeId"
+                    value="PUBLISH_LINK" />
+                <set field="view.drDataResourceTypeId"
+                    value="ELECTRONIC_TEXT" />
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBlog">
+                    <decorator-section name="body">
+                        <include-form name="EditBlogAll"
+                            location="component://ecommerce/widget/blog/BlogForms.xml" />
+                        <platform-specific>
+                            <html>
+                                <html-template
+                                    location="component://ecommerce/widget/blog/textimage.ftl" />
+                            </html>
+                        </platform-specific>
+                        <include-form name="editFormSubmit"
+                            location="component://ecommerce/widget/blog/BlogForms.xml" />
+                        <include-form name="editFormEnd"
+                            location="component://ecommerce/widget/blog/BlogForms.xml" />
+                        <label text="&lt;hr/&gt;" />
+                        <content content-id="${thisContentId}" />
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+            <fail-widgets>
+                 <label text="Permissions failed."></label>
+            </fail-widgets>
+        </section>
+    </screen>
+
+    <screen name="ViewBlog">
+        <section>
+            <actions>
+                <set field="articleContentId"
+                    from-field="parameters.articleContentId" />
+                <set field="ownerContentId"
+                    from-field="parameters.contentId" />
+                <entity-one entity-name="Content" value-name="content"
+                    use-cache="true">
+                    <field-map field-name="contentId"
+                        env-name="articleContentId" />
+                </entity-one>
+                <set field="enableEdit" value="false" />
+                <property-to-field property="root.publish.point.blog"
+                    field="webPutPt" resource="blog" />
+                <set field="rsp.contentName"
+                    value="RE:${content.contentName}" />
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBlog">
+                    <decorator-section name="body">
+                        <label text="&lt;p/&gt;" />
+                        <container style="bloghr">
+                            <label text="${content.contentName}"
+                                style="blogtitle" />
+                        </container>
+                        <container style="blogcontentwrapper">
+                            <content content-id="${articleContentId}" />
+                        </container>
+
+                        <section>
+                            <condition>
+                                <if-entity-permission
+                                    entity-id="${articleContentId}" entity-name="Content"
+                                    target-operation="CONTENT_UPDATE" />
+                            </condition>
+                            <widgets>
+                                <link text="Edit"
+                                    target="EditBlog?caContentId=${parameters.caContentId}&amp;caContentIdTo=${parameters.caContentIdTo}&amp;contentId=${parameters.contentId}&amp;caContentAssocTypeId=${parameters.caContentAssocTypeId}&amp;caFromDate=${parameters.caFromDate}&amp;drDataResourceId=${parameters.drDataResourceId}"
+                                    style="tabButton" url-mode="inter-app" />
+                            </widgets>
+                        </section>
+
+                        <label text="&lt;p/&gt;" />
+                        <include-screen name="BlogResponses" />
+                        <label text="&lt;p/&gt;" />
+                        <!--
+                            <link  text="Latest" target="LatestResponses?ownerContentId=${webPubPt}" />
+                        -->
+
+                        <container style="bloghr">
+                            <label text="Respond to this blog: "
+                                style="blogtitle" />
+                            <section>
+                                <!-- if viewer has update permission, show all blogs, even those that were preview only -->
+                                <condition>
+                                    <and>
+                                        <if-compare
+                                            field-name="content.statusId" operator="equals"
+                                            value="BLOG_PUBLISHED" />
+                                       <if-entity-permission
+                                            entity-id="${parameters.caContentId}" entity-name="Content"
+                                            target-operation="HAS_USER_ROLE" />
+                                   </and>
+                                </condition>
+                                <actions>
+                                </actions>
+                                <widgets>
+                                    <include-screen name="AddBlogResponse" />
+                                </widgets>
+                                <fail-widgets>
+                                    <label
+                                        text="You must be logged in in order to post comments." />
+                                </fail-widgets>
+                            </section>
+                        </container>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="ViewResponse">
+        <section>
+            <actions>
+                <set field="caContentId"
+                    from-field="parameters.contentId" />
+                <set field="responseContentId"
+                    from-field="parameters.contentId" />
+                <set field="articleContentId"
+                    from-field="parameters.articleContentId" />
+                <set field="ownerContentId"
+                    from-field="parameters.ownerContentId" />
+                <entity-one entity-name="Content" value-name="content"
+                    use-cache="true">
+                    <field-map field-name="contentId"
+                        env-name="caContentId" />
+                </entity-one>
+                <set field="trail" from-field="articleContentId" />
+                <set field="enableEdit" value="false" />
+                <property-to-field property="root.publish.point.blog"
+                    field="webPubPt" resource="blog" />
+                <set field="rsp.contentName"
+                    value="${content.contentName}" />
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBlog">
+                    <decorator-section name="body">
+                        <label text="&lt;p/&gt;" />
+                        <container style="bloghr">
+                            <label text="${content.contentName}"
+                                style="blogtitle" />
+                        </container>
+                        <container style="blogcontentwrapper">
+                            <content content-id="${caContentId}" />
+                        </container>
+                        <label text="&lt;p/&gt;" />
+
+                        <section>
+                            <condition>
+                                <if-compare
+                                    field-name="content.statusId" operator="equals"
+                                    value="BLOG_PUBLISHED" />
+                            </condition>
+                            <widgets>
+                                <container style="bloghr">
+                                    <label
+                                        text="Respond to this response: " style="blogtitle" />
+                                </container>
+                                <include-screen name="AddBlogResponse" />
+                            </widgets>
+                        </section>
+
+                        <section>
+                            <condition>
+                                <if-compare
+                                    field-name="content.statusId" operator="equals"
+                                    value="BLOG_DRAFT" />
+                            </condition>
+                            <widgets>
+                                <container style="bloghr">
+                                    <label text="Edit this response: "
+                                        style="blogtitle" />
+                                </container>
+                                <include-screen name="EditBlogResponse" />
+                            </widgets>
+                        </section>
+
+                        <label text="&lt;p/&gt;" />
+                        <container style="bloghr">
+                            <label text="Response tree: "
+                                style="blogtitle" />
+                        </container>
+                        <include-tree name="ResponseTree"
+                            location="component://ecommerce/widget/blog/BlogTrees.xml" />
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="BlogContent">
+        <section>
+            <condition>
+                <not>
+                    <if-empty field-name="contentId" />
+                </not>
+            </condition>
+            <actions />
+
+            <widgets>
+                <content content-id="${contentId}" />
+            </widgets>
+        </section>
+    </screen>
+    <screen name="AdminBlog">
+        <section>
+            <actions />
+
+            <widgets>
+                <decorator-screen name="CommonBlog">
+                    <decorator-section name="body">
+                        <include-form name="findBlogContent"
+                            location="component://ecommerce/widget/blog/BlogForms.xml" />
+                        <include-form name="listFindBlogContent"
+                            location="component://ecommerce/widget/blog/BlogForms.xml" />
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="BlogResponses">
+        <section>
+            <actions>
+                <entity-condition entity-name="ContentAssocViewTo"
+                    use-cache="true" list-name="responseList">
+                    <condition-list combine="and">
+                        <condition-expr field-name="caContentId"
+                            operator="equals" value="${articleContentId}" />
+                        <condition-expr
+                            field-name="caContentAssocTypeId" operator="equals"
+                            value="RESPONSE" />
+                        <condition-expr field-name="caThruDate"
+                            operator="equals" value="" />
+                    </condition-list>
+                    <order-by field-name="caFromDate DESC" />
+                </entity-condition>
+                <set field="viewIndex"
+                    from-field="requestParameters.VIEW_INDEX" type="Integer" />
+
+            </actions>
+            <widgets>
+                <container style="bloghr">
+                    <label text="Top-level responses: "
+                        style="blogtitle" />
+                </container>
+                <iterate-section list-name="responseList"
+                    entry-name="rsp" view-size="10">
+                    <section name="Blog Responses">
+                        <actions>
+                            <!--
+                                <set field="currentNodeTrailPiped" value="${articleContentId}|${rsp.contentId}" />
+                            -->
+                        </actions>
+                        <widgets>
+                            <include-screen name="responseTreeLine" />
+                        </widgets>
+                    </section>
+                </iterate-section>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="LatestResponses">
+        <section>
+            <actions>
+                <entity-condition
+                    entity-name="ContentAssocDataResourceViewFrom" use-cache="false"
+                    list-name="responseList">
+                    <condition-list combine="and">
+                        <condition-expr field-name="ownerContentId"
+                            operator="equals" value="${parameters.ownerContentId}" />
+                        <condition-expr
+                            field-name="caContentAssocTypeId" operator="equals"
+                            value="RESPONSE" />
+                        <condition-expr field-name="caThruDate"
+                            operator="equals" value="" />
+                    </condition-list>
+                    <order-by field-name="caFromDate DESC" />
+                </entity-condition>
+
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBlog">
+                    <decorator-section name="body">
+                        <label text="Latest Responses" />