### Eclipse Workspace Patch 1.0
#P demo-trunk
Index: framework/webtools/config/WebtoolsUiLabels.xml
===================================================================
--- framework/webtools/config/WebtoolsUiLabels.xml (revision 1542180)
+++ framework/webtools/config/WebtoolsUiLabels.xml (working copy)
@@ -1178,6 +1178,21 @@
完æˆ?XML文档 (æ ¹æ ‡ç¾: entity-engine-xml)
完æˆ?XML文檔 (æ ¹æ¨™ç°½: entity-engine-xml)
+
+ Base Permission
+
+
+ Create New Component
+
+
+ Component Management
+
+
+ Component Name
+
+
+ Component Resource Name
+
Komponenten geladen
Loaded Components
@@ -1214,6 +1229,9 @@
路径
路徑
+
+ Webapp Name
+
Web-Applikationen (Name, Mountpoint, Pfad)
WebApps (Name, Mount, Path)
### Eclipse Workspace Patch 1.0
#P demo-trunk
Index: framework/webtools/widget/ArtifactInfoScreens.xml
===================================================================
--- framework/webtools/widget/ArtifactInfoScreens.xml (revision 1541401)
+++ framework/webtools/widget/ArtifactInfoScreens.xml (working copy)
@@ -42,26 +42,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
### Eclipse Workspace Patch 1.0
#P demo-trunk
Index: framework/webtools/widget/CommonScreens.xml
===================================================================
--- framework/webtools/widget/CommonScreens.xml (revision 1541401)
+++ framework/webtools/widget/CommonScreens.xml (working copy)
@@ -310,4 +310,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
### Eclipse Workspace Patch 1.0
#P demo-trunk
Index: framework/webtools/widget/Menus.xml
===================================================================
--- framework/webtools/widget/Menus.xml (revision 1541401)
+++ framework/webtools/widget/Menus.xml (working copy)
@@ -61,6 +61,9 @@
+
+
+
+
+
### Eclipse Workspace Patch 1.0
#P demo-trunk
Index: framework/webtools/webapp/webtools/WEB-INF/controller.xml
===================================================================
--- framework/webtools/webapp/webtools/WEB-INF/controller.xml (revision 1541401)
+++ framework/webtools/webapp/webtools/WEB-INF/controller.xml (working copy)
@@ -623,6 +623,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -700,7 +713,6 @@
-
@@ -726,6 +738,11 @@
+
+
+
+
+
### Eclipse Workspace Patch 1.0
#P demo-trunk
Index: framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/CreateComponent.groovy
===================================================================
--- framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/CreateComponent.groovy (revision 0)
+++ framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/CreateComponent.groovy (revision 0)
@@ -0,0 +1,309 @@
+/*
+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.start.Start;
+import org.ofbiz.base.util.*;
+import org.apache.tools.ant.*;
+import org.apache.commons.lang.WordUtils;
+
+//Get parameters
+componentName = parameters.component_Name.trim();
+componentResourceName = parameters.componentResourceName;
+webappName= parameters.webapp_Name;
+basePermission = parameters.basePermission;
+
+//Set directories
+baseDir = System.getProperty("ofbiz.home");
+templateDir = baseDir+"/framework/resources/templates/"; //Template source directory
+deployDir = "/hot-deploy/"
+
+def ant = new AntBuilder();
+
+//Make component directories
+componentDir = baseDir+deployDir+componentName; //Component Directory
+ant.mkdir(dir:componentDir);
+configDir = componentDir+"/config"; //Configuration directory
+ant.mkdir(dir:configDir);
+dataDir = componentDir+"/data"; // Data directory
+ant.mkdir(dir:dataDir);
+helpDataDir = dataDir+"/helpdata";
+ant.mkdir(dir:helpDataDir);
+dtdDir = componentDir+"/dtd";
+ant.mkdir(dir:dtdDir);
+documentsDir = componentDir+"/documents";
+ant.mkdir(dir:documentsDir);
+entitydefDir = componentDir+"/entitydef";
+ant.mkdir(dir:entitydefDir);
+libDir = componentDir+"/lib";
+ant.mkdir(dir:libDir);
+patchesDir = componentDir+"/patches";
+ant.mkdir(dir:patchesDir);
+stagingDir = patchesDir+"/staging";
+ant.mkdir(dir:stagingDir);
+productionDir = patchesDir+"/production";
+ant.mkdir(dir:productionDir);
+scriptDir = componentDir+"/script";
+ant.mkdir(dir:scriptDir);
+servicedefDir = componentDir+"/servicedef";
+ant.mkdir(dir:servicedefDir);
+srcDir = componentDir+"/src";
+ant.mkdir(dir:srcDir);
+testdefDir = componentDir+"/testdef";
+ant.mkdir(dir:testdefDir);
+webappDir = componentDir+"/webapp";
+ant.mkdir(dir:webappDir);
+webappNameDir = webappDir+"/"+webappName;
+ant.mkdir(dir:webappNameDir);
+errorDir = webappNameDir+"/error";
+ant.mkdir(dir:errorDir);
+webInfDir = webappNameDir+"/WEB-INF";
+ant.mkdir(dir:webInfDir);
+actionsDir = webInfDir+"/actions";
+ant.mkdir(dir:actionsDir);
+widgetDir = componentDir+"/widget";
+ant.mkdir(dir:widgetDir);
+
+//copy files
+
+sourceFile = templateDir+"ofbiz-component.xml";
+targetFile = componentDir+"/ofbiz-component.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+
+sourceFile = templateDir+"/build.xml";
+targetFile= componentDir+"/build.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/TypeData.xml";
+targetFile = dataDir+"/"+componentResourceName+"TypeData.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+
+
+sourceFile = templateDir+"/SecurityPermissionSeedData.xml"
+targetFile = dataDir+"/"+componentResourceName+"SecurityPermissionSeedData.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/SecurityGroupDemoData.xml"
+targetFile = dataDir+"/"+componentResourceName+"SecurityGroupDemoData.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/DemoData.xml"
+targetFile = dataDir+"/"+componentResourceName+"DemoData.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/HELP.xml"
+targetFile = helpDataDir+"/"+"HELP_"+componentResourceName+".xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/document.xml"
+targetFile = documentsDir+"/"+componentResourceName+".xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/entitymodel.xml"
+targetFile = entitydefDir+"/entitymodel.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/services.xml"
+targetFile = servicedefDir+"/services.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/Tests.xml"
+targetFile = testdefDir+"/"+componentResourceName+"Tests.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/UiLabels.xml"
+targetFile = configDir+"/"+componentResourceName+"UiLabels.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/index.jsp";
+targetFile = webappNameDir+"/index.jsp";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/error.jsp";
+targetFile = errorDir+"/error.jsp";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/controller.xml";
+targetFile = webInfDir+"/controller.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/web.xml";
+targetFile = webInfDir+"/web.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/CommonScreens.xml";
+targetFile = widgetDir+"/CommonScreens.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/Screens.xml";
+targetFile = widgetDir+"/"+componentResourceName+"Screens.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/Menus.xml";
+targetFile = widgetDir+"/"+componentResourceName+"Menus.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+sourceFile = templateDir+"/Forms.xml";
+targetFile = widgetDir+"/"+componentResourceName+"Forms.xml";
+ant.copy(file:sourceFile,tofile:targetFile){
+ filterset{
+ filter(token:"component-name", value:componentName)
+ filter(token:"webapp-name", value:webappName)
+ filter(token:"component-resource-name", value:componentResourceName)
+ filter(token:"base-permission", value:basePermission)
+ }
+}
+
+successMessage = "Component successfully created in folder "+componentDir+". Restart OFBiz and then visit the URL: http://localhost:8080/"+componentName;
+
+request.setAttribute("_EVENT_MESSAGE_", successMessage);