mirror of https://github.com/apache/archiva.git
MRM-829 - Replace Company POM feature with simple Appearence customisation
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@674161 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fcb46c3f29
commit
5378f9b2f5
|
@ -158,6 +158,17 @@
|
|||
The webapp configuration.
|
||||
</description>
|
||||
</field>
|
||||
<field>
|
||||
<name>organisationInfo</name>
|
||||
<version>1.1.0+</version>
|
||||
<association>
|
||||
<type>OrganisationInformation</type>
|
||||
<multiplicity>1</multiplicity>
|
||||
</association>
|
||||
<description>
|
||||
The organisation info.
|
||||
</description>
|
||||
</field>
|
||||
</fields>
|
||||
<codeSegments>
|
||||
<codeSegment>
|
||||
|
@ -1034,6 +1045,40 @@
|
|||
|
||||
-->
|
||||
|
||||
<class>
|
||||
<name>OrganisationInformation</name>
|
||||
<version>1.1.0+</version>
|
||||
<description>
|
||||
The organisation information settings.
|
||||
</description>
|
||||
<fields>
|
||||
<field>
|
||||
<name>name</name>
|
||||
<description>name of the organisation</description>
|
||||
<version>1.1.0+</version>
|
||||
<association>
|
||||
<type>String</type>
|
||||
</association>
|
||||
</field>
|
||||
<field>
|
||||
<name>url</name>
|
||||
<description>name of the organisation</description>
|
||||
<version>1.1.0+</version>
|
||||
<association>
|
||||
<type>String</type>
|
||||
</association>
|
||||
</field>
|
||||
<field>
|
||||
<name>logoLocation</name>
|
||||
<description>name of the organisation</description>
|
||||
<version>1.1.0+</version>
|
||||
<association>
|
||||
<type>String</type>
|
||||
</association>
|
||||
</field>
|
||||
</fields>
|
||||
</class>
|
||||
|
||||
<class>
|
||||
<name>WebappConfiguration</name>
|
||||
<version>1.0.0+</version>
|
||||
|
|
|
@ -19,14 +19,12 @@ package org.apache.maven.archiva.web.action.admin.appearance;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
|
||||
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
|
||||
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||
import org.apache.maven.archiva.configuration.Configuration;
|
||||
import org.apache.maven.archiva.configuration.OrganisationInformation;
|
||||
import org.codehaus.plexus.xwork.action.PlexusActionSupport;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
import com.opensymphony.xwork.Preparable;
|
||||
|
||||
/**
|
||||
* AbstractAppearanceAction
|
||||
|
@ -36,35 +34,68 @@ import java.util.Map;
|
|||
*/
|
||||
public abstract class AbstractAppearanceAction
|
||||
extends PlexusActionSupport
|
||||
implements Preparable
|
||||
{
|
||||
/**
|
||||
* @plexus.requirement role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
|
||||
*/
|
||||
private Map<String, ArtifactRepositoryLayout> repositoryLayouts;
|
||||
|
||||
/**
|
||||
* Archiva Application Configuration
|
||||
* @plexus.requirement
|
||||
*/
|
||||
private ArtifactRepositoryFactory repoFactory;
|
||||
protected ArchivaConfiguration configuration;
|
||||
|
||||
private String organisationLogo;
|
||||
|
||||
protected ArtifactRepository createLocalRepository()
|
||||
private String organisationUrl;
|
||||
|
||||
private String organisationName;
|
||||
|
||||
public void setConfiguration(ArchivaConfiguration configuration)
|
||||
{
|
||||
String id = "archiva-local-repo";
|
||||
String layout = "default";
|
||||
String directory = System.getProperty( "user.home" ) + "/.m2/archiva";
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
public String getOrganisationLogo()
|
||||
{
|
||||
return organisationLogo;
|
||||
}
|
||||
|
||||
ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) repositoryLayouts.get( layout );
|
||||
File repository = new File( directory );
|
||||
repository.mkdirs();
|
||||
public String getOrganisationName()
|
||||
{
|
||||
return organisationName;
|
||||
}
|
||||
|
||||
String repoDir = repository.toURI().toString();
|
||||
//workaround for spaces non converted by PathUtils in wagon
|
||||
//TODO: remove it when PathUtils will be fixed
|
||||
if ( repoDir.indexOf( "%20" ) >= 0 )
|
||||
public String getOrganisationUrl()
|
||||
{
|
||||
return organisationUrl;
|
||||
}
|
||||
|
||||
public void setOrganisationLogo(String organisationLogo)
|
||||
{
|
||||
this.organisationLogo = organisationLogo;
|
||||
}
|
||||
|
||||
public void setOrganisationName(String organisationName)
|
||||
{
|
||||
this.organisationName = organisationName;
|
||||
}
|
||||
|
||||
public void setOrganisationUrl(String organisationUrl)
|
||||
{
|
||||
this.organisationUrl = organisationUrl;
|
||||
}
|
||||
|
||||
public void prepare()
|
||||
throws Exception
|
||||
{
|
||||
Configuration config = configuration.getConfiguration();
|
||||
if (config != null)
|
||||
{
|
||||
repoDir = StringUtils.replace( repoDir, "%20", " " );
|
||||
OrganisationInformation orgInfo = config.getOrganisationInfo();
|
||||
if (orgInfo != null)
|
||||
{
|
||||
setOrganisationLogo(orgInfo.getLogoLocation());
|
||||
setOrganisationName(orgInfo.getName());
|
||||
setOrganisationUrl(orgInfo.getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
return repoFactory.createArtifactRepository( id, repoDir, repositoryLayout, null, null );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
package org.apache.maven.archiva.web.action.admin.appearance;
|
||||
|
||||
/*
|
||||
* 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.apache.maven.model.Model;
|
||||
import org.apache.maven.shared.app.company.CompanyPomHandler;
|
||||
import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
|
||||
|
||||
/**
|
||||
* Stores the company information for displaying on the page.
|
||||
*
|
||||
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="companyInfo"
|
||||
*/
|
||||
public class CompanyInfoAction
|
||||
extends AbstractAppearanceAction
|
||||
{
|
||||
private String companyLogo;
|
||||
|
||||
private String companyUrl;
|
||||
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* @plexus.requirement
|
||||
*/
|
||||
private CompanyPomHandler handler;
|
||||
|
||||
/**
|
||||
* @plexus.requirement
|
||||
*/
|
||||
private MavenAppConfiguration appConfigurationStore;
|
||||
|
||||
public String execute()
|
||||
throws Exception
|
||||
{
|
||||
Model model = handler.getCompanyPomModel( appConfigurationStore.getConfiguration().getCompanyPom(),
|
||||
createLocalRepository() );
|
||||
|
||||
if ( model != null )
|
||||
{
|
||||
if ( model.getOrganization() != null )
|
||||
{
|
||||
companyName = model.getOrganization().getName();
|
||||
companyUrl = model.getOrganization().getUrl();
|
||||
}
|
||||
|
||||
companyLogo = model.getProperties().getProperty( "organization.logo" );
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
public String getCompanyLogo()
|
||||
{
|
||||
return companyLogo;
|
||||
}
|
||||
|
||||
public String getCompanyUrl()
|
||||
{
|
||||
return companyUrl;
|
||||
}
|
||||
|
||||
public String getCompanyName()
|
||||
{
|
||||
return companyName;
|
||||
}
|
||||
}
|
|
@ -19,84 +19,56 @@ package org.apache.maven.archiva.web.action.admin.appearance;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import com.opensymphony.xwork.ModelDriven;
|
||||
import com.opensymphony.xwork.Preparable;
|
||||
|
||||
import org.apache.maven.archiva.security.ArchivaRoleConstants;
|
||||
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.project.ProjectBuildingException;
|
||||
import org.apache.maven.shared.app.company.CompanyPomHandler;
|
||||
import org.apache.maven.shared.app.configuration.Configuration;
|
||||
import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
|
||||
import org.codehaus.plexus.redback.rbac.Resource;
|
||||
import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
|
||||
|
||||
import org.apache.maven.archiva.configuration.Configuration;
|
||||
import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
|
||||
import org.apache.maven.archiva.configuration.OrganisationInformation;
|
||||
import org.apache.maven.archiva.security.ArchivaRoleConstants;
|
||||
import org.codehaus.plexus.redback.rbac.Resource;
|
||||
import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
|
||||
import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
|
||||
import org.codehaus.plexus.registry.RegistryException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
|
||||
* @version $Id: ConfigurationAction.java 480950 2006-11-30 14:58:35Z evenisse $
|
||||
*
|
||||
* @plexus.component role="com.opensymphony.xwork.Action"
|
||||
* role-hint="configureAppearance"
|
||||
* role-hint="editOrganisationInfo"
|
||||
*/
|
||||
public class ConfigureAppearanceAction
|
||||
public class EditOrganisationInfoAction
|
||||
extends AbstractAppearanceAction
|
||||
implements ModelDriven, SecureAction, Preparable
|
||||
implements SecureAction
|
||||
{
|
||||
/**
|
||||
* @plexus.requirement
|
||||
*/
|
||||
private MavenAppConfiguration appConfigurationStore;
|
||||
|
||||
/**
|
||||
* The configuration.
|
||||
*/
|
||||
private Configuration configuration;
|
||||
|
||||
private Model companyModel;
|
||||
|
||||
/**
|
||||
* @plexus.requirement
|
||||
*/
|
||||
private CompanyPomHandler companyPomHandler;
|
||||
|
||||
@Override
|
||||
public String execute()
|
||||
throws IOException, RegistryException
|
||||
throws RegistryException, IndeterminateConfigurationException
|
||||
{
|
||||
appConfigurationStore.save( configuration );
|
||||
|
||||
Configuration config = configuration.getConfiguration();
|
||||
if (config != null)
|
||||
{
|
||||
OrganisationInformation orgInfo = config.getOrganisationInfo();
|
||||
if (orgInfo == null)
|
||||
{
|
||||
config.setOrganisationInfo(orgInfo);
|
||||
}
|
||||
|
||||
orgInfo.setLogoLocation(getOrganisationLogo());
|
||||
orgInfo.setName(getOrganisationName());
|
||||
orgInfo.setUrl(getOrganisationUrl());
|
||||
|
||||
configuration.save(config);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
public Object getModel()
|
||||
{
|
||||
return configuration;
|
||||
}
|
||||
|
||||
public void prepare()
|
||||
throws ProjectBuildingException, ArtifactMetadataRetrievalException
|
||||
{
|
||||
configuration = appConfigurationStore.getConfiguration();
|
||||
|
||||
companyModel = companyPomHandler.getCompanyPomModel( configuration.getCompanyPom(), createLocalRepository() );
|
||||
}
|
||||
|
||||
|
||||
public SecureActionBundle getSecureActionBundle()
|
||||
throws SecureActionException
|
||||
{
|
||||
SecureActionBundle bundle = new SecureActionBundle();
|
||||
bundle.setRequiresAuthentication( true );
|
||||
bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
|
||||
|
||||
return bundle;
|
||||
}
|
||||
|
||||
public Model getCompanyModel()
|
||||
{
|
||||
return companyModel;
|
||||
}
|
||||
}
|
|
@ -1,125 +0,0 @@
|
|||
package org.apache.maven.archiva.web.action.admin.appearance;
|
||||
|
||||
/*
|
||||
* 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 com.opensymphony.xwork.ModelDriven;
|
||||
import com.opensymphony.xwork.Preparable;
|
||||
|
||||
import org.apache.maven.archiva.security.ArchivaRoleConstants;
|
||||
import org.apache.maven.artifact.installer.ArtifactInstallationException;
|
||||
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.project.ProjectBuildingException;
|
||||
import org.apache.maven.shared.app.company.CompanyPomHandler;
|
||||
import org.apache.maven.shared.app.configuration.CompanyPom;
|
||||
import org.apache.maven.shared.app.configuration.Configuration;
|
||||
import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
|
||||
import org.codehaus.plexus.redback.rbac.Resource;
|
||||
import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
|
||||
import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
|
||||
import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
|
||||
* @version $Id: ConfigurationAction.java 480950 2006-11-30 14:58:35Z evenisse $
|
||||
*
|
||||
* @plexus.component role="com.opensymphony.xwork.Action"
|
||||
* role-hint="editPom"
|
||||
*/
|
||||
public class EditPomAction
|
||||
extends AbstractAppearanceAction
|
||||
implements ModelDriven, SecureAction, Preparable
|
||||
{
|
||||
/**
|
||||
* @plexus.requirement
|
||||
*/
|
||||
private MavenAppConfiguration appConfigurationStore;
|
||||
|
||||
/**
|
||||
* The configuration.
|
||||
*/
|
||||
private Configuration configuration;
|
||||
|
||||
/**
|
||||
* @plexus.requirement
|
||||
*/
|
||||
private CompanyPomHandler companyPomHandler;
|
||||
|
||||
private Model companyModel;
|
||||
|
||||
public String execute()
|
||||
throws IOException, ArtifactInstallationException
|
||||
{
|
||||
// TODO: hack for passed in String[]
|
||||
String[] logo = (String[]) companyModel.getProperties().get( "organization.logo" );
|
||||
if ( logo != null )
|
||||
{
|
||||
companyModel.getProperties().put( "organization.logo", logo[0] );
|
||||
}
|
||||
|
||||
companyPomHandler.save( companyModel, createLocalRepository() );
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
public Object getModel()
|
||||
{
|
||||
return companyModel;
|
||||
}
|
||||
|
||||
public void prepare()
|
||||
throws ProjectBuildingException, ArtifactMetadataRetrievalException
|
||||
{
|
||||
configuration = appConfigurationStore.getConfiguration();
|
||||
|
||||
CompanyPom companyPom = configuration.getCompanyPom();
|
||||
companyModel = companyPomHandler.getCompanyPomModel( companyPom, createLocalRepository() );
|
||||
|
||||
if ( companyModel == null )
|
||||
{
|
||||
companyModel = new Model();
|
||||
companyModel.setModelVersion( "4.0.0" );
|
||||
companyModel.setPackaging( "pom" );
|
||||
|
||||
if ( companyPom != null )
|
||||
{
|
||||
companyModel.setGroupId( companyPom.getGroupId() );
|
||||
companyModel.setArtifactId( companyPom.getArtifactId() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public SecureActionBundle getSecureActionBundle()
|
||||
throws SecureActionException
|
||||
{
|
||||
SecureActionBundle bundle = new SecureActionBundle();
|
||||
bundle.setRequiresAuthentication( true );
|
||||
bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
|
||||
|
||||
return bundle;
|
||||
}
|
||||
|
||||
public Model getCompanyModel()
|
||||
{
|
||||
return companyModel;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package org.apache.maven.archiva.web.action.admin.appearance;
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Stores the organisation information for displaying on the page.
|
||||
*
|
||||
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="organisationInfo"
|
||||
*/
|
||||
public class OrganisationInfoAction
|
||||
extends AbstractAppearanceAction
|
||||
{
|
||||
}
|
|
@ -22,14 +22,14 @@
|
|||
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
|
||||
|
||||
<validators>
|
||||
<field name="companyPom.groupId">
|
||||
<field-validator type="requiredstring">
|
||||
<message key="appearance.groupId.required"/>
|
||||
<field name="organisationUrl">
|
||||
<field-validator type="url">
|
||||
<message key="appearance.organisation.url"/>
|
||||
</field-validator>
|
||||
</field>
|
||||
<field name="companyPom.artifactId">
|
||||
<field-validator type="requiredstring">
|
||||
<message key="appearance.artifactId.required"/>
|
||||
<field name="organisationLogo">
|
||||
<field-validator type="url">
|
||||
<message key="appearance.organisation.logourl"/>
|
||||
</field-validator>
|
||||
</field>
|
||||
</validators>
|
|
@ -17,5 +17,5 @@
|
|||
# under the License.
|
||||
#
|
||||
|
||||
appearance.groupId.required = You must define a group identifier.
|
||||
appearance.artifactId.required = You must define an artifact identifier.
|
||||
appearance.organisation.url = You must define an organisation url."
|
||||
appearance.organisation.logourl = You must define an organisation logo url."
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
|
||||
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
|
||||
|
||||
<validators>
|
||||
<field name="organisationName">
|
||||
<field-validator type="requiredstring">
|
||||
<message>You must enter a name</message>
|
||||
</field-validator>
|
||||
</field>
|
||||
<field name="organisationUrl">
|
||||
<field-validator type="url">
|
||||
<message>You must enter a URL</message>
|
||||
</field-validator>
|
||||
</field>
|
||||
<field name="organisationLogo">
|
||||
<field-validator type="url">
|
||||
<message>You must enter a URL</message>
|
||||
</field-validator>
|
||||
</field>
|
||||
</validators>
|
|
@ -212,7 +212,7 @@
|
|||
|
||||
<package name="components" namespace="/components" extends="webwork-default">
|
||||
<default-interceptor-ref name="basicStack"/>
|
||||
<action name="companyInfo" class="companyInfo">
|
||||
<action name="companyInfo" class="organisationInfo">
|
||||
<result>/WEB-INF/jsp/components/companyLogo.jsp</result>
|
||||
</action>
|
||||
</package>
|
||||
|
@ -432,17 +432,15 @@
|
|||
|
||||
<!-- .\ CONFIGURATION \.___________________________________________ -->
|
||||
|
||||
<!-- The following are needed by the maven-app-configuration-web artifact -->
|
||||
|
||||
<action name="configureAppearance" class="configureAppearance" method="input">
|
||||
<result name="input">/WEB-INF/jsp/admin/appearance.jsp</result>
|
||||
<action name="configureAppearance" class="organisationInfo">
|
||||
<result name="success">/WEB-INF/jsp/admin/appearance.jsp</result>
|
||||
</action>
|
||||
|
||||
<action name="editAppearance" class="configureAppearance" method="input">
|
||||
<action name="editAppearance" class="editOrganisationInfo" method="input">
|
||||
<result name="input">/WEB-INF/jsp/admin/editAppearance.jsp</result>
|
||||
</action>
|
||||
|
||||
<action name="saveAppearance" class="configureAppearance">
|
||||
<action name="saveAppearance" class="editOrganisationInfo">
|
||||
<result name="input">/WEB-INF/jsp/admin/editAppearance.jsp</result>
|
||||
<result type="redirect-action">
|
||||
<param name="actionName">configureAppearance</param>
|
||||
|
@ -450,18 +448,6 @@
|
|||
</result>
|
||||
</action>
|
||||
|
||||
<action name="editCompanyPom" class="editPom" method="input">
|
||||
<result name="input">/WEB-INF/jsp/admin/editPom.jsp</result>
|
||||
</action>
|
||||
|
||||
<action name="saveCompanyPom" class="editPom">
|
||||
<result name="input">/WEB-INF/jsp/admin/editPom.jsp</result>
|
||||
<result type="redirect-action">
|
||||
<param name="actionName">configureAppearance</param>
|
||||
<param name="namespace">/admin</param>
|
||||
</result>
|
||||
</action>
|
||||
|
||||
<!-- .\ LEGACY SUPPORT \.__________________________________________ -->
|
||||
|
||||
<action name="legacyArtifactPath" class="legacyArtifactPathAction" method="input">
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
<%@ taglib prefix="ww" uri="/webwork" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Configure Appearance</title>
|
||||
|
@ -31,66 +32,37 @@
|
|||
<div style="float: right">
|
||||
<a href="<ww:url action='editAppearance' />">Edit</a>
|
||||
</div>
|
||||
<h2>Company Details</h2>
|
||||
<h2>Organization Details</h2>
|
||||
|
||||
<p>
|
||||
The logo in the top right of the screen is controlled by your selected 'company POM'.
|
||||
The logo in the top right of the screen is controlled by the following settings.
|
||||
<a href="<ww:url action='editAppearance' />">Change your appearence</a>
|
||||
</p>
|
||||
|
||||
<ww:set name="companyPom" value="companyPom"/>
|
||||
|
||||
<c:if test="${empty(companyPom.groupId) || empty(companyPom.artifactId)}">
|
||||
<p>
|
||||
You have not yet specified a company POM. <a href="<ww:url action='editAppearance' />">Select a Company POM</a>
|
||||
</p>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${!empty(companyPom.groupId) && !empty(companyPom.artifactId)}">
|
||||
<p>
|
||||
Your selected company POM is below. If you would like to change the organization name, url or logo, you can
|
||||
<a href="<ww:url action='editCompanyPom'/>">edit the POM</a>.
|
||||
</p>
|
||||
|
||||
<ww:set name="companyModel" value="companyModel"/>
|
||||
<table>
|
||||
<ww:label name="companyPom.groupId" label="Group ID"/>
|
||||
<ww:label name="companyPom.artifactId" label="Artifact ID"/>
|
||||
<c:if test="${companyModel != null}">
|
||||
<ww:label name="companyModel.version" label="Version"/>
|
||||
</c:if>
|
||||
</table>
|
||||
|
||||
<div style="float: right">
|
||||
<a href="<ww:url action='editCompanyPom' />">Edit Company POM</a>
|
||||
</div>
|
||||
<h3>POM Information</h3>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${companyModel != null}">
|
||||
<h3>Organization Information</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<td>${companyModel.organization.name}</td>
|
||||
<td>${organisationName}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>URL</th>
|
||||
<td><a href="${companyModel.organization.url}">
|
||||
<code>${companyModel.organization.url}</code>
|
||||
<td><a href="${organisationUrl}">
|
||||
<code>${organisationUrl}</code>
|
||||
</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Logo URL</th>
|
||||
<td>
|
||||
<code>${companyModel.properties['organization.logo']}</code>
|
||||
<code>${organisationLogo}</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<td>
|
||||
<img src="${organisationLogo}" title="${organisationName}" border="0" alt=""/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
Company POM '${companyPom.groupId}:${companyPom.artifactId}' doesn't exist.
|
||||
<a href="<ww:url action='editCompanyPom' />">Create company POM</a>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -27,19 +27,20 @@
|
|||
<body>
|
||||
<h1>Appearance</h1>
|
||||
|
||||
<h2>Company Details</h2>
|
||||
<h2>Organization Details</h2>
|
||||
|
||||
<p>
|
||||
Enter the details of the company super POM below. If it exists, the organization name, URL and logo will be read
|
||||
from it.
|
||||
Enter the details of your organization below.
|
||||
</p>
|
||||
|
||||
<ww:set name="editOrganisationInfo" value="editOrganisationInfo"/>
|
||||
<ww:actionmessage/>
|
||||
<ww:form method="post" action="saveAppearance" namespace="/admin" validate="true" theme="xhtml">
|
||||
<ww:textfield name="companyPom.groupId" label="Group ID"/>
|
||||
<ww:textfield name="companyPom.artifactId" label="Artifact ID"/>
|
||||
<ww:textfield name="organisationName" value="${organisationName}" label="Name" size="50" />
|
||||
<ww:textfield name="organisationUrl" value="${organisationUrl}" label="URL" size="50"/>
|
||||
<ww:textfield name="organisationLogo" value="${organisationLogo}" label="Logo URL" size="50" />
|
||||
<ww:submit value="Save"/>
|
||||
</ww:form>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
<%--
|
||||
~ 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.
|
||||
--%>
|
||||
|
||||
<%@ taglib prefix="ww" uri="/webwork" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>Edit Company POM</title>
|
||||
<ww:head/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Company POM</h1>
|
||||
|
||||
<ww:actionmessage/>
|
||||
<ww:form method="post" action="saveCompanyPom" namespace="/admin" validate="true" theme="xhtml">
|
||||
<ww:label name="companyModel.groupId" label="Group ID"/>
|
||||
<ww:label name="companyModel.artifactId" label="Artifact ID"/>
|
||||
<tr>
|
||||
<td>Version</td>
|
||||
<td>
|
||||
<ww:property value="companyModel.version"/>
|
||||
<i>(The version will automatically be incremented when you save this form)</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><h2>Organization</h2></td>
|
||||
</tr>
|
||||
<ww:textfield name="companyModel.organization.name" size="40" label="Name"/>
|
||||
<ww:textfield name="companyModel.organization.url" size="70" label="URL"/>
|
||||
<%-- TODO: how to get it to be a string, not a String[]? --%>
|
||||
<ww:textfield name="companyModel.properties['organization.logo']" size="70" label="Logo URL"/>
|
||||
<ww:submit value="Save"/>
|
||||
</ww:form>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -19,17 +19,16 @@
|
|||
|
||||
<%@ taglib uri="/webwork" prefix="ww" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<ww:set name="companyLogo" value="companyLogo"/>
|
||||
<c:if test="${!empty(companyLogo)}">
|
||||
<ww:set name="companyUrl" value="companyUrl"/>
|
||||
<c:if test="${!empty(organisationLogo)}">
|
||||
<ww:set name="organisationUrl" value="organisationUrl"/>
|
||||
<c:choose>
|
||||
<c:when test="${!empty(companyUrl)}">
|
||||
<c:when test="${!empty(organisationUrl)}">
|
||||
<a href="${companyUrl}">
|
||||
<img src="${companyLogo}" title="${companyName}" border="0" alt=""/>
|
||||
<img src="${organisationLogo}" title="${organisationName}" border="0" alt=""/>
|
||||
</a>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<img src="${companyLogo}" title="${companyName}" border="0" alt=""/>
|
||||
<img src="${organisationLogo}" title="${organisationName}" border="0" alt=""/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
package org.apache.maven.archiva.web.action.admin.appearance;
|
||||
|
||||
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||
import org.apache.maven.archiva.configuration.Configuration;
|
||||
import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
|
||||
import org.easymock.MockControl;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:james@atlassian.com">James William Dumay</a>
|
||||
*/
|
||||
public abstract class AbstractOrganizationInfoActionTest extends AbstractWebworkTestCase
|
||||
{
|
||||
protected MockControl archivaConfigurationControl;
|
||||
|
||||
protected ArchivaConfiguration configuration;
|
||||
|
||||
protected AbstractAppearanceAction action;
|
||||
|
||||
protected Configuration config;
|
||||
|
||||
protected abstract AbstractAppearanceAction getAction();
|
||||
|
||||
@Override
|
||||
protected void setUp()
|
||||
throws Exception
|
||||
{
|
||||
super.setUp();
|
||||
|
||||
config = new Configuration();
|
||||
archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
|
||||
configuration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
|
||||
|
||||
configuration.getConfiguration();
|
||||
archivaConfigurationControl.setReturnValue(config, 1, 2);
|
||||
|
||||
configuration.save(config);
|
||||
archivaConfigurationControl.setVoidCallable(1, 2);
|
||||
|
||||
archivaConfigurationControl.replay();
|
||||
}
|
||||
|
||||
protected void reloadAction()
|
||||
{
|
||||
action = getAction();
|
||||
action.setConfiguration( configuration );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
package org.apache.maven.archiva.web.action.admin.appearance;
|
||||
|
||||
/*
|
||||
* 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 com.opensymphony.xwork.Action;
|
||||
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||
import org.apache.maven.archiva.configuration.Configuration;
|
||||
import org.apache.maven.archiva.configuration.OrganisationInformation;
|
||||
import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
|
||||
import org.easymock.MockControl;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:james@atlassian.com">James William Dumay</a>
|
||||
*/
|
||||
public class EditOrganizationInfoActionTest extends AbstractOrganizationInfoActionTest
|
||||
{
|
||||
public void testOrganisationInfoSaves()
|
||||
throws Exception
|
||||
{
|
||||
config.setOrganisationInfo(new OrganisationInformation());
|
||||
OrganisationInformation orginfo = config.getOrganisationInfo();
|
||||
orginfo.setLogoLocation("LOGO");
|
||||
orginfo.setName("NAME");
|
||||
orginfo.setUrl("URL");
|
||||
|
||||
configuration.save(config);
|
||||
|
||||
reloadAction();
|
||||
|
||||
action.prepare();
|
||||
|
||||
assertEquals("LOGO", action.getOrganisationLogo());
|
||||
assertEquals("NAME", action.getOrganisationName());
|
||||
assertEquals("URL", action.getOrganisationUrl());
|
||||
|
||||
action.setOrganisationLogo("LOGO1");
|
||||
action.setOrganisationName("NAME1");
|
||||
action.setOrganisationUrl("URL1");
|
||||
|
||||
action.execute();
|
||||
|
||||
assertEquals("LOGO1", orginfo.getLogoLocation());
|
||||
assertEquals("NAME1", orginfo.getName());
|
||||
assertEquals("URL1", orginfo.getUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractAppearanceAction getAction()
|
||||
{
|
||||
return (EditOrganisationInfoAction) lookup( Action.class.getName(), "editOrganisationInfo" );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package org.apache.maven.archiva.web.action.admin.appearance;
|
||||
|
||||
/*
|
||||
* 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 com.opensymphony.xwork.Action;
|
||||
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||
import org.apache.maven.archiva.configuration.OrganisationInformation;
|
||||
import org.apache.maven.archiva.configuration.Configuration;
|
||||
import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:james@atlassian.com">James William Dumay</a>
|
||||
*/
|
||||
public class OrganizationInfoActionTest extends AbstractOrganizationInfoActionTest
|
||||
{
|
||||
public void testOrganisationInfoLoads()
|
||||
throws Exception
|
||||
{
|
||||
config.setOrganisationInfo(new OrganisationInformation());
|
||||
OrganisationInformation orginfo = config.getOrganisationInfo();
|
||||
orginfo.setLogoLocation("LOGO");
|
||||
orginfo.setName("NAME");
|
||||
orginfo.setUrl("URL");
|
||||
|
||||
configuration.save(config);
|
||||
|
||||
reloadAction();
|
||||
|
||||
action.prepare();
|
||||
|
||||
assertEquals("URL", action.getOrganisationUrl());
|
||||
assertEquals("NAME", action.getOrganisationName());
|
||||
assertEquals("LOGO", action.getOrganisationLogo());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractAppearanceAction getAction()
|
||||
{
|
||||
return (OrganisationInfoAction) lookup( Action.class.getName(), "organisationInfo" );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue