Author: jaz
Date: Tue Feb 27 18:52:07 2007 New Revision: 512581 URL: http://svn.apache.org/viewvc?view=rev&rev=512581 Log: added meta-data for content "pages" (quick entry, creates sub-content records); added new data types to CMS, Image, Object, Video, etc Added: ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh (with props) ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl (with props) Removed: ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSEditor.ftl Modified: ofbiz/trunk/applications/content/webapp/content/WEB-INF/controller.xml ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSContent.ftl ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSNav.ftl ofbiz/trunk/applications/content/widget/WebSiteScreens.xml Added: ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh?view=auto&rev=512581 ============================================================================== --- ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh (added) +++ ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh Tue Feb 27 18:52:07 2007 @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +import org.ofbiz.base.util.*; +import org.ofbiz.entity.*; +import org.ofbiz.entity.util.*; + +if (content != null) { + // lookup assoc content + titles = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentId, "mapKey", "title"), UtilMisc.toList("-fromDate")); + titles = EntityUtil.filterByDate(titles); + title = EntityUtil.getFirst(titles); + if (title != null) { + tc = title.getRelatedOne("ToContent"); + tcdr = tc.getRelatedOne("DataResource"); + context.put("title", tcdr); + } + + titleProps = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentId, "mapKey", "titleProperty"), UtilMisc.toList("-fromDate")); + titleProps = EntityUtil.filterByDate(titleProps); + titleProp = EntityUtil.getFirst(titleProps); + if (titleProp != null) { + tpc = titleProp.getRelatedOne("ToContent"); + tpcdr = tpc.getRelatedOne("DataResource"); + context.put("titleProperty", tpcdr); + } + + metaDescs = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentId, "mapKey", "metaDescription"), UtilMisc.toList("-fromDate")); + metaDescs = EntityUtil.filterByDate(metaDescs); + metaDesc = EntityUtil.getFirst(metaDescs); + if (metaDesc != null) { + mdc = metaDesc.getRelatedOne("ToContent"); + mdcdr = mdc.getRelatedOne("DataResource"); + context.put("metaDescription", mdcdr); + } + + metaKeys = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentId, "mapKey", "metaKeywords"), UtilMisc.toList("-fromDate")); + metaKeys = EntityUtil.filterByDate(metaKeys); + metaKey = EntityUtil.getFirst(metaKeys); + if (metaKey != null) { + mkc = metaKey.getRelatedOne("ToContent"); + mkcdr = mkc.getRelatedOne("DataResource"); + context.put("metaKeywords", mkcdr); + } +} \ No newline at end of file Propchange: ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/applications/content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/applications/content/webapp/content/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/webapp/content/WEB-INF/controller.xml?view=diff&rev=512581&r1=512580&r2=512581 ============================================================================== --- ofbiz/trunk/applications/content/webapp/content/WEB-INF/controller.xml (original) +++ ofbiz/trunk/applications/content/webapp/content/WEB-INF/controller.xml Tue Feb 27 18:52:07 2007 @@ -286,15 +286,45 @@ <request-map uri="updateTextContentCms"> <security https="true" auth="true"/> <event type="service" invoke="updateTextContent"/> - <response name="success" type="request-redirect" value="WebSiteCms"/> + <response name="success" type="view" value="WebSiteCMS"/> + <response name="error" type="view" value="WebSiteCMS"/> + </request-map> + <request-map uri="createObjectContentCms"> + <security https="true" auth="true"/> + <event type="service" invoke="createContentFromUploadedFile"/> + <response name="success" type="view" value="WebSiteCMS"/> <response name="error" type="view" value="WebSiteCMS"/> </request-map> - <request-map uri="updateTextContentCms"> + <request-map uri="updateObjectContentCms"> <security https="true" auth="true"/> - <event type="service" invoke="updateTextContent"/> + <event type="service" invoke="updateContentAndUploadedFile"/> <response name="success" type="view" value="WebSiteCMS"/> <response name="error" type="view" value="WebSiteCMS"/> </request-map> + <request-map uri="createContentCms"> + <security https="true" auth="true"/> + <event type="service" invoke="createContent"/> + <response name="success" type="view" value="WebSiteCMS"/> + <response name="error" type="view" value="WebSiteCMS"/> + </request-map> + <request-map uri="updateContentCms"> + <security https="true" auth="true"/> + <event type="service" invoke="updateContent"/> + <response name="success" type="view" value="WebSiteCMS"/> + <response name="error" type="view" value="WebSiteCMS"/> + </request-map> + <request-map uri="createWebSiteMetaInfoJson"> + <security https="true" auth="true"/> + <event type="json" invoke="createTextContent"/> + <response name="success" type="none"/> + <response name="error" type="none"/> + </request-map> + <request-map uri="updateWebSiteMetaInfoJson"> + <security https="true" auth="true"/> + <event type="json" invoke="updateDataResource"/> + <response name="success" type="none"/> + <response name="error" type="none"/> + </request-map> <request-map uri="createWebSitePathAliasJson"> <security https="true" auth="true"/> <event type="json" invoke="createWebSitePathAlias"/> @@ -1633,6 +1663,7 @@ <view-map name="WebSiteCMS" page="component://content/widget/WebSiteScreens.xml#WebSiteCMS" type="screen"/> <view-map name="WebSiteCMSContent" page="component://content/widget/WebSiteScreens.xml#WebSiteCMSContent" type="screen"/> <view-map name="WebSiteCMSEditor" page="component://content/widget/WebSiteScreens.xml#WebSiteCMSEditor" type="screen"/> + <view-map name="WebSiteCMSMetaInfo" page="component://content/widget/WebSiteScreens.xml#WebSiteCMSMetaInfo" type="screen"/> <view-map name="WebSiteCMSPathAlias" page="component://content/widget/WebSiteScreens.xml#WebSiteCMSPathAlias" type="screen"/> <view-map name="WebSiteCMSNav" page="component://content/widget/WebSiteScreens.xml#WebSiteCMSNav" type="screen"/> <view-map name="EditWebSiteParties" page="component://content/widget/WebSiteScreens.xml#EditWebSiteParties" type="screen"/> Modified: ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSContent.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSContent.ftl?view=diff&rev=512581&r1=512580&r2=512581 ============================================================================== --- ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSContent.ftl (original) +++ ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSContent.ftl Tue Feb 27 18:52:07 2007 @@ -17,131 +17,258 @@ under the License. --> -<#if (!contentRoot?has_content)> - <#assign contentRoot = parameters.contentRoot/> -</#if> -<#assign formAction = "/createTextContentCms"/> -<#if (content?has_content)> - <#assign formAction = "/updateTextContentCms"/> -</#if> +<script type="text/javascript"> + function cmsSave() { + var editor = dojo.widget.byId("w_editor"); + if (editor) { + var cmsdata = dojo.byId("cmsdata"); + cmsdata.value = editor.getEditorContent(); + } + + // get the cmsform + var form = document.cmsform; + + // set the data resource name + form.dataResourceName.value = form.contentName.value; + + // submit the form + if (form != null) { + form.submit(); + } else { + alert("Cannot find the cmsform!"); + } + + return false; + } + + function selectDataType(contentId) { + var selectObject = document.forms['cmsdatatype'].elements['dataResourceTypeId']; + var typeValue = selectObject.options[selectObject.selectedIndex].value; + callEditor(true, contentId, '', typeValue); + } +</script> -<!-- cms menu bar --> +<#-- cms menu bar --> <div id="cmsmenu" style="margin-bottom: 8px;"> <#if (content?has_content)> - <a href="javascript:void(0);" onclick="javascript:callEditor(true, '${content.contentId}');" class="tabButton">New Content</a> + <a href="javascript:void(0);" onclick="javascript:callEditor(true, '${content.contentId}', '', 'ELECTRONIC_TEXT');" class="tabButton">Quick Sub-Content</a> <a href="javascript:void(0);" onclick="javascript:callPathAlias('${content.contentId}');" class="tabButton">New PathAlias</a> + <a href="javascript:void(0);" onclick="javascript:callMetaInfo('${content.contentId}');" class="tabButton">Meta Data</a> </#if> </div> +<#-- content info --> <#if (!content?has_content)> <div class="tabletext" style="margin-bottom: 8px;"> New <b>${contentAssocTypeId?default("SUBSITE")}</b> attached to Content: ${contentIdFrom?default(contentRoot)}</b> </div> </#if> -<form name="cmsform" method="post" action="<@ofbizUrl>${formAction}</@ofbizUrl>" style="margin: 0;"> +<#-- dataResourceTypeId --> +<#if (!dataResourceTypeId?has_content)> + <#if (dataResource?has_content)> + <#assign dataResourceTypeId = dataResource.dataResourceTypeId/> + <#elseif (content?has_content)> + <#assign dataResourceTypeId = "NONE"/> + <#else> + <form name="cmsdatatype"> + <table> + <tr> + <td><div class="tableheadtext">Data Type</div></td> + <td> + <select class="inputBox" name="dataResourceTypeId"> + <option value="NONE">None (Tree, Category, etc)</option> + <option value="SHORT_TEXT">Short Text (255 chars.)</option> + <option value="ELECTRONIC_TEXT">Long Text</option> + <option value="IMAGE_OBJECT">Image</option> + <option value="VIDEO_OBJECT">Video</option> + <option value="AUDIO_OBJECT">Audio</option> + <option value="OTHER_OBJECT">Other</option> + </select> + </td> + </tr> + <tr> + <td align="center" colspan="2"> + <a href="javascript:void(0);" onclick="javascript:selectDataType('${contentIdFrom?default(contentRoot)}');" class="buttontext">Continue</a> + </td> + </tr> + <#list 0..15 as x> + <tr><td colspan="2"> </td></tr> + </#list> + </table> + </form> + </#if> +</#if> + +<#-- form action --> +<#if (dataResourceTypeId?has_content)> + <#assign actionSuffix = "ContentCms"/> + <#if (dataResourceTypeId == "NONE" || (content?has_content && !content.dataResourceId?has_content))> + <#assign actionMiddle = ""/> + <#else> + <#if (dataResourceTypeId?ends_with("_OBJECT"))> + <#assign actionMiddle = "Object"/> + <#else> + <#assign actionMiddle = "Text"/> + </#if> + </#if> + + <#if (!contentRoot?has_content)> + <#assign contentRoot = parameters.contentRoot/> + </#if> <#if (content?has_content)> - <input type="hidden" name="dataResourceId" value="${(dataText.dataResourceId)?if_exists}"/> - <input type="hidden" name="mimeTypeId" value="${content.mimeTypeId?default(mimeTypeId)}"/> - <input type="hidden" name="contentId" value="${content.contentId}"/> - - <#list requestParameters.keySet() as paramName> - <#if (paramName == 'contentIdFrom' || paramName == 'contentAssocTypeId' || paramName == 'fromDate')> - <input type="hidden" name="${paramName}" value="${requestParameters.get(paramName)}"/> - </#if> - </#list> + <#assign actionPrefix = "/update"/> <#else> - <input type="hidden" name="contentAssocTypeId" value="${contentAssocTypeId?default('SUBSITE')}"/> - <input type="hidden" name="ownerContentId" value="${contentIdFrom?default(contentRoot)}"/> - <input type="hidden" name="contentIdFrom" value="${contentIdFrom?default(contentRoot)}"/> - <input type="hidden" name="mimeTypeId" value="${mimeTypeId}"/> + <#assign actionPrefix = "/create"/> </#if> - <input type="hidden" name="webSiteId" value="${webSiteId}"/> - <input type="hidden" name="dataResourceName" value=""/> - - <table> - <#if (content?has_content)> - <tr> - <td><div class="tableheadtext">Content ID</div></td> - <td><div class="tabletext">${content.contentId}</div></td> - </tr> - </#if> - <tr> - <td><div class="tableheadtext">Name</div></td> - <td> - <input type="text" name="contentName" class="inputBox" value="${(content.contentName)?if_exists}" size="40"/> - </td> - </tr> - <tr> - <td><div class="tableheadtext">Description</div></td> - <td> - <textarea name="description" class="inputBox" cols="40" rows="6">${(content.description)?if_exists}</textarea> - </td> - </tr> - <tr> - <td><div class="tableheadtext">Key</div></td> - <td> - <input type="text" name="mapKey" class="inputBox" value="${(assoc.mapKey)?if_exists}" size="40"/> - </td> - </tr> - <tr> - <td><div class="tableheadtext">Data Type</div></td> - <td> - <select name="dataTemplateTypeId" class="selectBox"> - <#if (dataResource?has_content)> - <#if (dataResource.dataTemplateTypeId?has_content)> - <#assign thisType = dataResource.getRelatedOne("DataTemplateType")?if_exists/> - <option value="${thisType.dataTemplateTypeId}">${thisType.description}</option> - <option value="${thisType.dataTemplateTypeId}">----</option> - </#if> + <#assign formAction = actionPrefix + actionMiddle + actionSuffix/> +<#else> + <#assign formAction = "javascript:void(0);"/> +</#if> + +<#-- main content form --> +<#if (dataResourceTypeId?has_content)> + <form name="cmsform" enctype="multipart/form-data" method="post" action="<@ofbizUrl>${formAction}</@ofbizUrl>" style="margin: 0;"> + <#if (content?has_content)> + <input type="hidden" name="dataResourceId" value="${(dataResource.dataResourceId)?if_exists}"/> + <input type="hidden" name="mimeTypeId" value="${content.mimeTypeId?default(mimeTypeId)}"/> + <input type="hidden" name="contentId" value="${content.contentId}"/> + + <#list requestParameters.keySet() as paramName> + <#if (paramName == 'contentIdFrom' || paramName == 'contentAssocTypeId' || paramName == 'fromDate')> + <input type="hidden" name="${paramName}" value="${requestParameters.get(paramName)}"/> </#if> - <#list templateTypes as type> - <option value="${type.dataTemplateTypeId}">${type.description}</option> - </#list> - </select> - </td> - </tr> - <tr> - <td><div class="tableheadtext">Template</div></td> - <td> - <select name="templateDataResourceId" class="selectBox"> - <#if (content?has_content)> - <#if (content.templateDataResourceId?has_content && content.templateDataResourceId != "NONE")> - <#assign template = content.getRelatedOne("TemplateDataResource")/> - <option value="${template.dataResourceId}">${template.dataResourceName}</option> - <option value="${template.dataResourceId}">----</option> + </#list> + <#else> + <input type="hidden" name="contentAssocTypeId" value="${contentAssocTypeId?default('SUBSITE')}"/> + <input type="hidden" name="ownerContentId" value="${contentIdFrom?default(contentRoot)}"/> + <input type="hidden" name="contentIdFrom" value="${contentIdFrom?default(contentRoot)}"/> + <input type="hidden" name="mimeTypeId" value="${mimeTypeId}"/> + </#if> + <#if (dataResourceTypeId != 'NONE')> + <input type="hidden" name="dataResourceTypeId" value="${dataResourceTypeId}"/> + </#if> + <input type="hidden" name="webSiteId" value="${webSiteId}"/> + <input type="hidden" name="dataResourceName" value="${(dataResource.dataResourceName)?if_exists}"/> + + <table> + <#if (content?has_content)> + <tr> + <td><div class="tableheadtext">Content ID</div></td> + <td><div class="tabletext">${content.contentId}</div></td> + </tr> + </#if> + <tr> + <td><div class="tableheadtext">Name</div></td> + <td> + <input type="text" name="contentName" class="inputBox" value="${(content.contentName)?if_exists}" size="40"/> + </td> + </tr> + <tr> + <td><div class="tableheadtext">Description</div></td> + <td> + <textarea name="description" class="inputBox" cols="40" rows="6">${(content.description)?if_exists}</textarea> + </td> + </tr> + <tr> + <td><div class="tableheadtext">Key</div></td> + <td> + <input type="text" name="mapKey" class="inputBox" value="${(assoc.mapKey)?if_exists}" size="40"/> + </td> + </tr> + <tr> + <td><div class="tableheadtext">Data Type</div></td> + <td> + <select name="dataTemplateTypeId" class="selectBox"> + <#if (dataResource?has_content)> + <#if (dataResource.dataTemplateTypeId?has_content)> + <#assign thisType = dataResource.getRelatedOne("DataTemplateType")?if_exists/> + <option value="${thisType.dataTemplateTypeId}">${thisType.description}</option> + <option value="${thisType.dataTemplateTypeId}">----</option> + </#if> </#if> - </#if> - <option value="">None</option> - <#list templates as template> - <option value="${template.dataResourceId}">${template.dataResourceName}</option> - </#list> - </select> - </td> - </tr> - <tr> - <td><div class="tableheadtext">Status</div></td> - <td> - <select name="statusId" class="selectBox"> - <#if (content?has_content)> - <#if (content.statusId?has_content)> - <#assign statusItem = content.getRelatedOne("StatusItem")/> - <option value="${statusItem.statusId}">${statusItem.description}</option> - <option value="${statusItem.statusId}">----</option> + <#list templateTypes as type> + <option value="${type.dataTemplateTypeId}">${type.description}</option> + </#list> + </select> + </td> + </tr> + <tr> + <td><div class="tableheadtext">Template</div></td> + <td> + <select name="templateDataResourceId" class="selectBox"> + <#if (content?has_content)> + <#if (content.templateDataResourceId?has_content && content.templateDataResourceId != "NONE")> + <#assign template = content.getRelatedOne("TemplateDataResource")/> + <option value="${template.dataResourceId}">${template.dataResourceName}</option> + <option value="${template.dataResourceId}">----</option> + </#if> + </#if> + <option value="">None</option> + <#list templates as template> + <option value="${template.dataResourceId}">${template.dataResourceName}</option> + </#list> + </select> + </td> + </tr> + <tr> + <td><div class="tableheadtext">Status</div></td> + <td> + <select name="statusId" class="selectBox"> + <#if (content?has_content)> + <#if (content.statusId?has_content)> + <#assign statusItem = content.getRelatedOne("StatusItem")/> + <option value="${statusItem.statusId}">${statusItem.description}</option> + <option value="${statusItem.statusId}">----</option> + </#if> </#if> + <#list statuses as status> + <option value="${status.statusId}">${status.description}</option> + </#list> + </select> + </td> + </tr> + <tr> + <td colspan="2"> + <textarea id="cmsdata" name="textData" class="inputBox" cols="40" rows="6" style="display: none;"> + <#if (dataText?has_content)> + ${dataText.textData} </#if> - <#list statuses as status> - <option value="${status.statusId}">${status.description}</option> - </#list> - </select> - </td> - </tr> - <tr> - <td colspan="2"> - <textarea id="cmsdata" name="textData" class="inputBox" cols="40" rows="6" style="display: none;"> - <#if (dataText?has_content)> - ${dataText.textData} - </#if> - </textarea> - </table> -</form> \ No newline at end of file + </textarea> + </td> + </tr> + + <#-- this all depends on the dataResourceTypeId which was selected --> + <#if (dataResourceTypeId == 'IMAGE_OBJECT' || dataResourceTypeId == 'OTHER_OBJECT' || + dataResourceTypeId == 'VIDEO_OBJECT' || dataResourceTypeId == 'AUDIO_OBJECT')> + <tr> + <td><div class="tableheadtext">Upload</div></td> + <td> + <input type="file" name="uploadedFile" class="inputBox" size="30"/> + </td> + </tr> + <#elseif (dataResourceTypeId == 'SHORT_TEXT')> + <tr> + <td><div class="tableheadtext">Text</div></td> + <td> + <input type="text" name="objectInfo" class="inputBox" size="40" maxsize="255" value="${(dataResource.objectInfo)?if_exists}"/> + </td> + </tr> + <#elseif (dataResourceTypeId == 'ELECTRONIC_TEXT')> + <tr> + <td colspan="2"> + <div id="editorcontainer" class="nocolumns"> + <div id="cmseditor" style="margin: 0; width: 100%; border: 1px solid black;"></div> + </div> + </td> + </tr> + </#if> + + <tr> + <td align="center" colspan="2"> + <a href="javascript:void(0);" onclick="javascript:cmsSave();" class="buttontext">Save</a> + </td> + </tr> + </table> + </form> +</#if> \ No newline at end of file Added: ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl?view=auto&rev=512581 ============================================================================== --- ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl (added) +++ ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl Tue Feb 27 18:52:07 2007 @@ -0,0 +1,120 @@ +<#-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you 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. + --> + +<#macro cmsNewMetaRec> + <input type="hidden" name="contentTypeId" value="DOCUMENT"/> + <input type="hidden" name="dataResourceTypeId" value="SHORT_TEXT"/> + <input type="hidden" name="contentAssocTypeId" value="SUB_CONTENT"/> + <input type="hidden" name="statusId" value="CTNT_PUBLISHED"/> + <input type="hidden" name="ownerContentId" value="${(content.contentId)?if_exists}"/> + <input type="hidden" name="contentIdFrom" value="${(content.contentId)?if_exists}"/> +</#macro> + +<#if (content?has_content)> + <div class="tabletext" style="margin-bottom: 8px;"> + Set <b>Meta-Data</b> for Content: <b>${content.contentId}</b></b> + </div> +</#if> + +<#if (title?has_content)> + <#assign titleAction = "/updateWebSiteMetaInfoJson"/> +<#else> + <#assign titleAction = "/createWebSiteMetaInfoJson"/> +</#if> +<#if (titleProperty?has_content)> + <#assign titlePropertyAction = "/updateWebSiteMetaInfoJson"/> +<#else> + <#assign titlePropertyAction = "/createWebSiteMetaInfoJson"/> +</#if> +<#if (metaDescription?has_content)> + <#assign metaDescriptionAction = "/updateWebSiteMetaInfoJson"/> +<#else> + <#assign metaDescriptionAction = "/createWebSiteMetaInfoJson"/> +</#if> +<#if (metaKeywords?has_content)> + <#assign metaKeywordsAction = "/updateWebSiteMetaInfoJson"/> +<#else> + <#assign metaKeywordsAction = "/createWebSiteMetaInfoJson"/> +</#if> + +<form name="cmsmeta_title" action="<@ofbizUrl>/${titleAction}</@ofbizUrl>" style="margin: 0;"> + <#if (title?has_content)> + <input type="hidden" name="dataResourceId" value="${title.dataResourceId}"/> + <#else> + <input type="hidden" name="contentName" value="Meta-Title: ${contentId}"/> + <input type="hidden" name="mapKey" value="title"/> + <@cmsNewMetaRec/> + </#if> + <input type="hidden" name="objectInfo" value=""/> +</form> +<form name="cmsmeta_titleProperty" action="<@ofbizUrl>/${titlePropertyAction}</@ofbizUrl>" style="margin: 0;"> + <#if (titleProperty?has_content)> + <input type="hidden" name="dataResourceId" value="${titleProperty.dataResourceId}"/> + <#else> + <input type="hidden" name="contentName" value="Meta-TitleProperty: ${contentId}"/> + <input type="hidden" name="mapKey" value="titleProperty"/> + <@cmsNewMetaRec/> + </#if> + <input type="hidden" name="objectInfo" value=""/> +</form> +<form name="cmsmeta_metaDescription" action="<@ofbizUrl>/${metaDescriptionAction}</@ofbizUrl>" style="margin: 0;"> + <#if (metaDescription?has_content)> + <input type="hidden" name="dataResourceId" value="${metaDescription.dataResourceId}"/> + <#else> + <input type="hidden" name="contentName" value="Meta-Description: ${contentId}"/> + <input type="hidden" name="mapKey" value="metaDescription"/> + <@cmsNewMetaRec/> + </#if> + <input type="hidden" name="objectInfo" value=""/> +</form> +<form name="cmsmeta_metaKeywords" action="<@ofbizUrl>/${metaKeywordsAction}</@ofbizUrl>" style="margin: 0;"> + <#if (metaKeywords?has_content)> + <input type="hidden" name="dataResourceId" value="${metaKeywords.dataResourceId}"/> + <#else> + <input type="hidden" name="contentName" value="Meta-Keywords: ${contentId}"/> + <input type="hidden" name="mapKey" value="metaKeywords"/> + <@cmsNewMetaRec/> + </#if> + <input type="hidden" name="objectInfo" value=""/> +</form> + +<form name="cmsmetaform" action="javascript:void(0);" style="margin: 0;"> + <table> + <tr> + <td><div class="tableheadtext">Page Title</div></td> + <td><input type="text" class="inputBox" name="title" value="${(title.objectInfo)?if_exists}" size="40"></td> + </tr> + <tr> + <td><div class="tableheadtext">Title Property</div></td> + <td><input type="text" class="inputBox" name="titleProperty" value="${(titleProperty.objectInfo)?if_exists}" size="40"></td> + </tr> + <tr> + <td><div class="tableheadtext">Meta-Description</div></td> + <td><input type="text" class="inputBox" name="metaDescription" value="${(metaDescription.objectInfo)?if_exists}" size="40"></td> + </tr> + <tr> + <td><div class="tableheadtext">Meta-Keywords</div></td> + <td><input type="text" class="inputBox" name="metaKeywords" value="${(metaKeywords.objectInfo)?if_exists}" size="40"></td> + </tr> + <tr><td colspan="2"> </td></tr> + <tr> + <td colspan="2" align="center"><input id="submit" type="button" onclick="javascript:saveMetaInfo(cmsmetaform);" class="smallSubmit" value="Save"/></td> + </tr> + </table> +</form> Propchange: ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSMeta.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSNav.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSNav.ftl?view=diff&rev=512581&r1=512580&r2=512581 ============================================================================== --- ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSNav.ftl (original) +++ ofbiz/trunk/applications/content/webapp/content/website/WebSiteCMSNav.ftl Tue Feb 27 18:52:07 2007 @@ -31,6 +31,7 @@ var webSiteId = '${webSiteId?if_exists}'; var editorUrl = '<@ofbizUrl>/views/WebSiteCMSContent</@ofbizUrl>'; var aliasUrl = '<@ofbizUrl>/views/WebSiteCMSPathAlias</@ofbizUrl>'; + var metaUrl = '<@ofbizUrl>/views/WebSiteCMSMetaInfo</@ofbizUrl>'; dojo.addOnLoad(function() { dojo.event.topic.subscribe("webCmsNodeSelected", @@ -39,9 +40,49 @@ callEditor(false, message.node.widgetId, message.node.object); } ); + dojo.event.topic.subscribe("newLong/engage", + function (menuItem) { + var node = menuItem.getTreeNode(); + callEditor(true, node.widgetId, '', 'ELECTRONIC_TEXT'); + } + ); + dojo.event.topic.subscribe("newShort/engage", + function (menuItem) { + var node = menuItem.getTreeNode(); + callEditor(true, node.widgetId, '', 'SHORT_TEXT'); + } + ); + dojo.event.topic.subscribe("newImage/engage", + function (menuItem) { + var node = menuItem.getTreeNode(); + callEditor(true, node.widgetId, '', 'IMAGE_OBJECT'); + } + ); + dojo.event.topic.subscribe("newVideo/engage", + function (menuItem) { + var node = menuItem.getTreeNode(); + callEditor(true, node.widgetId, '', 'VIDEO_OBJECT'); + } + ); + dojo.event.topic.subscribe("newAudio/engage", + function (menuItem) { + var node = menuItem.getTreeNode(); + callEditor(true, node.widgetId, '', 'AUDIO_OBJECT'); + } + ); + dojo.event.topic.subscribe("newObject/engage", + function (menuItem) { + var node = menuItem.getTreeNode(); + callEditor(true, node.widgetId, '', 'OTHER_OBJECT'); + } + ); var cmsdata = dojo.byId("cmsdata"); - createEditor(cmsdata.value); + if (cmsdata) { + createEditor(cmsdata.value); + } else { + createEditor(); + } //alert("On load called!"); }); @@ -57,13 +98,51 @@ // get the editor tag var editorNode = dojo.byId("cmseditor"); - if (text) { - editorNode.innerHTML = text; + if (editorNode) { + if (text) { + editorNode.innerHTML = text; + } + + // create the widget + dojo.widget.createWidget("Editor2", { id: 'w_editor', minHeight: '300px', + htmlEditing: true }, editorNode); } + } + + function callMetaInfo(contentId) { + var ctx = new Array(); + ctx['contentId'] = contentId; + ctx['webSiteId'] = webSiteId; - // create the widget - dojo.widget.createWidget("Editor2", { id: 'w_editor', minHeight: '300px', - htmlEditing: true }, editorNode); + // deselect the tree + var tree = dojo.widget.byId("webCmsTreeSelector"); + if (tree && treeSelected) { + tree.deselect(); + treeSelected = false; + } + + // destroy the editor + var editor = dojo.widget.byId("w_editor"); + if (editor) { + editor.destroy(true); + } + //dojo.html.hide("editorcontainer"); + + // get the meta-info screen + var bindArgs = { + url: metaUrl, + method: 'POST', + mimetype: 'text/html', + content: ctx, + error: function(type, data, evt) { + alert("An error occured loading content! : " + data); + }, + load: function(type, data, evt) { + var innerPage = dojo.byId('cmscontent'); + innerPage.innerHTML = data; + } + }; + dojo.io.bind(bindArgs); } function callPathAlias(contentId) { @@ -83,7 +162,7 @@ if (editor) { editor.destroy(true); } - dojo.html.hide("editorcontainer"); + //dojo.html.hide("editorcontainer"); // get the alias screen var bindArgs = { @@ -102,7 +181,7 @@ dojo.io.bind(bindArgs); } - function callEditor(sub, contentId, objstr) { + function callEditor(sub, contentId, objstr, dataResourceTypeId) { var ctx = new Array(); if (objstr != null && objstr.length > 0) { var obj = objstr.split("|"); @@ -115,12 +194,19 @@ ctx['webSiteId'] = webSiteId; if (sub && contentId) { + if (dataResourceTypeId) { + ctx['dataResourceTypeId'] = dataResourceTypeId; + } + ctx['contentIdFrom'] = contentId; ctx['contentAssocTypeId'] = 'SUB_CONTENT'; // deselect the tree var tree = dojo.widget.byId("webCmsTreeSelector"); - tree.deselect(); + if (tree && treeSelected) { + tree.deselect(); + treeSelected = false; + } } else { if (contentId != null && contentId.length > 0) { ctx['contentId'] = contentId; @@ -133,7 +219,7 @@ } } } - + var bindArgs = { url: editorUrl, method: 'POST', @@ -150,12 +236,34 @@ var cmsdata = dojo.byId("cmsdata"); // create the editor - createEditor(cmsdata.value); + if (cmsdata) { + createEditor(cmsdata.value); + } else { + createEditor(); + } } }; dojo.io.bind(bindArgs); } + function saveMetaInfo(form) { + // save title + document.cmsmeta_title.objectInfo.value = form.title.value; + ajaxSubmitForm(document.cmsmeta_title); + + // save title property + document.cmsmeta_titleProperty.objectInfo.value = form.titleProperty.value; + ajaxSubmitForm(document.cmsmeta_titleProperty); + + // save meta-description + document.cmsmeta_metaDescription.objectInfo.value = form.metaDescription.value; + ajaxSubmitForm(document.cmsmeta_metaDescription); + + // save meta-keywords + document.cmsmeta_metaKeywords.objectInfo.value = form.metaKeywords.value; + ajaxSubmitForm(document.cmsmeta_metaKeywords); + } + function pathSave(contentId) { //dojo.html.hide("submit"); @@ -199,9 +307,34 @@ } }; dojo.io.bind(bindArgs); - } + } + + function ajaxSubmitForm(form) { + if (form != null) { + var url = form.action; + var bindArgs = { + url: url, + method: "POST", + mimetype: "text/json", + formNode: form, + error: function(type, data, evt) { + alert("An error occurred submitting form."); + }, + load: function(type, data, evt) { + } + }; + dojo.io.bind(bindArgs); + } + } </script> +<style> +.dojoContextMenu { + background-color: #ccc; + font-size: 10px; +} +</style> + <#-- looping macro --> <#macro fillTree assocList> <#if (assocList?has_content)> @@ -218,12 +351,26 @@ </#if> </#macro> +<dl dojoType="TreeContextMenu" id="webCmsContextMenu" style="font-size: 1em; color: #ccc;"> + <dt dojoType="TreeMenuItem" id="newLong" caption="New Long Text"/> + <dt dojoType="TreeMenuItem" id="newShort" caption="New Short Text"/> + <dt dojoType="TreeMenuItem" id="newImage" caption="New Image"/> + <dt dojoType="TreeMenuItem" id="newVideo" caption="New Video"/> + <dt dojoType="TreeMenuItem" id="newAudio" caption="New Audio"/> + <dt dojoType="TreeMenuItem" id="newObject" caption="New Object"/> +</dl> + <div class="tableheadtext"> - Website Content + Website Content +</div> +<div class="tabletext"> + *Right click to add sub-content </div> +<div> </div> + <dojo:TreeSelector widgetId="webCmsTreeSelector" eventNames="select:webCmsNodeSelected"></dojo:TreeSelector> -<div dojoType="Tree" widgetId="webCmsTree" selector="webCmsTreeSelector" toggler="fade" toggleDuration="500"> +<div dojoType="Tree" menu="webCmsContextMenu" widgetId="webCmsTree" selector="webCmsTreeSelector" toggler="fade" toggleDuration="500"> <#if (subsites?has_content)> <@fillTree assocList = subsites/> </#if> -</div> \ No newline at end of file +</div> Modified: ofbiz/trunk/applications/content/widget/WebSiteScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/widget/WebSiteScreens.xml?view=diff&rev=512581&r1=512580&r2=512581 ============================================================================== --- ofbiz/trunk/applications/content/widget/WebSiteScreens.xml (original) +++ ofbiz/trunk/applications/content/widget/WebSiteScreens.xml Tue Feb 27 18:52:07 2007 @@ -195,7 +195,6 @@ <container id="cmscontent"> <include-screen name="WebSiteCMSContent"/> </container> - <include-screen name="WebSiteCMSEditor"/> </container> </widgets> <fail-widgets> @@ -232,7 +231,8 @@ <section> <actions> <set field="contentAssocTypeId" from-field="parameters.contentAssocTypeId"/> - <set field="contentIdFrom" from-field="parameters.contentIdFrom"/> + <set field="dataResourceTypeId" from-field="parameters.dataResourceTypeId"/> + <set field="contentIdFrom" from-field="parameters.contentIdFrom"/> <set field="webSiteId" from-field="parameters.webSiteId"/> <set field="contentId" from-field="parameters.contentId"/> <set field="mimeTypeId" value="text/html"/> @@ -258,7 +258,7 @@ <field-map field-name="statusTypeId" value="CONTENT_STATUS"/> <order-by field-name="sequenceId"/> </entity-and> - <entity-condition entity-name="DataTemplateType" list-name="templateTypes"/> + <entity-condition entity-name="DataTemplateType" list-name="templateTypes"/> </actions> <widgets> <platform-specific> @@ -295,7 +295,26 @@ </section> </screen> - <screen name="WebSiteCMSPathAlias"> + <screen name="WebSiteCMSMetaInfo"> + <section> + <actions> + <set field="webSiteId" from-field="parameters.webSiteId"/> + <set field="contentId" from-field="parameters.contentId"/> + <entity-one entity-name="Content" value-name="content"/> + + <script location="component://content/webapp/content/WEB-INF/actions/website/WebSiteCMSMetaInfo.bsh"/> + </actions> + <widgets> + <platform-specific> + <html> + <html-template location="component://content/webapp/content/website/WebSiteCMSMeta.ftl"/> + </html> + </platform-specific> + </widgets> + </section> + </screen> + + <screen name="WebSiteCMSPathAlias"> <section> <actions> <set field="webSiteId" from-field="parameters.webSiteId"/> |
Free forum by Nabble | Edit this page |