svnno****@sourc*****
svnno****@sourc*****
2008年 10月 25日 (土) 22:17:40 JST
Revision: 1239 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=1239 Author: shinsuke Date: 2008-10-25 22:17:39 +0900 (Sat, 25 Oct 2008) Log Message: ----------- added config tool. Modified Paths: -------------- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/VFSConstants.java vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ListAction.java vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ListForm.java vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/helper/impl/FileParameterHelperImpl.java vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/util/VFSUtil.java vfs-portlets/trunk/src/main/resources/application.properties vfs-portlets/trunk/src/main/webapp/WEB-INF/portlet.xml vfs-portlets/trunk/src/main/webapp/WEB-INF/vfs.xml vfs-portlets/trunk/src/main/webapp/WEB-INF/view/list/index.jsp Added Paths: ----------- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ConfigAction.java vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ConfigForm.java vfs-portlets/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml vfs-portlets/trunk/src/main/webapp/WEB-INF/view/config/ vfs-portlets/trunk/src/main/webapp/WEB-INF/view/config/index.jsp -------------- next part -------------- Modified: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/VFSConstants.java =================================================================== --- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/VFSConstants.java 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/VFSConstants.java 2008-10-25 13:17:39 UTC (rev 1239) @@ -13,12 +13,20 @@ public class VFSConstants { public static final String CONSTANT_PREFIX = "jp.sf.pal.vfs."; + public static final String AVAILABLE = "available"; + public static final String DEFAULT_URI = "default-uri"; public static final String ACCEPT_PATHS = "accept-paths"; public static final String DENY_PATHS = "deny-paths"; + public static final String SHOW_PATH = "show-path"; + + public static final String SHOW_CREATE_FOLDER_LINK = "show-create-folder-link"; + + public static final String SHOW_UPLOAD_LINK = "show-upload-link"; + public static final String TRUE = "true"; public static final String FALSE = "false"; Added: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ConfigAction.java =================================================================== --- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ConfigAction.java (rev 0) +++ vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ConfigAction.java 2008-10-25 13:17:39 UTC (rev 1239) @@ -0,0 +1,104 @@ +package jp.sf.pal.vfs.action; + +import java.io.Serializable; + +import javax.servlet.http.HttpServletRequest; + +import jp.sf.pal.vfs.VFSConstants; +import jp.sf.pal.vfs.common.util.ConfigUtil; +import jp.sf.pal.vfs.common.util.SAStrutsUtil; +import jp.sf.pal.vfs.form.ConfigForm; +import jp.sf.pal.vfs.util.VFSUtil; + +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.seasar.struts.annotation.ActionForm; +import org.seasar.struts.annotation.Execute; +import org.seasar.struts.exception.ActionMessagesException; + +public class ConfigAction implements Serializable { + + private static final long serialVersionUID = 1L; + + private static final Log log = LogFactory.getLog(ConfigAction.class); + + public String scope; + + @ActionForm + private ConfigForm configForm; + + private transient HttpServletRequest request; + + protected String displayIndex() { + scope = VFSUtil.getScope(request); + configForm.available = ConfigUtil.getString(scope + "." + + VFSConstants.AVAILABLE, "false"); + configForm.defaultUri = ConfigUtil.getString(scope + "." + + VFSConstants.DEFAULT_URI, "file:///"); + configForm.acceptPaths = ConfigUtil.getString(scope + "." + + VFSConstants.ACCEPT_PATHS, ""); + configForm.denyPaths = ConfigUtil.getString(scope + "." + + VFSConstants.DENY_PATHS, ""); + configForm.showPath = ConfigUtil.getString(scope + "." + + VFSConstants.SHOW_PATH, "true"); + configForm.showCreateFolderLink = ConfigUtil.getString(scope + "." + + VFSConstants.SHOW_CREATE_FOLDER_LINK, "true"); + configForm.showUploadLink = ConfigUtil.getString(scope + "." + + VFSConstants.SHOW_UPLOAD_LINK, "true"); + return "index.jsp"; + } + + @Execute(validator = false, input = "index.jsp") + public String index() { + ConfigUtil.init(request); + return displayIndex(); + } + + @Execute(validator = false, input = "index.jsp") + public String update() { + ConfigUtil.init(request); + String scope = VFSUtil.getScope(request); + ConfigUtil.setProperty(scope + "." + VFSConstants.AVAILABLE, + configForm.available); + ConfigUtil.setProperty(scope + "." + VFSConstants.DEFAULT_URI, + configForm.defaultUri); + ConfigUtil.setProperty(scope + "." + VFSConstants.ACCEPT_PATHS, + configForm.acceptPaths); + ConfigUtil.setProperty(scope + "." + VFSConstants.DENY_PATHS, + configForm.denyPaths); + ConfigUtil.setProperty(scope + "." + VFSConstants.SHOW_PATH, + configForm.showPath); + ConfigUtil.setProperty(scope + "." + + VFSConstants.SHOW_CREATE_FOLDER_LINK, + configForm.showCreateFolderLink); + ConfigUtil.setProperty(scope + "." + VFSConstants.SHOW_UPLOAD_LINK, + configForm.showUploadLink); + try { + ConfigUtil.save(); + SAStrutsUtil.addMessage(request, "success.update_config"); + + return displayIndex(); + } catch (ConfigurationException e) { + log.error(e.getMessage(), e); + throw new ActionMessagesException("errors.failed_to_update_config"); + } + } + + public ConfigForm getConfigForm() { + return configForm; + } + + public void setConfigForm(ConfigForm configForm) { + this.configForm = configForm; + } + + public HttpServletRequest getRequest() { + return request; + } + + public void setRequest(HttpServletRequest request) { + this.request = request; + } + +} Property changes on: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ConfigAction.java ___________________________________________________________________ Name: svn:eol-style + native Modified: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ListAction.java =================================================================== --- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ListAction.java 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/action/ListAction.java 2008-10-25 13:17:39 UTC (rev 1239) @@ -39,6 +39,14 @@ public List<FileParameterHelper> fileItems; + public boolean available; + + public boolean showPath; + + public boolean showCreateFolderLink; + + public boolean showUploadLink; + @ActionForm private ListForm listForm; @@ -54,6 +62,14 @@ listForm.scope + "." + VFSConstants.USERNAME, request.getRemoteUser(), PortletSession.APPLICATION_SCOPE); fileItems = createFileItems(); + available = ConfigUtil.getBoolean(listForm.scope + "." + + VFSConstants.AVAILABLE, false); + showPath = ConfigUtil.getBoolean(listForm.scope + "." + + VFSConstants.SHOW_PATH); + showCreateFolderLink = ConfigUtil.getBoolean(listForm.scope + "." + + VFSConstants.SHOW_CREATE_FOLDER_LINK); + showUploadLink = ConfigUtil.getBoolean(listForm.scope + "." + + VFSConstants.SHOW_UPLOAD_LINK); return "index.jsp"; } Added: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ConfigForm.java =================================================================== --- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ConfigForm.java (rev 0) +++ vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ConfigForm.java 2008-10-25 13:17:39 UTC (rev 1239) @@ -0,0 +1,31 @@ +package jp.sf.pal.vfs.form; + +import java.io.Serializable; + +import org.seasar.struts.annotation.Required; + +public class ConfigForm implements Serializable { + + private static final long serialVersionUID = 1089309559852652620L; + + @Required(target = "update") + public String available; + + @Required(target = "update") + public String defaultUri; + + @Required(target = "update") + public String acceptPaths; + + @Required(target = "update") + public String denyPaths; + + @Required(target = "update") + public String showPath; + + @Required(target = "update") + public String showCreateFolderLink; + + @Required(target = "update") + public String showUploadLink; +} Property changes on: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ConfigForm.java ___________________________________________________________________ Name: svn:eol-style + native Modified: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ListForm.java =================================================================== --- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ListForm.java 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/form/ListForm.java 2008-10-25 13:17:39 UTC (rev 1239) @@ -2,7 +2,6 @@ import java.io.Serializable; import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; import jp.sf.pal.vfs.VFSException; import jp.sf.pal.vfs.util.VFSUtil; Modified: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/helper/impl/FileParameterHelperImpl.java =================================================================== --- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/helper/impl/FileParameterHelperImpl.java 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/helper/impl/FileParameterHelperImpl.java 2008-10-25 13:17:39 UTC (rev 1239) @@ -21,7 +21,6 @@ import jp.sf.pal.vfs.helper.FileParameterHelper; import jp.sf.pal.vfs.util.VFSUtil; -import org.apache.commons.codec.binary.Base64; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.vfs.FileObject; Modified: vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/util/VFSUtil.java =================================================================== --- vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/util/VFSUtil.java 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/java/jp/sf/pal/vfs/util/VFSUtil.java 2008-10-25 13:17:39 UTC (rev 1239) @@ -26,6 +26,7 @@ import jp.sf.pal.vfs.common.util.SAStrutsUtil; import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang.StringUtils; import org.apache.commons.vfs.FileSystemManager; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; @@ -74,7 +75,7 @@ public static String[] getAcceptPaths(String scope) { String acceptPathString = ConfigUtil.getString(scope + "." + VFSConstants.ACCEPT_PATHS); - if (acceptPathString == null) { + if (StringUtils.isEmpty(acceptPathString)) { return new String[0]; } else { return acceptPathString.split(","); @@ -95,7 +96,7 @@ public static String[] getDenyPaths(String scope) { String denyPathString = ConfigUtil.getString(scope + "." + VFSConstants.DENY_PATHS); - if (denyPathString == null) { + if (StringUtils.isEmpty(denyPathString)) { return new String[0]; } else { return denyPathString.split(","); Modified: vfs-portlets/trunk/src/main/resources/application.properties =================================================================== --- vfs-portlets/trunk/src/main/resources/application.properties 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/resources/application.properties 2008-10-25 13:17:39 UTC (rev 1239) @@ -24,6 +24,7 @@ errors.email={0} is an invalid e-mail address. errors.url={0} is an invalid url (web address). +errors.failed_to_update_config=Failed to update the configuration. errors.access_denied=Access denied. errors.file_system_error=The file system error occurs. errors.failed_to_create_folder=Failed to create a new folder. @@ -36,6 +37,7 @@ errors.failed_to_delete_file=Failed to delete the file. errors.unknow_object={0} is an unknown object. +success.update_config=Updated configuration. success.create_folder=Created a new folder. success.upload_file=Upload the file. success.delete_folder=Deleted the folder. Added: vfs-portlets/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml =================================================================== --- vfs-portlets/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml (rev 0) +++ vfs-portlets/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml 2008-10-25 13:17:39 UTC (rev 1239) @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +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. +--> +<portlet-app xmlns="http://portals.apache.org/jetspeed" xmlns:js="http://portals.apache.org/jetspeed" xmlns:dc="http://www.purl.org/dc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="vfs-portlet" version="1.0" xsi:schemaLocation="http://portals.apache.org/jetspeed http://portals.apache.org/jetspeed-2/2.1/schemas/jetspeed-portlet.xsd"> + <dc:title>VFS Portlet</dc:title> + <dc:creator>PAL Project</dc:creator> + <portlet> + <portlet-name>VFSDefaultConfigurator</portlet-name> + <js:security-constraint-ref>admin</js:security-constraint-ref> + </portlet> +<!-- + <js:services> + <js:service name="SecurityProvider"/> + <js:service name="UserManager"/> + <js:service name="PageManager"/> + <js:service name="PortalAdministration"/> + <js:service name="GroupManager"/> + <js:service name="RoleManager"/> + <js:service name="ApplicationServerManager"/> + <js:service name="DeploymentManager"/> + <js:service name="EntityAccessor"/> + <js:service name="WindowAccessor"/> + <js:service name="PermissionManager"/> + <js:service name="PortalAdministration"/> + <js:service name="PortletFactory"/> + <js:service name="PortletRegistryComponent"/> + <js:service name="PortalStatistics"/> + <js:service name="Profiler"/> + <js:service name="SearchComponent"/> + <js:service name="SSO"/> + <js:service name="DecorationFactory"/> + <js:service name="SecurityAccessController"/> + <js:service name="PortletTrackingManager"/> + <js:service name="AuditActivity"/> + </js:services> +--> +</portlet-app> Property changes on: vfs-portlets/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml ___________________________________________________________________ Name: svn:eol-style + native Modified: vfs-portlets/trunk/src/main/webapp/WEB-INF/portlet.xml =================================================================== --- vfs-portlets/trunk/src/main/webapp/WEB-INF/portlet.xml 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/webapp/WEB-INF/portlet.xml 2008-10-25 13:17:39 UTC (rev 1239) @@ -20,7 +20,7 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"> <portlet> <description>Display a file system.</description> - <portlet-name>VFSPortlet</portlet-name> + <portlet-name>VFSDefaultExplorer</portlet-name> <display-name>VFS: Explorer</display-name> <portlet-class>org.seasar.struts.portlet.SAStrutsPortlet</portlet-class> <init-param> @@ -44,5 +44,31 @@ <keywords>VFS,Explorer</keywords> </portlet-info> </portlet> + <portlet> + <description>Manage a default configuration.</description> + <portlet-name>VFSDefaultConfigurator</portlet-name> + <display-name>VFS: Configurator</display-name> + <portlet-class>org.seasar.struts.portlet.SAStrutsPortlet</portlet-class> + <init-param> + <name>viewPage</name> + <value>/config/</value> + </init-param> + <init-param> + <name>scope</name> + <value>default</value> + </init-param> + <expiration-cache>0</expiration-cache> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>VIEW</portlet-mode> + </supports> + <supported-locale>en</supported-locale> + <supported-locale>ja</supported-locale> + <portlet-info> + <title>VFS Configurator</title> + <short-title>Configurator</short-title> + <keywords>VFS,Configuration</keywords> + </portlet-info> + </portlet> </portlet-app> Modified: vfs-portlets/trunk/src/main/webapp/WEB-INF/vfs.xml =================================================================== --- vfs-portlets/trunk/src/main/webapp/WEB-INF/vfs.xml 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/webapp/WEB-INF/vfs.xml 2008-10-25 13:17:39 UTC (rev 1239) @@ -1,3 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration> +<default> +<available>false</available> +<default-uri>file:///</default-uri> +<accept-paths/> +<deny-paths/> +<show-path>true</show-path> +<show-create-folder-link>true</show-create-folder-link> +<show-upload-link>true</show-upload-link> +</default> </configuration> Added: vfs-portlets/trunk/src/main/webapp/WEB-INF/view/config/index.jsp =================================================================== --- vfs-portlets/trunk/src/main/webapp/WEB-INF/view/config/index.jsp (rev 0) +++ vfs-portlets/trunk/src/main/webapp/WEB-INF/view/config/index.jsp 2008-10-25 13:17:39 UTC (rev 1239) @@ -0,0 +1,72 @@ +<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> +<title></title> +</head> +<body> +<div style="padding:3px;"> +<div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div> +<div class="form-table"> +<s:form> +<table> + <caption>Configuration</caption> + <tbody> + <tr> + <th>Scope</th> + <td>${f:h(scope)}</td> + </tr> + <tr> + <th>Available</th> + <td><html:select property="available"> +<html:option value="true">True</html:option> +<html:option value="false">False</html:option> + </html:select></td> + </tr> + <tr> + <th>Default URI</th> + <td><html:text property="defaultUri"/></td> + </tr> + <tr> + <th>Accepted Paths</th> + <td><html:text property="acceptPaths"/></td> + </tr> + <tr> + <th>Denied Paths</th> + <td><html:text property="denyPaths"/></td> + </tr> + <tr> + <th>Show Path</th> + <td><html:select property="showPath"> +<html:option value="true">True</html:option> +<html:option value="false">False</html:option> + </html:select></td> + </tr> + <tr> + <th>Show Create Folder Link</th> + <td><html:select property="showCreateFolderLink"> +<html:option value="true">True</html:option> +<html:option value="false">False</html:option> + </html:select></td> + </tr> + <tr> + <th>Show Upload Link</th> + <td><html:select property="showUploadLink"> +<html:option value="true">True</html:option> +<html:option value="false">False</html:option> + </html:select></td> + </tr> + </tbody> + <tfoot> + <tr> + <td colspan="2"> +<input type="submit" name="update" value="更新"/> + </td> + </tr> + </tfoot> +</table> +</s:form> +</div> +</div> +</body> +</html> Property changes on: vfs-portlets/trunk/src/main/webapp/WEB-INF/view/config/index.jsp ___________________________________________________________________ Name: svn:eol-style + native Modified: vfs-portlets/trunk/src/main/webapp/WEB-INF/view/list/index.jsp =================================================================== --- vfs-portlets/trunk/src/main/webapp/WEB-INF/view/list/index.jsp 2008-10-25 01:46:02 UTC (rev 1238) +++ vfs-portlets/trunk/src/main/webapp/WEB-INF/view/list/index.jsp 2008-10-25 13:17:39 UTC (rev 1239) @@ -5,20 +5,27 @@ <title></title> </head> <body> +<c:if test="${available}"> <div style="padding:3px;"> <div><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></div> <div style="margin:5px;"> +<c:if test="${showCreateFolderLink}"> <s:link href="/newfolder/createpage/${f:u(encodedUri)}">Create New Folder</s:link> -| +</c:if> +<c:if test="${showCreateFolderLink && showUploadLink}">|</c:if> +<c:if test="${showUploadLink}"> <s:link href="/upload/createpage/${f:u(encodedUri)}">Upload File</s:link> +</c:if> </div> +<c:if test="${showPath}"> <div style="margin:5px;"> <s:form> Path: <html:text property="uri" size="50"/><input type="submit" name="go" value="Go"/> </s:form> </div> +</c:if> <div class="list-table"> <table border="1"> <thead> @@ -54,6 +61,11 @@ </table> </div> </div> - +</c:if> +<c:if test="${!available}"> +<div> +Not Available. +</div> +</c:if> </body> </html>