diff options
Diffstat (limited to 'archiva-modules/archiva-web/archiva-webapp/src/main')
234 files changed, 0 insertions, 22642 deletions
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractActionSupport.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractActionSupport.java deleted file mode 100644 index e092fe319..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractActionSupport.java +++ /dev/null @@ -1,389 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionSupport; -import org.apache.archiva.admin.model.AuditInformation; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.AuditListener; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.metadata.repository.RepositorySessionFactory; -import org.apache.archiva.redback.users.User; -import org.apache.archiva.security.ArchivaXworkUser; -import org.apache.archiva.web.runtime.ArchivaRuntimeInfo; -import org.apache.commons.lang.StringUtils; -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.interceptor.SessionAware; -import org.apache.archiva.redback.rest.services.RedbackRequestInformation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.ApplicationContext; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import javax.inject.Named; -import javax.servlet.http.HttpServletRequest; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * LogEnabled and SessionAware ActionSupport - */ -public abstract class AbstractActionSupport - extends ActionSupport - implements SessionAware, Auditable -{ - protected Map<?, ?> session; - - protected Logger log = LoggerFactory.getLogger( getClass() ); - - @Inject - private List<AuditListener> auditListeners = new ArrayList<AuditListener>(); - - - @Inject - @Named( value = "repositorySessionFactory" ) - protected RepositorySessionFactory repositorySessionFactory; - - @Inject - protected ApplicationContext applicationContext; - - private String principal; - - @Inject - private ArchivaRuntimeInfo archivaRuntimeInfo; - - @PostConstruct - public void initialize() - { - // no op - } - - @SuppressWarnings( "unchecked" ) - public void setSession( Map map ) - { - this.session = map; - } - - public void addAuditListener( AuditListener listener ) - { - this.auditListeners.add( listener ); - } - - public void clearAuditListeners() - { - this.auditListeners.clear(); - } - - public void removeAuditListener( AuditListener listener ) - { - this.auditListeners.remove( listener ); - } - - protected void triggerAuditEvent( String repositoryId, String resource, String action ) - { - AuditEvent event = new AuditEvent( repositoryId, getPrincipal(), resource, action ); - event.setRemoteIP( getRemoteAddr() ); - - for ( AuditListener listener : auditListeners ) - { - listener.auditEvent( event ); - } - } - - protected void triggerAuditEvent( String resource, String action ) - { - AuditEvent event = new AuditEvent( null, getPrincipal(), resource, action ); - event.setRemoteIP( getRemoteAddr() ); - - for ( AuditListener listener : auditListeners ) - { - listener.auditEvent( event ); - } - } - - protected void triggerAuditEvent( String action ) - { - AuditEvent event = new AuditEvent( null, getPrincipal(), null, action ); - event.setRemoteIP( getRemoteAddr() ); - - for ( AuditListener listener : auditListeners ) - { - listener.auditEvent( event ); - } - } - - private String getRemoteAddr() - { - HttpServletRequest request = ServletActionContext.getRequest(); - return request != null ? request.getRemoteAddr() : null; - } - - @SuppressWarnings( "unchecked" ) - protected String getPrincipal() - { - if ( principal != null ) - { - return principal; - } - return ArchivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() ); - } - - void setPrincipal( String principal ) - { - this.principal = principal; - } - - public void setAuditListeners( List<AuditListener> auditListeners ) - { - this.auditListeners = auditListeners; - } - - public void setRepositorySessionFactory( RepositorySessionFactory repositorySessionFactory ) - { - this.repositorySessionFactory = repositorySessionFactory; - } - - protected <T> Map<String, T> getBeansOfType( Class<T> clazz ) - { - //TODO do some caching here !!! - // olamy : with plexus we get only roleHint - // as per convention we named spring bean role#hint remove role# if exists - Map<String, T> springBeans = applicationContext.getBeansOfType( clazz ); - - Map<String, T> beans = new HashMap<String, T>( springBeans.size() ); - - for ( Map.Entry<String, T> entry : springBeans.entrySet() ) - { - String key = StringUtils.substringAfterLast( entry.getKey(), "#" ); - beans.put( key, entry.getValue() ); - } - return beans; - } - - - protected AuditInformation getAuditInformation() - { - AuditInformation auditInformation = new AuditInformation( new SimpleUser( getPrincipal() ), getRemoteAddr() ); - - return auditInformation; - } - - protected RedbackRequestInformation getRedbackRequestInformation() - { - return new RedbackRequestInformation( new SimpleUser( getPrincipal() ), getRemoteAddr() ); - } - - public String getArchivaVersion() - { - return archivaRuntimeInfo.getVersion(); - } - - public String getArchivaBuildNumber() - { - return archivaRuntimeInfo.getBuildNumber(); - } - - public String getArchivaBuildTimestamp() - { - return Long.toString( - archivaRuntimeInfo.getTimestamp() ); - } - - public String getArchivaBuildTimestampDateStr() - { - SimpleDateFormat sfd = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssz", getLocale() ); - return sfd.format( new Date( archivaRuntimeInfo.getTimestamp() ) ); - } - - /** - * dummy information for audit events - * - * @since 1.4-M1 - */ - private static class SimpleUser - implements User - { - - private String principal; - - protected SimpleUser( String principal ) - { - this.principal = principal; - } - - public Object getPrincipal() - { - return this.principal; - } - - public String getUsername() - { - return this.principal; - } - - public void setUsername( String name ) - { - - } - - public String getFullName() - { - return null; - } - - public void setFullName( String name ) - { - - } - - public String getEmail() - { - return null; - } - - public void setEmail( String address ) - { - - } - - public String getPassword() - { - return null; - } - - public void setPassword( String rawPassword ) - { - - } - - public String getEncodedPassword() - { - return null; - } - - public void setEncodedPassword( String encodedPassword ) - { - - } - - public Date getLastPasswordChange() - { - return null; - } - - public void setLastPasswordChange( Date passwordChangeDate ) - { - - } - - public List<String> getPreviousEncodedPasswords() - { - return null; - } - - public void setPreviousEncodedPasswords( List<String> encodedPasswordList ) - { - - } - - public void addPreviousEncodedPassword( String encodedPassword ) - { - - } - - public boolean isPermanent() - { - return false; - } - - public void setPermanent( boolean permanent ) - { - - } - - public boolean isLocked() - { - return false; - } - - public void setLocked( boolean locked ) - { - - } - - public boolean isPasswordChangeRequired() - { - return false; - } - - public void setPasswordChangeRequired( boolean changeRequired ) - { - - } - - public boolean isValidated() - { - return false; - } - - public void setValidated( boolean valid ) - { - - } - - public int getCountFailedLoginAttempts() - { - return 0; - } - - public void setCountFailedLoginAttempts( int count ) - { - - } - - public Date getAccountCreationDate() - { - return null; - } - - public void setAccountCreationDate( Date date ) - { - - } - - public Date getLastLoginDate() - { - return null; - } - - public void setLastLoginDate( Date date ) - { - - } - } - - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractRepositoryBasedAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractRepositoryBasedAction.java deleted file mode 100644 index 60a19b219..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractRepositoryBasedAction.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; - -import javax.inject.Inject; -import java.util.Collections; -import java.util.List; - -public class AbstractRepositoryBasedAction - extends AbstractActionSupport -{ - - @Inject - private UserRepositories userRepositories; - - protected List<String> getObservableRepos() - { - try - { - List<String> ids = userRepositories.getObservableRepositoryIds( getPrincipal() ); - return ids == null ? Collections.<String>emptyList() : ids; - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - public void setUserRepositories( UserRepositories userRepositories ) - { - this.userRepositories = userRepositories; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/BrowseAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/BrowseAction.java deleted file mode 100644 index 5c040c729..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/BrowseAction.java +++ /dev/null @@ -1,393 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.repository.MetadataResolutionException; -import org.apache.archiva.metadata.repository.MetadataResolver; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -/** - * Browse the repository. - * - * @todo implement repository selectors (all or specific repository) - */ -@Controller( "browseAction" ) -@Scope( "prototype" ) -public class BrowseAction - extends AbstractRepositoryBasedAction -{ - private String groupId; - - private String artifactId; - - private String repositoryId; - - private ProjectVersionMetadata sharedModel; - - private Collection<String> namespaces; - - private Collection<String> projectIds; - - private Collection<String> projectVersions; - - public String browse() - throws MetadataResolutionException - { - List<String> selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty( selectedRepos ) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - Set<String> namespaces = new LinkedHashSet<String>(); - - // TODO: this logic should be optional, particularly remembering we want to keep this code simple - // it is located here to avoid the content repository implementation needing to do too much for what - // is essentially presentation code - Set<String> namespacesToCollapse; - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - namespacesToCollapse = new LinkedHashSet<String>(); - for ( String repoId : selectedRepos ) - { - namespacesToCollapse.addAll( metadataResolver.resolveRootNamespaces( repositorySession, repoId ) ); - } - - for ( String n : namespacesToCollapse ) - { - // TODO: check performance of this - namespaces.add( collapseNamespaces( repositorySession, metadataResolver, selectedRepos, n ) ); - } - } - finally - { - repositorySession.close(); - } - - this.namespaces = getSortedList( namespaces ); - return SUCCESS; - } - - private String collapseNamespaces( RepositorySession repositorySession, MetadataResolver metadataResolver, - Collection<String> repoIds, String n ) - throws MetadataResolutionException - { - Set<String> subNamespaces = new LinkedHashSet<String>(); - for ( String repoId : repoIds ) - { - subNamespaces.addAll( metadataResolver.resolveNamespaces( repositorySession, repoId, n ) ); - } - if ( subNamespaces.size() != 1 ) - { - log.debug( "{} is not collapsible as it has sub-namespaces: {}", n, subNamespaces ); - return n; - } - else - { - for ( String repoId : repoIds ) - { - Collection<String> projects = metadataResolver.resolveProjects( repositorySession, repoId, n ); - if ( projects != null && !projects.isEmpty() ) - { - log.debug( "{} is not collapsible as it has projects", n ); - return n; - } - } - return collapseNamespaces( repositorySession, metadataResolver, repoIds, - n + "." + subNamespaces.iterator().next() ); - } - } - - public String browseGroup() - throws MetadataResolutionException - { - if ( StringUtils.isEmpty( groupId ) ) - { - // TODO: i18n - addActionError( "You must specify a group ID to browse" ); - return ERROR; - } - - List<String> selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty( selectedRepos ) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - Set<String> projects = new LinkedHashSet<String>(); - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - Set<String> namespaces; - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - - Set<String> namespacesToCollapse = new LinkedHashSet<String>(); - for ( String repoId : selectedRepos ) - { - namespacesToCollapse.addAll( metadataResolver.resolveNamespaces( repositorySession, repoId, groupId ) ); - - projects.addAll( metadataResolver.resolveProjects( repositorySession, repoId, groupId ) ); - } - - // TODO: this logic should be optional, particularly remembering we want to keep this code simple - // it is located here to avoid the content repository implementation needing to do too much for what - // is essentially presentation code - namespaces = new LinkedHashSet<String>(); - for ( String n : namespacesToCollapse ) - { - // TODO: check performance of this - namespaces.add( - collapseNamespaces( repositorySession, metadataResolver, selectedRepos, groupId + "." + n ) ); - } - } - finally - { - repositorySession.close(); - } - - this.namespaces = getSortedList( namespaces ); - this.projectIds = getSortedList( projects ); - return SUCCESS; - } - - private List<String> getSortedList( Set<String> set ) - { - List<String> list = new ArrayList<String>( set ); - Collections.sort( list ); - return list; - } - - public String browseArtifact() - throws MetadataResolutionException - { - if ( StringUtils.isEmpty( groupId ) ) - { - // TODO: i18n - addActionError( "You must specify a group ID to browse" ); - return ERROR; - } - - if ( StringUtils.isEmpty( artifactId ) ) - { - // TODO: i18n - addActionError( "You must specify a artifact ID to browse" ); - return ERROR; - } - - List<String> selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty( selectedRepos ) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - - Set<String> versions = new LinkedHashSet<String>(); - for ( String repoId : selectedRepos ) - { - versions.addAll( - metadataResolver.resolveProjectVersions( repositorySession, repoId, groupId, artifactId ) ); - } - - // TODO: sort by known version ordering method - this.projectVersions = new ArrayList<String>( versions ); - - populateSharedModel( repositorySession, metadataResolver, selectedRepos, versions ); - } - finally - { - repositorySession.close(); - } - - return SUCCESS; - } - - private void populateSharedModel( RepositorySession repositorySession, MetadataResolver metadataResolver, - Collection<String> selectedRepos, Collection<String> projectVersions ) - { - sharedModel = new ProjectVersionMetadata(); - - MavenProjectFacet mavenFacet = new MavenProjectFacet(); - mavenFacet.setGroupId( groupId ); - mavenFacet.setArtifactId( artifactId ); - sharedModel.addFacet( mavenFacet ); - - boolean isFirstVersion = true; - - for ( String version : projectVersions ) - { - ProjectVersionMetadata versionMetadata = null; - for ( String repoId : selectedRepos ) - { - if ( versionMetadata == null ) - { - try - { - versionMetadata = - metadataResolver.resolveProjectVersion( repositorySession, repoId, groupId, artifactId, - version ); - } - catch ( MetadataResolutionException e ) - { - log.error( - "Skipping invalid metadata while compiling shared model for " + groupId + ":" + artifactId - + " in repo " + repoId + ": " + e.getMessage() ); - } - } - } - - if ( versionMetadata == null ) - { - continue; - } - - if ( isFirstVersion ) - { - sharedModel = versionMetadata; - sharedModel.setId( null ); - } - else - { - MavenProjectFacet versionMetadataMavenFacet = - (MavenProjectFacet) versionMetadata.getFacet( MavenProjectFacet.FACET_ID ); - if ( versionMetadataMavenFacet != null ) - { - if ( mavenFacet.getPackaging() != null && !StringUtils.equalsIgnoreCase( mavenFacet.getPackaging(), - versionMetadataMavenFacet.getPackaging() ) ) - { - mavenFacet.setPackaging( null ); - } - } - - if ( sharedModel.getName() != null && !StringUtils.equalsIgnoreCase( sharedModel.getName(), - versionMetadata.getName() ) ) - { - sharedModel.setName( "" ); - } - - if ( sharedModel.getDescription() != null && !StringUtils.equalsIgnoreCase( - sharedModel.getDescription(), versionMetadata.getDescription() ) ) - { - sharedModel.setDescription( null ); - } - - if ( sharedModel.getIssueManagement() != null && versionMetadata.getIssueManagement() != null - && !StringUtils.equalsIgnoreCase( sharedModel.getIssueManagement().getUrl(), - versionMetadata.getIssueManagement().getUrl() ) ) - { - sharedModel.setIssueManagement( null ); - } - - if ( sharedModel.getCiManagement() != null && versionMetadata.getCiManagement() != null - && !StringUtils.equalsIgnoreCase( sharedModel.getCiManagement().getUrl(), - versionMetadata.getCiManagement().getUrl() ) ) - { - sharedModel.setCiManagement( null ); - } - - if ( sharedModel.getOrganization() != null && versionMetadata.getOrganization() != null - && !StringUtils.equalsIgnoreCase( sharedModel.getOrganization().getName(), - versionMetadata.getOrganization().getName() ) ) - { - sharedModel.setOrganization( null ); - } - - if ( sharedModel.getUrl() != null && !StringUtils.equalsIgnoreCase( sharedModel.getUrl(), - versionMetadata.getUrl() ) ) - { - sharedModel.setUrl( null ); - } - } - - isFirstVersion = false; - } - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public Collection<String> getNamespaces() - { - return namespaces; - } - - public String getRepositoryId() - { - - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - - this.repositoryId = repositoryId; - } - - public ProjectVersionMetadata getSharedModel() - { - return sharedModel; - } - - public Collection<String> getProjectIds() - { - return projectIds; - } - - public Collection<String> getProjectVersions() - { - return projectVersions; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/DeleteArtifactAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/DeleteArtifactAction.java deleted file mode 100644 index cdf446c52..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/DeleteArtifactAction.java +++ /dev/null @@ -1,330 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.maven2.model.Artifact; -import org.apache.archiva.rest.api.services.ArchivaRestServiceException; -import org.apache.archiva.rest.api.services.RepositoriesService; -import org.apache.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.redback.rest.services.RedbackAuthenticationThreadLocal; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.Collections; -import java.util.List; - -/** - * Delete an artifact. Metadata will be updated if one exists, otherwise it would be created. - */ -@Controller( "deleteArtifactAction" ) -@Scope( "prototype" ) -public class DeleteArtifactAction - extends AbstractActionSupport - implements Validateable, Preparable, Auditable -{ - /** - * The groupId of the artifact to be deleted. - */ - private String groupId; - - /** - * The artifactId of the artifact to be deleted. - */ - private String artifactId; - - /** - * The version of the artifact to be deleted. - */ - private String version; - - /** - * @since 1.4-M2 - * The classifier of the artifact to be deleted (optionnal) - */ - private String classifier; - - /** - * @since 1.4-M2 - * The type of the artifact to be deleted (optionnal) (default jar) - */ - private String type; - - /** - * The repository where the artifact is to be deleted. - */ - private String repositoryId; - - /** - * List of managed repositories to delete from. - */ - private List<String> managedRepos; - - @Inject - private UserRepositories userRepositories; - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RepositoriesService repositoriesService; - - private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[]{ ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 }; - - @PostConstruct - public void initialize() - { - super.initialize(); - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public List<String> getManagedRepos() - { - return managedRepos; - } - - public void setManagedRepos( List<String> managedRepos ) - { - this.managedRepos = managedRepos; - } - - public void prepare() - { - managedRepos = getManagableRepos(); - } - - public String getClassifier() - { - return classifier; - } - - public void setClassifier( String classifier ) - { - this.classifier = classifier; - } - - public String getType() - { - return type; - } - - public void setType( String type ) - { - this.type = type; - } - - public String input() - { - return INPUT; - } - - private void reset() - { - // reset the fields so the form is clear when - // the action returns to the jsp page - groupId = ""; - artifactId = ""; - version = ""; - repositoryId = ""; - classifier = ""; - type = ""; - } - - public String doDelete() - { - // services need a ThreadLocal variable to test karma - RedbackAuthenticationThreadLocal.set( getRedbackRequestInformation() ); - try - { - Artifact artifact = new Artifact(); - artifact.setGroupId( groupId ); - artifact.setArtifactId( artifactId ); - artifact.setVersion( version ); - artifact.setClassifier( classifier ); - artifact.setPackaging( type ); - artifact.setContext( repositoryId ); - - repositoriesService.deleteArtifact( artifact ); - } - catch ( ArchivaRestServiceException e ) - { - addActionError( "ArchivaRestServiceException exception: " + e.getMessage() ); - return ERROR; - } - finally - { - RedbackAuthenticationThreadLocal.set( null ); - } - - StringBuilder msg = new StringBuilder( "Artifact \'" ).append( groupId ).append( ":" ).append( artifactId ); - - if ( StringUtils.isNotEmpty( classifier ) ) - { - msg.append( ":" ).append( classifier ); - } - msg.append( ":" ).append( version ).append( "' was successfully deleted from repository '" ).append( - repositoryId ).append( "'" ); - addActionMessage( msg.toString() ); - reset(); - return SUCCESS; - } - - public void validate() - { - try - { - if ( !userRepositories.isAuthorizedToDeleteArtifacts( getPrincipal(), repositoryId ) ) - { - addActionError( "User is not authorized to delete artifacts in repository '" + repositoryId + "'." ); - } - - if ( ( version.length() > 0 ) && ( !VersionUtil.isVersion( version ) ) ) - { - addActionError( "Invalid version." ); - } - } - catch ( AccessDeniedException e ) - { - addActionError( e.getMessage() ); - } - catch ( ArchivaSecurityException e ) - { - addActionError( e.getMessage() ); - } - - // trims all request parameter values, since the trailing/leading white-spaces are ignored during validation. - trimAllRequestParameterValues(); - } - - private List<String> getManagableRepos() - { - try - { - return userRepositories.getManagableRepositoryIds( getPrincipal() ); - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - // TODO: pass this onto the screen. - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( groupId ) ) - { - groupId = groupId.trim(); - } - - if ( StringUtils.isNotEmpty( artifactId ) ) - { - artifactId = artifactId.trim(); - } - - if ( StringUtils.isNotEmpty( version ) ) - { - version = version.trim(); - } - - if ( StringUtils.isNotEmpty( repositoryId ) ) - { - repositoryId = repositoryId.trim(); - } - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public RepositoriesService getRepositoriesService() - { - return repositoriesService; - } - - public void setRepositoriesService( RepositoriesService repositoriesService ) - { - this.repositoriesService = repositoriesService; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/GlobalResults.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/GlobalResults.java deleted file mode 100644 index ec52a4db2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/GlobalResults.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -/** - * GlobalResults - constants for global result definitions. - * - * - */ -public class GlobalResults -{ - public static final String ACCESS_TO_NO_REPOS = "access_to_no_repos"; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/MergeAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/MergeAction.java deleted file mode 100644 index af6f684c8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/MergeAction.java +++ /dev/null @@ -1,351 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.filter.Filter; -import org.apache.archiva.metadata.repository.filter.IncludesFilter; -import org.apache.archiva.redback.components.taskqueue.TaskQueueException; -import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.stagerepository.merge.Maven2RepositoryMerger; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * - */ -@Controller ("mergeAction") -@Scope ("prototype") -public class MergeAction - extends AbstractActionSupport - implements Validateable, Preparable, Auditable -{ - - @Inject - @Named (value = "repositoryMerger#maven2") - private Maven2RepositoryMerger repositoryMerger; - - @Inject - protected ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - @Named (value = "archivaTaskScheduler#repository") - private RepositoryArchivaTaskScheduler repositoryTaskScheduler; - - private ManagedRepository repository; - - private String repoid; - - private String sourceRepoId; - - private final String action = "merge"; - - private final String hasConflicts = "CONFLICTS"; - - private List<ArtifactMetadata> conflictSourceArtifacts; - - private List<ArtifactMetadata> conflictSourceArtifactsToBeDisplayed; - - public String getConflicts() - { - try - { - sourceRepoId = repoid + "-stage"; - ManagedRepository targetRepoConfig = managedRepositoryAdmin.getManagedRepository( sourceRepoId ); - - if ( targetRepoConfig != null ) - { - return hasConflicts; - } - else - { - return ERROR; - } - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException " + e.getMessage() ); - return ERROR; - } - } - - public String doMerge() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepoId ); - - if ( repository.isReleases() && !repository.isSnapshots() ) - { - mergeWithOutSnapshots( metadataRepository, sourceArtifacts, sourceRepoId, repoid ); - } - else - { - repositoryMerger.merge( metadataRepository, sourceRepoId, repoid ); - - for ( ArtifactMetadata metadata : sourceArtifacts ) - { - triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES ); - } - } - - scanRepository(); - - addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." ); - - return SUCCESS; - } - catch ( Exception e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error occurred while merging the repositories: " + e.getMessage() ); - return ERROR; - } - finally - { - repositorySession.close(); - } - } - - public String mergeBySkippingConflicts() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepoId ); - sourceArtifacts.removeAll( conflictSourceArtifacts ); - - if ( repository.isReleases() && !repository.isSnapshots() ) - { - mergeWithOutSnapshots( metadataRepository, sourceArtifacts, sourceRepoId, repoid ); - } - else - { - - Filter<ArtifactMetadata> artifactsWithOutConflicts = - new IncludesFilter<ArtifactMetadata>( sourceArtifacts ); - repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactsWithOutConflicts ); - for ( ArtifactMetadata metadata : sourceArtifacts ) - { - triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES ); - } - } - - scanRepository(); - - addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." ); - - return SUCCESS; - } - catch ( Exception e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error occurred while merging the repositories: " + e.getMessage() ); - return ERROR; - } - finally - { - repositorySession.close(); - } - } - - private void mergeWithOutSnapshots( MetadataRepository metadataRepository, List<ArtifactMetadata> sourceArtifacts, - String sourceRepoId, String repoid ) - throws Exception - { - List<ArtifactMetadata> artifactsWithOutSnapshots = new ArrayList<ArtifactMetadata>(); - for ( ArtifactMetadata metadata : sourceArtifacts ) - { - - if ( metadata.getProjectVersion().contains( VersionUtil.SNAPSHOT ) ) - { - artifactsWithOutSnapshots.add( metadata ); - } - else - { - triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES ); - } - - } - sourceArtifacts.removeAll( artifactsWithOutSnapshots ); - - Filter<ArtifactMetadata> artifactListWithOutSnapShots = new IncludesFilter<ArtifactMetadata>( sourceArtifacts ); - repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactListWithOutSnapShots ); - } - - public String mergeWithOutConlficts() - { - sourceRepoId = repoid + "-stage"; - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - conflictSourceArtifacts = - repositoryMerger.getConflictingArtifacts( repositorySession.getRepository(), sourceRepoId, repoid ); - } - catch ( Exception e ) - { - addActionError( "Error occurred while merging the repositories." ); - return ERROR; - } - finally - { - repositorySession.close(); - } - - addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." ); - - return SUCCESS; - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - public void prepare() - throws Exception - { - sourceRepoId = repoid + "-stage"; - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - conflictSourceArtifacts = - repositoryMerger.getConflictingArtifacts( repositorySession.getRepository(), sourceRepoId, repoid ); - } - finally - { - repositorySession.close(); - } - - this.repository = managedRepositoryAdmin.getManagedRepository( repoid ); - setConflictSourceArtifactsToBeDisplayed( conflictSourceArtifacts ); - } - - public String getSourceRepoId() - { - return sourceRepoId; - } - - public void setSourceRepoId( String sourceRepoId ) - { - this.sourceRepoId = sourceRepoId; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - public List<ArtifactMetadata> getConflictSourceArtifacts() - { - return conflictSourceArtifacts; - } - - public void setConflictSourceArtifacts( List<ArtifactMetadata> conflictSourceArtifacts ) - { - this.conflictSourceArtifacts = conflictSourceArtifacts; - } - - public List<ArtifactMetadata> getConflictSourceArtifactsToBeDisplayed() - { - return conflictSourceArtifactsToBeDisplayed; - } - - public void setConflictSourceArtifactsToBeDisplayed( List<ArtifactMetadata> conflictSourceArtifacts ) - throws Exception - { - this.conflictSourceArtifactsToBeDisplayed = new ArrayList<ArtifactMetadata>(); - HashMap<String, ArtifactMetadata> map = new HashMap<String, ArtifactMetadata>(); - for ( ArtifactMetadata metadata : conflictSourceArtifacts ) - { - String metadataId = - metadata.getNamespace() + metadata.getProject() + metadata.getProjectVersion() + metadata.getVersion(); - map.put( metadataId, metadata ); - } - conflictSourceArtifactsToBeDisplayed.addAll( map.values() ); - } - - - private void scanRepository() - { - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( repoid ); - task.setScanAll( true ); - - if ( repositoryTaskScheduler.isProcessingRepositoryTask( repoid ) ) - { - log.info( "Repository [{}] task was already queued.", repoid ); - } - else - { - try - { - log.info( "Your request to have repository [{}] be indexed has been queued.", repoid ); - repositoryTaskScheduler.queueTask( task ); - } - catch ( TaskQueueException e ) - { - log.warn( "Unable to queue your request to have repository [{}] be indexed: {}", repoid, - e.getMessage() ); - } - } - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } -}
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java deleted file mode 100644 index 24bf76179..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java +++ /dev/null @@ -1,727 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.indexer.search.RepositorySearch; -import org.apache.archiva.indexer.search.RepositorySearchException; -import org.apache.archiva.indexer.search.SearchFields; -import org.apache.archiva.indexer.search.SearchResultHit; -import org.apache.archiva.indexer.search.SearchResultLimits; -import org.apache.archiva.indexer.search.SearchResults; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.struts2.ServletActionContext; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; - -import javax.inject.Inject; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Search all indexed fields by the given criteria. - */ -@Controller( "searchAction" ) -@Scope( "prototype" ) -public class SearchAction - extends AbstractRepositoryBasedAction - implements Preparable -{ - - @Inject - protected ManagedRepositoryAdmin managedRepositoryAdmin; - - /** - * Query string. - */ - private String q; - - /** - * The Search Results. - */ - private SearchResults results; - - private static final String RESULTS = "results"; - - private static final String ARTIFACT = "artifact"; - - private List<ArtifactMetadata> databaseResults; - - private int currentPage = 0; - - private int totalPages; - - private boolean searchResultsOnly; - - private String completeQueryString; - - private static final String COMPLETE_QUERY_STRING_SEPARATOR = ";"; - - private List<String> managedRepositoryList = new ArrayList<String>(); - - private String groupId; - - private String artifactId; - - private String version; - - private String className; - - /** - * contains osgi metadata Bundle-Version if available - * - * @since 1.4-M1 - */ - private String bundleVersion; - - /** - * contains osgi metadata Bundle-SymbolicName if available - * - * @since 1.4-M1 - */ - private String bundleSymbolicName; - - /** - * contains osgi metadata Export-Package if available - * - * @since 1.4-M1 - */ - private String bundleExportPackage; - - /** - * contains osgi metadata import package if available - * - * @since 1.4-M1 - */ - private String bundleImportPackage; - - /** - * contains osgi metadata name if available - * - * @since 1.4-M1 - */ - private String bundleName; - - /** - * contains osgi metadata Export-Service if available - * - * @since 1.4-M1 - */ - private String bundleExportService; - - private int rowCount = 30; - - private String repositoryId; - - private boolean fromFilterSearch; - - private boolean filterSearch = false; - - private boolean fromResultsPage; - - @Inject - private RepositorySearch nexusSearch; - - private Map<String, String> searchFields; - - private String infoMessage; - - public boolean isFromResultsPage() - { - return fromResultsPage; - } - - public void setFromResultsPage(boolean fromResultsPage) - { - this.fromResultsPage = fromResultsPage; - } - - public boolean isFromFilterSearch() - { - return fromFilterSearch; - } - - public void setFromFilterSearch(boolean fromFilterSearch) - { - this.fromFilterSearch = fromFilterSearch; - } - - public void prepare() - { - managedRepositoryList = getObservableRepos(); - - if ( managedRepositoryList.size() > 0 ) - { - managedRepositoryList.add("all"); - } - - searchFields = new LinkedHashMap<String, String>(); - searchFields.put("groupId", "Group ID"); - searchFields.put("artifactId", "Artifact ID"); - searchFields.put("version", "Version"); - searchFields.put("className", "Class/Package Name"); - searchFields.put("rowCount", "Row Count"); - searchFields.put("bundleVersion", "OSGI Bundle Version"); - searchFields.put("bundleSymbolicName", "OSGI Bundle-SymbolicName"); - searchFields.put("bundleExportPackage", "OSGI Export-Package"); - searchFields.put("bundleImportPackage", "OSGI import package"); - searchFields.put("bundleName", "OSGI name"); - searchFields.put("bundleExportService", "OSGI Export-Service"); - - super.clearErrorsAndMessages(); - clearSearchFields(); - } - - private void clearSearchFields() - { - repositoryId = ""; - artifactId = ""; - groupId = ""; - version = ""; - className = ""; - rowCount = 30; - currentPage = 0; - } - - // advanced search MRM-90 -- filtered search - public String filteredSearch() - throws MalformedURLException - { - if ( StringUtils.isBlank(groupId) && StringUtils.isBlank(artifactId) && StringUtils.isBlank(className) - && StringUtils.isBlank(version) && StringUtils.isBlank(bundleExportPackage) && StringUtils.isBlank( - bundleExportService) && StringUtils.isBlank(bundleImportPackage) && StringUtils.isBlank(bundleName) - && StringUtils.isBlank(bundleSymbolicName) && StringUtils.isBlank(bundleVersion) ) - { - addActionError("Advanced Search - At least one search criteria must be provided."); - return INPUT; - } - - fromFilterSearch = true; - - if ( CollectionUtils.isEmpty(managedRepositoryList) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - SearchResultLimits limits = new SearchResultLimits(currentPage); - limits.setPageSize(rowCount); - List<String> selectedRepos = new ArrayList<String>(); - - if ( repositoryId == null || StringUtils.isBlank(repositoryId) || "all".equals( - StringUtils.stripToEmpty(repositoryId)) ) - { - selectedRepos = getObservableRepos(); - } - else - { - selectedRepos.add(repositoryId); - } - - if ( CollectionUtils.isEmpty(selectedRepos) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - SearchFields searchFields = new SearchFields(groupId, artifactId, version, null, className, selectedRepos); - - if ( StringUtils.isNotBlank(this.bundleExportPackage) ) - { - searchFields.setBundleExportPackage(this.bundleExportPackage); - } - - if ( StringUtils.isNotBlank(this.bundleExportService) ) - { - searchFields.setBundleExportService(this.bundleExportService); - } - - if ( StringUtils.isNotBlank(this.bundleImportPackage) ) - { - searchFields.setBundleImportPackage(this.bundleImportPackage); - } - - if ( StringUtils.isNotBlank(this.bundleSymbolicName) ) - { - searchFields.setBundleSymbolicName(this.bundleSymbolicName); - } - - if ( StringUtils.isNotBlank(this.bundleName) ) - { - searchFields.setBundleName(this.bundleName); - } - - if ( StringUtils.isNotBlank(this.bundleVersion) ) - { - searchFields.setBundleVersion(this.bundleVersion); - } - - log.debug("filteredSearch with searchFields {}", searchFields); - - // TODO: add packaging in the list of fields for advanced search (UI)? - try - { - results = getNexusSearch().search(getPrincipal(), searchFields, limits); - } - catch ( RepositorySearchException e ) - { - addActionError(e.getMessage()); - return ERROR; - } - - if ( results.isEmpty() ) - { - addActionError("No results found"); - return INPUT; - } - - totalPages = results.getTotalHits() / limits.getPageSize(); - - if ( ( results.getTotalHits() % limits.getPageSize() ) != 0 ) - { - totalPages = totalPages + 1; - } - - for ( SearchResultHit hit : results.getHits() ) - { - // fix version ? - //hit.setVersion( VersionUtil.getBaseVersion( version ) ); - - } - - return SUCCESS; - } - - @SuppressWarnings( "unchecked" ) - public String quickSearch() - throws MalformedURLException - { - /* TODO: give action message if indexing is in progress. - * This should be based off a count of 'unprocessed' artifacts. - * This (yet to be written) routine could tell the user that X (unprocessed) artifacts are not yet - * present in the full text search. - */ - - assert q != null && q.length() != 0; - - fromFilterSearch = false; - - SearchResultLimits limits = new SearchResultLimits(currentPage); - - List<String> selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty(selectedRepos) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - log.debug("quickSearch with selectedRepos {} query {}", selectedRepos, q); - - try - { - if ( searchResultsOnly && !completeQueryString.equals("") ) - { - results = getNexusSearch().search(getPrincipal(), selectedRepos, q, limits, parseCompleteQueryString()); - } - else - { - completeQueryString = ""; - results = getNexusSearch().search(getPrincipal(), selectedRepos, q, limits, null); - } - } - catch ( RepositorySearchException e ) - { - addActionError(e.getMessage()); - return ERROR; - } - - if ( results.isEmpty() ) - { - addActionError("No results found"); - return INPUT; - } - - totalPages = results.getTotalHitsMapSize() / limits.getPageSize(); - - if ( ( results.getTotalHitsMapSize() % limits.getPageSize() ) != 0 ) - { - totalPages = totalPages + 1; - } - - if ( !isEqualToPreviousSearchTerm(q) ) - { - buildCompleteQueryString(q); - } - - return SUCCESS; - } - - public String findArtifact() - throws Exception - { - // TODO: give action message if indexing is in progress - - if ( StringUtils.isBlank(q) ) - { - addActionError("Unable to search for a blank checksum"); - return INPUT; - } - - databaseResults = new ArrayList<ArtifactMetadata>(); - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - for ( String repoId : getObservableRepos() ) - { - databaseResults.addAll(metadataRepository.getArtifactsByChecksum(repoId, q)); - } - } - finally - { - repositorySession.close(); - } - - if ( databaseResults.isEmpty() ) - { - addActionError("No results found"); - return INPUT; - } - - if ( databaseResults.size() == 1 ) - { - // 1 hit? return it's information directly! - return ARTIFACT; - } - - return RESULTS; - } - - public String doInput() - { - return INPUT; - } - - private void buildCompleteQueryString(String searchTerm) - { - if ( searchTerm.indexOf(COMPLETE_QUERY_STRING_SEPARATOR) != -1 ) - { - searchTerm = StringUtils.remove(searchTerm, COMPLETE_QUERY_STRING_SEPARATOR); - } - - if ( completeQueryString == null || "".equals(completeQueryString) ) - { - completeQueryString = searchTerm; - } - else - { - completeQueryString = completeQueryString + COMPLETE_QUERY_STRING_SEPARATOR + searchTerm; - } - } - - private List<String> parseCompleteQueryString() - { - List<String> parsedCompleteQueryString = new ArrayList<String>(); - String[] parsed = StringUtils.split(completeQueryString, COMPLETE_QUERY_STRING_SEPARATOR); - CollectionUtils.addAll(parsedCompleteQueryString, parsed); - - return parsedCompleteQueryString; - } - - private boolean isEqualToPreviousSearchTerm(String searchTerm) - { - if ( !"".equals(completeQueryString) ) - { - String[] parsed = StringUtils.split(completeQueryString, COMPLETE_QUERY_STRING_SEPARATOR); - if ( StringUtils.equalsIgnoreCase(searchTerm, parsed[parsed.length - 1]) ) - { - return true; - } - } - - return false; - } - - public String getQ() - { - return q; - } - - public void setQ(String q) - { - this.q = q; - } - - public SearchResults getResults() - { - return results; - } - - public List<ArtifactMetadata> getDatabaseResults() - { - return databaseResults; - } - - public void setCurrentPage(int page) - { - this.currentPage = page; - } - - public int getCurrentPage() - { - return currentPage; - } - - public int getTotalPages() - { - return totalPages; - } - - public void setTotalPages(int totalPages) - { - this.totalPages = totalPages; - } - - public boolean isSearchResultsOnly() - { - return searchResultsOnly; - } - - public void setSearchResultsOnly(boolean searchResultsOnly) - { - this.searchResultsOnly = searchResultsOnly; - } - - public String getCompleteQueryString() - { - return completeQueryString; - } - - public void setCompleteQueryString(String completeQueryString) - { - this.completeQueryString = completeQueryString; - } - - public Map<String, ManagedRepository> getManagedRepositories() - throws RepositoryAdminException - { - return managedRepositoryAdmin.getManagedRepositoriesAsMap(); - } - - // wtf : does nothing ?? - public void setManagedRepositories(Map<String, ManagedRepository> managedRepositories) - { - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId(String groupId) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId(String artifactId) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion(String version) - { - this.version = version; - } - - public int getRowCount() - { - return rowCount; - } - - public void setRowCount(int rowCount) - { - this.rowCount = rowCount; - } - - public boolean isFilterSearch() - { - return filterSearch; - } - - public void setFilterSearch(boolean filterSearch) - { - this.filterSearch = filterSearch; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId(String repositoryId) - { - this.repositoryId = repositoryId; - } - - public List<String> getManagedRepositoryList() - { - return managedRepositoryList; - } - - public void setManagedRepositoryList(List<String> managedRepositoryList) - { - this.managedRepositoryList = managedRepositoryList; - } - - public String getClassName() - { - return className; - } - - public void setClassName(String className) - { - this.className = className; - } - - public RepositorySearch getNexusSearch() - { - if ( nexusSearch == null ) - { - WebApplicationContext wac = - WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext()); - nexusSearch = wac.getBean("nexusSearch", RepositorySearch.class); - } - return nexusSearch; - } - - public void setNexusSearch(RepositorySearch nexusSearch) - { - this.nexusSearch = nexusSearch; - } - - public Map<String, String> getSearchFields() - { - return searchFields; - } - - public void setSearchFields(Map<String, String> searchFields) - { - this.searchFields = searchFields; - } - - public String getInfoMessage() - { - return infoMessage; - } - - public void setInfoMessage(String infoMessage) - { - this.infoMessage = infoMessage; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin(ManagedRepositoryAdmin managedRepositoryAdmin) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public String getBundleVersion() - { - return bundleVersion; - } - - public void setBundleVersion(String bundleVersion) - { - this.bundleVersion = bundleVersion; - } - - public String getBundleSymbolicName() - { - return bundleSymbolicName; - } - - public void setBundleSymbolicName(String bundleSymbolicName) - { - this.bundleSymbolicName = bundleSymbolicName; - } - - public String getBundleExportPackage() - { - return bundleExportPackage; - } - - public void setBundleExportPackage(String bundleExportPackage) - { - this.bundleExportPackage = bundleExportPackage; - } - - public String getBundleImportPackage() - { - return bundleImportPackage; - } - - public void setBundleImportPackage(String bundleImportPackage) - { - this.bundleImportPackage = bundleImportPackage; - } - - public String getBundleName() - { - return bundleName; - } - - public void setBundleName(String bundleName) - { - this.bundleName = bundleName; - } - - public String getBundleExportService() - { - return bundleExportService; - } - - public void setBundleExportService(String bundleExportService) - { - this.bundleExportService = bundleExportService; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/ShowArtifactAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/ShowArtifactAction.java deleted file mode 100644 index d6cb7b8a0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/ShowArtifactAction.java +++ /dev/null @@ -1,628 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.xwork2.Validateable; -import org.apache.archiva.metadata.generic.GenericMetadataFacet; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.Dependency; -import org.apache.archiva.metadata.model.MailingList; -import org.apache.archiva.metadata.model.MetadataFacet; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.model.ProjectVersionReference; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataResolutionException; -import org.apache.archiva.metadata.repository.MetadataResolver; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMetadataVersionComparator; -import org.apache.archiva.reports.RepositoryProblemFacet; -import org.apache.archiva.repository.RepositoryContentFactory; -import org.apache.archiva.repository.RepositoryException; -import org.apache.archiva.repository.RepositoryNotFoundException; -import org.apache.archiva.maven2.model.Artifact; -import org.apache.archiva.rest.services.utils.ArtifactBuilder; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Browse the repository. - * <p/> - * TODO change name to ShowVersionedAction to conform to terminology. - */ -@SuppressWarnings( "serial" ) -@Controller( "showArtifactAction" ) -@Scope( "prototype" ) -public class ShowArtifactAction - extends AbstractRepositoryBasedAction - implements Validateable -{ - /* .\ Not Exposed \._____________________________________________ */ - - @Inject - private RepositoryContentFactory repositoryFactory; - - /* .\ Exposed Output Objects \.__________________________________ */ - - private String groupId; - - private String artifactId; - - private String version; - - private String repositoryId; - - /** - * The model of this versioned project. - */ - private ProjectVersionMetadata model; - - /** - * The list of artifacts that depend on this versioned project. - */ - private List<ProjectVersionReference> dependees; - - private List<MailingList> mailingLists; - - private List<Dependency> dependencies; - - private Map<String, List<Artifact>> artifacts; - - private boolean dependencyTree = false; - - private String deleteItem; - - private Map<String, String> genericMetadata; - - private String propertyName; - - private String propertyValue; - - /** - * Show the versioned project information tab. TODO: Change name to 'project' - we are showing project versions - * here, not specific artifact information (though that is rendered in the download box). - */ - public String artifact() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - return handleArtifact( repositorySession ); - } - catch ( Exception e ) - { - log.warn( "Unable to getProjectVersionMetadata: " + e.getMessage(), e ); - addActionError( "Unable to getProjectVersionMetadata - consult application logs." ); - return ERROR; - } - finally - - { - repositorySession.close(); - } - - } - - private String handleArtifact( RepositorySession session ) - throws RepositoryNotFoundException, RepositoryException - { - // In the future, this should be replaced by the repository grouping mechanism, so that we are only making - // simple resource requests here and letting the resolver take care of it - ProjectVersionMetadata versionMetadata = getProjectVersionMetadata( session ); - - if ( versionMetadata == null ) - { - addActionError( "Artifact not found" ); - return ERROR; - } - - if ( versionMetadata.isIncomplete() ) - { - addIncompleteModelWarning( "Artifact metadata is incomplete." ); - } - - model = versionMetadata; - - return SUCCESS; - } - - private ProjectVersionMetadata getProjectVersionMetadata( RepositorySession session ) - throws RepositoryNotFoundException, RepositoryException - { - ProjectVersionMetadata versionMetadata = null; - artifacts = new LinkedHashMap<String, List<Artifact>>(); - - List<String> repos = getObservableRepos(); - - MetadataResolver metadataResolver = session.getResolver(); - for ( String repoId : repos ) - { - if ( versionMetadata == null ) - { - // we don't want the implementation being that intelligent - so another resolver to do the - // "just-in-time" nature of picking up the metadata (if appropriate for the repository type) is used - try - { - versionMetadata = - metadataResolver.resolveProjectVersion( session, repoId, groupId, artifactId, version ); - if ( versionMetadata != null ) - { - MetadataFacet repoProbFacet; - if ( ( repoProbFacet = versionMetadata.getFacet( RepositoryProblemFacet.FACET_ID ) ) != null ) - { - addIncompleteModelWarning( "Artifact metadata is incomplete: " - + ( (RepositoryProblemFacet) repoProbFacet ).getProblem() ); - //set metadata to complete so that no additional 'Artifact metadata is incomplete' warning is logged - versionMetadata.setIncomplete( false ); - } - } - - } - catch ( MetadataResolutionException e ) - { - addIncompleteModelWarning( "Error resolving artifact metadata: " + e.getMessage() ); - - // TODO: need a consistent way to construct this - same in ArchivaMetadataCreationConsumer - versionMetadata = new ProjectVersionMetadata(); - versionMetadata.setId( version ); - } - if ( versionMetadata != null ) - { - repositoryId = repoId; - - List<ArtifactMetadata> artifacts; - try - { - artifacts = new ArrayList<ArtifactMetadata>( - metadataResolver.resolveArtifacts( session, repoId, groupId, artifactId, version ) ); - } - catch ( MetadataResolutionException e ) - { - addIncompleteModelWarning( "Error resolving artifact metadata: " + e.getMessage() ); - artifacts = Collections.emptyList(); - } - Collections.sort( artifacts, ArtifactMetadataVersionComparator.INSTANCE ); - - for ( ArtifactMetadata artifact : artifacts ) - { - List<Artifact> l = this.artifacts.get( artifact.getVersion() ); - if ( l == null ) - { - l = new ArrayList<Artifact>(); - this.artifacts.put( artifact.getVersion(), l ); - } - - ArtifactBuilder builder = new ArtifactBuilder().forArtifactMetadata( - artifact ).withManagedRepositoryContent( - repositoryFactory.getManagedRepositoryContent( repositoryId ) ); - l.add( builder.build() ); - } - } - } - } - - return versionMetadata; - } - - private void addIncompleteModelWarning( String warningMessage ) - { - addActionError( warningMessage ); - //"The model may be incomplete due to a previous error in resolving information. Refer to the repository problem reports for more information." ); - } - - /** - * Show the artifact information tab. - */ - public String dependencies() - { - String result = artifact(); - - this.dependencies = model.getDependencies(); - - return result; - } - - /** - * Show the mailing lists information tab. - */ - public String mailingLists() - { - String result = artifact(); - - this.mailingLists = model.getMailingLists(); - - return result; - } - - /** - * Show the reports tab. - */ - public String reports() - { - // TODO: hook up reports on project - - return SUCCESS; - } - - /** - * Show the dependees (other artifacts that depend on this project) tab. - */ - public String dependees() - throws MetadataResolutionException - { - List<ProjectVersionReference> references = new ArrayList<ProjectVersionReference>(); - // TODO: what if we get duplicates across repositories? - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - for ( String repoId : getObservableRepos() ) - { - // TODO: what about if we want to see this irrespective of version? - references.addAll( - metadataResolver.resolveProjectReferences( repositorySession, repoId, groupId, artifactId, - version ) ); - } - } - finally - { - repositorySession.close(); - } - - this.dependees = references; - - // TODO: may need to note on the page that references will be incomplete if the other artifacts are not yet - // stored in the content repository - // (especially in the case of pre-population import) - - return artifact(); - } - - /** - * Show the dependencies of this versioned project tab. - */ - public String dependencyTree() - { - // temporarily use this as we only need the model for the tag to perform, but we should be resolving the - // graph here instead - - // TODO: may need to note on the page that tree will be incomplete if the other artifacts are not yet stored in - // the content repository - // (especially in the case of pre-population import) - - // TODO: a bit ugly, should really be mapping all these results differently now - this.dependencyTree = true; - - return artifact(); - } - - public String projectMetadata() - { - String result = artifact(); - - if ( model.getFacet( GenericMetadataFacet.FACET_ID ) != null ) - { - genericMetadata = model.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - } - - if ( genericMetadata == null ) - { - genericMetadata = new HashMap<String, String>(); - } - - return result; - } - - public String addMetadataProperty() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - ProjectVersionMetadata projectMetadata; - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - projectMetadata = getProjectVersionMetadata( repositorySession ); - if ( projectMetadata == null ) - { - addActionError( "Artifact not found" ); - return ERROR; - } - - if ( projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ) == null ) - { - genericMetadata = new HashMap<String, String>(); - } - else - { - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - } - - if ( propertyName == null || "".equals( propertyName.trim() ) || propertyValue == null || "".equals( - propertyValue.trim() ) ) - { - model = projectMetadata; - addActionError( "Property Name and Property Value are required." ); - return INPUT; - } - - genericMetadata.put( propertyName, propertyValue ); - - try - { - updateProjectMetadata( projectMetadata, metadataRepository ); - repositorySession.save(); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to persist modified project metadata after adding entry: " + e.getMessage(), e ); - addActionError( - "Unable to add metadata item to underlying content storage - consult application logs." ); - return ERROR; - } - - // TODO: why re-retrieve? - projectMetadata = getProjectVersionMetadata( repositorySession ); - } - catch ( Exception e ) - { - log.warn( "Unable to getProjectVersionMetadata: " + e.getMessage(), e ); - addActionError( "Unable to getProjectVersionMetadata - consult application logs." ); - return ERROR; - } - finally - { - repositorySession.close(); - } - - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - - model = projectMetadata; - - propertyName = ""; - propertyValue = ""; - - return SUCCESS; - } - - public String deleteMetadataEntry() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - ProjectVersionMetadata projectMetadata = getProjectVersionMetadata( repositorySession ); - - if ( projectMetadata == null ) - { - addActionError( "Artifact not found" ); - return ERROR; - } - - if ( projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ) != null ) - { - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - - if ( !StringUtils.isEmpty( deleteItem ) ) - { - genericMetadata.remove( deleteItem ); - - try - { - updateProjectMetadata( projectMetadata, metadataRepository ); - repositorySession.save(); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to persist modified project metadata after removing entry: " + e.getMessage(), - e ); - addActionError( - "Unable to remove metadata item to underlying content storage - consult application logs." ); - return ERROR; - } - - // TODO: why re-retrieve? - projectMetadata = getProjectVersionMetadata( repositorySession ); - - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - - model = projectMetadata; - - addActionMessage( "Property successfully deleted." ); - } - - deleteItem = ""; - } - else - { - addActionError( "No generic metadata facet for this artifact." ); - return ERROR; - } - } - catch ( Exception e ) - { - log.warn( "Unable to getProjectVersionMetadata: " + e.getMessage(), e ); - addActionError( "Unable to getProjectVersionMetadata - consult application logs." ); - return ERROR; - - } - finally - { - repositorySession.close(); - } - - return SUCCESS; - } - - private void updateProjectMetadata( ProjectVersionMetadata projectMetadata, MetadataRepository metadataRepository ) - throws MetadataRepositoryException - { - GenericMetadataFacet genericMetadataFacet = new GenericMetadataFacet(); - genericMetadataFacet.fromProperties( genericMetadata ); - - projectMetadata.addFacet( genericMetadataFacet ); - - metadataRepository.updateProjectVersion( repositoryId, groupId, artifactId, projectMetadata ); - } - - @Override - public void validate() - { - if ( StringUtils.isBlank( groupId ) ) - { - addActionError( "You must specify a group ID to browse" ); - } - - if ( StringUtils.isBlank( artifactId ) ) - { - addActionError( "You must specify a artifact ID to browse" ); - } - - if ( StringUtils.isBlank( version ) ) - { - addActionError( "You must specify a version to browse" ); - } - } - - public ProjectVersionMetadata getModel() - { - return model; - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - - public List<MailingList> getMailingLists() - { - return mailingLists; - } - - public List<Dependency> getDependencies() - { - return dependencies; - } - - public List<ProjectVersionReference> getDependees() - { - return dependees; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public Map<String, List<Artifact>> getArtifacts() - { - return artifacts; - } - - public Collection<String> getSnapshotVersions() - { - return artifacts.keySet(); - } - - public boolean isDependencyTree() - { - return dependencyTree; - } - - public void setDeleteItem( String deleteItem ) - { - this.deleteItem = deleteItem; - } - - public Map<String, String> getGenericMetadata() - { - return genericMetadata; - } - - public void setGenericMetadata( Map<String, String> genericMetadata ) - { - this.genericMetadata = genericMetadata; - } - - public String getPropertyName() - { - return propertyName; - } - - public void setPropertyName( String propertyName ) - { - this.propertyName = propertyName; - } - - public String getPropertyValue() - { - return propertyValue; - } - - public void setPropertyValue( String propertyValue ) - { - this.propertyValue = propertyValue; - } - - public void setRepositoryFactory( RepositoryContentFactory repositoryFactory ) - { - this.repositoryFactory = repositoryFactory; - } - - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/UploadAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/UploadAction.java deleted file mode 100644 index 421f8ba1a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/UploadAction.java +++ /dev/null @@ -1,722 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.checksum.ChecksummedFile; -import org.apache.archiva.common.utils.VersionComparator; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.maven2.metadata.MavenMetadataReader; -import org.apache.archiva.model.ArchivaRepositoryMetadata; -import org.apache.archiva.model.ArtifactReference; -import org.apache.archiva.model.SnapshotVersion; -import org.apache.archiva.redback.components.taskqueue.TaskQueueException; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.repository.RepositoryContentFactory; -import org.apache.archiva.repository.RepositoryException; -import org.apache.archiva.repository.RepositoryNotFoundException; -import org.apache.archiva.repository.metadata.MetadataTools; -import org.apache.archiva.repository.metadata.RepositoryMetadataException; -import org.apache.archiva.repository.metadata.RepositoryMetadataWriter; -import org.apache.archiva.scheduler.ArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; -import org.apache.archiva.xml.XMLException; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Writer; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.TimeZone; - -/** - * Upload an artifact using Jakarta file upload in webwork. If set by the user a pom will also be generated. Metadata - * will also be updated if one exists, otherwise it would be created. - */ -@SuppressWarnings( "serial" ) -@Controller( "uploadAction" ) -@Scope( "prototype" ) -public class UploadAction - extends AbstractActionSupport - implements Validateable, Preparable, Auditable -{ - /** - * The groupId of the artifact to be deployed. - */ - private String groupId; - - /** - * The artifactId of the artifact to be deployed. - */ - private String artifactId; - - /** - * The version of the artifact to be deployed. - */ - private String version; - - /** - * The packaging of the artifact to be deployed. - */ - private String packaging; - - /** - * The classifier of the artifact to be deployed. - */ - private String classifier; - - /** - * The temporary file representing the artifact to be deployed. - */ - private File artifactFile; - - /** - * The temporary file representing the pom to be deployed alongside the artifact. - */ - private File pomFile; - - /** - * The repository where the artifact is to be deployed. - */ - private String repositoryId; - - /** - * Flag whether to generate a pom for the artifact or not. - */ - private boolean generatePom; - - /** - * List of managed repositories to deploy to. - */ - private List<String> managedRepoIdList; - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private UserRepositories userRepositories; - - @Inject - private ArchivaAdministration archivaAdministration; - - @Inject - private RepositoryContentFactory repositoryFactory; - - @Inject - @Named( value = "archivaTaskScheduler#repository" ) - private ArchivaTaskScheduler scheduler; - - private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[]{ ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 }; - - public void setArtifact( File file ) - { - this.artifactFile = file; - } - - public void setArtifactContentType( String contentType ) - { - StringUtils.trim( contentType ); - } - - public void setArtifactFileName( String filename ) - { - StringUtils.trim( filename ); - } - - public void setPom( File file ) - { - this.pomFile = file; - } - - public void setPomContentType( String contentType ) - { - StringUtils.trim( contentType ); - } - - public void setPomFileName( String filename ) - { - StringUtils.trim( filename ); - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = StringUtils.trim( groupId ); - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = StringUtils.trim( artifactId ); - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = StringUtils.trim( version ); - } - - public String getPackaging() - { - return packaging; - } - - public void setPackaging( String packaging ) - { - this.packaging = StringUtils.trim( packaging ); - } - - public String getClassifier() - { - return classifier; - } - - public void setClassifier( String classifier ) - { - this.classifier = StringUtils.trim( classifier ); - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public boolean isGeneratePom() - { - return generatePom; - } - - public void setGeneratePom( boolean generatePom ) - { - this.generatePom = generatePom; - } - - public List<String> getManagedRepoIdList() - { - return managedRepoIdList; - } - - public void setManagedRepoIdList( List<String> managedRepoIdList ) - { - this.managedRepoIdList = managedRepoIdList; - } - - public void prepare() - { - managedRepoIdList = getManagableRepos(); - } - - public String input() - { - return INPUT; - } - - private void reset() - { - // reset the fields so the form is clear when - // the action returns to the jsp page - groupId = ""; - artifactId = ""; - version = ""; - packaging = ""; - classifier = ""; - artifactFile = null; - pomFile = null; - repositoryId = ""; - generatePom = false; - } - - public String doUpload() - { - try - { - ManagedRepository repoConfig = managedRepositoryAdmin.getManagedRepository( repositoryId ); - - ArtifactReference artifactReference = new ArtifactReference(); - artifactReference.setArtifactId( artifactId ); - artifactReference.setGroupId( groupId ); - artifactReference.setVersion( version ); - artifactReference.setClassifier( classifier ); - artifactReference.setType( packaging ); - - ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId ); - - String artifactPath = repository.toPath( artifactReference ); - - int lastIndex = artifactPath.lastIndexOf( '/' ); - - String path = artifactPath.substring( 0, lastIndex ); - File targetPath = new File( repoConfig.getLocation(), path ); - - log.debug( "artifactPath: {} found targetPath: {}", artifactPath, targetPath ); - - Date lastUpdatedTimestamp = Calendar.getInstance().getTime(); - int newBuildNumber = -1; - String timestamp = null; - - File versionMetadataFile = new File( targetPath, MetadataTools.MAVEN_METADATA ); - ArchivaRepositoryMetadata versionMetadata = getMetadata( versionMetadataFile ); - - if ( VersionUtil.isSnapshot( version ) ) - { - TimeZone timezone = TimeZone.getTimeZone( "UTC" ); - DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); - fmt.setTimeZone( timezone ); - timestamp = fmt.format( lastUpdatedTimestamp ); - if ( versionMetadata.getSnapshotVersion() != null ) - { - newBuildNumber = versionMetadata.getSnapshotVersion().getBuildNumber() + 1; - } - else - { - newBuildNumber = 1; - } - } - - if ( !targetPath.exists() ) - { - targetPath.mkdirs(); - } - - String filename = artifactPath.substring( lastIndex + 1 ); - if ( VersionUtil.isSnapshot( version ) ) - { - filename = filename.replaceAll( VersionUtil.SNAPSHOT, timestamp + "-" + newBuildNumber ); - } - - boolean fixChecksums = - !( archivaAdministration.getKnownContentConsumers().contains( "create-missing-checksums" ) ); - - try - { - File targetFile = new File( targetPath, filename ); - if ( targetFile.exists() && !VersionUtil.isSnapshot( version ) && repoConfig.isBlockRedeployments() ) - { - addActionError( - "Overwriting released artifacts in repository '" + repoConfig.getId() + "' is not allowed." ); - return ERROR; - } - else - { - copyFile( artifactFile, targetPath, filename, fixChecksums ); - triggerAuditEvent( repository.getId(), path + "/" + filename, AuditEvent.UPLOAD_FILE ); - queueRepositoryTask( repository.getId(), targetFile ); - } - } - catch ( IOException ie ) - { - addActionError( "Error encountered while uploading file: " + ie.getMessage() ); - return ERROR; - } - - String pomFilename = filename; - if ( classifier != null && !"".equals( classifier ) ) - { - pomFilename = StringUtils.remove( pomFilename, "-" + classifier ); - } - pomFilename = FilenameUtils.removeExtension( pomFilename ) + ".pom"; - - if ( generatePom ) - { - try - { - File generatedPomFile = createPom( targetPath, pomFilename ); - triggerAuditEvent( repoConfig.getId(), path + "/" + pomFilename, AuditEvent.UPLOAD_FILE ); - if ( fixChecksums ) - { - fixChecksums( generatedPomFile ); - } - queueRepositoryTask( repoConfig.getId(), generatedPomFile ); - } - catch ( IOException ie ) - { - addActionError( "Error encountered while writing pom file: " + ie.getMessage() ); - return ERROR; - } - } - - if ( pomFile != null && pomFile.length() > 0 ) - { - try - { - copyFile( pomFile, targetPath, pomFilename, fixChecksums ); - triggerAuditEvent( repoConfig.getId(), path + "/" + pomFilename, AuditEvent.UPLOAD_FILE ); - queueRepositoryTask( repoConfig.getId(), new File( targetPath, pomFilename ) ); - } - catch ( IOException ie ) - { - addActionError( "Error encountered while uploading pom file: " + ie.getMessage() ); - return ERROR; - } - - } - - // explicitly update only if metadata-updater consumer is not enabled! - if ( !archivaAdministration.getKnownContentConsumers().contains( "metadata-updater" ) ) - { - updateProjectMetadata( targetPath.getAbsolutePath(), lastUpdatedTimestamp, timestamp, newBuildNumber, - fixChecksums ); - - if ( VersionUtil.isSnapshot( version ) ) - { - updateVersionMetadata( versionMetadata, versionMetadataFile, lastUpdatedTimestamp, timestamp, - newBuildNumber, fixChecksums ); - } - } - - String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version - + "\' was successfully deployed to repository \'" + repositoryId + "\'"; - - addActionMessage( msg ); - - reset(); - return SUCCESS; - } - catch ( RepositoryNotFoundException re ) - { - addActionError( "Target repository cannot be found: " + re.getMessage() ); - return ERROR; - } - catch ( RepositoryException rep ) - { - addActionError( "Repository exception: " + rep.getMessage() ); - return ERROR; - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdmin exception: " + e.getMessage() ); - return ERROR; - } - } - - private void fixChecksums( File file ) - { - ChecksummedFile checksum = new ChecksummedFile( file ); - checksum.fixChecksums( algorithms ); - } - - private void copyFile( File sourceFile, File targetPath, String targetFilename, boolean fixChecksums ) - throws IOException - { - FileOutputStream out = new FileOutputStream( new File( targetPath, targetFilename ) ); - FileInputStream input = new FileInputStream( sourceFile ); - - try - { - IOUtils.copy( input, out ); - } - finally - { - IOUtils.closeQuietly( out ); - IOUtils.closeQuietly( input ); - } - - if ( fixChecksums ) - { - fixChecksums( new File( targetPath, targetFilename ) ); - } - } - - private File createPom( File targetPath, String filename ) - throws IOException - { - Model projectModel = new Model(); - projectModel.setModelVersion( "4.0.0" ); - projectModel.setGroupId( groupId ); - projectModel.setArtifactId( artifactId ); - projectModel.setVersion( version ); - projectModel.setPackaging( packaging ); - - File pomFile = new File( targetPath, filename ); - MavenXpp3Writer writer = new MavenXpp3Writer(); - FileWriter w = new FileWriter( pomFile ); - try - { - writer.write( w, projectModel ); - } - finally - { - IOUtils.closeQuietly( w ); - } - - return pomFile; - } - - private ArchivaRepositoryMetadata getMetadata( File metadataFile ) - throws RepositoryMetadataException - { - ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); - if ( metadataFile.exists() ) - { - try - { - metadata = MavenMetadataReader.read( metadataFile ); - } - catch ( XMLException e ) - { - throw new RepositoryMetadataException( e.getMessage(), e ); - } - } - return metadata; - } - - - /** - * Update version level metadata for snapshot artifacts. If it does not exist, create the metadata and fix checksums - * if necessary. - */ - private void updateVersionMetadata( ArchivaRepositoryMetadata metadata, File metadataFile, - Date lastUpdatedTimestamp, String timestamp, int buildNumber, - boolean fixChecksums ) - throws RepositoryMetadataException - { - if ( !metadataFile.exists() ) - { - metadata.setGroupId( groupId ); - metadata.setArtifactId( artifactId ); - metadata.setVersion( version ); - } - - if ( metadata.getSnapshotVersion() == null ) - { - metadata.setSnapshotVersion( new SnapshotVersion() ); - } - - metadata.getSnapshotVersion().setBuildNumber( buildNumber ); - metadata.getSnapshotVersion().setTimestamp( timestamp ); - metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); - - RepositoryMetadataWriter.write( metadata, metadataFile ); - - if ( fixChecksums ) - { - fixChecksums( metadataFile ); - } - } - - /** - * Update artifact level metadata. If it does not exist, create the metadata and fix checksums if necessary. - */ - private void updateProjectMetadata( String targetPath, Date lastUpdatedTimestamp, String timestamp, int buildNumber, - boolean fixChecksums ) - throws RepositoryMetadataException - { - List<String> availableVersions = new ArrayList<String>(); - String latestVersion = version; - - File projectDir = new File( targetPath ).getParentFile(); - File projectMetadataFile = new File( projectDir, MetadataTools.MAVEN_METADATA ); - - ArchivaRepositoryMetadata projectMetadata = getMetadata( projectMetadataFile ); - - if ( projectMetadataFile.exists() ) - { - availableVersions = projectMetadata.getAvailableVersions(); - - Collections.sort( availableVersions, VersionComparator.getInstance() ); - - if ( !availableVersions.contains( version ) ) - { - availableVersions.add( version ); - } - - latestVersion = availableVersions.get( availableVersions.size() - 1 ); - } - else - { - availableVersions.add( version ); - - projectMetadata.setGroupId( groupId ); - projectMetadata.setArtifactId( artifactId ); - } - - if ( projectMetadata.getGroupId() == null ) - { - projectMetadata.setGroupId( groupId ); - } - - if ( projectMetadata.getArtifactId() == null ) - { - projectMetadata.setArtifactId( artifactId ); - } - - projectMetadata.setLatestVersion( latestVersion ); - projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); - projectMetadata.setAvailableVersions( availableVersions ); - - if ( !VersionUtil.isSnapshot( version ) ) - { - projectMetadata.setReleasedVersion( latestVersion ); - } - - RepositoryMetadataWriter.write( projectMetadata, projectMetadataFile ); - - if ( fixChecksums ) - { - fixChecksums( projectMetadataFile ); - } - } - - public void validate() - { - try - { - // is this enough check for the repository permission? - if ( !userRepositories.isAuthorizedToUploadArtifacts( getPrincipal(), repositoryId ) ) - { - addActionError( "User is not authorized to upload in repository " + repositoryId ); - } - - if ( artifactFile == null || artifactFile.length() == 0 ) - { - addActionError( "Please add a file to upload." ); - } - - if ( version == null || !VersionUtil.isVersion( version ) ) - { - addActionError( "Invalid version." ); - } - } - catch ( PrincipalNotFoundException pe ) - { - addActionError( pe.getMessage() ); - } - catch ( ArchivaSecurityException ae ) - { - addActionError( ae.getMessage() ); - } - } - - private List<String> getManagableRepos() - { - try - { - return userRepositories.getManagableRepositoryIds( getPrincipal() ); - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - // TODO: pass this onto the screen. - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - private void queueRepositoryTask( String repositoryId, File localFile ) - { - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( repositoryId ); - task.setResourceFile( localFile ); - task.setUpdateRelatedArtifacts( true ); - task.setScanAll( false ); - - try - { - scheduler.queueTask( task ); - } - catch ( TaskQueueException e ) - { - log.error( "Unable to queue repository task to execute consumers on resource file ['" + localFile.getName() - + "']." ); - } - } - - public void setScheduler( ArchivaTaskScheduler scheduler ) - { - this.scheduler = scheduler; - } - - public void setRepositoryFactory( RepositoryContentFactory repositoryFactory ) - { - this.repositoryFactory = repositoryFactory; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SchedulerAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SchedulerAction.java deleted file mode 100644 index a4639995d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SchedulerAction.java +++ /dev/null @@ -1,134 +0,0 @@ -package org.apache.archiva.web.action.admin; - -/* - * 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.archiva.redback.rbac.Resource; -import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.components.taskqueue.TaskQueueException; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; - -/** - * Configures the application. - */ -@Controller( "schedulerAction" ) -@Scope( "prototype" ) -public class SchedulerAction - extends AbstractActionSupport - implements SecureAction -{ - - @Inject - @Named( value = "archivaTaskScheduler#repository" ) - private RepositoryArchivaTaskScheduler repositoryTaskScheduler; - - private String repoid; - - private boolean scanAll; - - public String scanRepository() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Cannot run indexer on blank repository id." ); - return SUCCESS; - } - - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( repoid ); - task.setScanAll( scanAll ); - - if ( repositoryTaskScheduler.isProcessingRepositoryTask( repoid ) ) - { - addActionError( "Repository [" + repoid + "] task was already queued." ); - } - else - { - try - { - addActionMessage( "Your request to have repository [" + repoid + "] be indexed has been queued." ); - repositoryTaskScheduler.queueTask( task ); - } - catch ( TaskQueueException e ) - { - addActionError( - "Unable to queue your request to have repository [" + repoid + "] be indexed: " + e.getMessage() ); - } - } - - // Return to the repositories screen. - return SUCCESS; - } - - @Override - public void addActionMessage( String aMessage ) - { - super.addActionMessage( aMessage ); - log.info( "[ActionMessage] " + aMessage ); - } - - @Override - public void addActionError( String anErrorMessage ) - { - super.addActionError( anErrorMessage ); - log.warn( "[ActionError] " + anErrorMessage ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_RUN_INDEXER, Resource.GLOBAL ); - - return bundle; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - public boolean getScanAll() - { - return scanAll; - } - - public void setScanAll( boolean scanAll ) - { - this.scanAll = scanAll; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SystemStatusAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SystemStatusAction.java deleted file mode 100644 index bbe5b5fe8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SystemStatusAction.java +++ /dev/null @@ -1,138 +0,0 @@ -package org.apache.archiva.web.action.admin; - -/* - * 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.archiva.redback.rbac.Resource; -import org.apache.archiva.repository.scanner.RepositoryScanner; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.components.cache.Cache; -import org.apache.archiva.redback.components.taskqueue.TaskQueue; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.Map; - -/** - * Shows system status information for the administrator. - * - * - */ -@Controller( "systemStatus" ) -@Scope( "prototype" ) -public class SystemStatusAction - extends AbstractActionSupport - implements SecureAction -{ - - private Map<String, TaskQueue> queues; - - private Map<String, Cache> caches; - - @Inject - private RepositoryScanner scanner; - - private String memoryStatus; - - private String cacheKey; - - @PostConstruct - public void initialize() - { - super.initialize(); - queues = getBeansOfType( TaskQueue.class ); - caches = getBeansOfType( Cache.class ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public String execute() - { - Runtime runtime = Runtime.getRuntime(); - runtime.gc(); - long total = runtime.totalMemory(); - long used = total - runtime.freeMemory(); - long max = runtime.maxMemory(); - memoryStatus = formatMemory( used ) + "/" + formatMemory( total ) + " (Max: " + formatMemory( max ) + ")"; - - return SUCCESS; - } - - public String flush() - { - if( !StringUtils.isEmpty( cacheKey ) ) - { - Cache cache = caches.get( cacheKey ); - cache.clear(); - } - - return SUCCESS; - } - - private static String formatMemory( long l ) - { - return l / ( 1024 * 1024 ) + "M"; - } - - public String getMemoryStatus() - { - return memoryStatus; - } - - public RepositoryScanner getScanner() - { - return scanner; - } - - public Map<String, Cache> getCaches() - { - return caches; - } - - public Map<String, TaskQueue> getQueues() - { - return queues; - } - - public String getCacheKey() - { - return cacheKey; - } - - public void setCacheKey( String cacheKey ) - { - this.cacheKey = cacheKey; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/AbstractAppearanceAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/AbstractAppearanceAction.java deleted file mode 100644 index 3fab37576..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/AbstractAppearanceAction.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.apache.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.xwork2.Preparable; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.OrganisationInformation; -import org.apache.archiva.web.action.AbstractActionSupport; - -import javax.inject.Inject; - -/** - * AbstractAppearanceAction - * - * - */ -public abstract class AbstractAppearanceAction - extends AbstractActionSupport - implements Preparable -{ - - @Inject - protected ArchivaAdministration archivaAdministration; - - private String organisationLogo; - - private String organisationUrl; - - private String organisationName; - - public String getOrganisationLogo() - { - return organisationLogo; - } - - public String getOrganisationName() - { - return organisationName; - } - - 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 - { - - OrganisationInformation orgInfo = archivaAdministration.getOrganisationInformation(); - if ( orgInfo != null ) - { - setOrganisationLogo( orgInfo.getLogoLocation() ); - setOrganisationName( orgInfo.getName() ); - setOrganisationUrl( orgInfo.getUrl() ); - } - - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction.java deleted file mode 100644 index df514acd4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.apache.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.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.OrganisationInformation; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * - */ -@Controller( "editOrganisationInfo" ) -@Scope( "prototype" ) -public class EditOrganisationInfoAction - extends AbstractAppearanceAction - implements SecureAction, Validateable -{ - @Override - public String execute() - throws RepositoryAdminException - { - - OrganisationInformation orgInfo = archivaAdministration.getOrganisationInformation(); - - orgInfo.setLogoLocation( getOrganisationLogo() ); - orgInfo.setName( getOrganisationName() ); - orgInfo.setUrl( getOrganisationUrl() ); - - archivaAdministration.setOrganisationInformation( orgInfo ); - return SUCCESS; - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - return bundle; - } - - public void validate() - { - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( super.getOrganisationName() ) ) - { - super.setOrganisationName( super.getOrganisationName().trim() ); - } - - if ( StringUtils.isNotEmpty( super.getOrganisationUrl() ) ) - { - super.setOrganisationUrl( super.getOrganisationUrl().trim() ); - } - - if ( StringUtils.isNotEmpty( super.getOrganisationLogo() ) ) - { - super.setOrganisationLogo( super.getOrganisationLogo().trim() ); - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/OrganisationInfoAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/OrganisationInfoAction.java deleted file mode 100644 index b8ed832e6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/OrganisationInfoAction.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.apache.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.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * Stores the organisation information for displaying on the page. - */ -@Controller( "organisationInfo" ) -@Scope( "prototype" ) -public class OrganisationInfoAction - extends AbstractAppearanceAction -{ - // no op -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorAction.java deleted file mode 100644 index 4754fd9ce..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorAction.java +++ /dev/null @@ -1,145 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin; -import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; - -import javax.inject.Inject; -import java.util.List; -import java.util.Map; - -/** - * AbstractProxyConnectorAction - * - * - */ -public abstract class AbstractProxyConnectorAction - extends AbstractActionSupport - implements SecureAction -{ - public static final String DIRECT_CONNECTION = "(direct connection)"; - - @Inject - private ProxyConnectorAdmin proxyConnectorAdmin; - - @Inject - private RemoteRepositoryAdmin remoteRepositoryAdmin; - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - - protected void addProxyConnector( ProxyConnector proxyConnector ) - throws RepositoryAdminException - { - getProxyConnectorAdmin().addProxyConnector( proxyConnector, getAuditInformation() ); - } - - protected ProxyConnector findProxyConnector( String sourceId, String targetId ) - throws RepositoryAdminException - { - if ( StringUtils.isBlank( sourceId ) ) - { - return null; - } - - if ( StringUtils.isBlank( targetId ) ) - { - return null; - } - - return getProxyConnectorAdmin().getProxyConnector( sourceId, targetId ); - } - - protected Map<String, List<ProxyConnector>> createProxyConnectorMap() - throws RepositoryAdminException - { - return getProxyConnectorAdmin().getProxyConnectorAsMap(); - } - - protected void removeConnector( String sourceId, String targetId ) - throws RepositoryAdminException - { - ProxyConnector proxyConnector = findProxyConnector( sourceId, targetId ); - if ( proxyConnector != null ) - { - getProxyConnectorAdmin().deleteProxyConnector( proxyConnector, getAuditInformation() ); - } - } - - protected void removeProxyConnector( ProxyConnector connector ) - throws RepositoryAdminException - { - getProxyConnectorAdmin().deleteProxyConnector( connector, getAuditInformation() ); - } - - - public ProxyConnectorAdmin getProxyConnectorAdmin() - { - return proxyConnectorAdmin; - } - - public void setProxyConnectorAdmin( ProxyConnectorAdmin proxyConnectorAdmin ) - { - this.proxyConnectorAdmin = proxyConnectorAdmin; - } - - public RemoteRepositoryAdmin getRemoteRepositoryAdmin() - { - return remoteRepositoryAdmin; - } - - public void setRemoteRepositoryAdmin( RemoteRepositoryAdmin remoteRepositoryAdmin ) - { - this.remoteRepositoryAdmin = remoteRepositoryAdmin; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java deleted file mode 100644 index 34abe41d3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java +++ /dev/null @@ -1,488 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.policies.DownloadErrorPolicy; -import org.apache.archiva.policies.Policy; -import org.apache.archiva.policies.PostDownloadPolicy; -import org.apache.archiva.policies.PreDownloadPolicy; -import org.apache.commons.lang.StringEscapeUtils; -import org.apache.commons.lang.StringUtils; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * AbstractProxyConnectorFormAction - generic fields and methods for either add or edit actions related with the - * Proxy Connector. - * - * - */ -public abstract class AbstractProxyConnectorFormAction - extends AbstractProxyConnectorAction - implements Preparable -{ - - - private Map<String, PreDownloadPolicy> preDownloadPolicyMap; - - private Map<String, PostDownloadPolicy> postDownloadPolicyMap; - - private Map<String, DownloadErrorPolicy> downloadErrorPolicyMap; - - private List<String> proxyIdOptions; - - private List<String> managedRepoIdList; - - private List<String> remoteRepoIdList; - - /** - * The map of policies that are available to be set. - */ - private Map<String, Policy> policyMap; - - /** - * The property key to add or remove. - */ - private String propertyKey; - - /** - * The property value to add. - */ - private String propertyValue; - - /** - * The blacklist pattern to add. - */ - private String blackListPattern; - - /** - * The whitelist pattern to add. - */ - private String whiteListPattern; - - /** - * The pattern to add or remove (black or white). - */ - private String pattern; - - /** - * The model for this action. - */ - protected ProxyConnector connector; - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - @PostConstruct - public void initialize( ) - { - super.initialize( ); - this.preDownloadPolicyMap = getBeansOfType( PreDownloadPolicy.class ); - this.postDownloadPolicyMap = getBeansOfType( PostDownloadPolicy.class ); - this.downloadErrorPolicyMap = getBeansOfType( DownloadErrorPolicy.class ); - } - - public String addBlackListPattern( ) - { - String pattern = getBlackListPattern( ); - - //pattern = StringEscapeUtils.unescapeJavaScript( pattern ); - - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot add a blank black list pattern." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getBlackListPatterns( ).add( pattern ); - setBlackListPattern( null ); - } - - return INPUT; - } - - @SuppressWarnings( "unchecked" ) - public String addProperty( ) - { - String key = getPropertyKey( ); - String value = getPropertyValue( ); - - if ( StringUtils.isBlank( key ) ) - { - addActionError( "Unable to add property with blank key." ); - } - - if ( StringUtils.isBlank( value ) ) - { - addActionError( "Unable to add property with blank value." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getProperties( ).put( key, value ); - setPropertyKey( null ); - setPropertyValue( null ); - } - - return INPUT; - } - - public String addWhiteListPattern( ) - { - String pattern = getWhiteListPattern( ); - //pattern = StringEscapeUtils.unescapeJavaScript( pattern ); - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot add a blank white list pattern." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getWhiteListPatterns( ).add( pattern ); - setWhiteListPattern( null ); - } - - return INPUT; - } - - public String getBlackListPattern( ) - { - return blackListPattern; - } - - public ProxyConnector getConnector( ) - { - return connector; - } - - public List<String> getManagedRepoIdList( ) - { - return managedRepoIdList; - } - - public String getPattern( ) - { - return pattern; - } - - public Map<String, Policy> getPolicyMap( ) - { - return policyMap; - } - - public String getPropertyKey( ) - { - return propertyKey; - } - - public String getPropertyValue( ) - { - return propertyValue; - } - - public List<String> getProxyIdOptions( ) - { - return proxyIdOptions; - } - - public List<String> getRemoteRepoIdList( ) - { - return remoteRepoIdList; - } - - public String getWhiteListPattern( ) - { - return whiteListPattern; - } - - public void prepare( ) - throws RepositoryAdminException - { - proxyIdOptions = createNetworkProxyOptions( ); - managedRepoIdList = createManagedRepoOptions( ); - remoteRepoIdList = createRemoteRepoOptions( ); - policyMap = createPolicyMap( ); - } - - public String removeBlackListPattern( ) - { - String pattern = getPattern( ); - - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot remove a blank black list pattern." ); - } - - if ( !getConnector( ).getBlackListPatterns( ).contains( pattern ) - && !getConnector( ).getBlackListPatterns( ).contains( pattern )) - { - addActionError( "Non-existant black list pattern [" + pattern + "], no black list pattern removed." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getBlackListPatterns( ).remove( pattern ); - } - - setBlackListPattern( null ); - setPattern( null ); - - return INPUT; - } - - public String removeProperty( ) - { - String key = getPropertyKey( ); - - if ( StringUtils.isBlank( key ) ) - { - addActionError( "Unable to remove property with blank key." ); - } - - if ( !getConnector( ).getProperties( ).containsKey( key ) ) - { - addActionError( "Non-existant property key [" + pattern + "], no property was removed." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getProperties( ).remove( key ); - } - - setPropertyKey( null ); - setPropertyValue( null ); - - return INPUT; - } - - public String removeWhiteListPattern( ) - { - String pattern = getPattern( ); - - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot remove a blank white list pattern." ); - } - - if ( !getConnector( ).getWhiteListPatterns( ).contains( pattern ) - && !getConnector( ).getWhiteListPatterns( ).contains( pattern )) - { - addActionError( "Non-existant white list pattern [" + pattern + "], no white list pattern removed." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getWhiteListPatterns( ).remove( pattern ); - } - - setWhiteListPattern( null ); - setPattern( null ); - - return INPUT; - } - - public void setBlackListPattern( String blackListPattern ) - { - this.blackListPattern = blackListPattern; - } - - public void setConnector( ProxyConnector connector ) - { - this.connector = connector; - } - - public void setManagedRepoIdList( List<String> managedRepoIdList ) - { - this.managedRepoIdList = managedRepoIdList; - } - - public void setPattern( String pattern ) - { - this.pattern = pattern; - } - - public void setPolicyMap( Map<String, Policy> policyMap ) - { - this.policyMap = policyMap; - } - - public void setPropertyKey( String propertyKey ) - { - this.propertyKey = propertyKey; - } - - public void setPropertyValue( String propertyValue ) - { - this.propertyValue = propertyValue; - } - - public void setProxyIdOptions( List<String> proxyIdOptions ) - { - this.proxyIdOptions = proxyIdOptions; - } - - public void setRemoteRepoIdList( List<String> remoteRepoIdList ) - { - this.remoteRepoIdList = remoteRepoIdList; - } - - public void setWhiteListPattern( String whiteListPattern ) - { - this.whiteListPattern = whiteListPattern; - } - - protected List<String> createManagedRepoOptions( ) - throws RepositoryAdminException - { - return new ArrayList<String>( getManagedRepositoryAdmin( ).getManagedRepositoriesAsMap( ).keySet( ) ); - } - - protected List<String> createNetworkProxyOptions( ) - throws RepositoryAdminException - { - List<String> options = new ArrayList<String>( ); - - options.add( DIRECT_CONNECTION ); - options.addAll( getNetworkProxiesKeys( ) ); - - return options; - } - - private Collection<String> getNetworkProxiesKeys( ) - throws RepositoryAdminException - { - List<NetworkProxy> networkProxies = networkProxyAdmin.getNetworkProxies( ); - if ( networkProxies == null || networkProxies.isEmpty( ) ) - { - return Collections.emptyList( ); - } - List<String> keys = new ArrayList<String>( networkProxies.size( ) ); - for ( NetworkProxy networkProxy : networkProxies ) - { - keys.add( networkProxy.getId( ) ); - } - return keys; - - } - - protected Map<String, Policy> createPolicyMap( ) - { - Map<String, Policy> policyMap = new HashMap<String, Policy>( ); - - policyMap.putAll( preDownloadPolicyMap ); - policyMap.putAll( postDownloadPolicyMap ); - policyMap.putAll( downloadErrorPolicyMap ); - - return policyMap; - } - - protected List<String> createRemoteRepoOptions( ) - throws RepositoryAdminException - { - return new ArrayList<String>( getRemoteRepositoryAdmin( ).getRemoteRepositoriesAsMap( ).keySet( ) ); - } - - @SuppressWarnings( "unchecked" ) - protected void validateConnector( ) - { - if ( connector.getPolicies( ) == null ) - { - addActionError( "Policies must be set." ); - } - else - { - // Validate / Fix policy settings arriving from browser. - for ( Map.Entry<String, Policy> entry : getPolicyMap( ).entrySet( ) ) - { - String policyId = entry.getKey( ); - Policy policy = entry.getValue( ); - List<String> options = policy.getOptions( ); - - if ( !connector.getPolicies( ).containsKey( policyId ) ) - { - addActionError( "Policy [" + policyId + "] must be set (missing id)." ); - continue; - } - - Map<String, String> properties = connector.getProperties( ); - for ( Map.Entry<String, String> entry2 : properties.entrySet( ) ) - { - Object value = entry2.getValue( ); - if ( value.getClass( ).isArray( ) ) - { - String[] arr = (String[]) value; - properties.put( entry2.getKey( ), arr[0] ); - } - } - - // Ugly hack to compensate for ugly browsers. - Object o = connector.getPolicies( ).get( policyId ); - String value; - if ( o.getClass( ).isArray( ) ) - { - String arr[] = (String[]) o; - value = arr[0]; - } - else - { - value = (String) o; - } - - connector.getPolicies( ).put( policyId, value ); - - if ( StringUtils.isBlank( value ) ) - { - addActionError( "Policy [" + policyId + "] must be set (missing value)." ); - continue; - } - - if ( !options.contains( value ) ) - { - addActionError( - "Value of [" + value + "] is invalid for policy [" + policyId + "], valid values: " + options ); - continue; - } - } - } - } - - public NetworkProxyAdmin getNetworkProxyAdmin( ) - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorAction.java deleted file mode 100644 index da877988c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorAction.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * AddProxyConnectorAction - * - * - */ -@Controller( "addProxyConnectorAction" ) -@Scope( "prototype" ) -public class AddProxyConnectorAction - extends AbstractProxyConnectorFormAction -{ - @Override - public void prepare() - throws RepositoryAdminException - { - super.prepare(); - connector = new ProxyConnector(); - } - - @Override - public String input() - { - return INPUT; - } - - public String commit() - throws RepositoryAdminException - { - /* Too complex for webwork's ${Action}-validation.xml techniques. - * Not appropriate for use with webwork's implements Validatable, as that validates regardless of - * the request method, such as .addProperty() or .addWhiteList(). - * - * This validation is ultimately only useful on this one request method. - */ - String sourceId = connector.getSourceRepoId(); - String targetId = connector.getTargetRepoId(); - - ProxyConnector otherConnector = findProxyConnector( sourceId, targetId ); - if ( otherConnector != null ) - { - addActionError( - "Unable to add proxy connector, as one already exists with source repository id [" + sourceId - + "] and target repository id [" + targetId + "]." ); - } - - validateConnector(); - - if ( hasActionErrors() ) - { - return INPUT; - } - - if ( StringUtils.equals( DIRECT_CONNECTION, connector.getProxyId() ) ) - { - connector.setProxyId( null ); - } - - addProxyConnector( connector ); - return SUCCESS; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorAction.java deleted file mode 100644 index 7e2e1ceb0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorAction.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * DeleteProxyConnectorAction - * - * - */ -@Controller( "deleteProxyConnectorAction" ) -@Scope( "prototype" ) -public class DeleteProxyConnectorAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - private ProxyConnector proxyConfig; - - public String confirmDelete() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to delete proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - return INPUT; - } - - public String delete() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to delete proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - if ( hasActionErrors() ) - { - return ERROR; - } - - getProxyConnectorAdmin().deleteProxyConnector( proxyConfig, getAuditInformation() ); - addActionMessage( "Successfully removed proxy connector [" + source + " , " + target + " ]" ); - - setSource( null ); - setTarget( null ); - - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String id ) - { - this.source = id; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String id ) - { - this.target = id; - } - - public ProxyConnector getProxyConfig() - { - return proxyConfig; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java deleted file mode 100644 index 8ef74b173..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/* - * 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. - */ - -/** - * DisableProxyConnectorAction - */ -@Controller( "disableProxyConnectorAction" ) -@Scope( "prototype" ) -public class DisableProxyConnectorAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - private ProxyConnector proxyConfig; - - public String confirmDisable() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to disable proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - return INPUT; - } - - public String disable() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to disable proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - if ( hasActionErrors() ) - { - return ERROR; - } - - proxyConfig.setDisabled( true ); - - addActionMessage( "Successfully disabled proxy connector [" + source + " , " + target + " ]" ); - - setSource( null ); - setTarget( null ); - - getProxyConnectorAdmin().updateProxyConnector( proxyConfig, getAuditInformation() ); - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String source ) - { - this.source = source; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String target ) - { - this.target = target; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorAction.java deleted file mode 100644 index a6e5b3ded..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorAction.java +++ /dev/null @@ -1,117 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * EditProxyConnectorAction - * - * - */ -@Controller( "editProxyConnectorAction" ) -@Scope( "prototype" ) -public class EditProxyConnectorAction - extends AbstractProxyConnectorFormAction -{ - /** - * The proxy connector source id to edit. (used with {@link #target}) - */ - private String source; - - /** - * The proxy connector target id to edit. (used with {@link #source}) - */ - private String target; - - @Override - public void prepare() - throws RepositoryAdminException - { - super.prepare(); - - connector = findProxyConnector( source, target ); - } - - public String input() - { - if ( connector == null ) - { - addActionError( - "Unable to edit non existant proxy connector with source [" + source + "] and target [" + target - + "]" ); - return ERROR; - } - return INPUT; - } - - public String commit() - throws RepositoryAdminException - { - validateConnector(); - - if ( hasActionErrors() ) - { - return INPUT; - } - - String sourceId = connector.getSourceRepoId(); - String targetId = connector.getTargetRepoId(); - - ProxyConnector otherConnector = findProxyConnector( sourceId, targetId ); - if ( otherConnector != null ) - { - // Remove the previous connector. - removeProxyConnector( otherConnector ); - } - - if ( hasActionErrors() ) - { - return INPUT; - } - - addProxyConnector( connector ); - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String source ) - { - this.source = source; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String target ) - { - this.target = target; - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java deleted file mode 100644 index 5a000a3a5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/* - * 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. - */ - -/** - * EnableProxyConnectorAction - */ -@Controller( "enableProxyConnectorAction" ) -@Scope( "prototype" ) -public class EnableProxyConnectorAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - private ProxyConnector proxyConfig; - - public String confirmEnable() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to enable proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - return INPUT; - } - - public String enable() throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to enabled proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - if ( hasActionErrors() ) - { - return ERROR; - } - - proxyConfig.setDisabled( false ); - - getProxyConnectorAdmin().updateProxyConnector( proxyConfig, getAuditInformation() ); - - addActionMessage( "Successfully enabled proxy connector [" + source + " , " + target + " ]" ); - - setSource( null ); - setTarget( null ); - - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String source ) - { - this.source = source; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String target ) - { - this.target = target; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java deleted file mode 100644 index 9f5461298..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.beans.AbstractRepository; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * ProxyConnectorsAction - * - * - */ -@Controller( "proxyConnectorsAction" ) -@Scope( "prototype" ) -public class ProxyConnectorsAction - extends AbstractProxyConnectorAction - implements Preparable -{ - private Map<String, AbstractRepository> repoMap; - - /** - * boolean to indicate that remote repo is present. Used for Add Link - */ - private boolean remoteRepoExists = false; - - /** - * Map of Proxy Connectors. - */ - private Map<String, List<ProxyConnector>> proxyConnectorMap; - - public void prepare() - throws RepositoryAdminException - { - repoMap = new HashMap<String, AbstractRepository>(); - repoMap.putAll( getRemoteRepositoryAdmin().getRemoteRepositoriesAsMap() ); - // FIXME olamy : are we sure we want Managed too ??? - repoMap.putAll( getManagedRepositoryAdmin().getManagedRepositoriesAsMap() ); - - proxyConnectorMap = createProxyConnectorMap(); - - remoteRepoExists = getRemoteRepositoryAdmin().getRemoteRepositories().size() > 0; - } - - public Map<String, AbstractRepository> getRepoMap() - { - return repoMap; - } - - public Map<String, List<ProxyConnector>> getProxyConnectorMap() - { - return proxyConnectorMap; - } - - // FIXME olamy should be is ! - public boolean getRemoteRepoExists() - { - return remoteRepoExists; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsAction.java deleted file mode 100644 index 80c17105d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsAction.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.util.List; - -/** - * SortProxyConnectorsAction - - * - * - */ -@Controller( "sortProxyConnectorsAction" ) -@Scope( "prototype" ) -public class SortProxyConnectorsAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - public String getSource() - { - return source; - } - - public String getTarget() - { - return target; - } - - public void setSource( String id ) - { - this.source = id; - } - - public void setTarget( String id ) - { - this.target = id; - } - - public String sortDown() - throws RepositoryAdminException - { - List<ProxyConnector> connectors = createProxyConnectorMap().get( source ); - - int idx = findTargetConnector( connectors, target ); - - if ( idx >= 0 ) - { - incrementConnectorOrder( connectors, idx ); - decrementConnectorOrder( connectors, idx + 1 ); - } - - for ( ProxyConnector proxyConnector : connectors ) - { - getProxyConnectorAdmin().updateProxyConnector( proxyConnector, getAuditInformation() ); - } - return SUCCESS; - } - - public String sortUp() - throws RepositoryAdminException - { - List<ProxyConnector> connectors = createProxyConnectorMap().get( source ); - - int idx = findTargetConnector( connectors, target ); - - if ( idx >= 0 ) - { - decrementConnectorOrder( connectors, idx ); - incrementConnectorOrder( connectors, idx - 1 ); - } - - for ( ProxyConnector proxyConnector : connectors ) - { - getProxyConnectorAdmin().updateProxyConnector( proxyConnector, getAuditInformation() ); - } - return SUCCESS; - } - - private void decrementConnectorOrder( List<ProxyConnector> connectors, int idx ) - { - if ( !validIndex( connectors, idx ) ) - { - // Do nothing. - return; - } - - int order = connectors.get( idx ).getOrder(); - connectors.get( idx ).setOrder( Math.max( 1, order - 1 ) ); - } - - private int findTargetConnector( List<ProxyConnector> connectors, String targetRepoId ) - { - int idx = ( -1 ); - - for ( int i = 0; i < connectors.size(); i++ ) - { - if ( StringUtils.equals( targetRepoId, connectors.get( i ).getTargetRepoId() ) ) - { - idx = i; - break; - } - } - - return idx; - } - - private void incrementConnectorOrder( List<ProxyConnector> connectors, int idx ) - { - if ( !validIndex( connectors, idx ) ) - { - // Do nothing. - return; - } - - int order = connectors.get( idx ).getOrder(); - connectors.get( idx ).setOrder( order + 1 ); - } - - private boolean validIndex( List<ProxyConnector> connectors, int idx ) - { - return ( idx >= 0 ) && ( idx < connectors.size() ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction.java deleted file mode 100644 index 073924ae7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction.java +++ /dev/null @@ -1,222 +0,0 @@ -package org.apache.archiva.web.action.admin.legacy; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.LegacyArtifactPath; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.model.ArtifactReference; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; - -/** - * Add a LegacyArtifactPath to archiva configuration - * - * @since 1.1 - */ -@Controller( "addLegacyArtifactPathAction" ) -@Scope( "prototype" ) -public class AddLegacyArtifactPathAction - extends AbstractActionSupport - implements Preparable, Validateable -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - @Inject - @Named( value = "managedRepositoryContent#legacy" ) - private ManagedRepositoryContent repositoryContent; - - - private LegacyArtifactPath legacyArtifactPath; - - private String groupId; - - private String artifactId; - - private String version; - - private String classifier; - - private String type; - - - public void prepare() - { - this.legacyArtifactPath = new LegacyArtifactPath(); - } - - public String input() - { - return INPUT; - } - - public String commit() - { - this.legacyArtifactPath.setArtifact( - this.groupId + ":" + this.artifactId + ":" + this.version + ":" + this.classifier + ":" + this.type ); - - // Check the proposed Artifact macthes the path - ArtifactReference artifact = new ArtifactReference(); - - artifact.setGroupId( this.groupId ); - artifact.setArtifactId( this.artifactId ); - artifact.setClassifier( this.classifier ); - artifact.setVersion( this.version ); - artifact.setType( this.type ); - - String path = repositoryContent.toPath( artifact ); - if ( !path.equals( this.legacyArtifactPath.getPath() ) ) - { - addActionError( "artifact reference does not match the initial path : " + path ); - return ERROR; - } - - try - { - getArchivaAdministration().addLegacyArtifactPath( legacyArtifactPath, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error occured " + e.getMessage() ); - return INPUT; - } - return SUCCESS; - } - - public LegacyArtifactPath getLegacyArtifactPath() - { - return legacyArtifactPath; - } - - public void setLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath ) - { - this.legacyArtifactPath = legacyArtifactPath; - } - - public void validate() - { - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( legacyArtifactPath.getPath() ) ) - { - legacyArtifactPath.setPath( legacyArtifactPath.getPath().trim() ); - } - - if ( StringUtils.isNotEmpty( groupId ) ) - { - groupId = groupId.trim(); - } - - if ( StringUtils.isNotEmpty( artifactId ) ) - { - artifactId = artifactId.trim(); - } - - if ( StringUtils.isNotEmpty( version ) ) - { - version = version.trim(); - } - - if ( StringUtils.isNotEmpty( classifier ) ) - { - classifier = classifier.trim(); - } - - if ( StringUtils.isNotEmpty( type ) ) - { - type = type.trim(); - } - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - - public String getClassifier() - { - return classifier; - } - - public void setClassifier( String classifier ) - { - this.classifier = classifier; - } - - public String getType() - { - return type; - } - - public void setType( String type ) - { - this.type = type; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/DeleteLegacyArtifactPathAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/DeleteLegacyArtifactPathAction.java deleted file mode 100644 index 944ac1d3e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/DeleteLegacyArtifactPathAction.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.apache.archiva.web.action.admin.legacy; - -/* - * 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.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * Delete a LegacyArtifactPath to archiva configuration - * - * @since 1.1 - */ -@Controller( "deleteLegacyArtifactPathAction" ) -@Scope( "prototype" ) -public class DeleteLegacyArtifactPathAction - extends AbstractActionSupport -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - private String path; - - public String delete() - { - log.info( "remove [" + path + "] from legacy artifact path resolution" ); - try - { - getArchivaAdministration().deleteLegacyArtifactPath( path, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Exception during delete " + e.getMessage() ); - } - return SUCCESS; - } - - public String getPath() - { - return path; - } - - public void setPath( String path ) - { - this.path = path; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/LegacyArtifactPathAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/LegacyArtifactPathAction.java deleted file mode 100644 index cfb095a1d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/LegacyArtifactPathAction.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.apache.archiva.web.action.admin.legacy; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.LegacyArtifactPath; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.List; - -/** - * Shows the LegacyArtifactPath Tab for the administrator. - * - * @since 1.1 - */ -@Controller( "legacyArtifactPathAction" ) -@Scope( "prototype" ) -public class LegacyArtifactPathAction - extends AbstractActionSupport - implements SecureAction, ServletRequestAware, Preparable -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - private List<LegacyArtifactPath> legacyArtifactPaths; - - /** - * Used to construct the repository WebDAV URL in the repository action. - */ - private String baseUrl; - - public void setServletRequest( HttpServletRequest request ) - { - // TODO: is there a better way to do this? - this.baseUrl = ContextUtils.getBaseURL( request, "repository" ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public void prepare() - throws RepositoryAdminException - { - legacyArtifactPaths = new ArrayList<LegacyArtifactPath>( getArchivaAdministration().getLegacyArtifactPaths() ); - } - - public List<LegacyArtifactPath> getLegacyArtifactPaths() - { - return legacyArtifactPaths; - } - - public String getBaseUrl() - { - return baseUrl; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction.java deleted file mode 100644 index 1c484aa55..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction.java +++ /dev/null @@ -1,98 +0,0 @@ -package org.apache.archiva.web.action.admin.network; -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.NetworkConfiguration; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * @author Olivier Lamy - * @since 1.4-M1 - */ -@Controller( "networkConfigurationAction" ) -@Scope( "prototype" ) -public class NetworkConfigurationAction - extends AbstractActionSupport - implements Preparable, SecureAction -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - private NetworkConfiguration networkConfiguration; - - public void prepare( ) - throws Exception - { - networkConfiguration = archivaAdministration.getNetworkConfiguration( ); - } - - public SecureActionBundle getSecureActionBundle( ) - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle( ); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public String edit( ) - { - return INPUT; - } - - public String save( ) - { - try - { - archivaAdministration.setNetworkConfiguration( this.networkConfiguration ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "Error during networkConfiguration upate:" + e.getMessage( ) ); - return ERROR; - } - addActionMessage( "Network Configuration Updated" ); - return SUCCESS; - } - - public NetworkConfiguration getNetworkConfiguration( ) - { - return networkConfiguration; - } - - public void setNetworkConfiguration( NetworkConfiguration networkConfiguration ) - { - this.networkConfiguration = networkConfiguration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java deleted file mode 100644 index 087945a78..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java +++ /dev/null @@ -1,232 +0,0 @@ -package org.apache.archiva.web.action.admin.networkproxies; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * ConfigureNetworkProxyAction - * - * - */ -@Controller( "configureNetworkProxyAction" ) -@Scope( "prototype" ) -public class ConfigureNetworkProxyAction - extends AbstractActionSupport - implements SecureAction, Preparable, Validateable -{ - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - private String mode; - - private String proxyid; - - private NetworkProxy proxy; - - public String add() - { - this.mode = "add"; - return INPUT; - } - - public String confirm() - { - return INPUT; - } - - public String delete() - throws RepositoryAdminException - { - - String id = getProxyid(); - if ( StringUtils.isBlank( id ) ) - { - addActionError( "Unable to delete network proxy with blank id." ); - return SUCCESS; - } - - NetworkProxy networkProxy = getNetworkProxyAdmin().getNetworkProxy( id ); - if ( networkProxy == null ) - { - addActionError( "Unable to remove network proxy, proxy with id [" + id + "] not found." ); - return SUCCESS; - } - - getNetworkProxyAdmin().deleteNetworkProxy( id, getAuditInformation() ); - addActionMessage( "Successfully removed network proxy [" + id + "]" ); - return SUCCESS; - } - - public String edit() - { - this.mode = "edit"; - return INPUT; - } - - public String getMode() - { - return mode; - } - - public NetworkProxy getProxy() - { - return proxy; - } - - public String getProxyid() - { - return proxyid; - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public String input() - { - return INPUT; - } - - public void prepare() - throws Exception - { - String id = getProxyid(); - - if ( StringUtils.isNotBlank( id ) ) - { - proxy = findNetworkProxy( id ); - } - - if ( proxy == null ) - { - proxy = new NetworkProxy(); - } - } - - public String save() - throws RepositoryAdminException - { - String mode = getMode(); - - String id = getProxy().getId(); - - if ( StringUtils.equalsIgnoreCase( "edit", mode ) ) - { - getNetworkProxyAdmin().updateNetworkProxy( proxy, getAuditInformation() ); - } - else - { - getNetworkProxyAdmin().addNetworkProxy( proxy, getAuditInformation() ); - } - - return SUCCESS; - } - - public void validate() - { - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - public void setMode( String mode ) - { - this.mode = mode; - } - - public void setProxy( NetworkProxy proxy ) - { - this.proxy = proxy; - } - - public void setProxyid( String proxyid ) - { - this.proxyid = proxyid; - } - - - private NetworkProxy findNetworkProxy( String id ) - throws RepositoryAdminException - { - return getNetworkProxyAdmin().getNetworkProxy( id ); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( proxy.getId() ) ) - { - proxy.setId( proxy.getId().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getHost() ) ) - { - proxy.setHost( proxy.getHost().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getPassword() ) ) - { - proxy.setPassword( proxy.getPassword().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getProtocol() ) ) - { - proxy.setProtocol( proxy.getProtocol().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getUsername() ) ) - { - proxy.setUsername( proxy.getUsername().trim() ); - } - } - - public NetworkProxyAdmin getNetworkProxyAdmin() - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } -} - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/NetworkProxiesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/NetworkProxiesAction.java deleted file mode 100644 index f43083296..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/NetworkProxiesAction.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.apache.archiva.web.action.admin.networkproxies; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.List; - -/** - * NetworkProxiesAction - * - * - */ -@Controller( "networkProxiesAction" ) -@Scope( "prototype" ) -public class NetworkProxiesAction - extends AbstractActionSupport - implements Preparable, SecureAction -{ - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - private List<NetworkProxy> networkProxies; - - public void prepare() - throws Exception - { - networkProxies = getNetworkProxyAdmin().getNetworkProxies(); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public List<NetworkProxy> getNetworkProxies() - { - return networkProxies; - } - - public void setNetworkProxies( List<NetworkProxy> networkProxies ) - { - this.networkProxies = networkProxies; - } - - public NetworkProxyAdmin getNetworkProxyAdmin() - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java deleted file mode 100644 index 3ae0a1436..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -/** - * Abstract ManagedRepositories Action. - * <p/> - * Place for all generic methods used in Managed Repository Administration. - * - * - */ -public abstract class AbstractManagedRepositoriesAction - extends AbstractRepositoriesAdminAction -{ - public static final String CONFIRM = "confirm"; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRemoteRepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRemoteRepositoriesAction.java deleted file mode 100644 index b00461600..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRemoteRepositoriesAction.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; - -import javax.inject.Inject; -import java.util.Collections; -import java.util.List; - -/* - * 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. - */ - -/** - * AbstractRemoteRepositoriesAction - * - * - */ -public class AbstractRemoteRepositoriesAction - extends AbstractRepositoriesAdminAction -{ - @Inject - private RemoteRepositoryAdmin remoteRepositoryAdmin; - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - private List<NetworkProxy> networkProxies; - - public RemoteRepositoryAdmin getRemoteRepositoryAdmin() - { - return remoteRepositoryAdmin; - } - - public void setRemoteRepositoryAdmin( RemoteRepositoryAdmin remoteRepositoryAdmin ) - { - this.remoteRepositoryAdmin = remoteRepositoryAdmin; - } - - public NetworkProxyAdmin getNetworkProxyAdmin() - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } - - public List<NetworkProxy> getNetworkProxies() - { - return networkProxies == null ? Collections.<NetworkProxy>emptyList() : networkProxies; - } - - public void setNetworkProxies( List<NetworkProxy> networkProxies ) - { - this.networkProxies = networkProxies; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java deleted file mode 100644 index 2a75d8d85..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.archiva.admin.model.RepositoryCommonValidator; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; - -import javax.inject.Inject; - -/** - * Abstract AdminRepositories Action base. - * <p/> - * Base class for all repository administrative functions. - * This should be neutral to the type of action (add/edit/delete) and type of repo (managed/remote) - * - * - */ -public abstract class AbstractRepositoriesAdminAction - extends AbstractActionSupport - implements SecureAction, Auditable -{ - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RepositoryCommonValidator repositoryCommonValidator; - - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public RepositoryCommonValidator getRepositoryCommonValidator() - { - return repositoryCommonValidator; - } - - public void setRepositoryCommonValidator( RepositoryCommonValidator repositoryCommonValidator ) - { - this.repositoryCommonValidator = repositoryCommonValidator; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java deleted file mode 100644 index dff8eafea..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java +++ /dev/null @@ -1,160 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.redback.components.scheduler.CronExpressionValidator; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.io.File; - -/** - * AddManagedRepositoryAction - * - * - */ -@Controller( "addManagedRepositoryAction" ) -@Scope( "prototype" ) -public class AddManagedRepositoryAction - extends AbstractManagedRepositoriesAction - implements Preparable, Validateable -{ - - private ManagedRepository repository; - - private boolean stageNeeded; - - private String action = "addRepository"; - - public void prepare() - { - this.repository = new ManagedRepository(); - this.repository.setReleases( false ); - this.repository.setScanned( false ); - this.repository.setBlockRedeployments( false ); - } - - public String input() - { - this.repository.setReleases( true ); - this.repository.setScanned( true ); - this.repository.setBlockRedeployments( true ); - - return INPUT; - } - - public String confirmAdd() - { - return save(); - } - - public String commit() - { - repository.setLocation( getRepositoryCommonValidator().removeExpressions( repository.getLocation() ) ); - - File location = new File( repository.getLocation() ); - if ( location.exists() ) - { - return CONFIRM; - } - - return save(); - } - - private String save() - { - String result = SUCCESS; - try - { - getManagedRepositoryAdmin().addManagedRepository( repository, stageNeeded, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Check your server logs, Repository Administration Exception: " + e.getMessage() ); - result = INPUT; - } - - return result; - } - - @Override - public void validate() - { - CronExpressionValidator validator = new CronExpressionValidator(); - - if ( !validator.validate( repository.getCronExpression() ) ) - { - addFieldError( "repository.cronExpression", "Invalid cron expression." ); - } - - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( repository.getId() ) ) - { - repository.setId( repository.getId().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getName() ) ) - { - repository.setName( repository.getName().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getLocation() ) ) - { - repository.setLocation( repository.getLocation().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getIndexDirectory() ) ) - { - repository.setIndexDirectory( repository.getIndexDirectory().trim() ); - } - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - - public void setStageNeeded( boolean stageNeeded ) - { - this.stageNeeded = stageNeeded; - } - - public String getAction() - { - return action; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java deleted file mode 100644 index c6a4e4ea0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * AddRemoteRepositoryAction - * - * - */ -@Controller( "addRemoteRepositoryAction" ) -@Scope( "prototype" ) -public class AddRemoteRepositoryAction - extends AbstractRemoteRepositoriesAction - implements Preparable, Validateable -{ - /** - * The model for this action. - */ - private RemoteRepository repository; - - public void prepare() - throws RepositoryAdminException - { - this.repository = new RemoteRepository(); - setNetworkProxies( getNetworkProxyAdmin().getNetworkProxies() ); - } - - public String input() - { - return INPUT; - } - - public String commit() - { - - String result = SUCCESS; - try - { - getRemoteRepositoryAdmin().addRemoteRepository( repository, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException: " + e.getMessage() ); - result = INPUT; - } - - return result; - } - - - public RemoteRepository getRepository() - { - return repository; - } - - public void setRepository( RemoteRepository repository ) - { - this.repository = repository; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java deleted file mode 100644 index 23f5d7602..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * DeleteManagedRepositoryAction - * - * - */ -@Controller( "deleteManagedRepositoryAction" ) -@Scope( "prototype" ) -public class DeleteManagedRepositoryAction - extends AbstractManagedRepositoriesAction - implements Preparable -{ - - - private ManagedRepository repository; - - private ManagedRepository stagingRepository; - - private String repoid; - - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - this.repository = getManagedRepositoryAdmin().getManagedRepository( repoid ); - this.stagingRepository = getManagedRepositoryAdmin().getManagedRepository( repoid + "-stage" ); - } - } - - public String confirmDelete() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Unable to delete managed repository: repository id was blank." ); - return ERROR; - } - - return INPUT; - } - - public String deleteEntry() - { - return deleteRepository( false ); - } - - public String deleteContents() - { - return deleteRepository( true ); - } - - private String deleteRepository( boolean deleteContents ) - { - ManagedRepository existingRepository = repository; - if ( existingRepository == null ) - { - addActionError( "A repository with that id does not exist" ); - return ERROR; - } - - String result = SUCCESS; - - try - { - getManagedRepositoryAdmin().deleteManagedRepository( existingRepository.getId(), getAuditInformation(), - deleteContents ); - } - catch ( RepositoryAdminException e ) - { - addActionError( - "Unable to delete repository, content may already be partially removed: " + e.getMessage() ); - log.error( e.getMessage(), e ); - result = ERROR; - } - return result; - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java deleted file mode 100644 index cca80a1a9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * DeleteRemoteRepositoryAction - * - * - */ -@Controller( "deleteRemoteRepositoryAction" ) -@Scope( "prototype" ) -public class DeleteRemoteRepositoryAction - extends AbstractRemoteRepositoriesAction - implements Preparable -{ - private RemoteRepository repository; - - private String repoid; - - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - this.repository = getRemoteRepositoryAdmin().getRemoteRepository( repoid ); - } - } - - public String confirmDelete() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Unable to delete remote repository: repository id was blank." ); - return ERROR; - } - - return INPUT; - } - - public String delete() - { - String result = SUCCESS; - RemoteRepository existingRepository = repository; - if ( existingRepository == null ) - { - addActionError( "A repository with that id does not exist" ); - return ERROR; - } - - try - { - getRemoteRepositoryAdmin().deleteRemoteRepository( existingRepository.getId(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException: " + e.getMessage() ); - result = ERROR; - } - return result; - } - - - public RemoteRepository getRepository() - { - return repository; - } - - public void setRepository( RemoteRepository repository ) - { - this.repository = repository; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java deleted file mode 100644 index 0ce76aba5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RepositoryGroup; -import org.apache.archiva.admin.model.group.RepositoryGroupAdmin; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * DeleteRepositoryGroupAction - */ -@Controller( "deleteRepositoryGroupAction" ) -@Scope( "prototype" ) -public class DeleteRepositoryGroupAction - extends AbstractRepositoriesAdminAction - implements Preparable -{ - private RepositoryGroup repositoryGroup; - - @Inject - private RepositoryGroupAdmin repositoryGroupAdmin; - - private String repoGroupId; - - public void prepare() - throws RepositoryAdminException - { - - if ( StringUtils.isNotBlank( repoGroupId ) ) - { - this.repositoryGroup = repositoryGroupAdmin.getRepositoryGroup( repoGroupId ); - } - } - - public String confirmDelete() - { - if ( StringUtils.isBlank( repoGroupId ) ) - { - addActionError( "Unable to delete repository group: repository id was blank." ); - return ERROR; - } - - return INPUT; - } - - public String delete() - { - - try - { - RepositoryGroup group = repositoryGroupAdmin.getRepositoryGroup( repoGroupId ); - if ( group == null ) - { - addActionError( "A repository group with that id does not exist." ); - return ERROR; - } - - repositoryGroupAdmin.deleteRepositoryGroup( repoGroupId, getAuditInformation() ); - return SUCCESS; - } - catch ( RepositoryAdminException e ) - { - addActionError( "error occured " + e.getMessage() ); - return ERROR; - } - } - - public RepositoryGroup getRepositoryGroup() - { - return repositoryGroup; - } - - public void setRepositoryGroup( RepositoryGroup repositoryGroup ) - { - this.repositoryGroup = repositoryGroup; - } - - public String getRepoGroupId() - { - return repoGroupId; - } - - public void setRepoGroupId( String repoGroupId ) - { - this.repoGroupId = repoGroupId; - } - - public RepositoryGroupAdmin getRepositoryGroupAdmin() - { - return repositoryGroupAdmin; - } - - public void setRepositoryGroupAdmin( RepositoryGroupAdmin repositoryGroupAdmin ) - { - this.repositoryGroupAdmin = repositoryGroupAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java deleted file mode 100644 index 47962ba43..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java +++ /dev/null @@ -1,213 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.redback.components.scheduler.CronExpressionValidator; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.io.File; - -/** - * AddManagedRepositoryAction - * - * - */ -@Controller( "editManagedRepositoryAction" ) -@Scope( "prototype" ) -public class EditManagedRepositoryAction - extends AbstractManagedRepositoriesAction - implements Preparable, Validateable -{ - - private ManagedRepository repository; - - private ManagedRepository stagingRepository; - - private String repoid; - - private final String action = "editRepository"; - - private boolean stageNeeded; - - - // FIXME better error message - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - repository = getManagedRepositoryAdmin().getManagedRepository( repoid ); - stagingRepository = getManagedRepositoryAdmin().getManagedRepository( repoid + "-stage" ); - } - else if ( repository != null ) - { - repository.setReleases( false ); - repository.setScanned( false ); - } - } - - public String input() - { - if ( repository == null ) - { - addActionError( "Edit failure, unable to edit a repository with a blank repository id." ); - return ERROR; - } - - return INPUT; - } - - public String confirmUpdate() - { - // location was changed - return save( true ); - } - - public String commit() - throws RepositoryAdminException - { - ManagedRepository existingConfig = getManagedRepositoryAdmin().getManagedRepository( repository.getId() ); - boolean resetStats = false; - - // check if the location was changed - repository.setLocation( getRepositoryCommonValidator().removeExpressions( repository.getLocation() ) ); - - if ( !StringUtils.equalsIgnoreCase( existingConfig.getLocation().trim(), repository.getLocation().trim() ) ) - { - resetStats = true; - - File dir = new File( repository.getLocation() ); - if ( dir.exists() ) - { - return CONFIRM; - } - } - - return save( resetStats ); - } - - private String save( boolean resetStats ) - { - - String result = SUCCESS; - try - { - getManagedRepositoryAdmin().updateManagedRepository( repository, stageNeeded, getAuditInformation(), - resetStats ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "Repository Administration Exception: " + e.getMessage() ); - result = ERROR; - } - - return result; - } - - - @Override - public void validate() - { - CronExpressionValidator validator = new CronExpressionValidator(); - - if ( !validator.validate( repository.getCronExpression() ) ) - { - addFieldError( "repository.cronExpression", "Invalid cron expression." ); - } - - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( repository.getId() ) ) - { - repository.setId( repository.getId().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getName() ) ) - { - repository.setName( repository.getName().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getLocation() ) ) - { - repository.setLocation( repository.getLocation().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getIndexDirectory() ) ) - { - repository.setIndexDirectory( repository.getIndexDirectory().trim() ); - } - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - - public boolean isStageNeeded() - { - return stageNeeded; - } - - public void setStageNeeded( boolean stageNeeded ) - { - - this.stageNeeded = stageNeeded; - } - - public String getAction() - { - return action; - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - public ManagedRepository getStagingRepository() - { - return stagingRepository; - } - - public void setStagingRepository( ManagedRepository stagingRepository ) - { - this.stagingRepository = stagingRepository; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java deleted file mode 100644 index 21cfb2743..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java +++ /dev/null @@ -1,149 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.archiva.scheduler.indexing.DownloadRemoteIndexException; -import org.apache.archiva.scheduler.indexing.DownloadRemoteIndexScheduler; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * EditRemoteRepositoryAction - * - * - */ -@Controller( "editRemoteRepositoryAction" ) -@Scope( "prototype" ) -public class EditRemoteRepositoryAction - extends AbstractRemoteRepositoriesAction - implements Preparable -{ - /** - * The model for this action. - */ - private RemoteRepository repository; - - /** - * The repository id to edit. - */ - private String repoid; - - private boolean now, fullDownload; - - @Inject - private DownloadRemoteIndexScheduler downloadRemoteIndexScheduler; - - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - this.repository = getRemoteRepositoryAdmin().getRemoteRepository( repoid ); - } - setNetworkProxies( getNetworkProxyAdmin().getNetworkProxies() ); - } - - public String input() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Edit failure, unable to edit a repository with a blank repository id." ); - return ERROR; - } - - return INPUT; - } - - public String commit() - { - String result = SUCCESS; - try - { - getRemoteRepositoryAdmin().updateRemoteRepository( getRepository(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException: " + e.getMessage() ); - result = INPUT; - } - - return result; - } - - public String downloadRemoteIndex() - { - try - { - downloadRemoteIndexScheduler.scheduleDownloadRemote( repoid, now, fullDownload ); - } - catch ( DownloadRemoteIndexException e ) - { - addActionError( "DownloadRemoteIndexException: " + e.getMessage() ); - return INPUT; - } - return SUCCESS; - } - - public RemoteRepository getRepository() - { - return repository; - } - - public void setRepository( RemoteRepository repository ) - { - this.repository = repository; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - public boolean isNow() - { - return now; - } - - public void setNow( boolean now ) - { - this.now = now; - } - - public boolean isFullDownload() - { - return fullDownload; - } - - public void setFullDownload( boolean fullDownload ) - { - this.fullDownload = fullDownload; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoriesAction.java deleted file mode 100644 index a839e9102..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoriesAction.java +++ /dev/null @@ -1,222 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.archiva.admin.model.group.RepositoryGroupAdmin; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; -import org.apache.archiva.admin.repository.utils.RepositoryComparator; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.stats.RepositoryStatistics; -import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Shows the Repositories Tab for the administrator. - * - * - */ -@Controller( "repositoriesAction" ) -@Scope( "prototype" ) -public class RepositoriesAction - extends AbstractActionSupport - implements SecureAction, ServletRequestAware, Preparable -{ - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RemoteRepositoryAdmin remoteRepositoryAdmin; - - @Inject - private RepositoryGroupAdmin repositoryGroupAdmin; - - private List<ManagedRepository> managedRepositories; - - private List<RemoteRepository> remoteRepositories; - - private Map<String, RepositoryStatistics> repositoryStatistics; - - private Map<String, List<String>> repositoryToGroupMap; - - /** - * Used to construct the repository WebDAV URL in the repository action. - */ - private String baseUrl; - - - @Inject - private RepositoryStatisticsManager repositoryStatisticsManager; - - public void setServletRequest( HttpServletRequest request ) - { - // TODO: is there a better way to do this? - this.baseUrl = ContextUtils.getBaseURL( request, "repository" ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - @SuppressWarnings( "unchecked" ) - public void prepare() - throws RepositoryAdminException - { - remoteRepositories = new ArrayList<RemoteRepository>( getRemoteRepositoryAdmin().getRemoteRepositories() ); - managedRepositories = new ArrayList<ManagedRepository>( getManagedRepositoryAdmin().getManagedRepositories() ); - repositoryToGroupMap = getRepositoryGroupAdmin().getRepositoryToGroupMap(); - - Collections.sort( managedRepositories, new RepositoryComparator() ); - Collections.sort( remoteRepositories, new RepositoryComparator() ); - - repositoryStatistics = new HashMap<String, RepositoryStatistics>(); - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - for ( ManagedRepository repo : managedRepositories ) - { - RepositoryStatistics stats = null; - try - { - stats = repositoryStatisticsManager.getLastStatistics( metadataRepository, repo.getId() ); - } - catch ( MetadataRepositoryException e ) - { - addActionError( - "Error retrieving statistics for repository " + repo.getId() + " - consult application logs" ); - log.warn( "Error retrieving repository statistics: " + e.getMessage(), e ); - } - if ( stats != null ) - { - repositoryStatistics.put( repo.getId(), stats ); - } - } - } - finally - { - repositorySession.close(); - } - } - - public List<ManagedRepository> getManagedRepositories() - { - List<ManagedRepository> managedRepositoriesList = new ArrayList<ManagedRepository>(); - for ( ManagedRepository repoConfig : managedRepositories ) - { - if ( !repoConfig.getId().endsWith( "-stage" ) ) - { - managedRepositoriesList.add( repoConfig ); - } - } - return managedRepositoriesList; - } - - public List<RemoteRepository> getRemoteRepositories() - { - return remoteRepositories; - } - - public Map<String, RepositoryStatistics> getRepositoryStatistics() - { - return repositoryStatistics; - } - - public String getBaseUrl() - { - return baseUrl; - } - - public Map<String, List<String>> getRepositoryToGroupMap() - { - return repositoryToGroupMap; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public RemoteRepositoryAdmin getRemoteRepositoryAdmin() - { - return remoteRepositoryAdmin; - } - - public void setRemoteRepositoryAdmin( RemoteRepositoryAdmin remoteRepositoryAdmin ) - { - this.remoteRepositoryAdmin = remoteRepositoryAdmin; - } - - public RepositoryGroupAdmin getRepositoryGroupAdmin() - { - return repositoryGroupAdmin; - } - - public void setRepositoryGroupAdmin( RepositoryGroupAdmin repositoryGroupAdmin ) - { - this.repositoryGroupAdmin = repositoryGroupAdmin; - } - - public RepositoryStatisticsManager getRepositoryStatisticsManager() - { - return repositoryStatisticsManager; - } - - public void setRepositoryStatisticsManager( RepositoryStatisticsManager repositoryStatisticsManager ) - { - this.repositoryStatisticsManager = repositoryStatisticsManager; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction.java deleted file mode 100644 index 5d12e100b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction.java +++ /dev/null @@ -1,191 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.beans.RepositoryGroup; -import org.apache.archiva.admin.model.group.RepositoryGroupAdmin; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.Map; -import java.util.regex.Pattern; - -/** - * RepositoryGroupsAction - */ -@Controller( "repositoryGroupsAction" ) -@Scope( "prototype" ) -public class RepositoryGroupsAction - extends AbstractRepositoriesAdminAction - implements ServletRequestAware, Preparable -{ - - @Inject - private RepositoryGroupAdmin repositoryGroupAdmin; - - private RepositoryGroup repositoryGroup; - - private Map<String, RepositoryGroup> repositoryGroups; - - private Map<String, ManagedRepository> managedRepositories; - - private Map<String, List<String>> groupToRepositoryMap; - - private String repoGroupId; - - private String repoId; - - /** - * Used to construct the repository WebDAV URL in the repository action. - */ - private String baseUrl; - - public void setServletRequest( HttpServletRequest request ) - { - this.baseUrl = ContextUtils.getBaseURL( request, "repository" ); - } - - public void prepare() - throws RepositoryAdminException - { - - repositoryGroup = new RepositoryGroup(); - repositoryGroups = getRepositoryGroupAdmin().getRepositoryGroupsAsMap(); - managedRepositories = getManagedRepositoryAdmin().getManagedRepositoriesAsMap(); - groupToRepositoryMap = getRepositoryGroupAdmin().getGroupToRepositoryMap(); - } - - public String addRepositoryGroup() - { - try - { - getRepositoryGroupAdmin().addRepositoryGroup( repositoryGroup, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return ERROR; - } - - return SUCCESS; - } - - public String addRepositoryToGroup() - { - try - { - getRepositoryGroupAdmin().addRepositoryToGroup( repoGroupId, repoId, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return ERROR; - } - return SUCCESS; - } - - public String removeRepositoryFromGroup() - { - try - { - getRepositoryGroupAdmin().deleteRepositoryFromGroup( repoGroupId, repoId, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return ERROR; - } - return SUCCESS; - } - - - public RepositoryGroup getRepositoryGroup() - { - return repositoryGroup; - } - - public void setRepositoryGroup( RepositoryGroup repositoryGroup ) - { - this.repositoryGroup = repositoryGroup; - } - - public Map<String, RepositoryGroup> getRepositoryGroups() - { - return repositoryGroups; - } - - public void setRepositoryGroups( Map<String, RepositoryGroup> repositoryGroups ) - { - this.repositoryGroups = repositoryGroups; - } - - public Map<String, ManagedRepository> getManagedRepositories() - { - return managedRepositories; - } - - public Map<String, List<String>> getGroupToRepositoryMap() - { - return this.groupToRepositoryMap; - } - - public String getRepoGroupId() - { - return repoGroupId; - } - - public void setRepoGroupId( String repoGroupId ) - { - this.repoGroupId = repoGroupId; - } - - public String getRepoId() - { - return repoId; - } - - public void setRepoId( String repoId ) - { - this.repoId = repoId; - } - - public String getBaseUrl() - { - return baseUrl; - } - - public RepositoryGroupAdmin getRepositoryGroupAdmin() - { - return repositoryGroupAdmin; - } - - public void setRepositoryGroupAdmin( RepositoryGroupAdmin repositoryGroupAdmin ) - { - this.repositoryGroupAdmin = repositoryGroupAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesAction.java deleted file mode 100644 index 087814b83..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesAction.java +++ /dev/null @@ -1,170 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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.commons.lang.StringUtils; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.RepositoryGroupConfiguration; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.List; - -/** - * SortRepositoriesAction - * FIXME remove access to archivaconfiguration - */ -@Controller( "sortRepositoriesAction" ) -@Scope( "prototype" ) -public class SortRepositoriesAction - extends AbstractRepositoriesAdminAction -{ - - private String repoGroupId; - - private String targetRepo; - - @Inject - protected ArchivaConfiguration archivaConfiguration; - - public String sortDown() - { - Configuration config = archivaConfiguration.getConfiguration(); - - List<String> repositories = getRepositoriesFromGroup(); - - int idx = findTargetRepository( repositories, targetRepo ); - - if ( idx >= 0 && validIndex( repositories, idx + 1 ) ) - { - repositories.remove( idx ); - repositories.add( idx + 1, targetRepo ); - } - - return saveConfiguration( config ); - } - - public String sortUp() - { - Configuration config = archivaConfiguration.getConfiguration(); - - List<String> repositories = getRepositoriesFromGroup(); - - int idx = findTargetRepository( repositories, targetRepo ); - - if ( idx >= 0 && validIndex( repositories, idx - 1 ) ) - { - repositories.remove( idx ); - repositories.add( idx - 1, targetRepo ); - } - - return saveConfiguration( config ); - } - -/** - * Save the configuration. - * - * @param configuration the configuration to save. - * @return the webwork result code to issue. - * @throws java.io.IOException thrown if unable to save file to disk. - * @throws org.apache.archiva.configuration.InvalidConfigurationException thrown if configuration is invalid. - * @throws org.apache.archiva.redback.components.registry.RegistryException thrown if configuration subsystem has a problem saving the configuration to disk. - */ - protected String saveConfiguration( Configuration configuration ) - { - try - { - archivaConfiguration.save( configuration ); - addActionMessage( "Successfully saved configuration" ); - } - catch ( IndeterminateConfigurationException e ) - { - addActionError( e.getMessage() ); - return INPUT; - } - catch ( org.apache.archiva.redback.components.registry.RegistryException e ) - { - addActionError( "Configuration Registry Exception: " + e.getMessage() ); - return INPUT; - } - - return SUCCESS; - } - - public String getRepoGroupId() - { - return repoGroupId; - } - - public void setRepoGroupId( String repoGroupId ) - { - this.repoGroupId = repoGroupId; - } - - public String getTargetRepo() - { - return targetRepo; - } - - public void setTargetRepo( String targetRepo ) - { - this.targetRepo = targetRepo; - } - - private int findTargetRepository( List<String> repositories, String targetRepository ) - { - int idx = ( -1 ); - - for ( int i = 0; i < repositories.size(); i++ ) - { - if ( StringUtils.equals( targetRepository, repositories.get( i ) ) ) - { - idx = i; - break; - } - } - return idx; - } - - private List<String> getRepositoriesFromGroup() - { - Configuration config = archivaConfiguration.getConfiguration(); - RepositoryGroupConfiguration repoGroup = config.findRepositoryGroupById( repoGroupId ); - return repoGroup.getRepositories(); - } - - private boolean validIndex( List<String> repositories, int idx ) - { - return ( idx >= 0 ) && ( idx < repositories.size() ); - } - - public ArchivaConfiguration getArchivaConfiguration() - { - return archivaConfiguration; - } - - public void setArchivaConfiguration( ArchivaConfiguration archivaConfiguration ) - { - this.archivaConfiguration = archivaConfiguration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java deleted file mode 100644 index 059c1ca68..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java +++ /dev/null @@ -1,354 +0,0 @@ -package org.apache.archiva.web.action.admin.scanning; - -/* - * 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.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.FileType; -import org.apache.archiva.admin.repository.admin.FiletypeToMapClosure; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.repository.scanner.RepositoryContentConsumers; -import org.apache.archiva.rest.api.model.AdminRepositoryConsumer; -import org.apache.archiva.rest.services.utils.AddAdminRepoConsumerClosure; -import org.apache.archiva.rest.services.utils.AdminRepositoryConsumerComparator; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * RepositoryScanningAction - * - * - */ -@Controller( "repositoryScanningAction" ) -@Scope( "prototype" ) -public class RepositoryScanningAction - extends AbstractActionSupport - implements Preparable, Validateable, SecureAction, Auditable -{ - - @Inject - private RepositoryContentConsumers repoconsumerUtil; - - @Inject - private ArchivaAdministration archivaAdministration; - - private Map<String, FileType> fileTypeMap; - - private List<String> fileTypeIds; - - /** - * List of {@link org.apache.archiva.rest.api.model.AdminRepositoryConsumer} objects for consumers of known content. - */ - private List<AdminRepositoryConsumer> knownContentConsumers; - - /** - * List of enabled {@link AdminRepositoryConsumer} objects for consumers of known content. - */ - private List<String> enabledKnownContentConsumers; - - /** - * List of {@link AdminRepositoryConsumer} objects for consumers of invalid/unknown content. - */ - private List<AdminRepositoryConsumer> invalidContentConsumers; - - /** - * List of enabled {@link AdminRepositoryConsumer} objects for consumers of invalid/unknown content. - */ - private List<String> enabledInvalidContentConsumers; - - private String pattern; - - private String fileTypeId; - - public void addActionError( String anErrorMessage ) - { - super.addActionError( anErrorMessage ); - log.warn( "[ActionError] {}", anErrorMessage ); - } - - public void addActionMessage( String aMessage ) - { - super.addActionMessage( aMessage ); - log.info( "[ActionMessage] {}", aMessage ); - } - - public void prepare() - throws Exception - { - FiletypeToMapClosure filetypeToMapClosure = new FiletypeToMapClosure(); - - CollectionUtils.forAllDo( archivaAdministration.getFileTypes(), filetypeToMapClosure ); - fileTypeMap = filetypeToMapClosure.getMap(); - - AddAdminRepoConsumerClosure addAdminRepoConsumer = - new AddAdminRepoConsumerClosure( archivaAdministration.getKnownContentConsumers() ); - CollectionUtils.forAllDo( repoconsumerUtil.getAvailableKnownConsumers(), addAdminRepoConsumer ); - this.knownContentConsumers = addAdminRepoConsumer.getList(); - Collections.sort( knownContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); - - addAdminRepoConsumer = new AddAdminRepoConsumerClosure( archivaAdministration.getInvalidContentConsumers() ); - CollectionUtils.forAllDo( repoconsumerUtil.getAvailableInvalidConsumers(), addAdminRepoConsumer ); - this.invalidContentConsumers = addAdminRepoConsumer.getList(); - Collections.sort( invalidContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); - - fileTypeIds = new ArrayList<String>(); - fileTypeIds.addAll( fileTypeMap.keySet() ); - Collections.sort( fileTypeIds ); - } - - public String addFiletypePattern() - { - log.info( "Add New File Type Pattern [{}:{}]", getFileTypeId(), getPattern() ); - - if ( !isValidFiletypeCommand() ) - { - return INPUT; - } - - try - { - getArchivaAdministration().addFileTypePattern( getFileTypeId(), getPattern(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return INPUT; - } - return SUCCESS; - } - - public String removeFiletypePattern() - throws RepositoryAdminException - { - log.info( "Remove File Type Pattern [{}:{}]", getFileTypeId(), getPattern() ); - - if ( !isValidFiletypeCommand() ) - { - return INPUT; - } - - try - { - getArchivaAdministration().removeFileTypePattern( getFileTypeId(), getPattern(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "error adding file type pattern " + e.getMessage() ); - return INPUT; - } - - return SUCCESS; - } - - public String getFileTypeId() - { - return fileTypeId; - } - - public List<String> getFileTypeIds() - { - return fileTypeIds; - } - - public Map<String, FileType> getFileTypeMap() - { - return fileTypeMap; - } - - public List<AdminRepositoryConsumer> getInvalidContentConsumers() - { - return invalidContentConsumers; - } - - public List<AdminRepositoryConsumer> getKnownContentConsumers() - { - return knownContentConsumers; - } - - public String getPattern() - { - return pattern; - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public void setFileTypeId( String fileTypeId ) - { - this.fileTypeId = fileTypeId; - } - - public void setPattern( String pattern ) - { - this.pattern = pattern; - } - - public String updateInvalidConsumers() - { - - try - { - List<String> oldConsumers = getArchivaAdministration().getInvalidContentConsumers(); - - if ( enabledInvalidContentConsumers != null ) - { - for ( String oldConsumer : oldConsumers ) - { - if ( !enabledInvalidContentConsumers.contains( oldConsumer ) ) - { - getArchivaAdministration().removeInvalidContentConsumer( oldConsumer, getAuditInformation() ); - } - } - for ( String enabledKnowContentConsumer : enabledInvalidContentConsumers ) - { - getArchivaAdministration().addInvalidContentConsumer( enabledKnowContentConsumer, - getAuditInformation() ); - } - } - else - { - for ( String oldConsumer : oldConsumers ) - { - getArchivaAdministration().removeInvalidContentConsumer( oldConsumer, getAuditInformation() ); - } - } - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error update invalidContentConsumers " + e.getMessage() ); - return INPUT; - } - addActionMessage( "Update Invalid Consumers" ); - - return SUCCESS; - } - - public String updateKnownConsumers() - { - - try - { - List<String> oldConsumers = getArchivaAdministration().getKnownContentConsumers(); - - if ( enabledKnownContentConsumers != null ) - { - for ( String oldConsumer : oldConsumers ) - { - if ( !enabledKnownContentConsumers.contains( oldConsumer ) ) - { - getArchivaAdministration().removeKnownContentConsumer( oldConsumer, getAuditInformation() ); - } - } - for ( String enabledKnowContentConsumer : enabledKnownContentConsumers ) - { - getArchivaAdministration().addKnownContentConsumer( enabledKnowContentConsumer, - getAuditInformation() ); - } - } - else - { - for ( String oldConsumer : oldConsumers ) - { - getArchivaAdministration().removeKnownContentConsumer( oldConsumer, getAuditInformation() ); - } - } - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error update knowContentConsumers " + e.getMessage() ); - return INPUT; - } - addActionMessage( "Update Known Consumers" ); - - return SUCCESS; - } - - private boolean isValidFiletypeCommand() - { - if ( StringUtils.isBlank( getFileTypeId() ) ) - { - addActionError( "Unable to process blank filetype id." ); - } - - if ( StringUtils.isBlank( getPattern() ) ) - { - addActionError( "Unable to process blank pattern." ); - } - - return !hasActionErrors(); - } - - - public List<String> getEnabledInvalidContentConsumers() - { - return enabledInvalidContentConsumers; - } - - public void setEnabledInvalidContentConsumers( List<String> enabledInvalidContentConsumers ) - { - this.enabledInvalidContentConsumers = enabledInvalidContentConsumers; - } - - public List<String> getEnabledKnownContentConsumers() - { - return enabledKnownContentConsumers; - } - - public void setEnabledKnownContentConsumers( List<String> enabledKnownContentConsumers ) - { - this.enabledKnownContentConsumers = enabledKnownContentConsumers; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/GenerateReportAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/GenerateReportAction.java deleted file mode 100644 index 07600cd6e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/GenerateReportAction.java +++ /dev/null @@ -1,774 +0,0 @@ -package org.apache.archiva.web.action.reports; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.stats.RepositoryStatistics; -import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.reports.RepositoryProblemFacet; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateUtils; -import org.apache.archiva.web.action.AbstractRepositoryBasedAction; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -/** - * - */ -@Controller( "generateReport" ) -@Scope( "prototype" ) -public class GenerateReportAction - extends AbstractRepositoryBasedAction - implements SecureAction, Preparable -{ - public static final String ALL_REPOSITORIES = "All Repositories"; - - public static final String BLANK = "blank"; - - private static final String[] datePatterns = - new String[]{ "MM/dd/yy", "MM/dd/yyyy", "MMMMM/dd/yyyy", "MMMMM/dd/yy", "dd MMMMM yyyy", "dd/MM/yy", - "dd/MM/yyyy", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy-dd-MM", "MM-dd-yyyy", "MM-dd-yy" }; - - public static final String SEND_FILE = "send-file"; - - private Logger log = LoggerFactory.getLogger( GenerateReportAction.class ); - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RepositoryStatisticsManager repositoryStatisticsManager; - - private String groupId; - - private String repositoryId; - - private int page = 1; - - private int rowCount = 100; - - private List<String> selectedRepositories = new ArrayList<String>(); - - private String startDate; - - private String endDate; - - private int numPages; - - private List<String> repositoryIds; - - private Map<String, List<RepositoryProblemFacet>> repositoriesMap = - new TreeMap<String, List<RepositoryProblemFacet>>(); - - private List<String> availableRepositories; - - private List<RepositoryStatistics> repositoryStatistics = new ArrayList<RepositoryStatistics>(); - - private InputStream inputStream; - - private boolean lastPage; - - @SuppressWarnings( "unchecked" ) - public void prepare() - throws RepositoryAdminException - { - repositoryIds = new ArrayList<String>(); - repositoryIds.add( ALL_REPOSITORIES ); // comes first to be first in the list - repositoryIds.addAll( getObservableRepos() ); - - availableRepositories = new ArrayList<String>(); - - // remove selected repositories in the option for the statistics report - availableRepositories.addAll( managedRepositoryAdmin.getManagedRepositoriesAsMap().keySet() ); - for ( String repo : selectedRepositories ) - { - if ( availableRepositories.contains( repo ) ) - { - availableRepositories.remove( repo ); - } - } - } - - /** - * Generate the statistics report. - * <p/> - * check whether single repo report or comparison report - * 1. if it is a single repository, get all the statistics for the repository on the specified date - * - if no date is specified, get only the latest - * (total page = 1 --> no pagination since only the most recent stats will be displayed) - * - otherwise, get everything within the date range (total pages = repo stats / rows per page) - * - required params: repository, startDate, endDate - * <p/> - * 2. if multiple repositories, get the latest statistics on each repository on the specified date - * - if no date is specified, use the current date endDate - * - required params: repositories, endDate - * - total pages = repositories / rows per page - * - * @return action result - */ - public String generateStatistics() - { - if ( rowCount < 10 ) - { - // TODO: move to validation framework - addFieldError( "rowCount", "Row count must be larger than 10." ); - return INPUT; - } - Date startDateInDF; - Date endDateInDF; - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - if ( selectedRepositories.size() > 1 ) - { - numPages = 1; - - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - } - catch ( ParseException e ) - { - addActionError( "Error parsing date(s)." ); - return ERROR; - } - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - // multiple repos - for ( String repo : selectedRepositories ) - { - List<RepositoryStatistics> stats = null; - try - { - stats = - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repo, startDateInDF, - endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - log.info( "No statistics available for repository '" + repo + "'." ); - // TODO set repo's stats to 0 - continue; - } - - repositoryStatistics.add( stats.get( 0 ) ); - } - } - else if ( selectedRepositories.size() == 1 ) - { - repositoryId = selectedRepositories.get( 0 ); - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - List<RepositoryStatistics> stats = null; - try - { - stats = repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repositoryId, - startDateInDF, endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - addActionError( - "No statistics available for repository. Repository might not have been scanned." ); - return ERROR; - } - - int rowCount = getRowCount(); - int extraPage = ( stats.size() % rowCount ) != 0 ? 1 : 0; - int totalPages = ( stats.size() / rowCount ) + extraPage; - numPages = totalPages; - - int currentPage = getPage(); - if ( currentPage > totalPages ) - { - addActionError( - "Error encountered while generating report :: The requested page exceeds the total number of pages." ); - return ERROR; - } - - int start = rowCount * ( currentPage - 1 ); - int end = ( start + rowCount ) - 1; - - if ( end >= stats.size() ) - { - end = stats.size() - 1; - } - - repositoryStatistics = stats.subList( start, end + 1 ); - } - catch ( ParseException pe ) - { - addActionError( pe.getMessage() ); - return ERROR; - } - } - else - { - addFieldError( "availableRepositories", "Please select a repository (or repositories) from the list." ); - return INPUT; - } - } - finally - { - repositorySession.close(); - } - - if ( repositoryStatistics.isEmpty() ) - { - return BLANK; - } - - return SUCCESS; - } - - /** - * Export report to CSV. - * - * @return action result - */ - public String downloadStatisticsReport() - { - Date startDateInDF; - Date endDateInDF; - - selectedRepositories = parseSelectedRepositories(); - List<RepositoryStatistics> repositoryStatistics = new ArrayList<RepositoryStatistics>(); - - StringBuilder input; - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - if ( selectedRepositories.size() > 1 ) - { - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - } - catch ( ParseException e ) - { - addActionError( "Error parsing date(s)." ); - return ERROR; - } - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - input = new StringBuilder( - "Repository,Total File Count,Total Size,Artifact Count,Group Count,Project Count,Plugins,Archetypes," - + "Jars,Wars\n" ); - - // multiple repos - for ( String repo : selectedRepositories ) - { - List<RepositoryStatistics> stats = null; - try - { - stats = - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repo, startDateInDF, - endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - log.info( "No statistics available for repository '" + repo + "'." ); - // TODO set repo's stats to 0 - continue; - } - - // only the first one - RepositoryStatistics repositoryStats = stats.get( 0 ); - repositoryStatistics.add( repositoryStats ); - - input.append( repo ).append( "," ); - input.append( repositoryStats.getTotalFileCount() ).append( "," ); - input.append( repositoryStats.getTotalArtifactFileSize() ).append( "," ); - input.append( repositoryStats.getTotalArtifactCount() ).append( "," ); - input.append( repositoryStats.getTotalGroupCount() ).append( "," ); - input.append( repositoryStats.getTotalProjectCount() ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-plugin" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-archetype" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "jar" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "war" ) ); - input.append( "\n" ); - } - } - else if ( selectedRepositories.size() == 1 ) - { - repositoryId = selectedRepositories.get( 0 ); - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - List<RepositoryStatistics> stats = null; - try - { - stats = repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repositoryId, - startDateInDF, endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - addActionError( - "No statistics available for repository. Repository might not have been scanned." ); - return ERROR; - } - - input = new StringBuilder( - "Date of Scan,Total File Count,Total Size,Artifact Count,Group Count,Project Count,Plugins," - + "Archetypes,Jars,Wars\n" ); - - for ( RepositoryStatistics repositoryStats : stats ) - { - input.append( repositoryStats.getScanStartTime() ).append( "," ); - input.append( repositoryStats.getTotalFileCount() ).append( "," ); - input.append( repositoryStats.getTotalArtifactFileSize() ).append( "," ); - input.append( repositoryStats.getTotalArtifactCount() ).append( "," ); - input.append( repositoryStats.getTotalGroupCount() ).append( "," ); - input.append( repositoryStats.getTotalProjectCount() ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-plugin" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-archetype" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "jar" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "war" ) ); - input.append( "\n" ); - } - - repositoryStatistics = stats; - } - catch ( ParseException pe ) - { - addActionError( pe.getMessage() ); - return ERROR; - } - } - else - { - addFieldError( "availableRepositories", "Please select a repository (or repositories) from the list." ); - return INPUT; - } - } - finally - { - repositorySession.close(); - } - - if ( repositoryStatistics.isEmpty() ) - { - return BLANK; - } - - // write output stream depending on single or comparison report - StringReader reader = new StringReader( input.toString() ); - - try - { - inputStream = new ByteArrayInputStream( IOUtils.toByteArray( reader ) ); - } - catch ( IOException i ) - { - addActionError( "Error occurred while generating CSV file." ); - return ERROR; - } - - return SEND_FILE; - } - - // hack for parsing the struts list passed as param in <s:url ../> - - private List<String> parseSelectedRepositories() - { - List<String> parsedSelectedRepos = new ArrayList<String>(); - - for ( String repo : selectedRepositories ) - { - String[] tokens = StringUtils.split( repo, ',' ); - if ( tokens.length > 1 ) - { - for ( String token : tokens ) - { - parsedSelectedRepos.add( StringUtils.remove( StringUtils.remove( token, '[' ), ']' ).trim() ); - } - } - else - { - parsedSelectedRepos.add( StringUtils.remove( StringUtils.remove( repo, '[' ), ']' ).trim() ); - } - } - return parsedSelectedRepos; - } - - private Date getStartDateInDateFormat() - throws ParseException - { - Date startDateInDF; - if ( startDate == null || "".equals( startDate ) ) - { - startDateInDF = null; - } - else - { - startDateInDF = DateUtils.parseDate( startDate, datePatterns ); - } - return startDateInDF; - } - - private Date getEndDateInDateFormat() - throws ParseException - { - Date endDateInDF; - if ( endDate == null || "".equals( endDate ) ) - { - endDateInDF = null; - } - else - { - endDateInDF = DateUtils.parseDate( endDate, datePatterns ); - - // add a day, since we don't inclue time and want the date to be inclusive - Calendar cal = Calendar.getInstance(); - cal.setTime( endDateInDF ); - cal.add( Calendar.DAY_OF_MONTH, 1 ); - endDateInDF = cal.getTime(); - } - - return endDateInDF; - } - - public String execute() - throws Exception - { - if ( repositoryId == null ) - { - addFieldError( "repositoryId", "You must provide a repository id." ); - return INPUT; - } - - if ( rowCount < 10 ) - { - addFieldError( "rowCount", "Row count must be larger than 10." ); - return INPUT; - } - - List<String> observableRepos = getObservableRepos(); - Collection<String> repoIds; - if ( StringUtils.isEmpty( repositoryId ) || ALL_REPOSITORIES.equals( repositoryId ) ) - { - repoIds = observableRepos; - } - else if ( observableRepos.contains( repositoryId ) ) - { - repoIds = Collections.singletonList( repositoryId ); - } - else - { - repoIds = Collections.emptyList(); - } - - List<RepositoryProblemFacet> problemArtifacts = new ArrayList<RepositoryProblemFacet>(); - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - for ( String repoId : repoIds ) - { - // TODO: improve performance by navigating into a group subtree. Currently group is property, not part of name of item - for ( String name : metadataRepository.getMetadataFacets( repoId, RepositoryProblemFacet.FACET_ID ) ) - { - RepositoryProblemFacet metadataFacet = - (RepositoryProblemFacet) metadataRepository.getMetadataFacet( repoId, - RepositoryProblemFacet.FACET_ID, - name ); - - if ( StringUtils.isEmpty( groupId ) || groupId.equals( metadataFacet.getNamespace() ) ) - { - problemArtifacts.add( metadataFacet ); - } - } - } - } - finally - { - repositorySession.close(); - } - - // TODO: getting range only after reading is not efficient for a large number of artifacts - int lowerBound = ( page - 1 ) * rowCount; - int upperBound = ( page * rowCount ) + 1; // Add 1 to check if it's the last page or not. - if ( upperBound <= problemArtifacts.size() ) - { - problemArtifacts = problemArtifacts.subList( lowerBound, upperBound ); - } - else - { - problemArtifacts = problemArtifacts.subList( lowerBound, problemArtifacts.size() ); - } - - for ( RepositoryProblemFacet problem : problemArtifacts ) - { - List<RepositoryProblemFacet> problemsList; - if ( repositoriesMap.containsKey( problem.getRepositoryId() ) ) - { - problemsList = repositoriesMap.get( problem.getRepositoryId() ); - } - else - { - problemsList = new ArrayList<RepositoryProblemFacet>(); - repositoriesMap.put( problem.getRepositoryId(), problemsList ); - } - - problemsList.add( problem ); - } - - // TODO: handling should be improved - if ( problemArtifacts.size() <= rowCount ) - { - lastPage = true; - } - - if ( problemArtifacts.isEmpty() && page == 1 ) - { - return BLANK; - } - else - { - return SUCCESS; - } - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_ACCESS_REPORT, Resource.GLOBAL ); - - return bundle; - } - - public List<String> getRepositoryIds() - { - return repositoryIds; - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public int getPage() - { - return page; - } - - public void setPage( int page ) - { - this.page = page; - } - - public int getRowCount() - { - return rowCount; - } - - public void setRowCount( int rowCount ) - { - this.rowCount = rowCount; - } - - public void setRepositoriesMap( Map<String, List<RepositoryProblemFacet>> repositoriesMap ) - { - this.repositoriesMap = repositoriesMap; - } - - public Map<String, List<RepositoryProblemFacet>> getRepositoriesMap() - { - return repositoriesMap; - } - - public List<String> getSelectedRepositories() - { - return selectedRepositories; - } - - public void setSelectedRepositories( List<String> selectedRepositories ) - { - this.selectedRepositories = selectedRepositories; - } - - public List<String> getAvailableRepositories() - { - return availableRepositories; - } - - public void setAvailableRepositories( List<String> availableRepositories ) - { - this.availableRepositories = availableRepositories; - } - - public String getStartDate() - { - return startDate; - } - - public void setStartDate( String startDate ) - { - this.startDate = startDate; - } - - public String getEndDate() - { - return endDate; - } - - public void setEndDate( String endDate ) - { - this.endDate = endDate; - } - - public List<RepositoryStatistics> getRepositoryStatistics() - { - return repositoryStatistics; - } - - public void setRepositoryStatistics( List<RepositoryStatistics> repositoryStatistics ) - { - this.repositoryStatistics = repositoryStatistics; - } - - public boolean isLastPage() - { - return lastPage; - } - - public void setLastPage( boolean lastPage ) - { - this.lastPage = lastPage; - } - - public InputStream getInputStream() - { - return inputStream; - } - - public int getNumPages() - { - return numPages; - } - - public void setRepositoryStatisticsManager( RepositoryStatisticsManager repositoryStatisticsManager ) - { - this.repositoryStatisticsManager = repositoryStatisticsManager; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/ViewAuditLogReportAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/ViewAuditLogReportAction.java deleted file mode 100644 index fdf4e9f7f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/ViewAuditLogReportAction.java +++ /dev/null @@ -1,408 +0,0 @@ -package org.apache.archiva.web.action.reports; - -/* - * 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.xwork2.Preparable; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.AuditManager; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateUtils; -import org.apache.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -/** - * - */ -@Controller( "viewAuditLogReport" ) -@Scope( "prototype" ) -public class ViewAuditLogReportAction - extends AbstractActionSupport - implements SecureAction, ServletRequestAware, Preparable -{ - protected HttpServletRequest request; - - @Inject - private UserRepositories userRepositories; - - @Inject - private AuditManager auditManager; - - private String repository; - - private List<String> repositories; - - private String groupId; - - private String artifactId; - - private String startDate; - - private String endDate; - - private int rowCount = 30; - - private int page = 1; - - protected boolean isLastPage = true; - - private List<AuditEvent> auditLogs; - - private static final String ALL_REPOSITORIES = "all"; - - private String initial = "true"; - - private String headerName; - - private static final String HEADER_LATEST_EVENTS = "Latest Events"; - - private static final String HEADER_RESULTS = "Results"; - - private String[] datePatterns = - new String[]{ "MM/dd/yy", "MM/dd/yyyy", "MMMMM/dd/yyyy", "MMMMM/dd/yy", "dd MMMMM yyyy", "dd/MM/yy", - "dd/MM/yyyy", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy-dd-MM", "MM-dd-yyyy", "MM-dd-yy" }; - - - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - // TODO: should require this, but for now we trust in the list of repositories -// bundle.setRequiresAuthentication( true ); -// bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_VIEW_AUDIT_LOG ); - - return bundle; - } - - public void setServletRequest( HttpServletRequest request ) - { - this.request = request; - } - - @SuppressWarnings( "unchecked" ) - public void prepare() - throws Exception - { - repositories = new ArrayList<String>(); - repositories.add( ALL_REPOSITORIES ); - List<String> repos = getManagableRepositories(); - repositories.addAll( repos ); - - auditLogs = null; - groupId = ""; - artifactId = ""; - repository = ""; - - if ( Boolean.parseBoolean( initial ) ) - { - headerName = HEADER_LATEST_EVENTS; - } - else - { - headerName = HEADER_RESULTS; - } - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - auditLogs = auditManager.getMostRecentAuditEvents( repositorySession.getRepository(), repos ); - } - finally - { - repositorySession.close(); - } - } - - public String execute() - throws Exception - { - Date startDateInDF = null; - Date endDateInDF = null; - if ( !StringUtils.isEmpty( startDate ) ) - { - startDateInDF = DateUtils.parseDate( startDate, datePatterns ); - } - - if ( !StringUtils.isEmpty( endDate ) ) - { - endDateInDF = DateUtils.parseDate( endDate, datePatterns ); - Calendar cal = Calendar.getInstance(); - cal.setTime( endDateInDF ); - cal.set( Calendar.HOUR, 23 ); - cal.set( Calendar.MINUTE, 59 ); - cal.set( Calendar.SECOND, 59 ); - - endDateInDF = cal.getTime(); - } - - Collection<String> repos = getManagableRepositories(); - if ( !repository.equals( ALL_REPOSITORIES ) ) - { - if ( repos.contains( repository ) ) - { - repos = Collections.singletonList( repository ); - } - else - { - repos = Collections.emptyList(); - } - } - - if ( StringUtils.isEmpty( groupId ) && !StringUtils.isEmpty( artifactId ) ) - { - // Until we store the full artifact metadata in the audit event, we can't query by these individually - addActionError( "If you specify an artifact ID, you must specify a group ID" ); - auditLogs = null; - return INPUT; - } - - String resource = null; - if ( !StringUtils.isEmpty( groupId ) ) - { - String groupIdAsPath = groupId.replace( '.', '/' ); - if ( StringUtils.isEmpty( artifactId ) ) - { - resource = groupIdAsPath; - } - else - { - resource = groupIdAsPath + "/" + artifactId; - } - } - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - auditLogs = - auditManager.getAuditEventsInRange( repositorySession.getRepository(), repos, resource, startDateInDF, - endDateInDF ); - } - finally - { - repositorySession.close(); - } - - headerName = HEADER_RESULTS; - - if ( auditLogs.isEmpty() ) - { - addActionError( "No audit logs found." ); - initial = "true"; - return SUCCESS; - } - else - { - initial = "false"; - return paginate(); - } - } - - private String paginate() - { - int rowCount = getRowCount(); - int extraPage = ( auditLogs.size() % rowCount ) != 0 ? 1 : 0; - int totalPages = ( auditLogs.size() / rowCount ) + extraPage; - - int currentPage = getPage(); - if ( currentPage > totalPages ) - { - addActionError( - "Error encountered while generating report :: The requested page exceeds the total number of pages." ); - return ERROR; - } - - if ( currentPage == totalPages ) - { - isLastPage = true; - } - else - { - isLastPage = false; - } - - int start = rowCount * ( currentPage - 1 ); - int end = ( start + rowCount ) - 1; - - if ( end >= auditLogs.size() ) - { - end = auditLogs.size() - 1; - } - - auditLogs = auditLogs.subList( start, end + 1 ); - - return SUCCESS; - } - - private List<String> getManagableRepositories() - { - try - { - return userRepositories.getManagableRepositoryIds( getPrincipal() ); - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - public String getRepository() - { - return repository; - } - - public void setRepository( String repository ) - { - this.repository = repository; - } - - public List<String> getRepositories() - { - return repositories; - } - - public void setRepositories( List<String> repositories ) - { - this.repositories = repositories; - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public List<AuditEvent> getAuditLogs() - { - return auditLogs; - } - - public int getRowCount() - { - return rowCount; - } - - public void setRowCount( int rowCount ) - { - this.rowCount = rowCount; - } - - public String getStartDate() - { - return startDate; - } - - public void setStartDate( String startDate ) - { - this.startDate = startDate; - } - - public String getEndDate() - { - return endDate; - } - - public void setEndDate( String endDate ) - { - this.endDate = endDate; - } - - public int getPage() - { - return page; - } - - public void setPage( int page ) - { - this.page = page; - } - - public boolean getIsLastPage() - { - return isLastPage; - } - - public void setIsLastPage( boolean isLastPage ) - { - this.isLastPage = isLastPage; - } - - public String getInitial() - { - return initial; - } - - public void setInitial( String initial ) - { - this.initial = initial; - } - - public String getHeaderName() - { - return headerName; - } - - public void setHeaderName( String headerName ) - { - this.headerName = headerName; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/interceptor/ConfigurationInterceptor.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/interceptor/ConfigurationInterceptor.java deleted file mode 100644 index 4d0c08cdc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/interceptor/ConfigurationInterceptor.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.apache.archiva.web.interceptor; - -/* - * 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.xwork2.ActionInvocation; -import com.opensymphony.xwork2.interceptor.Interceptor; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.struts2.ServletActionContext; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Service; - -import javax.inject.Inject; -import javax.servlet.ServletContext; - -/** - * An interceptor that makes the configuration bits available, both to the application and the webapp. - */ -@Service( "configurationInterceptor" ) -@Scope( "prototype" ) -public class ConfigurationInterceptor - implements Interceptor -{ - - @Inject - private ArchivaConfiguration configuration; - - public String intercept( ActionInvocation actionInvocation ) - throws Exception - { - // populate webapp configuration bits into the session - ServletContext applicationScope = ServletActionContext.getServletContext(); - applicationScope.setAttribute( "uiOptions", configuration.getConfiguration().getWebapp().getUi() ); - - return actionInvocation.invoke(); - } - - public void destroy() - { - // This space left intentionally blank - } - - public void init() - { - // This space left intentionally blank - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java deleted file mode 100644 index faff746c8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java +++ /dev/null @@ -1,232 +0,0 @@ -package org.apache.archiva.web.mapper; - -/* - * 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.xwork2.config.ConfigurationManager; -import org.apache.struts2.dispatcher.mapper.ActionMapping; -import org.apache.struts2.dispatcher.mapper.DefaultActionMapper; - -import org.apache.commons.lang.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -/** - * Map alternate URLs to specific actions. Used for the repository browser and the proxy. - * - */ -public class RepositoryActionMapper - extends DefaultActionMapper -{ - private static final String ACTION_BROWSE = "browse"; - - private static final String ACTION_BROWSE_ARTIFACT = "browseArtifact"; - - private static final String ACTION_BROWSE_GROUP = "browseGroup"; - - private static final String ACTION_SHOW_ARTIFACT = "showArtifact"; - - private static final String ACTION_SHOW_ARTIFACT_DEPENDEES = "showArtifactDependees"; - - private static final String ACTION_SHOW_ARTIFACT_DEPENDENCIES = "showArtifactDependencies"; - - private static final String ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE = "showArtifactDependencyTree"; - - private static final String ACTION_SHOW_ARTIFACT_MAILING_LISTS = "showArtifactMailingLists"; - - private static final String BROWSE_PREFIX = "/browse"; - - private static final String METHOD_DEPENDENCIES = "dependencies"; - - private static final String METHOD_DEPENDENCY_TREE = "dependencyTree"; - - private static final String METHOD_MAILING_LISTS = "mailingLists"; - - private static final String METHOD_USEDBY = "usedby"; - - private static final String PARAM_ARTIFACT_ID = "artifactId"; - - private static final String PARAM_GROUP_ID = "groupId"; - - private static final String PARAM_VERSION = "version"; - - private static final String ACTION_EXTENSION = "action"; - - public ActionMapping getMapping( HttpServletRequest httpServletRequest, ConfigurationManager manager ) - { - String path = httpServletRequest.getServletPath(); - - if ("".equals(path)){ - // if JEE 5 spec is correctly implemented, the "/*" pattern implies an empty string in servletpath - path = httpServletRequest.getPathInfo(); - } - - if (StringUtils.isEmpty( path )) - { - // try RequestURI in last at least for StrutsTestCase - path = httpServletRequest.getRequestURI(); - } - - if ( path.startsWith( BROWSE_PREFIX ) ) - { - path = path.substring( BROWSE_PREFIX.length() ); - if ( StringUtils.isBlank( path ) || - StringUtils.equals( path, "/" ) || - StringUtils.equals( path, ".action" ) ) - { - // Return "root" browse. - return createActionMapping( ACTION_BROWSE, "/", "", null ); - } - else - { - Map<String, String> params = new HashMap<String, String>(); - - if ( path.charAt( 0 ) == '/' ) - { - path = path.substring( 1 ); - } - - String[] parts = path.split( "/" ); - switch ( parts.length ) - { - case 1: - params.put( PARAM_GROUP_ID, parts[0] ); - return createActionMapping( ACTION_BROWSE_GROUP, "/", "", params ); - - case 2: - params.put( PARAM_GROUP_ID, parts[0] ); - params.put( PARAM_ARTIFACT_ID, parts[1] ); - return createActionMapping( ACTION_BROWSE_ARTIFACT, "/", "", params ); - - case 3: - params.put( PARAM_GROUP_ID, parts[0] ); - params.put( PARAM_ARTIFACT_ID, parts[1] ); - params.put( PARAM_VERSION, parts[2] ); - return createActionMapping( ACTION_SHOW_ARTIFACT, "/", "", params ); - - case 4: - params.put( PARAM_GROUP_ID, parts[0] ); - params.put( PARAM_ARTIFACT_ID, parts[1] ); - params.put( PARAM_VERSION, parts[2] ); - - if ( METHOD_DEPENDENCIES.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_DEPENDENCIES, "/", "", params ); - } - else if ( METHOD_MAILING_LISTS.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_MAILING_LISTS, "/", "", params ); - } - else if ( METHOD_USEDBY.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_DEPENDEES, "/", "", params ); - } - else if ( METHOD_DEPENDENCY_TREE.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE, "/", "", params ); - } - break; - } - } - } - - return super.getMapping( httpServletRequest, manager ); - } - - @SuppressWarnings("unchecked") - @Override - public String getUriFromActionMapping( ActionMapping actionMapping ) - { - Map<String, Object> params = actionMapping.getParams(); - if ( ACTION_BROWSE.equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX; - } - else if ( ACTION_BROWSE_GROUP.equals( actionMapping.getName() ) ) - { - return toUri( params, false, false, null ); - } - else if ( ACTION_BROWSE_ARTIFACT.equals( actionMapping.getName() ) ) - { - return toUri( params, true, false, null ); - } - else if ( ACTION_SHOW_ARTIFACT.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, null ); - } - else if ( ACTION_SHOW_ARTIFACT_DEPENDENCIES.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_DEPENDENCIES ); - } - else if ( ACTION_SHOW_ARTIFACT_MAILING_LISTS.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_MAILING_LISTS ); - } - else if ( ACTION_SHOW_ARTIFACT_DEPENDEES.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_USEDBY ); - } - else if ( ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_DEPENDENCY_TREE ); - } - - return super.getUriFromActionMapping( actionMapping ); - } - - private String toUri( Map<String, Object> params, boolean artifactId, boolean version, String method ) - { - StringBuilder buf = new StringBuilder(); - - buf.append( BROWSE_PREFIX ); - buf.append( '/' ); - buf.append( params.remove( PARAM_GROUP_ID ) ); - - if ( artifactId ) - { - buf.append( '/' ); - buf.append( params.remove( PARAM_ARTIFACT_ID ) ); - - if ( version ) - { - buf.append( '/' ); - buf.append( params.remove( PARAM_VERSION ) ); - - if ( StringUtils.isNotBlank( method ) ) - { - buf.append( '/' ); - buf.append( method ); - } - } - } - - return buf.toString(); - } - - private ActionMapping createActionMapping( String name, String namespace, String method, Map params ) - { - ActionMapping mapping = new ActionMapping( name, namespace, method, params ); - mapping.setExtension( ACTION_EXTENSION ); - - return mapping; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/CopyPasteSnippetTag.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/CopyPasteSnippetTag.java deleted file mode 100644 index 2f3a12137..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/CopyPasteSnippetTag.java +++ /dev/null @@ -1,207 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.commons.lang.StringEscapeUtils; -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.TagSupport; -import java.io.IOException; - -/** - * CopyPasteSnippetTag - * - * - */ -@StrutsTag(name = "copy-paste-snippet", tldBodyContent = "empty", tldTagClass = "org.apache.archiva.web.tags.CopyPasteSnippetTag", description = "Render a copy paste snippet for the provided object") -public class CopyPasteSnippetTag - extends TagSupport -{ - private Logger log = LoggerFactory.getLogger( CopyPasteSnippetTag.class ); - - private Object object; - - private String wrapper = PRE; - - public static final String PRE = "pre"; - - public static final String TOGGLE = "toggle"; - - @Override - public void release() - { - object = null; - super.release(); - } - - @Override - public int doEndTag() - throws JspException - { - StringBuilder prefix = new StringBuilder(); - StringBuilder buf = new StringBuilder(); - StringBuilder suffix = new StringBuilder(); - - if ( object == null ) - { - buf.append( "Error generating snippet." ); - log.error( "Unable to generate snippet for null object." ); - } - else if ( object instanceof ManagedRepository ) - { - ManagedRepository repo = (ManagedRepository) object; - - if ( TOGGLE.equals( wrapper ) ) - { - prefix.append( "<a href=\"#\" class=\"expand\">Show POM Snippet</a><br/>" ); - prefix.append( "<pre class=\"pom\"><code>" ); - - suffix.append( "</code></pre>" ); - } - else if ( PRE.equals( wrapper ) ) - { - prefix.append( "<pre>" ); - suffix.append( "</pre>" ); - } - - createSnippet( buf, repo, pageContext ); - } - else - { - buf.append( "Unable to generate snippet for object " ).append( object.getClass().getName() ); - } - - try - { - JspWriter out = pageContext.getOut(); - - out.write( prefix.toString() ); - out.write( StringEscapeUtils.escapeXml( buf.toString() ) ); - out.write( suffix.toString() ); - - out.flush(); - } - catch ( IOException e ) - { - throw new JspException( "Unable to write snippet to output: " + e.getMessage(), e ); - } - - return super.doEndTag(); - } - - @StrutsTagAttribute(description = "The Object to Render", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setObject( Object object ) - { - this.object = object; - } - - @StrutsTagAttribute(description = "The wrapper type to use, can be 'pre' or 'toggle'", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setWrapper( String wrapper ) - { - this.wrapper = wrapper; - } - - private void createSnippet( StringBuilder snippet, ManagedRepository repo, PageContext pageContext ) - { - snippet.append( "<project>\n" ); - snippet.append( " ...\n" ); - snippet.append( " <distributionManagement>\n" ); - - String distRepoName = "repository"; - if ( repo.isSnapshots() ) - { - distRepoName = "snapshotRepository"; - } - - snippet.append( " <" ).append( distRepoName ).append( ">\n" ); - snippet.append( " <id>" ).append( repo.getId() ).append( "</id>\n" ); - snippet.append( " <url>" ).append( ContextUtils.getBaseURL( pageContext, "repository" ) ); - snippet.append( "/" ).append( repo.getId() ).append( "/" ).append( "</url>\n" ); - - if ( !"default".equals( repo.getLayout() ) ) - { - snippet.append( " <layout>" ).append( repo.getLayout() ).append( "</layout>" ); - } - - snippet.append( " </" ).append( distRepoName ).append( ">\n" ); - snippet.append( " </distributionManagement>\n" ); - snippet.append( "\n" ); - - snippet.append( " <repositories>\n" ); - snippet.append( " <repository>\n" ); - snippet.append( " <id>" ).append( repo.getId() ).append( "</id>\n" ); - snippet.append( " <name>" ).append( repo.getName() ).append( "</name>\n" ); - - snippet.append( " <url>" ); - snippet.append( ContextUtils.getBaseURL( pageContext, "repository" ) ); - snippet.append( "/" ).append( repo.getId() ).append( "/" ); - - snippet.append( "</url>\n" ); - - if ( !"default".equals( repo.getLayout() ) ) - { - snippet.append( " <layout>" ).append( repo.getLayout() ).append( "</layout>\n" ); - } - - snippet.append( " <releases>\n" ); - snippet.append( " <enabled>" ).append( Boolean.valueOf( repo.isReleases() ) ).append( "</enabled>\n" ); - snippet.append( " </releases>\n" ); - snippet.append( " <snapshots>\n" ); - snippet.append( " <enabled>" ).append( Boolean.valueOf( repo.isSnapshots() ) ).append( "</enabled>\n" ); - snippet.append( " </snapshots>\n" ); - snippet.append( " </repository>\n" ); - snippet.append( " </repositories>\n" ); - snippet.append( " <pluginRepositories>\n" ); - snippet.append( " <pluginRepository>\n" ); - snippet.append( " <id>" ).append( repo.getId() ).append( "</id>\n" ); - snippet.append( " <name>" ).append( repo.getName() ).append( "</name>\n" ); - - snippet.append( " <url>" ); - snippet.append( ContextUtils.getBaseURL( pageContext, "repository" ) ); - snippet.append( "/" ).append( repo.getId() ).append( "/" ); - - snippet.append( "</url>\n" ); - - if ( !"default".equals( repo.getLayout() ) ) - { - snippet.append( " <layout>" ).append( repo.getLayout() ).append( "</layout>\n" ); - } - - snippet.append( " <releases>\n" ); - snippet.append( " <enabled>" ).append( Boolean.valueOf( repo.isReleases() ) ).append( "</enabled>\n" ); - snippet.append( " </releases>\n" ); - snippet.append( " <snapshots>\n" ); - snippet.append( " <enabled>" ).append( Boolean.valueOf( repo.isSnapshots() ) ).append( "</enabled>\n" ); - snippet.append( " </snapshots>\n" ); - snippet.append( " </pluginRepository>\n" ); - snippet.append( " </pluginRepositories>\n" ); - - snippet.append( " ...\n" ); - snippet.append( "</project>\n" ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTree.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTree.java deleted file mode 100644 index 7ec3cf3b5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTree.java +++ /dev/null @@ -1,209 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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.xwork2.ActionContext; -import org.apache.archiva.common.ArchivaException; -import org.apache.archiva.dependency.tree.maven2.DependencyTreeBuilder; -import org.apache.archiva.model.Keys; -import org.apache.archiva.security.ArchivaXworkUser; -import org.apache.archiva.security.UserRepositories; -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.graph.DependencyNode; -import org.sonatype.aether.graph.DependencyVisitor; -import org.springframework.stereotype.Service; - -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.List; - -/** - * DependencyTree - */ -@Service( "dependencyTree" ) -public class DependencyTree -{ - private Logger log = LoggerFactory.getLogger( DependencyTree.class ); - - - @Inject - private DependencyTreeBuilder dependencyTreeBuilder; - - @Inject - private UserRepositories userRepositories; - - public static class TreeEntry - { - private String pre = ""; - - private String post = ""; - - private Artifact artifact; - - public void setArtifact( Artifact artifact ) - { - this.artifact = artifact; - } - - public Artifact getArtifact() - { - return artifact; - } - - public String getPost() - { - return post; - } - - public String getPre() - { - return pre; - } - - public void appendPre( String string ) - { - this.pre += string; - } - - public void appendPost( String string ) - { - this.post += string; - } - } - - public List<TreeEntry> gatherTreeList( String groupId, String artifactId, String modelVersion ) - throws ArchivaException - { - if ( StringUtils.isBlank( groupId ) ) - { - String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion ) - + "]: groupId is blank."; - log.error( emsg ); - throw new ArchivaException( emsg ); - } - - if ( StringUtils.isBlank( artifactId ) ) - { - String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion ) - + "]: artifactId is blank."; - log.error( emsg ); - throw new ArchivaException( emsg ); - } - - if ( StringUtils.isBlank( modelVersion ) ) - { - String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion ) - + "]: version is blank."; - log.error( emsg ); - throw new ArchivaException( emsg ); - } - - // TODO Cache the results to disk, in XML format, in the same place as the artifact is located. - - TreeListVisitor visitor = new TreeListVisitor(); - try - { - dependencyTreeBuilder.buildDependencyTree( userRepositories.getObservableRepositoryIds( getPrincipal() ), - groupId, artifactId, modelVersion, visitor ); - } - catch ( Exception e ) - { - throw new ArchivaException( "Unable to build dependency tree: " + e.getMessage(), e ); - } - - return visitor.getList(); - } - - private String getPrincipal() - { - return ArchivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() ); - } - - private static class TreeListVisitor - implements DependencyVisitor - { - private List<TreeEntry> list; - - private TreeEntry currentEntry; - - boolean firstChild = true; - - private DependencyNode firstNode; - - public TreeListVisitor() - { - this.list = new ArrayList<TreeEntry>(); - } - - public List<TreeEntry> getList() - { - return this.list; - } - - public boolean visitEnter( DependencyNode node ) - { - if ( firstNode == null ) - { - firstNode = node; - } - - currentEntry = new TreeEntry(); - - if ( firstChild ) - { - currentEntry.appendPre( "<ul>" ); - } - - currentEntry.appendPre( "<li>" ); - currentEntry.setArtifact( node.getDependency().getArtifact() ); - currentEntry.appendPost( "</li>" ); - this.list.add( currentEntry ); - - if ( !node.getChildren().isEmpty() ) - { - firstChild = true; - } - - return true; - } - - public boolean visitLeave( org.sonatype.aether.graph.DependencyNode node ) - { - firstChild = false; - - if ( !node.getChildren().isEmpty() ) - { - currentEntry.appendPost( "</ul>" ); - } - - if ( node == firstNode ) - { - currentEntry.appendPost( "</ul>" ); - } - - return true; - } - - - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTreeTag.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTreeTag.java deleted file mode 100644 index f97204fe8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTreeTag.java +++ /dev/null @@ -1,239 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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.commons.collections.CollectionUtils; -import org.apache.commons.collections.IteratorUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.common.ArchivaException; -import org.apache.archiva.web.tags.DependencyTree.TreeEntry; -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.springframework.beans.BeansException; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Iterator; -import java.util.List; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.IterationTag; -import javax.servlet.jsp.tagext.TagSupport; -import javax.servlet.jsp.tagext.TryCatchFinally; - -/** - * DependencyTreeTag - just here to output the dependency tree to the browser. - * It was easier to do it this way, vs accessing the dependency graph via a JSP. - * - * <pre> - * <archiva:dependency-tree groupId="org.apache.archiva" - * artifactId="archiva-common" - * version="1.3.5" - * nodevar="node"> - * <b>${node.groupId}</b>:<b>${node.artifactId}</b>:<b>${node.version}</b> (${node.scope}) - * </archiva:dependency-tree> - * </pre> - * - * - */ -@StrutsTag(name = "dependency-tree", tldBodyContent = "JSP", tldTagClass = "org.apache.archiva.web.tags.DependencyTreeTag", description = "Render a dependency tree for the provided project.") -public class DependencyTreeTag - extends TagSupport - implements IterationTag, TryCatchFinally -{ - private String groupId; - - private String artifactId; - - @SuppressWarnings("unused") - private String version; - - private String nodevar; - - private Iterator<TreeEntry> treeIterator; - - private List<TreeEntry> tree; - - private TreeEntry currentTreeEntry; - - private String modelVersion; - - public int doAfterBody() - throws JspException - { - if ( currentTreeEntry != null ) - { - out( currentTreeEntry.getPost() ); - } - - if ( treeIterator.hasNext() ) - { - currentTreeEntry = treeIterator.next(); - out( currentTreeEntry.getPre() ); - exposeVariables(); - return EVAL_BODY_AGAIN; - } - - out( "\n</div><!-- end of dependency-graph -->" ); - - return SKIP_BODY; - } - - public void doCatch( Throwable t ) - throws Throwable - { - throw t; - } - - public void doFinally() - { - unExposeVariables(); - } - - @SuppressWarnings("unchecked") - public int doStartTag() - throws JspException - { - DependencyTree deptree; - try - { - WebApplicationContext webApplicationContext = - WebApplicationContextUtils.getRequiredWebApplicationContext( pageContext.getServletContext() ); - - deptree = webApplicationContext.getBean( "dependencyTree", DependencyTree.class ); - } - catch ( BeansException e ) - { - throw new JspException( "Unable to lookup DependencyTree: " + e.getMessage(), e ); - } - - if ( deptree == null ) - { - throw new JspException( "Unable to process dependency tree. Component not found." ); - } - - if ( StringUtils.isBlank( nodevar ) ) - { - nodevar = "node"; - } - - out( "<div class=\"dependency-graph\">" ); - try - { - this.tree = deptree.gatherTreeList( groupId, artifactId, modelVersion ); - - if ( CollectionUtils.isEmpty( this.tree ) ) - { - return SKIP_BODY; - } - - treeIterator = tree.iterator(); - - currentTreeEntry = treeIterator.next(); - out( currentTreeEntry.getPre() ); - exposeVariables(); - } - catch ( ArchivaException e ) - { - treeIterator = IteratorUtils.EMPTY_LIST_ITERATOR; - - out("<pre>"); - e.printStackTrace( new PrintWriter( pageContext.getOut() ) ); - out("</pre>"); - } - - return EVAL_BODY_INCLUDE; - } - - public void release() - { - groupId = ""; - artifactId = ""; - version = ""; - nodevar = ""; - tree = null; - treeIterator = null; - super.release(); - } - - @StrutsTagAttribute(description = "The artifactId", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - @StrutsTagAttribute(description = "The groupId", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - @StrutsTagAttribute(description = "The variable name for the node.", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setNodevar( String nodevar ) - { - this.nodevar = nodevar; - } - - @StrutsTagAttribute(description = "The version", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setVersion( String version ) - { - this.version = version; - } - - @StrutsTagAttribute(description = "The version of the project model. Used to verify the dependency graph for generic snapshots not yet in the repo.", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setModelVersion( String modelVersion ) - { - this.modelVersion = modelVersion; - } - - private void exposeVariables() - throws JspException - { - if ( currentTreeEntry == null ) - { - pageContext.removeAttribute( nodevar, PageContext.PAGE_SCOPE ); - } - else - { - pageContext.setAttribute( nodevar, currentTreeEntry.getArtifact() ); - } - } - - private void out( String msg ) - throws JspException - { - try - { - pageContext.getOut().print( msg ); - } - catch ( IOException e ) - { - throw new JspException( "Unable to output to jsp page context." ); - } - } - - private void unExposeVariables() - { - pageContext.removeAttribute( nodevar, PageContext.PAGE_SCOPE ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/ExpressionTool.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/ExpressionTool.java deleted file mode 100644 index cc083222f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/ExpressionTool.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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.taglibs.standard.tag.common.core.NullAttributeException; -import org.apache.taglibs.standard.tag.el.core.ExpressionUtil; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.Tag; - -/** - * ExpressionTool - * - * - */ -public class ExpressionTool -{ - private PageContext pageContext; - - private Tag tag; - - private String tagName; - - public ExpressionTool( PageContext pageContext, Tag tag, String tagName ) - { - this.pageContext = pageContext; - this.tag = tag; - this.tagName = tagName; - } - - public boolean optionalBoolean( String propertyName, String expression, boolean defaultValue ) - throws JspException - { - try - { - Boolean ret = (Boolean) ExpressionUtil.evalNotNull( this.tagName, propertyName, expression, Boolean.class, - this.tag, this.pageContext ); - - if ( ret == null ) - { - return defaultValue; - } - - return ret.booleanValue(); - } - catch ( NullAttributeException e ) - { - return defaultValue; - } - } - - public String optionalString( String propertyName, String expression, String defaultValue ) - throws JspException - { - try - { - String ret = (String) ExpressionUtil.evalNotNull( this.tagName, propertyName, expression, String.class, - this.tag, this.pageContext ); - - if ( ret == null ) - { - return defaultValue; - } - - return ret; - } - catch ( NullAttributeException e ) - { - return defaultValue; - } - } - - public String requiredString( String propertyName, String expression ) - throws JspException - { - try - { - String ret = (String) ExpressionUtil.evalNotNull( this.tagName, propertyName, expression, String.class, - this.tag, this.pageContext ); - return ret; - } - catch ( NullAttributeException e ) - { - String emsg = "Required " + this.tagName + " property [" + propertyName + "] is null!"; - - log( emsg, e ); - throw new JspException( emsg ); - } - } - - private void log( String msg, Throwable t ) - { - pageContext.getServletContext().log( msg, t ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLink.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLink.java deleted file mode 100644 index e1661eeae..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLink.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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.struts2.StrutsException; -import org.apache.struts2.components.Component; - -import com.opensymphony.xwork2.util.ValueStack; -import java.io.IOException; -import java.io.Writer; -import java.util.StringTokenizer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * GroupIdLink - * - * - */ -public class GroupIdLink - extends Component -{ - private static final String ACTION = "browseGroup"; - - private static final String NAMESPACE = "/"; - - private static final boolean includeContext = true; - - private static final boolean encode = true; - - private static final String method = null; - - private HttpServletRequest req; - - private HttpServletResponse res; - - private String groupId; - - private boolean includeTop = false; - - public GroupIdLink( ValueStack stack, HttpServletRequest req, HttpServletResponse res ) - { - super( stack ); - this.req = req; - this.res = res; - } - - @Override - public boolean end( Writer writer, String body ) - { - StringBuilder sb = new StringBuilder(); - - sb.append( "<span class=\"groupId\">" ); - - if ( includeTop ) - { - sb.append( "<a href=\"" ); - sb.append( determineBrowseActionUrl() ); - sb.append( "\">[top]</a> / " ); // TODO: i18n - } - - StringTokenizer tok = new StringTokenizer( groupId, "." ); - String cumulativeGroup = null; - - while ( tok.hasMoreTokens() ) - { - String token = tok.nextToken(); - - if ( cumulativeGroup == null ) - { - cumulativeGroup = token; - } - else - { - cumulativeGroup += "." + token; - } - sb.append( "<a href=\"" ); - sb.append( determineBrowseGroupActionUrl( cumulativeGroup ) ); - sb.append( "\">" ).append( token ).append( "</a> / " ); - } - - sb.append( "</span>" ); - - try - { - writer.write( sb.toString() ); - } - catch ( IOException e ) - { - throw new StrutsException( "IOError: " + e.getMessage(), e ); - } - - return super.end( writer, body ); - } - - private String determineBrowseActionUrl() - { - return determineActionURL( "browse", NAMESPACE, method, req, res, parameters, req.getScheme(), includeContext, encode, false, false ); - } - - @SuppressWarnings("unchecked") - private String determineBrowseGroupActionUrl( String gid ) - { - parameters.put( "groupId", gid ); - - return determineActionURL( ACTION, NAMESPACE, method, req, res, parameters, req.getScheme(), includeContext, encode, false, false ); - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public boolean isIncludeTop() - { - return includeTop; - } - - public void setIncludeTop( boolean includeTop ) - { - this.includeTop = includeTop; - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLinkTag.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLinkTag.java deleted file mode 100644 index 25791c992..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLinkTag.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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.xwork2.util.ValueStack; -import org.apache.struts2.components.Component; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.jsp.JspException; - -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.apache.struts2.views.jsp.ComponentTagSupport; - -/** - * GroupIdLink - * - * - */ -@StrutsTag(name = "groupIdLink", tldBodyContent = "empty", tldTagClass = "org.apache.archiva.web.tags.GroupIdLinkTag", description = "Render a groupId as a set of Links") -public class GroupIdLinkTag - extends ComponentTagSupport -{ - private String var_; // stores EL-based property - - private String var; // stores the evaluated object. - - private boolean includeTop = false; - - @Override - public Component getBean(ValueStack valueStack, HttpServletRequest request, HttpServletResponse response) { - return new GroupIdLink( valueStack, request, response ); - } - - @Override - public void release() - { - var_ = null; - var = null; - includeTop = false; - - super.release(); - } - - @Override - public int doEndTag() - throws JspException - { - evaluateExpressions(); - - GroupIdLink groupIdLink = (GroupIdLink)component; - - groupIdLink.setGroupId( var ); - groupIdLink.setIncludeTop( includeTop ); - - return super.doEndTag(); - } - - private void evaluateExpressions() - throws JspException - { - ExpressionTool exprTool = new ExpressionTool( pageContext, this, "groupIdLink" ); - - var = exprTool.optionalString( "var", var_, "" ); - } - - @StrutsTagAttribute(description = "The GroupID String", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setVar( String value ) - { - this.var_ = value; - } - - @StrutsTagAttribute(description = "Boolean indicating if 'top' link should be created or not.", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setIncludeTop( boolean includeTop ) - { - this.includeTop = includeTop; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/util/ContextUtils.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/util/ContextUtils.java deleted file mode 100644 index 914f440f3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/util/ContextUtils.java +++ /dev/null @@ -1,122 +0,0 @@ -package org.apache.archiva.web.util; - -/* - * 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.commons.lang.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.jsp.PageContext; - -/** - * ContextUtils - * - * - */ -public class ContextUtils -{ - private static final Map<String, Integer> defaultSchemePortMap; - - static - { - defaultSchemePortMap = new HashMap<String, Integer>(); - defaultSchemePortMap.put( "http", Integer.valueOf( 80 ) ); - defaultSchemePortMap.put( "https", Integer.valueOf( 443 ) ); - } - - /** - * Using the page context, get the base url. - * - * @param pageContext the page context to use - * @return the base url with module name. - */ - public static String getBaseURL( PageContext pageContext ) - { - return getBaseURL( pageContext, null ); - } - - /** - * Using the page context, get the base url and append an optional resource name to the end of the provided url. - * - * @param pageContext the page context to use - * @param resource the resource name (or null if no resource name specified) - * @return the base url with resource name. - */ - public static String getBaseURL( PageContext pageContext, String resource ) - { - HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); - return getBaseURL( request, resource ); - } - - /** - * Using the http servlet request, get the base url and append an optional resource name to the end of the url. - * - * @param request the request to use - * @param resource the resource name (or null if not resource name should be appended) - * @return the base url with resource name. - */ - public static String getBaseURL( HttpServletRequest request, String resource ) - { - StringBuilder baseUrl = new StringBuilder(); - - baseUrl.append( request.getScheme() ).append( "://" ); - baseUrl.append( getServerName( request ) ); - baseUrl.append( request.getContextPath() ); - - if ( StringUtils.isNotBlank( resource ) ) - { - if ( !baseUrl.toString().endsWith( "/" ) ) - { - baseUrl.append( "/" ); - } - - baseUrl.append( resource ); - } - - return baseUrl.toString(); - } - - private static String getServerName( HttpServletRequest request ) - { - String name = request.getHeader( "X-Forwarded-Host" ); - if ( name == null ) - { - name = request.getServerName(); - int portnum = request.getServerPort(); - - // Only add port if non-standard. - Integer defaultPortnum = (Integer) defaultSchemePortMap.get( request.getScheme() ); - if ( ( defaultPortnum == null ) || ( defaultPortnum.intValue() != portnum ) ) - { - name = name + ":" + String.valueOf( portnum ); - } - return name; - } - else - { - // respect chains of proxies, return first one (as it's the outermost visible one) - String[] hosts = name.split( "," ); - name = hosts[0].trim(); - } - return name; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/CronExpressionValidator.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/CronExpressionValidator.java deleted file mode 100644 index 1fc75d60e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/CronExpressionValidator.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.apache.archiva.web.validator; - -/* - * 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.xwork2.validator.ValidationException; -import com.opensymphony.xwork2.validator.ValidatorContext; -import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; - -/** - * Reused from Continuum crontab validator - */ -public class CronExpressionValidator - extends FieldValidatorSupport -{ - public void validate( Object obj ) - throws ValidationException - { - String cron = (String) getFieldValue( "cron", obj ); - - org.apache.archiva.redback.components.scheduler.CronExpressionValidator cronExpressionValidator = - new org.apache.archiva.redback.components.scheduler.CronExpressionValidator(); - - ValidatorContext ctxt = getValidatorContext(); - if ( !cronExpressionValidator.validate( String.valueOf( cron ) ) ) - { - ctxt.addActionError( "Invalid cron expression value(s)" ); - return; - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/IntervalValidator.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/IntervalValidator.java deleted file mode 100644 index 5f58b66ad..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/IntervalValidator.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.apache.archiva.web.validator; - -/* - * 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.xwork2.validator.ValidationException; -import com.opensymphony.xwork2.validator.ValidatorContext; -import com.opensymphony.xwork2.validator.validators.ValidatorSupport; - -/** - */ -public class IntervalValidator - extends ValidatorSupport -{ - - public void validate( Object obj ) - throws ValidationException - { - String snapshotsPolicy = (String) getFieldValue( "snapshotsPolicy", obj ); - String releasesPolicy = (String) getFieldValue( "releasesPolicy", obj ); - Integer snapshotsInterval = (Integer) getFieldValue( "snapshotsInterval", obj ); - Integer releasesInterval = (Integer) getFieldValue( "releasesInterval", obj ); - - ValidatorContext ctxt = getValidatorContext(); - - if ( !snapshotsPolicy.equals( "interval" ) ) - { - if ( snapshotsInterval.intValue() != 0 ) - { - ctxt.addActionError( "Snapshots Interval must be set to zero." ); - } - } - - if ( !releasesPolicy.equals( "interval" ) ) - { - if ( releasesInterval.intValue() != 0 ) - { - ctxt.addActionError( "Releases Interval must be set to zero." ); - } - } - - if ( ctxt.hasActionErrors() ) - { - return; - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/SyncedRepositoryValidator.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/SyncedRepositoryValidator.java deleted file mode 100644 index 5efff802b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/SyncedRepositoryValidator.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.apache.archiva.web.validator; - -/* - * 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.xwork2.validator.ValidationException; -import com.opensymphony.xwork2.validator.ValidatorContext; -import com.opensymphony.xwork2.validator.validators.ValidatorSupport; - -/** - * Validator for synced repository form. The values to be validated depends on the - * selected sync method to be used. - * - */ -public class SyncedRepositoryValidator - extends ValidatorSupport -{ - - public void validate( Object obj ) - throws ValidationException - { - - String method = (String) getFieldValue( "method", obj ); - ValidatorContext ctxt = getValidatorContext(); - - if ( method.equals( "rsync" ) ) - { - String rsyncHost = (String) getFieldValue( "rsyncHost", obj ); - if ( rsyncHost == null || rsyncHost.equals( "" ) ) - { - ctxt.addActionError( "Rsync host is required." ); - } - - String rsyncDirectory = (String) getFieldValue( "rsyncDirectory", obj ); - if ( rsyncDirectory == null || rsyncDirectory.equals( "" ) ) - { - ctxt.addActionError( "Rsync directory is required." ); - } - - String rsyncMethod = (String) getFieldValue( "rsyncMethod", obj ); - if ( rsyncMethod == null || rsyncMethod.equals( "" ) ) - { - ctxt.addActionError( "Rsync method is required." ); - } - else - { - if ( !rsyncMethod.equals( "anonymous" ) && !rsyncMethod.equals( "ssh" ) ) - { - ctxt.addActionError( "Invalid rsync method" ); - } - } - - String username = (String) getFieldValue( "username", obj ); - if ( username == null || username.equals( "" ) ) - { - ctxt.addActionError( "Username is required." ); - } - - } - else if ( method.equals( "svn" ) ) - { - String svnUrl = (String) getFieldValue( "svnUrl", obj ); - if ( svnUrl == null || svnUrl.equals( "" ) ) - { - ctxt.addActionError( "SVN url is required." ); - } - - String username = (String) getFieldValue( "username", obj ); - if ( username == null || username.equals( "" ) ) - { - ctxt.addActionError( "Username is required." ); - } - } - else if ( method.equals( "cvs" ) ) - { - String cvsRoot = (String) getFieldValue( "cvsRoot", obj ); - if ( cvsRoot == null || cvsRoot.equals( "" ) ) - { - ctxt.addActionError( "CVS root is required." ); - } - } - else if ( method.equals( "file" ) ) - { - String directory = (String) getFieldValue( "directory", obj ); - if ( directory == null || directory.equals( "" ) ) - { - ctxt.addActionError( "Directory is required." ); - } - } - - if ( ctxt.hasActionErrors() ) - { - return; - } - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/spring-context.xml deleted file mode 100755 index d79ebcb5e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/spring-context.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.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. - --> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:context="http://www.springframework.org/schema/context" - xmlns:util="http://www.springframework.org/schema/util" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd - http://www.springframework.org/schema/util - http://www.springframework.org/schema/util/spring-util-3.0.xsd" - default-lazy-init="true"> - - <context:annotation-config/> - <context:component-scan base-package="org.apache.archiva.web"/> - - <bean id="jcr-repository" class="org.apache.jackrabbit.core.RepositoryImpl" destroy-method="shutdown" lazy-init="true"> - <constructor-arg ref="jcr-config"/> - </bean> - - <bean id="jcr-config" class="org.apache.archiva.metadata.repository.jcr.ArchivaJcrRepositoryConfig" factory-method="create"> - <constructor-arg value="${appserver.base}/conf/repository.xml"/> - <constructor-arg value="${appserver.base}/data/jcr"/> - </bean> - - -</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/ehcache.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/ehcache.xml deleted file mode 100644 index 997fbe86c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/ehcache.xml +++ /dev/null @@ -1,92 +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. - --> -<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <diskStore path="java.io.tmpdir" /> - - <!-- make default cache very short lived --> - - <defaultCache - maxElementsInMemory="100" - maxElementsOnDisk="0" - eternal="false" - overflowToDisk="false" - timeToIdleSeconds="300" - timeToLiveSeconds="600" - memoryStoreEvictionPolicy="LFU" /> - - <!-- - cache Redback classes longer to avoid a lot of SQL queries - See REDBACK-227 - --> - <cache name="defaultJpox" - maxElementsInMemory="10000" - maxElementsOnDisk="0" - eternal="false" - overflowToDisk="false" - timeToIdleSeconds="1800" - timeToLiveSeconds="14400" - memoryStoreEvictionPolicy="LFU" /> - - <cache name="org.apache.archiva.redback.rbac.jdo.JdoOperation" - maxElementsInMemory="10000" - maxElementsOnDisk="0" - eternal="false" - overflowToDisk="false" - timeToIdleSeconds="1800" - timeToLiveSeconds="14400" - memoryStoreEvictionPolicy="LFU" /> - - <cache name="org.apache.archiva.redback.rbac.jdo.JdoPermission" - maxElementsInMemory="10000" - maxElementsOnDisk="0" - eternal="false" - overflowToDisk="false" - timeToIdleSeconds="1800" - timeToLiveSeconds="14400" - memoryStoreEvictionPolicy="LFU" /> - - <cache name="org.apache.archiva.redback.rbac.jdo.JdoResource" - maxElementsInMemory="10000" - maxElementsOnDisk="0" - eternal="false" - overflowToDisk="false" - timeToIdleSeconds="1800" - timeToLiveSeconds="14400" - memoryStoreEvictionPolicy="LFU" /> - - <cache name="org.apache.archiva.redback.rbac.jdo.JdoRole" - maxElementsInMemory="10000" - maxElementsOnDisk="0" - eternal="false" - overflowToDisk="false" - timeToIdleSeconds="1800" - timeToLiveSeconds="14400" - memoryStoreEvictionPolicy="LFU" /> - - <cache name="org.apache.archiva.redback.rbac.jdo.JdoUserAssignment" - maxElementsInMemory="10000" - maxElementsOnDisk="0" - eternal="false" - overflowToDisk="false" - timeToIdleSeconds="300" - timeToLiveSeconds="600" - memoryStoreEvictionPolicy="LFU" /> - -</ehcache> - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/freemarker.properties b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/freemarker.properties deleted file mode 100644 index e2c1805e7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/freemarker.properties +++ /dev/null @@ -1,20 +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. -# -# 1 hour -template_update_delay=3600000
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/log4j2.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/log4j2.xml deleted file mode 100644 index 45083aa90..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/log4j2.xml +++ /dev/null @@ -1,143 +0,0 @@ -<?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. - --> - - -<configuration> - - <properties> - <property name="logsDirectory">${sys:appserver.base}/logs</property> - </properties> - - <appenders> - - <RollingFile name="rolling" fileName="${logsDirectory}/archiva.log" - filePattern="${logsDirectory}/archiva-%d{MM-dd-yyyy}.log"> - <PatternLayout> - <pattern>%d [%t] %-5p %c %x - %m%n</pattern> - </PatternLayout> - <Policies> - <TimeBasedTriggeringPolicy /> - </Policies> - </RollingFile> - - <RollingFile name="auditlog" fileName="${logsDirectory}/archiva-audit.log" - filePattern="${logsDirectory}/logs/archiva-audit-%d{MM-dd-yyyy}.log"> - <PatternLayout> - <pattern>%d{yyyy-MM-dd HH:mm:ss} %m%n</pattern> - </PatternLayout> - <Policies> - <TimeBasedTriggeringPolicy /> - </Policies> - </RollingFile> - - <RollingFile name="redbackAuditLog" fileName="${logsDirectory}/archiva-security-audit.log" - filePattern="${logsDirectory}/archiva-security-audit.log-%d{MM-dd-yyyy}.log"> - <PatternLayout> - <pattern>%d{yyyy-MM-dd HH:mm:ss} - %X{redback.currentUser} - %m%n</pattern> - </PatternLayout> - <Policies> - <TimeBasedTriggeringPolicy /> - </Policies> - </RollingFile> - - </appenders> - <loggers> - - <logger name="org.apache.archiva.redback.struts2.action.AuditEvent" additivity="false" level="info"> - <appender-ref ref="redbackAuditLog" /> - </logger> - - <logger name="org.apache.archiva.AuditLog" additivity="false" level="info"> - <appender-ref ref="auditlog" /> - </logger> - - <!-- INFO level loggers can use the default - <logger name="org.apache.archiva.consumers" level="info"/> - - <logger name="org.apache.archiva" level="info"/> - - - <logger name="org.quartz" level="info"/> - - <logger name="org.apache.jasper" level="info"/> - - <logger name="com.opensymphony.xwork2" level="info"/> - - <logger name="org.apache.struts2" level="info"/> - - --> - - <!-- WebDav objects --> - <logger name="org.apache.archiva.webdav.ArchivaDavResource" level="info"/> - - - <logger name="org.apache.archiva.webdav.ArchivaDavResourceFactory" level="info"/> - - - <!-- squelch noisy objects (for now) --> - <logger name="org.apache.commons" level="warn"/> - - <logger name="net.sf.ehcache" level="warn"/> - - - <!-- retained for Redback --> - <logger name="JPOX" level="warn"/> - - - <logger name="JPOX.MetaData" level="error"/> - - - <logger name="JPOX.RDBMS.SQL" level="error"/> - - - <logger name="SQL" level="error"/> - - <logger name="freemarker" level="warn"/> - - <logger name="org.codehaus.plexus.component.manager.ClassicSingletonComponentManager" level="error"/> - - - <logger name="com.opensymphony.xwork2.ognl.OgnlValueStack" level="error"/> - - <logger name="org.apache.commons.configuration.DefaultConfigurationBuilder" level="error"/> - - <!-- debug wagon transfer --> - <!-- - <logger name="org.apache.archiva.proxy.common" level="debug"/> - - --> - <!-- apache httpclient debug content transfer verbose --> - <!-- - <logger name="org.apache.http.wire" level="debug"/> - - --> - <!-- apache httpclient log headers --> - <!-- - <logger name="org.apache.http.headers" level="debug"/> - - --> - - <root level="info"> - <appender-ref ref="rolling"/> - </root> - </loggers> -</configuration> - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/redback/custom.properties b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/redback/custom.properties deleted file mode 100644 index 01a599137..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/redback/custom.properties +++ /dev/null @@ -1,23 +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. -# - -# text resources within redback can be customized by overriding them here - -#password.reset.success=An email has been sent. -#password.reset.failure=No email was not sent, perhaps the user did not exist as entered. diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/DeleteArtifactAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/DeleteArtifactAction-validation.xml deleted file mode 100644 index bfe08fa1f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/DeleteArtifactAction-validation.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?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"> - -<!-- validate temporarily-trimmed inputs, actual values are then carried over to the action class to be trimmed once more. --> -<validators> - <field name="groupId"> - <field-validator type="requiredstring"> - <message>You must enter a groupId.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="artifactId"> - <field-validator type="requiredstring"> - <message>You must enter an artifactId.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <!-- version's validation is inside the validate() method of the action class --> - <field name="version"> - <field-validator type="requiredstring"> - <message>You must enter a version.</message> - </field-validator> - </field> - <field name="repositoryId"> - <!-- no requiredstring validation, because there was none before(being consistent). --> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]*$</param> - <message>Repository id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-checksumSearch-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-checksumSearch-validation.xml deleted file mode 100644 index 712e2910a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-checksumSearch-validation.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?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="q"> - <field-validator type="requiredstring"> - <message> - You must select a file, or enter the checksum. If the file was given and you receive this message, - there may have been an error generating the checksum. - </message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-filteredSearch-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-filteredSearch-validation.xml deleted file mode 100644 index 5f9c89750..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-filteredSearch-validation.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?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="rowCount"> - <field-validator type="int"> - <message>Invalid entry</message> - </field-validator> - <field-validator type="int"> - <param name="min">1</param> - <message>Row count must be larger than ${min}.</message> - </field-validator> - </field> -</validators> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-quickSearch-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-quickSearch-validation.xml deleted file mode 100644 index 705f0be19..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-quickSearch-validation.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?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="q"> - <field-validator type="requiredstring"> - <message>You must enter some search terms.</message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/UploadAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/UploadAction-validation.xml deleted file mode 100644 index b56cf3757..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/UploadAction-validation.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?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="groupId"> - <field-validator type="requiredstring"> - <message>You must enter a groupId.</message> - </field-validator> - </field> - <field name="artifactId"> - <field-validator type="requiredstring"> - <message>You must enter an artifactId.</message> - </field-validator> - </field> - <field name="version"> - <field-validator type="requiredstring"> - <message>You must enter a version.</message> - </field-validator> - </field> - <field name="packaging"> - <field-validator type="requiredstring"> - <message>You must enter a packaging.</message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction-validation.xml deleted file mode 100644 index bc3d556a3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction-validation.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?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-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^([-a-zA-Z0-9._/~:?!&=\\]|\s)+$</param> - <message>Organisation name must only contain alphanumeric characters, white-spaces(' '), equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</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 for your logo.</message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction-validation.xml deleted file mode 100644 index bbf09dd9d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction-validation.xml +++ /dev/null @@ -1,84 +0,0 @@ -<?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"> - -<!-- validate temporarily-trimmed inputs, actual values are then carried over to the action class to be trimmed once more. --> -<validators> - <field name="legacyArtifactPath.path"> - <field-validator type="requiredstring"> - <message>You must enter a legacy path.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9._/\\]+$</param> - <message>Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\), underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="groupId"> - <field-validator type="requiredstring"> - <message>You must enter a groupId.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="artifactId"> - <field-validator type="requiredstring"> - <message>You must enter an artifactId.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="version"> - <field-validator type="requiredstring"> - <message>You must enter a version.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Version must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="classifier"> - <!-- no requiredstring validation, because there was none before(being consistent). --> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]*$</param> - <message>Classifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="type"> - <field-validator type="requiredstring"> - <message>You must enter a type.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Type must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction-validation.xml deleted file mode 100644 index de8ae0993..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction-validation.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?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="networkConfiguration.maxTotal"> - <field-validator type="int"> - <param name="min">1</param> - <message>maxTotal must be at least superior to ${min}.</message> - </field-validator> - - </field> - - <field name="networkConfiguration.maxTotalPerHost"> - <field-validator type="int"> - <param name="min">1</param> - <message>maxTotalPerHost must be at least superior to ${min}.</message> - </field-validator> - - </field> - -</validators> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml deleted file mode 100644 index 669b3b102..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml +++ /dev/null @@ -1,92 +0,0 @@ -<?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="proxy.id"> - <field-validator type="requiredstring"> - <param name="trim">true</param> - <message>You must enter an identifier.</message> - </field-validator> - <field-validator type="stringlength"> - <param name="minLength">4</param> - <param name="maxLength">45</param> - <param name="trim">true</param> - <message>You must enter an identifier of 4 or more than 4 characters.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="proxy.protocol"> - <field-validator type="requiredstring"> - <param name="trim">true</param> - <message>You must enter a protocol.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9./:\\]+$</param> - <message>Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\), dots(.), colons(:), and dashes(-).</message> - </field-validator> - </field> - <field name="proxy.host"> - <field-validator type="requiredstring"> - <param name="trim">true</param> - <message>You must enter a host.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]+$</param> - <message>Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message> - </field-validator> - </field> - <field name="proxy.port"> - <field-validator type="required"> - <message>You must enter an port.</message> - </field-validator> - <field-validator type="int"> - <param name="min">1</param> -<!-- Webwork bug renders this as 65.535 - <param name="max">65535</param> - <message>Port needs to be between ${min} and ${max}</message> ---> - <message>Port needs to be larger than ${min}</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[0-9]+$</param> - <message>Port must only contain numeric characters.</message> - </field-validator> - </field> - <field name="proxy.username"> - <!-- no requiredstring validation, because there was none before(being consistent). --> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9.@/_\\]*$</param> - <message>Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\), underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> -</validators> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml deleted file mode 100644 index 68ffb6cf7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml +++ /dev/null @@ -1,81 +0,0 @@ -<?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="repository.id"> - <field-validator type="requiredstring"> - <message>You must enter a repository identifier.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.location"> - <field-validator type="requiredstring"> - <message>You must enter a directory.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]+$</param> - <message>Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.indexDirectory"> - <!-- no requiredstring validation, because there was none before(being consistent). --> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]*$</param> - <message>Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.name"> - <field-validator type="requiredstring"> - <message>You must enter a repository name.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^([a-zA-Z0-9.)/_(-]|\s)+$</param> - <message>Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.retentionCount"> - <field-validator type="int"> - <param name="min">1</param> - <param name="max">100</param> - <message>Repository Purge By Retention Count needs to be between ${min} and ${max}.</message> - </field-validator> - </field> - <field name="repository.daysOlder"> - <field-validator type="int"> - <param name="min">0</param> - <message>Repository Purge By Days Older Than needs to be larger than ${min}.</message> - </field-validator> - </field> - <field name="repository.cronExpression"> - <field-validator type="requiredstring"> - <message>Cron expression is required.</message> - </field-validator> - </field> -</validators> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction-validation.xml deleted file mode 100644 index 7902bc532..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction-validation.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?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="repository.id"> - <field-validator type="requiredstring"> - <message>You must enter a repository identifier.</message> - </field-validator> - </field> - <field name="repository.url"> - <field-validator type="requiredstring"> - <message>You must enter a url.</message> - </field-validator> - </field> - <field name="repository.name"> - <field-validator type="requiredstring"> - <message>You must enter a repository name.</message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml deleted file mode 100644 index 9f82c37bd..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml +++ /dev/null @@ -1,81 +0,0 @@ -<?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="repository.id"> - <field-validator type="requiredstring"> - <message>You must enter a repository identifier.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.location"> - <field-validator type="requiredstring"> - <message>You must enter a directory.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]+$</param> - <message>Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.indexDirectory"> - <!-- no requiredstring validation, because there was none before(being consistent). --> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]*$</param> - <message>Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.name"> - <field-validator type="requiredstring"> - <message>You must enter a repository name.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^([a-zA-Z0-9.)/_(-]|\s)+$</param> - <message>Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> - <field name="repository.retentionCount"> - <field-validator type="int"> - <param name="min">1</param> - <param name="max">100</param> - <message>Repository Purge By Retention Count needs to be between ${min} and ${max}.</message> - </field-validator> - </field> - <field name="repository.daysOlder"> - <field-validator type="int"> - <param name="min">0</param> - <message>Repository Purge By Days Older Than needs to be larger than ${min}.</message> - </field-validator> - </field> - <field name="repository.cronExpression"> - <field-validator type="requiredstring"> - <message>Cron expression is required.</message> - </field-validator> - </field> -</validators> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction-validation.xml deleted file mode 100644 index 7902bc532..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction-validation.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?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="repository.id"> - <field-validator type="requiredstring"> - <message>You must enter a repository identifier.</message> - </field-validator> - </field> - <field name="repository.url"> - <field-validator type="requiredstring"> - <message>You must enter a url.</message> - </field-validator> - </field> - <field name="repository.name"> - <field-validator type="requiredstring"> - <message>You must enter a repository name.</message> - </field-validator> - </field> -</validators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction-addRepositoryGroup-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction-addRepositoryGroup-validation.xml deleted file mode 100644 index ba5c4a94e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction-addRepositoryGroup-validation.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?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="repositoryGroup.id"> - <field-validator type="requiredstring"> - <message>Identifier field is required.</message> - </field-validator> - <field-validator type="regex"> - <param name="trim">true</param> - <param name="expression">^[a-zA-Z0-9._-]+$</param> - <message>Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message> - </field-validator> - </field> -</validators> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.properties b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.properties deleted file mode 100644 index 0569303ea..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.properties +++ /dev/null @@ -1,46 +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. -# - -#struts.ui.theme=jqboot - -# define our own action mapper here -struts.mapper.class = org.apache.archiva.web.mapper.RepositoryActionMapper - -## TODO olamy check fix for https://issues.apache.org/jira/browse/WW-3460 -## upgrade of struts version or use our own hacked ObjectFactory -struts.objectFactory = org.apache.struts2.spring.StrutsSpringObjectFactory -struts.objectFactory.spring.autoWire = type - -struts.url.includeParams = none - -## freemarker configuration -struts.freemarker.templatesCache=true -struts.freemarker.mru.max.strong.size=1000 -struts.freemarker.templatesCache.updateDelay=3600000 - -#struts.devMode = true -struts.configuration.xml.reload=true -struts.multipart.parser=jakarta -# 50M default -struts.multipart.maxSize=50485760 - -# TODO: package up a theme and share with Continuum. Should contain everything from xhtml, and set templateDir to WEB-INF/themes - -# Localization -struts.custom.i18n.resources=org.apache.archiva.redback.i18n.default,org.apache.archiva.redback.custom diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.xml deleted file mode 100644 index ef83869b0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.xml +++ /dev/null @@ -1,638 +0,0 @@ -<?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 struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" - "http://struts.apache.org/dtds/struts-2.0.dtd"> - -<struts> - - <constant name="struts.action.extension" value="action" /> - - <!-- Include plexus-security xwork configurations. --> - <include file="struts-security.xml"/> - - <package name="base" extends="struts-default"> - <interceptors> - <interceptor name="configuration" class="configurationInterceptor"/> - <interceptor name="redbackForceAdminUser" class="redbackForceAdminUserInterceptor"/> - <interceptor name="redbackSecureActions" class="redbackSecureActionInterceptor"/> - <interceptor name="redbackAutoLogin" class="redbackAutoLoginInterceptor"/> - <interceptor name="redbackPolicyEnforcement" class="redbackPolicyEnforcementInterceptor"/> - <interceptor name="paramFilter" class="com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor"/> - - <interceptor-stack name="defaultArchivaStack"> - <interceptor-ref name="exception"/> - <interceptor-ref name="alias"/> - <interceptor-ref name="servletConfig"/> - <interceptor-ref name="i18n"/> - <interceptor-ref name="prepare"/> - <interceptor-ref name="chain"/> - <interceptor-ref name="debugging"/> - <interceptor-ref name="scopedModelDriven"/> - <interceptor-ref name="modelDriven"/> - <interceptor-ref name="fileUpload"/> - <interceptor-ref name="checkbox"/> - <interceptor-ref name="multiselect"/> - <interceptor-ref name="staticParams"/> - <interceptor-ref name="actionMappingParams"/> - <interceptor-ref name="params"> - <param name="excludeParams">dojo\..*,^struts\..*</param> - <param name="acceptParamNames">[a-zA-Z0-9\-\.\]\[\(\)_'\s]+</param> - </interceptor-ref> - <interceptor-ref name="conversionError"/> - <interceptor-ref name="validation"> - <param name="excludeMethods">input,back,cancel,browse</param> - </interceptor-ref> - <interceptor-ref name="workflow"> - <param name="excludeMethods">input,back,cancel,browse</param> - </interceptor-ref> - </interceptor-stack> - - <interceptor-stack name="configuredArchivaStack"> - <interceptor-ref name="redbackForceAdminUser"/> - <interceptor-ref name="redbackAutoLogin"/> - <interceptor-ref name="defaultArchivaStack"/> - <interceptor-ref name="paramFilter"> - <param name="blocked">externalResult</param> - </interceptor-ref> - <interceptor-ref name="redbackSecureActions"> - <param name="enableReferrerCheck">false</param> - </interceptor-ref> - <interceptor-ref name="redbackPolicyEnforcement"/> - <interceptor-ref name="tokenSession"> - <param name="excludeMethods">*</param> - </interceptor-ref> - <interceptor-ref name="configuration"/> - <interceptor-ref name="validation"> - <param name="excludeMethods">input,back,cancel,browse</param> - </interceptor-ref> - <interceptor-ref name="workflow"> - <param name="excludeMethods">input,back,cancel,browse</param> - </interceptor-ref> - </interceptor-stack> - - <interceptor-stack name="unconfiguredArchivaStack"> - <interceptor-ref name="redbackForceAdminUser"/> - <interceptor-ref name="redbackAutoLogin"/> - <interceptor-ref name="defaultArchivaStack"/> - <interceptor-ref name="redbackPolicyEnforcement"/> - <interceptor-ref name="redbackSecureActions"> - <param name="enableReferrerCheck">false</param> - </interceptor-ref> - <interceptor-ref name="tokenSession"> - <param name="excludeMethods">*</param> - </interceptor-ref> - <interceptor-ref name="validation"> - <param name="excludeMethods">input,back,cancel,browse</param> - </interceptor-ref> - <interceptor-ref name="workflow"> - <param name="excludeMethods">input,back,cancel,browse</param> - </interceptor-ref> - </interceptor-stack> - - <interceptor-stack name="configuredPrepareParamsStack"> - <!-- <interceptor-ref name="prepare" /> --> - <interceptor-ref name="params"/> - <interceptor-ref name="configuredArchivaStack"/> - </interceptor-stack> - </interceptors> - - <!-- Default interceptor stack. --> - <default-interceptor-ref name="configuredArchivaStack"/> - - <global-results> - <!-- The following security-* result names arrive from the plexus-security package --> - - <result name="security-login-success" type="redirectAction">index</result> - <result name="security-login-cancel" type="redirectAction">index</result> - <result name="security-login-locked" type="redirectAction"> - <param name="actionName">index</param> - <param name="infoMessage">Account Locked</param> - </result> - <result name="security-logout" type="redirectAction">index</result> - <result name="requires-authentication" type="redirectAction"> - <param name="actionName">login</param> - <param name="namespace">/security</param> - </result> - <result name="requires-authorization" type="redirectAction"> - <param name="actionName">login</param> - <param name="namespace">/security</param> - </result> - <result name="security-register-success" type="redirectAction"> - <param name="actionName">login</param> - <param name="namespace">/security</param> - </result> - <result name="security-register-cancel" type="redirectAction"> - <param name="actionName">login</param> - <param name="namespace">/security</param> - </result> - <result name="security-account-success" type="redirectAction">index</result> - <result name="security-account-cancel" type="redirectAction"> - <param name="actionName">login</param> - <param name="namespace">/security</param> - </result> - <result name="security-admin-user-created" type="redirectAction"> - <param name="actionName">login</param> - <param name="namespace">/security</param> - </result> - <result name="security-admin-user-needed" type="redirectAction"> - <param name="actionName">addadmin</param> - <param name="namespace">/security</param> - </result> - <result name="security-must-change-password" type="redirectAction"> - <param name="actionName">password</param> - <param name="namespace">/security</param> - </result> - - <!-- Generic Catchall for those action configurations that forget to - include a result for 'error' --> - <result name="error">/WEB-INF/jsp/generalError.jsp</result> - <result name="access_to_no_repos">/WEB-INF/jsp/accessToNoRepos.jsp</result> - <result name="invalid.token">/WEB-INF/jsp/redback/invalidToken.jsp</result> - - </global-results> - </package> - - <!-- Configuration for the default package. --> - <package name="default" extends="base" namespace="/"> - - <!-- This is the redirection facility for plexus-security, - allowing plexus-security to call out from its own set of actions - into the application webapp, using global result names. --> - <action name="redbackRedirect" class="redback-redirect" method="redirect"> - <result type="redirectAction">browse</result> - </action> - - <action name="index" class="searchAction" method="input"> - <result name="input">/WEB-INF/jsp/quickSearch.jsp</result> - </action> - - <action name="filteredSearch" class="searchAction" method="filteredSearch"> - <result name="input">/WEB-INF/jsp/quickSearch.jsp</result> - <result>/WEB-INF/jsp/results.jsp</result> - <result name="error">/WEB-INF/jsp/quickSearch.jsp</result> - </action> - - <action name="quickSearch" class="searchAction" method="quickSearch"> - <result name="input">/WEB-INF/jsp/quickSearch.jsp</result> - <result>/WEB-INF/jsp/results.jsp</result> - <result name="error">/WEB-INF/jsp/quickSearch.jsp</result> - </action> - - <action name="findArtifact" class="searchAction" method="input"> - <result name="input">/WEB-INF/jsp/findArtifact.jsp</result> - </action> - - <action name="upload" class="uploadAction" method="input"> - <result name="input">/WEB-INF/jsp/upload.jsp</result> - <result name="error">/WEB-INF/jsp/upload.jsp</result> - <result name="success">/WEB-INF/jsp/upload.jsp</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - <interceptor-ref name="fileUpload"/> - </action> - - <action name="deleteArtifact" class="deleteArtifactAction" method="input"> - <result name="input">/WEB-INF/jsp/deleteArtifact.jsp</result> - <result name="error">/WEB-INF/jsp/deleteArtifact.jsp</result> - <result name="success">/WEB-INF/jsp/deleteArtifact.jsp</result> - <interceptor-ref name="configuredArchivaStack"> - <param name="tokenSession.includeMethods">doDelete</param> - </interceptor-ref> - </action> - - <action name="checksumSearch" class="searchAction" method="findArtifact"> - <result name="input">/WEB-INF/jsp/findArtifact.jsp</result> - <result name="results">/WEB-INF/jsp/results.jsp</result> - <result name="error">/WEB-INF/jsp/findArtifact.jsp</result> - <result name="artifact" type="redirect"> - /browse/${databaseResults.get(0).getNamespace()}/${databaseResults.get(0).getProject()}/${databaseResults.get(0).getVersion()} - </result> - </action> - - <action name="browse" class="browseAction" method="browse"> - <result>/WEB-INF/jsp/browse.jsp</result> - </action> - - <action name="browseGroup" class="browseAction" method="browseGroup"> - <result>/WEB-INF/jsp/browse.jsp</result> - </action> - - <action name="browseArtifact" class="browseAction" method="browseArtifact"> - <result>/WEB-INF/jsp/browse.jsp</result> - </action> - - <action name="showArtifact" class="showArtifactAction" method="artifact"> - <result name="error">/WEB-INF/jsp/generalError.jsp</result> - <result name="success">/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="showArtifactMailingLists" class="showArtifactAction" method="mailingLists"> - <result>/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="showArtifactReports" class="showArtifactAction" method="reports"> - <result>/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="showArtifactDependencies" class="showArtifactAction" method="dependencies"> - <result>/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="showArtifactDependees" class="showArtifactAction" method="dependees"> - <result>/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="showArtifactDependencyTree" class="showArtifactAction" method="dependencyTree"> - <result>/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="showProjectMetadata" class="showArtifactAction" method="projectMetadata"> - <result>/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="addMetadataProperty" class="showArtifactAction" method="addMetadataProperty"> - <result name="input">/WEB-INF/jsp/showArtifact.jsp</result> - <result name="success">/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - <action name="deleteMetadataEntry" class="showArtifactAction" method="deleteMetadataEntry"> - <result name="input">/WEB-INF/jsp/showArtifact.jsp</result> - <result name="success">/WEB-INF/jsp/showArtifact.jsp</result> - </action> - - </package> - - <package name="components" namespace="/components" extends="struts-default"> - <default-interceptor-ref name="basicStack"/> - <action name="companyInfo" class="organisationInfo"> - <result>/WEB-INF/jsp/components/companyLogo.jsp</result> - </action> - </package> - - <!-- Configuration for the admin package. --> - <package name="admin" namespace="/admin" extends="base"> - - <action name="index" class="repositoriesAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/repositories.jsp</result> - </action> - - <!-- .\ REPOSITORY GROUPS \._______________________________________ --> - - <action name="repositoryGroups" class="repositoryGroupsAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - </action> - - <action name="addRepositoryGroup" class="repositoryGroupsAction" method="addRepositoryGroup"> - <result name="input">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="error">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="success" type="redirectAction">repositoryGroups</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <action name="confirmDeleteRepositoryGroup" class="deleteRepositoryGroupAction" method="confirmDelete"> - <result name="input">/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <action name="deleteRepositoryGroup" class="deleteRepositoryGroupAction" method="delete"> - <result name="input">/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp</result> - <result name="error">/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp</result> - <result name="success" type="redirectAction">repositoryGroups</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <action name="addRepositoryToGroup" class="repositoryGroupsAction" method="addRepositoryToGroup"> - <result name="input">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="error">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="success" type="redirectAction">repositoryGroups</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="removeRepositoryFromGroup" class="repositoryGroupsAction" method="removeRepositoryFromGroup"> - <result name="input">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="error">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="success" type="redirectAction">repositoryGroups</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="sortDownRepositoryFromGroup" class="sortRepositoriesAction" method="sortDown"> - <result name="input">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="error">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="success" type="redirectAction">repositoryGroups</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="sortUpRepositoryFromGroup" class="sortRepositoriesAction" method="sortUp"> - <result name="input">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="error">/WEB-INF/jsp/admin/repositoryGroups.jsp</result> - <result name="success" type="redirectAction">repositoryGroups</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <!-- .\ REPOSITORIES \.____________________________________________ --> - - <action name="repositories" class="repositoriesAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/repositories.jsp</result> - <result name="confirm" type="redirectAction">deleteRepository</result> - </action> - - <action name="indexRepository" class="schedulerAction" method="scanRepository"> - <result type="redirectAction">repositories</result> - </action> - - <action name="addRepository" class="addManagedRepositoryAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/addRepository.jsp</result> - <result name="error">/WEB-INF/jsp/admin/addRepository.jsp</result> - <result name="confirm">/WEB-INF/jsp/admin/confirmAddRepository.jsp</result> - <result name="success" type="redirectAction">repositories</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="editRepository" class="editManagedRepositoryAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/editRepository.jsp</result> - <result name="error">/WEB-INF/jsp/admin/editRepository.jsp</result> - <result name="success" type="redirectAction">repositories</result> - <result name="confirm">/WEB-INF/jsp/admin/confirmAddRepository.jsp</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="confirmDeleteRepository" class="deleteManagedRepositoryAction" method="confirmDelete"> - <result name="input">/WEB-INF/jsp/admin/deleteRepository.jsp</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <action name="deleteRepository" class="deleteManagedRepositoryAction" method="delete"> - <result name="input">/WEB-INF/jsp/admin/deleteRepository.jsp</result> - <result name="error">/WEB-INF/jsp/admin/deleteRepository.jsp</result> - <result name="success" type="redirectAction">repositories</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <action name="addRemoteRepository" class="addRemoteRepositoryAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/addRemoteRepository.jsp</result> - <result name="error">/WEB-INF/jsp/admin/addRemoteRepository.jsp</result> - <result name="success" type="redirectAction">repositories</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="editRemoteRepository" class="editRemoteRepositoryAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/editRemoteRepository.jsp</result> - <result name="error">/WEB-INF/jsp/admin/editRemoteRepository.jsp</result> - <result name="success" type="redirectAction">repositories</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="confirmDeleteRemoteRepository" class="deleteRemoteRepositoryAction" method="confirmDelete"> - <result name="input">/WEB-INF/jsp/admin/deleteRemoteRepository.jsp</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - - <action name="merge" class="mergeAction" method="getConflicts"> - <result name="CONFLICTS">/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp</result> - <result name="success">/WEB-INF/jsp/admin/mergeResults.jsp</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="deleteRemoteRepository" class="deleteRemoteRepositoryAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/deleteRemoteRepository.jsp</result> - <result name="error">/WEB-INF/jsp/admin/deleteRemoteRepository.jsp</result> - <result name="success" type="redirectAction">repositories</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <!-- .\ PROXY CONNECTORS \.________________________________________ --> - - <action name="proxyConnectors" class="proxyConnectorsAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/proxyConnectors.jsp</result> - </action> - - <action name="addProxyConnector" class="addProxyConnectorAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/addProxyConnector.jsp</result> - <result name="success" type="redirectAction">proxyConnectors</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="editProxyConnector" class="editProxyConnectorAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/editProxyConnector.jsp</result> - <result name="success" type="redirectAction">proxyConnectors</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="sortUpProxyConnector" class="sortProxyConnectorsAction" method="sortUp"> - <result name="input">/WEB-INF/jsp/admin/editProxyConnector.jsp</result> - <result name="success" type="redirectAction">proxyConnectors</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="sortDownProxyConnector" class="sortProxyConnectorsAction" method="sortDown"> - <result name="input">/WEB-INF/jsp/admin/editProxyConnector.jsp</result> - <result name="success" type="redirectAction">proxyConnectors</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="deleteProxyConnector" class="deleteProxyConnectorAction" method="confirm"> - <result name="input">/WEB-INF/jsp/admin/deleteProxyConnector.jsp</result> - <result name="success" type="redirectAction">proxyConnectors</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <action name="enableProxyConnector" class="enableProxyConnectorAction" method="confirm"> - <result name="input">/WEB-INF/jsp/admin/enableProxyConnector.jsp</result> - <result name="success" type="redirectAction">proxyConnectors</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="disableProxyConnector" class="disableProxyConnectorAction" method="confirm"> - <result name="input">/WEB-INF/jsp/admin/disableProxyConnector.jsp</result> - <result name="success" type="redirectAction">proxyConnectors</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - - <!-- .\ NETWORK PROXIES \._________________________________________ --> - - <action name="networkProxies" class="networkProxiesAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/networkProxies.jsp</result> - </action> - - <action name="addNetworkProxy" class="configureNetworkProxyAction" method="add"> - <result name="input">/WEB-INF/jsp/admin/editNetworkProxy.jsp</result> - <result name="success" type="redirectAction">networkProxies</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="editNetworkProxy" class="configureNetworkProxyAction" method="edit"> - <result name="input">/WEB-INF/jsp/admin/editNetworkProxy.jsp</result> - <result name="success" type="redirectAction">networkProxies</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="saveNetworkProxy" class="configureNetworkProxyAction" method="save"> - <result name="input">/WEB-INF/jsp/admin/editNetworkProxy.jsp</result> - <result name="success" type="redirectAction">networkProxies</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <action name="deleteNetworkProxy" class="configureNetworkProxyAction" method="confirm"> - <result name="input">/WEB-INF/jsp/admin/deleteNetworkProxy.jsp</result> - <result name="success" type="redirectAction">networkProxies</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <!-- .\ REPOSITORY SCANNING \._____________________________________ --> - - <action name="repositoryScanning" class="repositoryScanningAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/repositoryScanning.jsp</result> - <result name="success" type="redirectAction"> - <param name="actionName">repositoryScanning</param> - </result> - <interceptor-ref name="configuredArchivaStack"> - <param name="tokenSession.includeMethods">removeFiletypePattern,addFiletypePattern,updateKnownConsumers,updateInvalidConsumers</param> - </interceptor-ref> - </action> - - <!-- .\ CONFIGURATION \.___________________________________________ --> - - <action name="configureAppearance" class="organisationInfo"> - <result name="success">/WEB-INF/jsp/admin/appearance.jsp</result> - </action> - - <action name="editAppearance" class="editOrganisationInfo" method="input"> - <result name="input">/WEB-INF/jsp/admin/editAppearance.jsp</result> - </action> - - <action name="saveAppearance" class="editOrganisationInfo"> - <result name="input">/WEB-INF/jsp/admin/editAppearance.jsp</result> - <result type="redirectAction"> - <param name="actionName">configureAppearance</param> - <param name="namespace">/admin</param> - </result> - </action> - - <action name="systemStatus" class="systemStatus"> - <result name="success">/WEB-INF/jsp/admin/systemStatus.jsp</result> - </action> - - <action name="flushCache" class="systemStatus" method="flush"> - <result name="success">/WEB-INF/jsp/admin/systemStatus.jsp</result> - </action> - - <!-- .\ LEGACY SUPPORT \.__________________________________________ --> - - <action name="legacyArtifactPath" class="legacyArtifactPathAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/legacyArtifactPath.jsp</result> - <result name="success" type="redirectAction"> - <param name="actionName">legacyArtifactPath</param> - </result> - </action> - - <action name="addLegacyArtifactPath" class="addLegacyArtifactPathAction" method="input"> - <result name="input">/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp</result> - <result name="error">/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp</result> - <result name="success" type="redirectAction">legacyArtifactPath</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="deleteLegacyArtifactPath" class="deleteLegacyArtifactPathAction" method="delete"> - <result name="input">/WEB-INF/jsp/admin/legacyArtifactPath.jsp</result> - <result name="error">/WEB-INF/jsp/admin/legacyArtifactPath.jsp</result> - <result name="success" type="redirectAction">legacyArtifactPath</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - <!-- .\ NETWORKCONFIGURATION SUPPORT \.__________________________________________ --> - <action name="editNetworkConfiguration" class="networkConfigurationAction" method="edit"> - <result name="input">/WEB-INF/jsp/admin/networkConfiguration.jsp</result> - <result name="error">/WEB-INF/jsp/admin/networkConfiguration.jsp</result> - <interceptor-ref name="configuredPrepareParamsStack"/> - </action> - - <action name="saveNetworkConfiguration" class="networkConfigurationAction" method="save"> - <result name="input">/WEB-INF/jsp/admin/networkConfiguration.jsp</result> - <result name="error">/WEB-INF/jsp/admin/networkConfiguration.jsp</result> - <result name="success" type="redirectAction">editNetworkConfiguration</result> - <interceptor-ref name="configuredPrepareParamsStack"> - <param name="tokenSession.includeMethods">*</param> - </interceptor-ref> - </action> - - </package> - - <package name="report" namespace="/report" extends="base"> - <action name="pickReport" class="generateReport" method="input"> - <result name="input">/WEB-INF/jsp/reports/pickReport.jsp</result> - </action> - - <action name="generateReport" class="generateReport"> - <result name="input">/WEB-INF/jsp/reports/pickReport.jsp</result> - <result name="blank">/WEB-INF/jsp/reports/blankReport.jsp</result> - <result>/WEB-INF/jsp/reports/basicReport.jsp</result> - </action> - - <action name="generateStatisticsReport" class="generateReport" method="generateStatistics"> - <result name="input">/WEB-INF/jsp/reports/pickReport.jsp</result> - <result name="blank">/WEB-INF/jsp/reports/blankReport.jsp</result> - <result>/WEB-INF/jsp/reports/statisticsReport.jsp</result> - </action> - - <!-- TODO: make report filename dynamic --> - <action name="downloadStatsReport" class="generateReport" method="downloadStatisticsReport"> - <result name="input">/WEB-INF/jsp/reports/pickReport.jsp</result> - <result name="blank">/WEB-INF/jsp/reports/blankReport.jsp</result> - <result name="send-file" type="stream"> - <param name="contentType">${contentType}</param> - <param name="contentDisposition">attachment; filename="archiva_statistics_report.csv"</param> - </result> - </action> - - <!-- audit logs --> - <action name="queryAuditLogReport" class="viewAuditLogReport" method="input"> - <result name="input">/WEB-INF/jsp/reports/auditLogReport.jsp</result> - </action> - - <action name="viewAuditLogReport" class="viewAuditLogReport"> - <result name="input">/WEB-INF/jsp/reports/auditLogReport.jsp</result> - <result>/WEB-INF/jsp/reports/auditLogReport.jsp</result> - </action> - - </package> -</struts> - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/template/xhtml/form-close-validate.ftl b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/template/xhtml/form-close-validate.ftl deleted file mode 100644 index 97898cc88..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/template/xhtml/form-close-validate.ftl +++ /dev/null @@ -1,129 +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. - */ ---> -<#-- -START SNIPPET: supported-validators -Only the following validators are supported: -* required validator -* requiredstring validator -* stringlength validator -* regex validator -* email validator -* url validator -* int validator -* double validator -END SNIPPET: supported-validators ---> -<#if ((parameters.validate?default(false) == true) && (parameters.performValidation?default(false) == true))> -<script type="text/javascript"> - function validateForm_${parameters.id?replace('[^a-zA-Z0-9_]', '_', 'r')}() { - form = document.getElementById("${parameters.id}"); - clearErrorMessages(form); - clearErrorLabels(form); - - var errors = false; - var continueValidation = true; - <#list parameters.tagNames as tagName> - <#list tag.getValidators("${tagName}") as validator> - // field name: ${validator.fieldName} - // validator name: ${validator.validatorType} - if (form.elements['${validator.fieldName}']) { - field = form.elements['${validator.fieldName}']; - var error = "${validator.getMessage(action)?js_string}"; - <#if validator.validatorType = "required"> - if (field.value == "") { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - <#elseif validator.validatorType = "requiredstring"> - if (continueValidation && field.value != null && (field.value == "" || field.value.replace(/^\s+|\s+$/g,"").length == 0)) { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - <#elseif validator.validatorType = "stringlength"> - if (continueValidation && field.value != null) { - var value = field.value; - <#if validator.trim> - //trim field value - while (value.substring(0,1) == ' ') - value = value.substring(1, value.length); - while (value.substring(value.length-1, value.length) == ' ') - value = value.substring(0, value.length-1); - </#if> - if ((${validator.minLength?c} > -1 && value.length < ${validator.minLength?c}) || - (${validator.maxLength?c} > -1 && value.length > ${validator.maxLength?c})) { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - } - <#elseif validator.validatorType = "regex"> - if (continueValidation && field.value != null && !field.value.match("${validator.expression?js_string}")) { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - <#elseif validator.validatorType = "email"> - if (continueValidation && field.value != null && field.value.length > 0 && field.value.match(/\b(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/gi)==null) { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - <#elseif validator.validatorType = "url"> - if (continueValidation && field.value != null && field.value.length > 0 && field.value.match(/^(ftp|http|https):\/\/((%[A-F0-9]{2}|[A-Z0-9-._~!$&'()*+,;=:])+@)?((%[A-F0-9]{2}|[A-Z0-9-._~!$&'()*+,;=])+)(:[0-9]+)?((\/(%[A-F0-9]{2}|[A-Z0-9-._~!$&'()*+,;=:@])*)*)(\?(%[A-F0-9]{2}|[A-Z0-9-._~!$&'()*+,;=:@/?])*)?(#(%[A-F0-9]{2}|[A-Z0-9-._~!$&'()*+,;=:@/?])*)?$/gi)==null) { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - <#elseif validator.validatorType = "int"> - if (continueValidation && field.value != null) { - if (<#if validator.min??>parseInt(field.value) < - ${validator.min?c}<#else>false</#if> || - <#if validator.max??>parseInt(field.value) > - ${validator.max?c}<#else>false</#if>) { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - } - <#elseif validator.validatorType = "double"> - if (continueValidation && field.value != null) { - var value = parseFloat(field.value); - if (<#if validator.minInclusive??>value < ${validator.minInclusive}<#else>false</#if> || - <#if validator.maxInclusive??>value > ${validator.maxInclusive}<#else>false</#if> || - <#if validator.minExclusive??>value <= ${validator.minExclusive}<#else>false</#if> || - <#if validator.maxExclusive??>value >= ${validator.maxExclusive}<#else>false</#if>) { - addError(field, error); - errors = true; - <#if validator.shortCircuit>continueValidation = false;</#if> - } - } - </#if> - } - </#list> - </#list> - - return !errors; - } -</script> -</#if> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/validators.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/validators.xml deleted file mode 100644 index b24bc71f5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/validators.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> - -<!DOCTYPE validators PUBLIC - "-//OpenSymphony Group//XWork Validator Config 1.0//EN" - "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd"> - -<!-- - ~ 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. - --> - -<validators> - <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/> - <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/> - <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/> - <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/> - <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/> - <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/> - <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> - <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> - <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/> - <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/> - <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/> - <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/> - <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/> - <validator name="interval" class="org.apache.archiva.web.validator.IntervalValidator"/> - <validator name="syncedrepo" class="org.apache.archiva.web.validator.SyncedRepositoryValidator"/> - <validator name="crontab" class="org.apache.archiva.web.validator.CronExpressionValidator"/> -</validators> - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml deleted file mode 100644 index dac40913c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml +++ /dev/null @@ -1,337 +0,0 @@ -<?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. - --> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:context="http://www.springframework.org/schema/context" - xmlns:task="http://www.springframework.org/schema/task" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd - http://www.springframework.org/schema/task - http://www.springframework.org/schema/task/spring-task-3.0.xsd"> - - <context:property-placeholder location="classpath:application.properties"/> - - <bean id="loggerManager" class="org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager" - init-method="initialize"/> - - <!-- only here to cleanup temp indexes for groups increase number if use for something else --> - <task:executor id="springExecutor" pool-size="2"/> - <task:scheduler id="springScheduler" pool-size="2"/> - <task:annotation-driven executor="springExecutor" scheduler="springScheduler"/> - - <!-- - TODO olamy check user agent used in wagon !! - <bean name="wagon#http" class="org.apache.maven.wagon.providers.http.LightweightHttpWagon" scope="prototype"> - <property name="httpHeaders"> - <map> - <entry key="User-Agent" value="${user.agent}"/> - </map> - </property> - </bean> - - <bean name="wagon#https" class="org.apache.maven.wagon.providers.http.LightweightHttpsWagon" scope="prototype"> - <property name="httpHeaders"> - <map> - <entry key="User-Agent" value="${user.agent}"/> - </map> - </property> - </bean> - --> - - - - - <alias name="repositoryStatisticsManager#default" alias="repositoryStatisticsManager"/> - <!-- TODO olamy need to find a more dynamic way if using jcr impl --> - <alias name="repositorySessionFactory#jcr" alias="repositorySessionFactory"/> - - <bean id="mailSession" class="org.springframework.jndi.JndiObjectFactoryBean"> - <property name="jndiName" value="java:comp/env/mail/Session"> - </property> - </bean> - - <bean name="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> - <property name="session" ref="mailSession"/> - </bean> - - <!-- START SNIPPET: configuration-files-list --> - <bean name="commons-configuration" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry"> - <property name="properties"> - <value> - <![CDATA[ - <configuration> - <system/> - <jndi prefix="java:comp/env" config-optional="true"/> - <xml fileName="${user.home}/.m2/archiva.xml" config-optional="true" - config-name="org.apache.archiva.user" - config-at="org.apache.archiva"/> - <xml fileName="${user.home}/.m2/shared.xml" config-optional="true" - config-name="org.apache.maven.shared.app.user" config-at="org.apache.maven.shared.app" - config-forceCreate="true"/> - <properties fileName="${user.home}/.m2/security.properties" config-optional="true" - config-at="org.apache.archiva.redback"/> - <properties fileName="${user.home}/.m2/archiva.properties" config-optional="true" - config-at="org.apache.archiva.redback"/> - <xml fileName="${appserver.base}/conf/archiva.xml" config-optional="true" - config-name="org.apache.archiva.base" - config-at="org.apache.archiva"/> - <xml fileName="${appserver.base}/conf/shared.xml" config-optional="true" - config-name="org.apache.maven.shared.app.base" config-at="org.apache.maven.shared.app"/> - <xml fileName="${appserver.base}/conf/common.xml" config-optional="true"/> - <properties fileName="${appserver.base}/conf/security.properties" config-optional="true" - config-at="org.apache.archiva.redback"/> - <xml fileName="${appserver.home}/conf/archiva.xml" config-optional="true" - config-at="org.apache.archiva"/> - <xml fileName="${appserver.home}/conf/shared.xml" config-optional="true" - config-at="org.apache.maven.shared.app"/> - <xml fileName="${appserver.home}/conf/common.xml" config-optional="true"/> - <properties fileName="${appserver.home}/conf/security.properties" config-optional="true" - config-at="org.apache.archiva.redback"/> - <properties fileName="org/apache/archiva/security.properties" config-at="org.apache.archiva.redback"/> - </configuration> - ]]> - </value> - </property> - </bean> - <!-- END SNIPPET: configuration-files-list --> - - <bean name="jdoFactory#users" class="org.apache.archiva.redback.components.jdo.DataSourceConfigurableJdoFactory"> - <property name="connectionFactoryName" value="java:comp/env/jdbc/users"/> - <property name="shutdownConnectionFactoryName" value="java:comp/env/jdbc/usersShutdown"/> - <property name="persistenceManagerFactoryClass" value="org.jpox.PersistenceManagerFactoryImpl"/> - <property name="otherProperties"> - <props> - <prop key="org.jpox.autoCreateSchema">true</prop> - <prop key="org.jpox.validateTables">false</prop> - <prop key="org.jpox.validateConstraints">false</prop> - <prop key="org.jpox.validateColumns">false</prop> - <prop key="org.jpox.autoStartMechanism">None</prop> - <prop key="org.jpox.transactionIsolation">READ_COMMITTED</prop> - <prop key="org.jpox.poid.transactionIsolation">READ_COMMITTED</prop> - <prop key="org.jpox.rdbms.dateTimezone">JDK_DEFAULT_TIMEZONE</prop> - <!-- NEEDED FOR MYSQL UTF-8 Databases --> - <prop key="org.jpox.rdbms.stringDefaultLength">255</prop> - - <!-- NEEDED FOR POSTGRES, But causes problems in other JDBC implementations. - <prop key="org.jpox.identifier.case">PreserveCase</prop> - --> - - <!-- cache activation --> - <prop key="org.jpox.cache.level2">true</prop> - <prop key="org.jpox.cache.level2.type">ehcacheclassbased</prop> - <prop key="org.jpox.cache.level2.cacheName">defaultJpox</prop> - <prop key="org.jpox.cache.level2.configurationFile">/ehcache.xml</prop> - </props> - </property> - </bean> - - - <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler"> - <property name="properties"> - <props> - <prop key="org.quartz.scheduler.instanceName">scheduler1</prop> - <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> - <prop key="org.quartz.threadPool.threadCount">2</prop> - <prop key="org.quartz.threadPool.threadPriority">4</prop> - <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> - </props> - </property> - </bean> - - - - <!-- <component> - <role>org.apache.archiva.webdav.util.MimeTypes</role> - <implementation>org.apache.archiva.webdav.util.MimeTypes</implementation> - <description>MimeTypes</description> - <configuration> - <resource>archiva-mime-types.txt</resource> - </configuration> - </component> --> - - - <!-- - olamy TODO check if necessary !! - PLXREDBACK-81 bad role hint, redefining here until redback alpha-2 is released. - - <component> - <role>org.apache.archiva.redback.system.check.EnvironmentCheck</role> - <role-hint>locked-admin-check</role-hint> - <implementation>org.apache.archiva.redback.integration.checks.security.LockedAdminEnvironmentCheck</implementation> - <description>LockedAdminEnvironmentCheck: checks if accounts marked as system administrator are locked - and unlocks them on startup. - </description> - <requirements> - <requirement> - <role>org.apache.archiva.redback.users.UserManager</role> - <role-hint>cached</role-hint> - <field-name>userManager</field-name> - </requirement> - <requirement> - <role>org.apache.archiva.redback.rbac.RBACManager</role> - <role-hint>cached</role-hint> - <field-name>rbacManager</field-name> - </requirement> - </requirements> - </component> - --> - - <!-- TODO move to spring sample and test it --> - <!-- START SNIPPET: ldap --> - <!-- - Ldap Authentication can be enabled by setting enabling these components and setting the following configuration options in your security.properties file - - ============================================================ - user.manager.impl=ldap - ldap.bind.authenticator.enabled=true - redback.default.admin=admin - security.policy.password.expiration.enabled=false - - ldap.config.hostname=ldap.hostname - ldap.config.port=389 - ldap.config.base.dn=o=com - ldap.config.context.factory=com.sun.jndi.ldap.LdapCtxFactory - ldap.config.bind.dn=uid=myusername,o=com - ldap.config.password=s3cr3t - #ldap.config.authentication.method= - ============================================================ - - * ldap.config.hostname - The hostname of the ldap server - * ldap.config.port - The port of the ldap server - * ldap.config.base.dn - The baseDn of the ldap system - * ldap.config.context.factory - context factory for ldap connections - * ldap.config.bind.dn - the core user used for authentication the ldap server, must be able to perform the necessary searches, etc. - * ldap.config.password - password for the bindDn for the root ldap connection - - until this process is better documented, the following is the document for configuration ldap with redback - - http://redback.codehaus.org/integration/ldap.html - --> - - <!-- - - this component manages the connection to the ldap server - --> - - <!-- - <bean name="ldapConnectionFactory" class="org.apache.archiva.redback.common.ldap.connection.ConfigurableLdapConnectionFactory"> - <property name="userConf" ref="userConfiguration"/> - </bean> - --> - - - <!-- - - this component manages the mapping of attributes in ldap to user information in redback. To configure the mapping, you can add the following properties in your security.properties - - ============================================================ - ldap.config.mapper.attribute.email=mail - ldap.config.mapper.attribute.fullname=givenName - ldap.config.mapper.attribute.password=userPassword - ldap.config.mapper.attribute.user.id=cn - ldap.config.mapper.attribute.user.base.dn= - ldap.config.mapper.attribute.user.object.class=inetOrgPerson - ldap.config.mapper.attribute.user.filter=(attributeName=value) - ============================================================ - - - * email-attribute - The name of the attribute on a user that contains the email address - * full-name-attribute - The name of the attribute on a user that contains the users fullName - * password-attribute - The name of the attribute containing the users password, used for the authentiction using the user manager and not the ldap bind authenticator - * user-id-attribute - The name of the attribute containing the users userId, most commonly cn or sn. - * user-base-dn - The base dn that will be subtree searched for users. - * user-object-class - the objectClass used in the ldap server for indentifying users, most commonly inetOrgPerson. - --> - - <!-- - <bean name="ldapUserMapper" class="org.apache.archiva.redback.common.ldap.LdapUserMapper"> - <property name="emailAttribute" value="email"/> - <property name="fullNameAttribute" value="givenName"/> - <property name="passwordAttribute" value="userPassword"/> - <property name="userIdAttribute" value="cn"/> - <property name="userBaseDn" value="o=com"/> - <property name="userObjectClass" value="inetOrgPerson"/> - <property name="userConf" ref="userConfiguration"/> - </bean> - --> - - - - <!-- - - If caching is desired to improve performance then make uncomment this and make sure the following configuration parameter is in the security.properties - - user.manager.impl=cached - --> - - <!-- - <bean name="userManager#cached" class="org.apache.archiva.redback.users.cached.CachedUserManager"> - <property name="userImpl" ref="userMapper#ldap"/> - <property name="usersCache" ref="cache#users"/> - </bean> - --> - - - - <!-- - - if using the user manager authenticator to authenticate the user and not the ldap bind authenticator make sure - this definition has the correct password encoder - - Note: you should probably just use the ldap bind authenticator which is enabled by putting - - ldap.bind.authenticator.enabled=true - - in the security.properties - --> - <!-- - <bean name="userSecurityPolicy" class="org.apache.archiva.redback.policy.DefaultUserSecurityPolicy"> - <property name="config" ref="userConfiguration"/> - <property name="passwordEncoder" ref="passwordEncoder#sha1"/> - <property name="userValidationSettings" ref="userValidationSettings"/> - <property name="rememberMeCookieSettings" ref="cookieSettings#rememberMe"/> - <property name="signonCookieSettings" ref="cookieSettings#signon"/> - <property name="rules"> - add the rules you want to applied - <list> - <ref bean="passwordRule#alpha-count"/> - <ref bean="passwordRule#alpha-numeric"/> - <ref bean="passwordRule#character-length"/> - <ref bean="passwordRule#must-have"/> - <ref bean="passwordRule#no-whitespaces"/> - <ref bean="passwordRule#numerical-count"/> - </list> - </property> - </bean> - --> - <!-- END SNIPPET: ldap --> - <!-- override jcr repository location --> - <!-- START SNIPPET: jcr-location --> - <!-- - <bean id="jcr-config" class="org.apache.archiva.metadata.repository.jcr.ArchivaJcrRepositoryConfig" factory-method="create"> - <constructor-arg value="${appserver.base}/conf/repository.xml"/> - <constructor-arg value="${appserver.base}/data/jcr"/> - </bean> - --> - <!-- END SNIPPET: jcr-location --> - -</beans> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/decorators.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/decorators.xml deleted file mode 100644 index 0148875d6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/decorators.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?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. - --> - -<decorators defaultdir="/WEB-INF/jsp/decorators"> - <excludes> - <pattern>/repository/*</pattern> - <pattern>/components/*</pattern> - <pattern>/restServices/*</pattern> - </excludes> - - <decorator name="default" page="default.jsp"> - <pattern>/*</pattern> - </decorator> -</decorators>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/accessToNoRepos.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/accessToNoRepos.jsp deleted file mode 100644 index 645662614..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/accessToNoRepos.jsp +++ /dev/null @@ -1,47 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>You do not have access to any repository</title> - <s:head/> -</head> - -<body> - -<div id="contentArea"> - - <div id="results"> - You do not have access to any repositories. - Please contact your system administrator to request access. - </div> - -</div> - -<div class="clear"> - <hr/> -</div> - -</body> - -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp deleted file mode 100644 index e22a517a3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp +++ /dev/null @@ -1,115 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Add Legacy Artifact Path</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Add Legacy Artifact Path</h1> - -<div id="contentArea"> - - <p> - Enter the legacy path to map to a particular artifact reference, then adjust the fields as necessary. - </p> - - <script type="text/javascript"> - function parse( path ) - { - var group = path.indexOf( "/" ); - if ( group > 0 ) - { - document.getElementById( "addLegacyArtifactPath_groupId" ).value - = path.substring( 0, group ); - group += 1; - var type = path.indexOf( "/", group ); - if ( type > 0 ) - { - document.getElementById( "addLegacyArtifactPath_type" ).value - = path.substring( group, type - 1 ); - } - type += 1; - var version = path.indexOf( "-", type ); - var ext = path.lastIndexOf( "." ); - if ( version > 0 ) - { - document.getElementById( "addLegacyArtifactPath_artifactId" ).value - = path.substring( type, version ); - document.getElementById( "addLegacyArtifactPath_version" ).value - = path.substring( version + 1, ext ); - } - - } - } - </script> - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - <s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - - <s:form method="post" action="addLegacyArtifactPath!commit" namespace="/admin" validate="true"> - <s:textfield name="legacyArtifactPath.path" label="Path" size="50" required="true" onchange="parse( this.value )"/> - <s:textfield name="groupId" label="GroupId" size="20" required="true"/> - <s:textfield name="artifactId" label="ArtifactId" size="20" required="true"/> - <s:textfield name="version" label="Version" size="20" required="true"/> - <s:textfield name="classifier" label="Classifier" size="20" required="false"/> - <s:textfield name="type" label="Type" size="20" required="true"/> - <s:submit value="Add Legacy Artifact Path"/> - </s:form> - - <script type="text/javascript"> - var ref = document.getElementById("addLegacyArtifactPath_legacyArtifactPath_artifact").value; - var i = ref.indexOf( ":" ); - document.getElementById("addLegacyArtifactPath_groupId").value = ref.substring( 0, i ); - var j = i + 1; - var i = ref.indexOf( ":", j ); - document.getElementById("addLegacyArtifactPath_artifactId").value = ref.substring( j, i ); - var j = i + 1; - var i = ref.indexOf( ":", j ); - document.getElementById("addLegacyArtifactPath_version").value = ref.substring( j, i ); - var j = i + 1; - var i = ref.indexOf( ":", j ); - document.getElementById("addLegacyArtifactPath_classifier").value = ref.substring( j, i ); - - document.getElementById("addLegacyArtifactPath_legacyArtifactPath_path").focus(); - </script> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addProxyConnector.jsp deleted file mode 100644 index ee84a88d0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addProxyConnector.jsp +++ /dev/null @@ -1,46 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Add Proxy Connector</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Add Proxy Connector</h1> - -<div id="contentArea"> - - <s:actionerror/> - <s:actionmessage/> - - <s:form name="saveProxyConnector" method="post" action="addProxyConnector!commit" namespace="/admin" validate="true"> - <%@ include file="/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf" %> - <s:submit value="Add Proxy Connector"/> - </s:form> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRemoteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRemoteRepository.jsp deleted file mode 100644 index e893893a4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRemoteRepository.jsp +++ /dev/null @@ -1,49 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Add Remote Repository</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Add Remote Repository</h1> - -<div id="contentArea"> - - <s:actionmessage/> - <s:form method="post" action="addRemoteRepository!commit" namespace="/admin" validate="true"> - <s:textfield name="repository.id" label="Identifier" size="10" required="true"/> - <%@ include file="/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf" %> - <s:submit value="Add Repository"/> - </s:form> - - <script type="text/javascript"> - document.getElementById("addRemoteRepository_id").focus(); - </script> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp deleted file mode 100644 index 406426de5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp +++ /dev/null @@ -1,63 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Add Managed Repository</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Add Managed Repository</h1> - -<div id="contentArea"> - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - <s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:form method="post" action="addRepository!commit" namespace="/admin" validate="true"> - <s:textfield name="repository.id" label="Identifier" size="10" required="true"/> - <%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %> - <s:checkbox name="stageNeeded" value="stageNeeded" label="Create stage repository"/> - <s:submit value="Add Repository"/> - </s:form> - - <script type="text/javascript"> - document.getElementById("addRepository_repository_id").focus(); - </script> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp deleted file mode 100644 index cd5438c10..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp +++ /dev/null @@ -1,71 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Configure Appearance</title> - <s:head/> -</head> - -<body> -<h1>Appearance</h1> - -<div style="float: right"> - <a href="<s:url action='editAppearance' />">Edit</a> -</div> -<h2>Organization Details</h2> - -<p> - The logo in the top right of the screen is controlled by the following settings. - <a href="<s:url action='editAppearance' />">Change your appearance</a> -</p> - -<%-- used c:out in displaying EL's so that they are escaped --%> -<h3>Organization Information</h3> -<table> - <tr> - <th>Name</th> - <td><c:out value="${organisationName}" /></td> - </tr> - <tr> - <th>URL</th> - <td><a href='<c:out value="${organisationUrl}" />'> - <code><c:out value="${organisationUrl}" /></code> - </a></td> - </tr> - <tr> - <th>Logo URL</th> - <td> - <code><c:out value="${organisationLogo}" /></code> - </td> - </tr> - <c:if test="${!empty (organisationLogo)}"> - <tr> - <th> </th> - <td><img src='<c:out value="${organisationLogo}" />' - title='<c:out value="${organisationName}" />' border="0" alt="" /></td> - </tr> - </c:if> -</table> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp deleted file mode 100644 index df1c66fc1..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp +++ /dev/null @@ -1,142 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Admin: Add Managed Repository</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Add Managed Repository</h1> - - <div class="warningbox"> - <p> - <strong>WARNING: Repository location already exists.</strong> - </p> - </div> - - <p> - Are you sure you want to - <c:choose> - <c:when test="${action == 'addRepository'}">add</c:when> - <c:otherwise>update</c:otherwise> - </c:choose> - the following managed repository? - </p> - - <%-- used c:out in displaying EL's so that they are escaped --%> - <div class="infobox"> - <table class="infotable"> - <tr> - <td>ID:</td> - <td><code><c:out value="${repository.id}" /></code></td> - </tr> - <tr> - <td>Name:</td> - <td><c:out value="${repository.name}" /></td> - </tr> - <tr> - <td>Directory:</td> - <td><c:out value="${repository.location}" /></td> - </tr> - <tr> - <td>Index Directory:</td> - <td><c:out value="${repository.indexDirectory}" /></td> - </tr> - <tr> - <td>Type:</td> - <%--td>${repository.layout}</td--%> - <td> - <c:choose> - <c:when test="${repository.layout == 'default'}"> - Maven 2.x Repository - </c:when> - <c:otherwise> - Maven 1.x Repository - </c:otherwise> - </c:choose> - </td> - </tr> - <tr> - <td>Cron:</td> - <td><c:out value="${repository.cronExpression}" /></td> - </tr> - <tr> - <td>Repository Purge By Days Older Than:</td> - <td><c:out value="${repository.daysOlder}" /></td> - </tr> - <tr> - <td>Repository Purge By Retention Count:</td> - <td><c:out value="${repository.retentionCount}" /></td> - </tr> - <tr> - <td>Releases Included:</td> - <td class="${repository.releases ? 'donemark' : 'errormark'} booleanIcon"> - </tr> - <tr> - <td>Snapshots Included:</td> - <td class="${repository.snapshots ? 'donemark' : 'errormark'} booleanIcon"> - </tr> - <tr> - <td>Scannable:</td> - <td class="${repository.scanned ? 'donemark' : 'errormark'} booleanIcon"> - </tr> - <tr> - <td>Delete Released Snapshots:</td> - <td class="${repository.deleteReleasedSnapshots ? 'donemark' : 'errormark'} booleanIcon"> - </tr> - </table> - </div> - - <s:form method="post" action="%{action}" namespace="/admin" validate="true" theme="simple"> - <div class="buttons"> - <s:hidden name="repository.id" value="%{#attr.repository.id}"/> - <s:hidden name="repository.name" value="%{#attr.repository.name}"/> - <s:hidden name="repository.location" value="%{#attr.repository.location}"/> - <s:hidden name="repository.indexDir" value="%{#attr.repository.indexDirectory}"/> - <s:hidden name="repository.layout" value="%{#attr.repository.layout}"/> - <s:hidden name="repository.cronExpression" value="%{#attr.repository.cronExpression}"/> - <s:hidden name="repository.daysOlder" value="%{#attr.repository.daysOlder}"/> - <s:hidden name="repository.retentionCount" value="%{#attr.repository.retentionCount}"/> - <s:hidden name="repository.releases" value="%{#attr.repository.releases}"/> - <s:hidden name="repository.snapshots" value="%{#attr.repository.snapshots}"/> - <s:hidden name="repository.scanned" value="%{#attr.repository.scanned}"/> - <s:hidden name="repository.deleteReleasedSnapshots" value="%{#attr.repository.deleteReleasedSnapshots}"/> - - <c:choose> - <c:when test="${action == 'addRepository'}"> - <s:submit value="Save" method="confirmAdd"/> - </c:when> - <c:otherwise> - <s:submit value="Save" method="confirmUpdate"/> - </c:otherwise> - </c:choose> - - <s:submit value="Cancel" method="execute"/> - </div> - </s:form> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp deleted file mode 100644 index 49f1d8458..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp +++ /dev/null @@ -1,63 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Admin: Delete Network Proxy</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Delete Network Proxy</h1> - - <%-- changed the structure of displaying errorMessages in order for them to be escaped. --%> - <s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - -<div id="contentArea"> - - <h2>Delete Network Proxy</h2> - - <blockquote> - <strong><span class="statusFailed">WARNING:</span> This operation can not be undone.</strong> - </blockquote> - <%-- used c:out in displaying EL's for them to be escaped. --%> - <p> - Are you sure you want to delete network proxy <code><c:out value="${proxyid}" /></code> ? - </p> - - <s:form method="post" action="deleteNetworkProxy!delete" namespace="/admin" validate="true"> - <s:hidden name="proxyid"/> - <s:token/> - <s:submit value="Delete"/> - </s:form> -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteProxyConnector.jsp deleted file mode 100644 index fb56d264e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteProxyConnector.jsp +++ /dev/null @@ -1,56 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Delete Proxy Connector</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Delete Proxy Connector</h1> - -<s:actionerror/> - -<div id="contentArea"> - - <h2>Delete Proxy Connector</h2> - - <blockquote> - <strong><span class="statusFailed">WARNING:</span> This operation can not be undone.</strong> - </blockquote> - - <p> - Are you sure you want to delete proxy connector <code>[ ${source} , ${target} ]</code> ? - </p> - - <s:form method="post" action="deleteProxyConnector!delete" namespace="/admin" validate="true"> - <s:hidden name="target"/> - <s:hidden name="source"/> - <s:token/> - <s:submit value="Delete"/> - </s:form> -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRemoteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRemoteRepository.jsp deleted file mode 100644 index 9d77aa5d7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRemoteRepository.jsp +++ /dev/null @@ -1,74 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Delete Remote Repository</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Delete Remote Repository</h1> - -<s:actionerror/> - -<div id="contentArea"> - - <div class="warningbox"> - <p> - <strong>WARNING: This operation can not be undone.</strong> - </p> - </div> - - <p> - Are you sure you want to delete the following remote repository? - </p> - - <div class="infobox"> - <table class="infotable"> - <tr> - <td>ID:</td> - <td><code>${repository.id}</code></td> - </tr> - <tr> - <td>Name:</td> - <td>${repository.name}</td> - </tr> - <tr> - <td>URL:</td> - <td><a href="${repository.url}">${repository.url}</a></td> - </tr> - </table> - </div> - - <s:form method="post" action="deleteRemoteRepository" namespace="/admin" validate="true" theme="simple"> - <s:hidden name="repoid"/> - <div class="buttons"> - <s:submit value="Confirm" method="delete"/> - <s:submit value="Cancel" method="execute"/> - </div> - </s:form> -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp deleted file mode 100644 index def8b68f6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp +++ /dev/null @@ -1,85 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> - -<html> -<head> - <title>Admin: Delete Managed Repository</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Delete Managed Repository</h1> - -<%-- changed the structure of displaying errorMessages in order for them to be escaped. --%> -<s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> -</s:if> - -<div id="contentArea"> - - <div class="warningbox"> - <p> - <strong>WARNING: This operation can not be undone.</strong> - </p> - </div> - - <p> - Are you sure you want to delete the following managed repository? - </p> - - <%-- used c:out in displaying EL's so that they are escaped --%> - <div class="infobox"> - <table class="infotable"> - <tr> - <td>ID:</td> - <td><code><c:out value="${repository.id}" /></code></td> - </tr> - <tr> - <td>Name:</td> - <td><c:out value="${repository.name}" /></td> - </tr> - <tr> - <td>Directory:</td> - <td><c:out value="${repository.location}" /></td> - </tr> - </table> - </div> - - <s:form method="post" action="deleteRepository" namespace="/admin" validate="true" theme="simple"> - <s:hidden name="repoid"/> - <s:token/> - <div class="buttons"> - <s:submit value="Delete Configuration Only" method="deleteEntry" /> - <s:submit value="Delete Configuration and Contents" method="deleteContents" /> - <s:submit value="Cancel" method="execute"/> - </div> - </s:form> -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp deleted file mode 100644 index 69bbd0db4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp +++ /dev/null @@ -1,67 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Delete Repository Group</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Delete Repository Group</h1> - -<s:actionerror/> - -<div id="contentArea"> - - <div class="warningbox"> - <p> - <strong>WARNING: This operation can not be undone.</strong> - </p> - </div> - - <p> - Are you sure you want to delete the following repository group? - </p> - - <div class="infobox"> - <table class="infotable"> - <tr> - <td>ID:</td> - <td><code>${repositoryGroup.id}</code></td> - </tr> - </table> - </div> - - <s:form method="post" action="deleteRepositoryGroup" namespace="/admin" validate="true" theme="simple"> - <s:hidden name="repoGroupId"/> - <div class="buttons"> - <s:token/> - <s:submit value="Confirm" method="delete"/> - <s:submit value="Cancel" method="execute"/> - </div> - </s:form> -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp deleted file mode 100644 index 52c69ba8c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp +++ /dev/null @@ -1,52 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Disable Proxy Connector</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Disable Proxy Connector</h1> - -<s:actionerror/> - -<div id="contentArea"> - - <h2>Disable Proxy Connector</h2> - - <p> - Are you sure you want to disable proxy connector <code>[ ${source} , ${target} ]</code> ? - </p> - - <s:form method="post" action="disableProxyConnector!disable" namespace="/admin" validate="true"> - <s:hidden name="target"/> - <s:hidden name="source"/> - <s:token/> - <s:submit value="Disable"/> - </s:form> -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp deleted file mode 100644 index 8df7a210d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp +++ /dev/null @@ -1,54 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<html> -<head> - <title>Configure Appearance</title> - <s:head/> -</head> - -<body> -<h1>Appearance</h1> - -<h2>Organization Details</h2> - -<p> - Enter the details of your organization below. -</p> - -<s:set name="editOrganisationInfo" value="editOrganisationInfo"/> -<%-- changed the structure of displaying actionMessages in order for them to be escaped. --%> -<s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> -</s:if> -<s:form method="post" action="saveAppearance" namespace="/admin" validate="true" theme="xhtml"> - <s:textfield name="organisationName" value="%{#attr.organisationName}" label="Name" size="50" /> - <s:textfield name="organisationUrl" value="%{#attr.organisationUrl}" label="URL" size="50"/> - <s:textfield name="organisationLogo" value="%{#attr.organisationLogo}" label="Logo URL" size="50" /> - <s:submit value="Save"/> -</s:form> -</body> - -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp deleted file mode 100644 index b970d0616..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp +++ /dev/null @@ -1,88 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<c:choose> - <c:when test="${mode == 'edit'}"> - <c:set var="addedit" value="Edit" /> - <c:set var="networkProxyName" value="${proxy.id}" /> - </c:when> - <c:otherwise> - <c:set var="addedit" value="Add" /> - </c:otherwise> -</c:choose> - -<html> -<head> - <title>Admin: ${addedit} Network Proxy</title> - <s:head/> -</head> - -<body> - -<h1>Admin: ${addedit} Network Proxy</h1> - -<div id="contentArea"> - - <h2>${addedit} network proxy: <c:out value="${networkProxyName}" /></h2> - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - <s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - - <s:form method="post" action="saveNetworkProxy" namespace="/admin"> - <s:hidden name="mode"/> - <s:token/> - - <c:choose> - <c:when test="${mode == 'edit'}"> - <s:hidden name="proxy.id"/> - </c:when> - <c:otherwise> - <s:textfield name="proxy.id" label="Identifier" size="10" required="true"/> - </c:otherwise> - </c:choose> - - <%@ include file="/WEB-INF/jsp/admin/include/networkProxyForm.jspf" %> - <s:submit value="Save Network Proxy"/> - </s:form> - - <script type="text/javascript"> - document.getElementById("saveNetworkProxy_host").focus(); - </script> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editProxyConnector.jsp deleted file mode 100644 index 91b42dd34..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editProxyConnector.jsp +++ /dev/null @@ -1,47 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Admin : Edit Proxy Connector</title> - <s:head/> -</head> - -<body> - -<h1>Admin : Edit Proxy Connector</h1> - -<div id="contentArea"> - - <s:actionerror/> - <s:actionmessage/> - - <s:form name="saveProxyConnector" method="post" action="editProxyConnector!commit" namespace="/admin" validate="true"> - <%@ include file="/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf" %> - <s:submit value="Save Proxy Connector"/> - </s:form> - -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRemoteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRemoteRepository.jsp deleted file mode 100644 index 0dad94ed4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRemoteRepository.jsp +++ /dev/null @@ -1,75 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> - -<html> -<head> - <title>Admin: Edit Remote Repository</title> - <s:head/> - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> -</head> - -<body> - -<h1>Admin: Edit Remote Repository</h1> - -<s:actionerror/> - -<div id="contentArea"> - - <s:actionmessage/> - <s:form method="post" action="editRemoteRepository!commit" namespace="/admin" validate="false"> - <s:hidden name="repository.id"/> - <%@ include file="/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf" %> - <s:submit value="Update Repository"/> - </s:form> - <redback:ifAuthorized permission="archiva-run-indexer"> - <form id="downloadRemoteForm" name="downloadRemoteForm"> - <input type="hidden" value="${repoid}" id="repoid"/> - Now: <input type="checkbox" name="now"/><br/> - Full download: <input type="checkbox" name="fullDownload" /><br/> - <input type="button" onclick="downloadRemote();" value="Download Remote Index" /> - - </form> - </redback:ifAuthorized> - - -</div> - -<script type="text/javascript"> - function downloadRemote() { - $.ajax({ - url: "${pageContext.request.contextPath}/restServices/archivaServices/repositoriesService/scheduleDownloadRemoteIndex", - data: "repositoryId="+document.getElementById("downloadRemoteForm").repoid.value+"&now="+document.getElementById("downloadRemoteForm").now.checked+"&fullDownload="+document.getElementById("downloadRemoteForm").fullDownload.checked , - error: function(){ - alert('error'); - } - }); - alert("download remote index scheduled"); - return false; - } - document.getElementById("editRemoteRepository_repository_name").focus(); - -</script> -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp deleted file mode 100644 index 8a2bfed8c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp +++ /dev/null @@ -1,74 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Edit Managed Repository</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Edit Managed Repository</h1> - -<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> -<s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> -</s:if> - -<div id="contentArea"> - - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:form method="post" action="editRepository!commit" namespace="/admin" validate="false"> - <s:hidden name="repository.id"/> - <s:label label="ID" name="repository.id" /> - <%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %> - - <c:choose> - <c:when test="${empty(stagingRepository)}"> - <s:checkbox id="stageNeeded" name="stageNeeded" value="false" label="Create stage repository"/> - </c:when> - <c:otherwise> - <s:checkbox name="stageNeeded" value="true" label="Create stage repository"/> - </c:otherwise> - </c:choose> - <s:submit value="Update Repository"/> - </s:form> - - <script type="text/javascript"> - document.getElementById("editRepository_repository_name").focus(); - </script> - -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp deleted file mode 100644 index 1516a3a8e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp +++ /dev/null @@ -1,51 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Admin: Enable Proxy Connector</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Enable Proxy Connector</h1> - -<s:actionerror/> - -<div id="contentArea"> - - <h2>Enable Proxy Connector</h2> - - <p> - Are you sure you want to enable proxy connector <code>[ ${source} , ${target} ]</code> ? - </p> - - <s:form method="post" action="enableProxyConnector!enable" namespace="/admin" validate="true"> - <s:hidden name="target"/> - <s:hidden name="source"/> - <s:submit value="Enable"/> - </s:form> -</div> - -</body> -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/errorMessages.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/errorMessages.jsp deleted file mode 100644 index 8c09b517e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/errorMessages.jsp +++ /dev/null @@ -1,32 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> - - -<p> - <s:if test="hasActionErrors()"> - <b style="color: red;">Errors:</b> - <s:iterator value="actionErrors"> - <li style="color: red;"> - <s:property/> - </li> - </s:iterator> - </s:if> -</p>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/networkProxyForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/networkProxyForm.jspf deleted file mode 100644 index 725eebbc7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/networkProxyForm.jspf +++ /dev/null @@ -1,28 +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. - --%> -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<s:textfield name="proxy.protocol" label="Protocol" size="5" required="true"/> -<s:textfield name="proxy.host" label="Hostname" size="50" required="true"/> -<s:textfield name="proxy.port" label="Port" size="5" required="true" /> -<s:textfield name="proxy.username" label="Username" size="25" required="false" /> -<s:password name="proxy.password" label="Password" size="25" required="false" /> -<s:checkbox name="proxy.useNtlm" label="Use ntlm"/> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf deleted file mode 100644 index 979815805..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf +++ /dev/null @@ -1,260 +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. - --%> -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<c:url var="iconDeleteUrl" value="/images/icons/delete.gif"/> -<c:url var="iconCreateUrl" value="/images/icons/create.png"/> - -<%-- This hidden 'pattern' field is used by remove (white|black)list scripts --%> -<s:hidden name="pattern" /> - -<s:hidden name="connector.order" /> - -<s:select name="connector.proxyId" list="proxyIdOptions" label="Network Proxy" required="true"/> -<s:select name="connector.sourceRepoId" list="managedRepoIdList" - label="Managed Repository" required="true"/> -<s:select name="connector.targetRepoId" list="remoteRepoIdList" - label="Remote Repository" required="true"/> - -<tr> - <td valign="top"><label>Policies:</label> - </td> - <td> - <table> - <c:forEach items="${policyMap}" var="policy" varStatus="i"> - <tr> - <td> - <s:label for="policy_%{#attr.policy.key}" required="true" - theme="simple">${policy.value.name}: - </s:label> - </td> - <td> - <c:set var="value"> - <s:property value="%{#attr.connector.policies[#attr.policy.key]}" default="%{#attr.policy.value.defaultOption}" /> - </c:set> - <s:select name="connector.policies['%{#attr.policy.key}']" - list="%{#attr.policyMap[#attr.policy.key].options}" - value="%{#attr.value}" - id="policy_%{#attr.policy.key}" - theme="simple" - cssStyle="width: 10em"/> - </td> - </tr> - </c:forEach> - </table> - </td> -</tr> - -<tr class="seperator"> - <td valign="top"> - <label for="propertiesEntry">Properties:</label> - </td> - <td> - <s:textfield name="propertyKey" size="15" id="propertiesEntry" theme="simple" - onkeypress="submitenter(event, 'addProperty')"/> - : - <s:textfield name="propertyValue" size="15" id="propertiesValue" theme="simple" - onkeypress="submitenter(event, 'addProperty')"/> - <input type="button" onclick="submitForm('addProperty')" value="Add Property" /> - </td> -</tr> - -<tr> - <td> - </td> - <td> - <c:choose> - <c:when test="${empty (connector.properties)}"> - <i>No properties have been set.</i> - </c:when> - <c:otherwise> - <table> - <c:forEach items="${connector.properties}" var="property" varStatus="i"> - <tr> - <td> - <s:label for="property_%{#attr.property.key}" - theme="simple">${property.key}</s:label> - </td> - <td> - <s:textfield name="connector.properties['%{#attr.property.key}']" - size="15" - id="property_%{#attr.property.key}" - theme="simple"/> - </td> - <td> - <s:a href="#" title="Remove [%{#attr.property.key}] Property" - onclick="setAndSubmit('propertyKey', '%{#attr.property.key}', 'removeProperty')" - theme="simple"> - <img src="${iconDeleteUrl}"/></s:a> - </td> - </tr> - </c:forEach> - </table> - </c:otherwise> - </c:choose> - </td> -</tr> - -<tr class="seperator"> - <td valign="top"> - <label for="blackListEntry">Black List:</label> - </td> - <td> - <s:textfield name="blackListPattern" size="30" id="blackListEntry" theme="simple" - onkeypress="submitenter(event, 'addBlackListPattern')"/> - <input type="button" onclick="submitForm('addBlackListPattern')" value="Add Pattern" /> - </td> -</tr> - -<tr> - <td> - </td> - <td> - <c:choose> - <c:when test="${empty (connector.blackListPatterns)}"> - <i>No black list patterns have been set.</i> - </c:when> - <c:otherwise> - <table> - <s:iterator value="connector.blackListPatterns" var="currentPattern" status="i"> - <tr> - <td> - <input type="hidden" name="connector.blackListPatterns" value="<s:property value="currentPattern" escapeHtml="true"/>"/> - <code>"${currentPattern}"</code> - </td> - <td> - <a href="#" title="Remove [${currentPattern}] Pattern" - onclick="setAndSubmit('pattern', '<s:property value="currentPattern" escapeJavaScript="true"/>', 'removeBlackListPattern')"> - <img src="${iconDeleteUrl}"/></a> - </td> - </tr> - </s:iterator> - </table> - </c:otherwise> - </c:choose> - </td> -</tr> - -<tr class="seperator"> - <td valign="top"> - <label for="whiteListEntry">White List:</label> - </td> - <td> - <s:textfield name="whiteListPattern" size="30" id="whiteListEntry" theme="simple" - onkeypress="submitenter(event, 'addWhiteListPattern')"/> - <input type="button" onclick="submitForm('addWhiteListPattern')" value="Add Pattern" /> - </td> -</tr> -<tr> - <td> - </td> - <td> - <c:choose> - <c:when test="${empty (connector.whiteListPatterns)}"> - <i>No white list patterns have been set.</i> - </c:when> - <c:otherwise> - <table> - <s:iterator value="connector.whiteListPatterns" var="currentPattern" status="i"> - <tr> - <td> - <input type="hidden" name="connector.whiteListPatterns" value="<s:property value="currentPattern" escapeHtml="true"/>"/> - <code>"${currentPattern}"</code> - </td> - <td> - <a href="#" title="Remove ${currentPattern} Pattern" - onclick="setAndSubmit('pattern', '<s:property value="currentPattern" escapeJavaScript="true"/>', 'removeWhiteListPattern')" - theme="simple"> - <img src="${iconDeleteUrl}"/></a> - </td> - </tr> - </s:iterator> - </table> - </c:otherwise> - </c:choose> - </td> -</tr> - -<script type="text/javascript"> - <!-- - function adjustActionMethod( action, method ) - { - var idx = action.indexOf( "!" ); - if( idx == (-1) ) - { - // no "name!method.action" defined, split by ".action" instead. - idx = action.indexOf( ".action" ); - } - - return action.substring( 0, idx ) + "!" + method + ".action"; - } - - function setAndSubmit( id, value, method ) - { - var f = document.forms['saveProxyConnector']; - - f.action = adjustActionMethod( f.action, method ); - f.elements[id].value = value; - f.submit(); - } - - function submitForm( method ) - { - var f = document.forms['saveProxyConnector']; - - var before = f.action; - f.action = adjustActionMethod( f.action, method ); - f.submit(); - } - - function submitenter( e, method ) - { - var keycode; - - - if ( window.event ) - { - keycode = window.event.keyCode; - } - else if ( e ) - { - keycode = e.which; - } - else - { - return true; - } - - if ( keycode == 13 ) - { - submitForm( method ); - return false; - } - else - { - return true; - } - } - - document.forms["saveProxyConnector"]["connector.proxyId"].focus(); - //--> -</script> - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf deleted file mode 100644 index 000578650..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf +++ /dev/null @@ -1,40 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<s:textfield name="repository.name" label="Name" size="50" required="true"/> -<s:textfield name="repository.url" label="URL" size="60" required="true"/> -<s:textfield name="repository.userName" label="Username" size="25" required="false"/> -<s:password name="repository.password" label="Password" size="25" required="false"/> -<s:textfield name="repository.timeout" label="Timeout in seconds" size="3" required="false"/> -<s:select list="#@java.util.LinkedHashMap@{'default' : 'Maven 2.x Repository', 'legacy' : 'Maven 1.x Repository'}" - name="repository.layout" label="Type"/> - -<s:checkbox name="repository.downloadRemoteIndex" label="Activate download remote index" /> -<s:textfield name="repository.remoteIndexUrl" label="Remote index url, can be relative to url" size="60" required="false"/> -<s:textfield name="repository.cronExpression" label="Cron expression" size="10" required="false"/> -<s:textfield name="repository.indexDirectory" label="Directory index storage" size="60" required="false"/> -<s:textfield name="repository.remoteDownloadTimeout" label="Download Remote Index Timeout in seconds" size="10" required="false"/> -<s:select list="networkProxies" name="repository.remoteDownloadNetworkProxyId" emptyOption="true" -required="false" listKey="id" listValue="id" label="Network Proxy to Use for download Remote Index"/> -<s:checkbox name="repository.downloadRemoteIndexOnStartup" label="Download remote index on Archiva startup" /> - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf deleted file mode 100644 index 73b9b980f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf +++ /dev/null @@ -1,36 +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. - --%> -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<s:textfield name="repository.name" label="Name" size="50" required="true"/> -<s:textfield name="repository.location" label="Directory" size="50" required="true"/> -<s:textfield name="repository.indexDirectory" label="Index Directory" size="50"/> -<s:select list="#@java.util.LinkedHashMap@{'default' : 'Maven 2.x Repository', 'legacy' : 'Maven 1.x Repository'}" - name="repository.layout" label="Type"/> -<s:textfield name="repository.cronExpression" label="Cron" size="40" required="true"/> -<s:textfield name="repository.daysOlder" label="Repository Purge By Days Older Than" size="5"/> -<s:textfield name="repository.retentionCount" label="Repository Purge By Retention Count" size="5"/> -<s:checkbox name="repository.releases" value="repository.releases" label="Releases Included"/> -<s:checkbox name="repository.blockRedeployments" value="repository.blockRedeployments" label="Block Re-deployment of Released Artifacts"/> -<s:checkbox name="repository.snapshots" value="repository.snapshots" label="Snapshots Included"/> -<s:checkbox name="repository.scanned" value="repository.scanned" label="Scannable"/> -<s:checkbox name="repository.deleteReleasedSnapshots" value="repository.deleteReleasedSnapshots" - label="Delete Released Snapshots"/> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp deleted file mode 100644 index d6e17980b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp +++ /dev/null @@ -1,131 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<html> -<head> - <title>Administration - Legacy Support</title> - <s:head/> -</head> - -<body> - -<h1>Administration - Legacy Artifact Path Resolution</h1> - -<div id="contentArea"> - -<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> -<s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - -<div class="admin"> -<div class="controls"> - <redback:ifAuthorized permission="archiva-manage-configuration"> - <s:url id="addLegacyArtifactPathUrl" action="addLegacyArtifactPath"/> - <s:a href="%{addLegacyArtifactPathUrl}"> - <img src="<c:url value="/images/icons/create.png" />" alt="" width="16" height="16"/> - Add - </s:a> - </redback:ifAuthorized> -</div> -<h2>Path Mappings</h2> - -<c:choose> -<c:when test="${empty (legacyArtifactPaths)}"> - <%-- No paths. --%> - <p><strong>There are no legacy artifact paths configured yet.</strong></p> -</c:when> -<c:otherwise> - <%-- Display the paths. --%> - -<c:forEach items="${legacyArtifactPaths}" var="legacyArtifactPath" varStatus="i"> -<c:choose> - <c:when test='${(i.index)%2 eq 0}'> - <c:set var="rowColor" value="dark" scope="page"/> - </c:when> - <c:otherwise> - <c:set var="rowColor" value="lite" scope="page"/> - </c:otherwise> -</c:choose> - -<div class="legacyArtifactPath ${rowColor}"> - -<div class="controls"> - <%-- TODO: make some icons --%> - <redback:ifAnyAuthorized permissions="archiva-manage-configuration"> - <s:token/> - <s:url id="deleteLegacyArtifactPath" encode="true" action="deleteLegacyArtifactPath"> - <s:param name="path" value="%{#attr.legacyArtifactPath.path}"/> - <s:param name="struts.token.name">struts.token</s:param> - <s:param name="struts.token"><s:property value="struts.token"/></s:param> - </s:url> - <s:a href="%{deleteLegacyArtifactPath}"> - <img src="<c:url value="/images/icons/delete.gif" />" alt="" width="16" height="16"/> - Delete - </s:a> - </redback:ifAnyAuthorized> -</div> - -<%-- used c:out in displaying EL's so that they would be escaped --%> -<table class="infoTable"> -<tr> - <th>Path</th> - <td> - <code><c:out value="${legacyArtifactPath.path}" /></code> - </td> -</tr> -<tr> - <th>Artifact</th> - <td> - <code><c:out value="${legacyArtifactPath.artifact}" /></code> - </td> -</tr> -</table> - -</div> -</c:forEach> - -</c:otherwise> -</c:choose> - - - -</div> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp deleted file mode 100644 index 8ccbfda68..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp +++ /dev/null @@ -1,114 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Admin: Merge Staging Repository</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Merge Staging Repository</h1> - -<p> - Are you sure you want to merge the repository? -</p> - -<div class="infobox"> - <table class="infotable"> - - <c:choose> - <c:when test="${empty (conflictSourceArtifacts)}"> - <h1>No conflicting artifacts</h1> - - <c:if test="${!repository.snapshots and repository.releases}"> - <div class="warningbox"> - <p> - <strong>WARNING: Repository "${repoid}" does not allow to merge snapshots</strong> - </p> - </div> - </c:if> - - <s:form method="post" action="merge" namespace="/admin" validate="false" theme="simple"> - <s:hidden name="repoid"/> - <div class="buttons"> - <s:submit value="Merge All" method="doMerge"/> - </div> - </s:form> - </c:when> - <c:otherwise> - <div class="warningbox"> - <c:if test="${!repository.snapshots and repository.releases}"> - <p> - <strong>WARNING: Repository "${repoid}" does not allow to merge snapshots</strong> - </p> - </c:if> - <p> - <strong>WARNING: The following are the artifacts in conflict.</strong> - </p> - </div> - <c:forEach items="${conflictSourceArtifactsToBeDisplayed}" var="artifact"> - <tr> - <td>Artifact Id :</td> - <%--<td><code>${artifact.id}</code></td>--%> - <td align="left"> <code>${artifact.namespace} ${" "} ${artifact.project} ${" "} ${artifact.version}</code></td> - </tr> - </c:forEach> - <tr> - <td> - <s:form action="merge" method="post" namespace="/admin" validate="false"> - <s:hidden name="repoid"/> - <div class="buttons"> - <table> - <tr> - <td> - <table> - <tr> - <td> - <s:submit value="Merge All" method="doMerge"/> - </td> - </tr> - </table> - </td> - <td> - <table> - <tr> - <td> - <s:submit value="Merge With Skip" method="mergeBySkippingConflicts"/> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </s:form> - </td> - </tr> - </c:otherwise> - </c:choose> - </table> -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeResults.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeResults.jsp deleted file mode 100644 index a6adf6ef8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeResults.jsp +++ /dev/null @@ -1,42 +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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Admin: Merge Staging Repository</title> - <s:head/> -</head> - -<body> -<h1>Admin: Merge Staging Repository</h1> - -<div id="contentArea"> - - <s:actionerror/> - <s:actionmessage/> -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkConfiguration.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkConfiguration.jsp deleted file mode 100644 index 6cb780414..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkConfiguration.jsp +++ /dev/null @@ -1,51 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Configure NetworkConfiguration</title> - <s:head/> -</head> - -<body> - -<h1>Admin: Configure NetworkConfiguration</h1> - -<div id="contentArea"> - - <s:actionerror/> - <s:actionmessage/> - - <s:form name="saveNetworkConfiguration" method="post" action="saveNetworkConfiguration" namespace="/admin" validate="true"> - <s:token/> - <s:textfield name="networkConfiguration.maxTotal" label="Max Total Http Connections"/> - <s:textfield name="networkConfiguration.maxTotalPerHost" label="Max Total Http Connections per host"/> - <s:checkbox name="networkConfiguration.usePooling" label="Use http connection pooling"/> - <s:submit value="Save Network Configuration"/> - </s:form> - -</div> - -</body> - -</html>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp deleted file mode 100644 index e17719cfa..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp +++ /dev/null @@ -1,151 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<html> -<head> -<title>Administration - Network Proxies</title> -<s:head /> -</head> - -<body> - -<h1>Administration - Network Proxies</h1> - -<div id="contentArea"> - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - <s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - -<div class="admin"> -<div class="controls"> -<redback:ifAuthorized - permission="archiva-manage-configuration"> - <s:url id="addNetworkProxyUrl" action="addNetworkProxy" /> - <s:a href="%{addNetworkProxyUrl}"> - <img src="<c:url value="/images/icons/create.png" />" /> - Add Network Proxy</s:a> -</redback:ifAuthorized></div> -<h2>Network Proxies</h2> - -<c:choose> - <c:when test="${empty (networkProxies)}"> - <%-- No Local Repositories. --%> - <strong>There are no network proxies configured yet.</strong> - </c:when> - <c:otherwise> - <%-- Display the repositories. --%> - - <c:forEach items="${networkProxies}" var="proxy" varStatus="i"> - <c:choose> - <c:when test='${(i.index)%2 eq 0}'> - <c:set var="rowColor" value="dark" scope="page" /> - </c:when> - <c:otherwise> - <c:set var="rowColor" value="lite" scope="page" /> - </c:otherwise> - </c:choose> - - <div class="netproxy ${rowColor}"> - - <div class="controls"> - <redback:ifAnyAuthorized - permissions="archiva-manage-configuration"> - <s:token/> - <s:url id="editNetworkProxyUrl" encode="true" action="editNetworkProxy"> - <s:param name="proxyid" value="%{#attr.proxy.id}" /> - </s:url> - <s:url id="deleteNetworkProxyUrl" encode="true" action="deleteNetworkProxy" method="confirm"> - <s:param name="proxyid" value="%{#attr.proxy.id}" /> - <s:param name="struts.token.name">struts.token</s:param> - <s:param name="struts.token"><s:property value="struts.token"/></s:param> - </s:url> - <s:a href="%{editNetworkProxyUrl}"> - <img src="<c:url value="/images/icons/edit.png" />" /> - Edit Network Proxy</s:a> - <s:a href="%{deleteNetworkProxyUrl}"> - <img src="<c:url value="/images/icons/delete.gif" />" /> - Delete Network Proxy</s:a> - </redback:ifAnyAuthorized></div> - - <%-- used c:out in displaying EL's for them to be escaped. --%> - <table class="infoTable"> - <tr> - <th>Identifier</th> - <td><code><c:out value="${proxy.id}" /></code></td> - </tr> - <tr> - <th>Protocol</th> - <td><c:out value="${proxy.protocol}" /></td> - </tr> - <tr> - <th>Host</th> - <td><c:out value="${proxy.host}" /></td> - </tr> - <tr> - <th>Port</th> - <td><c:out value="${proxy.port}" /></td> - </tr> - <c:if test="${not empty (proxy.username)}"> - <tr> - <th>Username</th> - <td><c:out value="${proxy.username}" /></td> - </tr> - <c:if test="${not empty (proxy.password)}"> - <tr> - <th>Password</th> - <td>••••••••</td> - </tr> - </c:if> - </c:if> - <tr> - <th>Use NTLM</th> - <td><c:out value="${proxy.useNtlm}" /></td> - </tr> - </table> - - </div> - </c:forEach> - - </c:otherwise> -</c:choose> -</div> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp deleted file mode 100644 index 0d215d735..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp +++ /dev/null @@ -1,267 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<html> -<head> - <title>Administration - Proxy Connectors</title> - <s:head/> - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> - <script type="text/javascript"> - $(document).ready(function(){ - - $("table.settings").hide(); - $("a.expand").click(function(event){ - event.preventDefault(); - $(this).next().toggle("slow"); - }); - - }); - </script> - -</head> - -<body> - -<h1>Administration - Proxy Connectors</h1> - -<c:url var="iconDeleteUrl" value="/images/icons/delete.gif"/> -<c:url var="iconEditUrl" value="/images/icons/edit.png"/> -<c:url var="iconCreateUrl" value="/images/icons/create.png"/> -<c:url var="iconUpUrl" value="/images/icons/up.gif"/> -<c:url var="iconDownUrl" value="/images/icons/down.gif"/> -<c:url var="iconEnable" value="/images/icons/on-symbol.png"/> -<c:url var="iconDisable" value="/images/icons/off-symbol.png"/> - -<div id="contentArea"> - -<s:actionerror/> -<s:actionmessage/> - -<div style="float:right"> - <c:choose> - <c:when test="${remoteRepoExists}"> - <redback:ifAnyAuthorized permissions="archiva-manage-configuration"> - <s:url id="addProxyConnectorUrl" action="addProxyConnector"/> - <s:a href="%{addProxyConnectorUrl}" cssClass="create"> - <img src="<c:url value="/images/icons/create.png" />"/> Add - </s:a> - </redback:ifAnyAuthorized> - </c:when> - <c:otherwise> - <img src="<c:url value="/images/icons/create.png" />"/> - Add (Disabled. No remote repositories) - </c:otherwise> - </c:choose> -</div> - -<h2>Repository Proxy Connectors</h2> - -<c:choose> -<c:when test="${empty (proxyConnectorMap)}"> - <strong>No Repository Proxy Connectors Defined.</strong> -</c:when> -<c:otherwise> - -<div class="admin"> - -<c:forEach items="${proxyConnectorMap}" var="repository" varStatus="i"> - -<div class="proxyConfig"> - <div class="managedRepo"> - <img src="<c:url value="/images/archiva-splat-32.gif"/>"/> - <p class="id">${repository.key}</p> - <p class="name">${repoMap[repository.key].name}</p> - </div> - - <c:set var="numberOfRepos" value="${fn:length(repository.value)}" /> - - <c:forEach items="${repository.value}" var="connector" varStatus="pc"> - - <c:choose> - <c:when test='${(pc.index)%2 eq 0}'> - <c:set var="rowColor" value="dark" scope="page"/> - </c:when> - <c:otherwise> - <c:set var="rowColor" value="lite" scope="page"/> - </c:otherwise> - </c:choose> - - <div class="connector ${rowColor}"> - <div class="controls"> - <redback:ifAnyAuthorized permissions="archiva-manage-configuration"> - <s:token/> - <s:url id="sortDownProxyConnectorUrl" action="sortDownProxyConnector"> - <s:param name="source" value="%{#attr.connector.sourceRepoId}"/> - <s:param name="target" value="%{#attr.connector.targetRepoId}"/> - </s:url> - <s:url id="sortUpProxyConnectorUrl" action="sortUpProxyConnector"> - <s:param name="source" value="%{#attr.connector.sourceRepoId}"/> - <s:param name="target" value="%{#attr.connector.targetRepoId}"/> - </s:url> - <s:url id="editProxyConnectorUrl" action="editProxyConnector"> - <s:param name="target" value="%{#attr.connector.targetRepoId}"/> - <s:param name="source" value="%{#attr.connector.sourceRepoId}"/> - </s:url> - <s:url id="deleteProxyConnectorUrl" action="deleteProxyConnector" method="confirmDelete"> - <s:param name="source" value="%{#attr.connector.sourceRepoId}"/> - <s:param name="target" value="%{#attr.connector.targetRepoId}"/> - <s:param name="struts.token.name">struts.token</s:param> - <s:param name="struts.token"><s:property value="struts.token"/></s:param> - </s:url> - <s:url id="enableProxyConnectorUrl" action="enableProxyConnector" method="confirmEnable"> - <s:param name="source" value="%{#attr.connector.sourceRepoId}"/> - <s:param name="target" value="%{#attr.connector.targetRepoId}"/> - </s:url> - <s:url id="disableProxyConnectorUrl" action="disableProxyConnector" method="confirmDisable"> - <s:param name="source" value="%{#attr.connector.sourceRepoId}"/> - <s:param name="target" value="%{#attr.connector.targetRepoId}"/> - <s:param name="struts.token.name">struts.token</s:param> - <s:param name="struts.token"><s:property value="struts.token"/></s:param> - </s:url> - <c:if test="${connector.disabled}"> - <s:a href="%{enableProxyConnectorUrl}" title="Enable Proxy Connector"> - <img src="${iconDisable}"/> - </s:a> - </c:if> - <c:if test="${connector.disabled == false}"> - <s:a href="%{disableProxyConnectorUrl}" title="Disable Proxy Connector"> - <img src="${iconEnable}"/> - </s:a> - </c:if> - <c:if test="${pc.count > 1}"> - <s:a href="%{sortUpProxyConnectorUrl}" title="Move Proxy Connector Up"> - <img src="${iconUpUrl}"/> - </s:a> - </c:if> - <c:if test="${pc.count < numberOfRepos}"> - <s:a href="%{sortDownProxyConnectorUrl}" cssClass="down" title="Move Proxy Connector Down"> - <img src="${iconDownUrl}"/> - </s:a> - </c:if> - <s:a href="%{editProxyConnectorUrl}" cssClass="edit" title="Edit Proxy Connector"> - <img src="${iconEditUrl}"/> - </s:a> - <s:a href="%{deleteProxyConnectorUrl}" cssClass="delete" title="Delete Proxy Connector"> - <img src="${iconDeleteUrl}"/> - </s:a> - </redback:ifAnyAuthorized> - </div> - - <h4>Proxy Connector</h4> - - <div class="remoteRepo"> - <img src="<c:url value="/images/archiva-world.png"/>"/> - <p class="id">${connector.targetRepoId}</p> - <p class="name">${repoMap[connector.targetRepoId].name}</p> - <p class="url"><a href="${repoMap[connector.targetRepoId].url}">${repoMap[connector.targetRepoId].url}</a></p> - </div> - - <a class="expand" href="#">Settings</a> - <table class="settings"> - <tr> - <th nowrap="nowrap">Network Proxy:</th> - <td> - <c:choose> - <c:when test="${empty (connector.proxyId)}"> - <span class="directConnection">(Direct Connection)</span> - </c:when> - <c:otherwise> - <s:url id="editProxyIdUrl" action="editNetworkProxy"> - <s:param name="proxyid" value="%{'#attr.connector.proxyId'}"/> - </s:url> - <s:a href="%{editProxyIdUrl}" cssClass="edit" title="Edit Network Proxy"> - ${connector.proxyId} - <img src="${iconEditUrl}"/> - </s:a> - </c:otherwise> - </c:choose> - </td> - </tr> - <tr> - <th>Policies:</th> - <td nowrap="nowrap"> - <table class="policies"> - <c:forEach items="${connector.policies}" var="policies"> - <tr> - <th>${policies.key}</th> - <td>${policies.value}</td> - </tr> - </c:forEach> - </table> - </td> - </tr> - - <c:if test="${not (empty (connector.whiteListPatterns))}"> - <tr> - <th nowrap="nowrap">White List:</th> - <td nowrap="nowrap"> - <c:forEach items="${connector.whiteListPatterns}" var="pattern"> - <p><code>"${pattern}"</code></p> - </c:forEach> - </td> - </tr> - </c:if> - - <c:if test="${not (empty (connector.blackListPatterns))}"> - <tr> - <th nowrap="nowrap">Black List:</th> - <td> - <c:forEach items="${connector.blackListPatterns}" var="pattern"> - <p><code>"${pattern}"</code></p> - </c:forEach> - </td> - </tr> - </c:if> - - <c:if test="${not (empty (connector.properties))}"> - <tr> - <th>Properties:</th> - <td> - <table class="props"> - <c:forEach items="${connector.properties}" var="prop"> - <tr> - <th>${prop.key}</th> - <td>${prop.value}</td> - </tr> - </c:forEach> - </table> - </td> - </tr> - </c:if> - </table> - </div> <%-- connector --%> - -</c:forEach> -</div> <%-- proxyConfig --%> -</c:forEach> -</div> <%-- admin --%> -</c:otherwise> -</c:choose> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp deleted file mode 100644 index ae38f9637..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp +++ /dev/null @@ -1,422 +0,0 @@ -<%@ page import="java.io.File" %> -<%-- -~ 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. ---%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<html> -<head> - <title>Administration - Repositories</title> - <s:head/> - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> - <script type="text/javascript"> - $(document).ready(function(){ - - $(".pom").hide(); - $("a.expand").click(function(event){ - event.preventDefault(); - $(this).siblings("pre").toggle("slow"); - }); - - }); - </script> -</head> - -<body> - -<h1>Administration - Repositories</h1> - -<div id="contentArea"> - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - <s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:actionmessage /> - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - -<div class="admin"> -<div class="controls"> - <redback:ifAuthorized permission="archiva-manage-configuration"> - <s:url id="addRepositoryUrl" action="addRepository"/> - <s:a href="%{addRepositoryUrl}"> - <img src="<c:url value="/images/icons/create.png" />" alt="" width="16" height="16"/> - Add - </s:a> - </redback:ifAuthorized> -</div> -<h2>Managed Repositories</h2> - -<c:choose> -<c:when test="${empty (managedRepositories)}"> - <%-- No Managed Repositories. --%> - <strong>There are no managed repositories configured yet.</strong> -</c:when> -<c:otherwise> -<%-- Display the repositories. --%> - -<c:forEach items="${managedRepositories}" var="repository" varStatus="i"> -<c:choose> - <c:when test='${(i.index)%2 eq 0}'> - <c:set var="rowColor" value="dark" scope="page"/> - </c:when> - <c:otherwise> - <c:set var="rowColor" value="lite" scope="page"/> - </c:otherwise> -</c:choose> - -<div class="repository ${rowColor}"> - -<div class="controls"> - <%-- TODO: make some icons --%> - <redback:ifAnyAuthorized permissions="archiva-manage-configuration"> - <s:url id="editRepositoryUrl" encode="true" action="editRepository"> - <s:param name="repoid" value="%{#attr.repository.id}"/> - </s:url> - <s:token/> - <s:url id="deleteRepositoryUrl" encode="true" action="confirmDeleteRepository"> - <s:param name="repoid" value="%{#attr.repository.id}"/> - <s:param name="struts.token.name">struts.token</s:param> - <s:param name="struts.token"><s:property value="struts.token"/></s:param> - </s:url> - <s:a href="%{editRepositoryUrl}"> - <img src="<c:url value="/images/icons/edit.png" />" alt="" width="16" height="16"/> - Edit - </s:a> - <s:a href="%{deleteRepositoryUrl}"> - <img src="<c:url value="/images/icons/delete.gif" />" alt="" width="16" height="16"/> - Delete - </s:a> - </redback:ifAnyAuthorized> - <c:url var="rssFeedIconUrl" value="/images/icons/rss-feed.png"/> - <a href='/archiva/feeds/<c:out value="${repository.id}" />'> - <img src="${rssFeedIconUrl}" /> - </a> -</div> - -<%-- used c:out in displaying EL's for them to be escaped. --%> -<div style="float: left"> - <img src="<c:url value="/images/archiva-splat-32.gif"/>" alt="" width="32" height="32"/> -</div> - -<h3 class="repository"><c:out value="${repository.name}" /></h3> - -<table class="infoTable"> -<tr> - <th>Identifier</th> - <td> - <code><c:out value="${repository.id}" /></code> - </td> -</tr> -<tr> - <th>Name</th> - <td> - <code><c:out value="${repository.name}" /></code> - </td> -</tr> -<tr> - <th>Directory</th> - <td><c:out value="${repository.location}" /></td> -</tr> -<c:if test="${!empty (repository.indexDirectory)}"> - <tr> - <th>Index Directory</th> - <td><c:out value="${repository.indexDirectory}" /></td> - </tr> -</c:if> -<tr> - <th>WebDAV URL</th> - <td><a href='<c:out value="${baseUrl}" />/<c:out value="${repository.id}" />/' ><c:out value="${baseUrl}" />/<c:out value="${repository.id}" />/</a></td> -</tr> -<tr> - <th>Type</th> - <%-- TODO: can probably just use layout appended to a key prefix in i18n to simplify this --%> - <td> - <c:choose> - <c:when test="${repository.layout == 'default'}"> - Maven 2.x Repository - </c:when> - <c:otherwise> - Maven 1.x Repository - </c:otherwise> - </c:choose> - </td> -</tr> -<c:if test="${!empty (repositoryToGroupMap[repository.id])}"> - <tr> - <th>Groups</th> - <td> - <c:forEach items="${repositoryToGroupMap[repository.id]}" varStatus="i" var="group"> - <c:out value="${group}" /><c:if test="${!i.last}">,</c:if> - </c:forEach> - </td> - </tr> -</c:if> -<tr> - <th>Releases Included</th> - <td class="${repository.releases ? 'donemark' : 'errormark'} booleanIcon"> </td> -</tr> -<tr> - <th>Snapshots Included</th> - <td class="${repository.snapshots ? 'donemark' : 'errormark'} booleanIcon"> </td> -</tr> -<c:if test="${repository.snapshots}"> - <tr> - <th>Delete Released Snapshots</th> - <td class="${repository.deleteReleasedSnapshots ? 'donemark' : 'errormark'} booleanIcon"> </td> - </tr> - <tr> - <th>Repository Purge By Days Older Than</th> - <td><c:out value="${repository.daysOlder}" /></td> - </tr> - <tr> - <th>Repository Purge By Retention Count</th> - <td><c:out value="${repository.retentionCount}" /></td> - </tr> -</c:if> -<tr> - <th>Scanned</th> - <td class="${repository.scanned ? 'donemark' : 'errormark'} booleanIcon"> </td> -</tr> -<c:if test="${repository.scanned}"> - <tr> - <th>Scanning Cron</th> - <td><c:out value="${repository.cronExpression}" /></td> - </tr> - <tr> - <th> - Actions - </th> - <td> - <redback:ifAuthorized permission="archiva-run-indexer"> - <s:form action="indexRepository" theme="simple"> - <s:hidden name="repoid" value="%{#attr.repository.id}"/> - <table> - <tr> - <td><s:checkbox name="scanAll" value="scanAll"/>Process All Artifacts</td> - </tr> - <tr> - <td><s:submit value="Scan Repository Now" id="scanRepoNow%{#attr.repository.id}"/></td> - </tr> - </table> - </s:form> - </redback:ifAuthorized> - </td> - </tr> - <tr> - <th>Stats</th> - <td> - <c:set var="stats" value="${repositoryStatistics[repository.id]}"/> - <c:choose> - <c:when test="${empty (stats)}"> - No Statistics Available. - </c:when> - <c:otherwise> - <table> - <tr> - <th>Last Scanned</th> - <td><c:out value="${stats.scanStartTime}" /></td> - </tr> - <tr> - <th>Duration</th> - <td><c:out value="${stats.duration}" /> ms</td> - </tr> - <tr> - <th>Total File Count</th> - <td><c:out value="${stats.totalFileCount}" /> - </tr> - <tr> - <th>New Files Found</th> - <td><c:out value="${stats.newFileCount}" /> - </tr> - </table> - </c:otherwise> - </c:choose> - </td> - </tr> -</c:if> -<tr> - <th>POM Snippet</th> - <td> - <archiva:copy-paste-snippet object="${repository}" wrapper="toggle" /> - </td> -</tr> - - - <c:set var="str" value="${repository.id}" /> - <jsp:useBean id="str" type="java.lang.String" scope="page"/> - <c:set var="location" value="${repository.location}"/> - <jsp:useBean id="location" type="java.lang.String" scope="page"/> - - <%-- TODO: fix this hard coding - make stage repository configuration more transparent than the actual ManagedRepositoryConfiguration --%> - <c:if test='<%= new File (new File(location ).getParent() ,str + "-stage" ).exists()%>'> - <tr> - <th> - stage repository location - </th> - <td> - ${repository.location}${'-stage'} - </td> - </tr> - <redback:ifAuthorized permission="archiva-merge-repository" resource="${repository.id}"> - <tr> - <th>Merge Actions</th> - <td> - <s:form action="merge" theme="simple"> - <s:hidden name="repoid" value="%{#attr.repository.id}"/> - <%--<s:hidden name="repository" value="%{repository}"/>--%> - <table> - <tr> - <td><s:submit id="Merge" value="Merge"/></td> - </tr> - </table> - </s:form> - </td> - </tr> - </redback:ifAuthorized> - - - </c:if> - - - -</table> - -</div> -</c:forEach> - -</c:otherwise> -</c:choose> - -<div class="controls"> - <redback:ifAuthorized permission="archiva-manage-configuration"> - <s:url id="addRepositoryUrl" action="addRemoteRepository"/> - <s:a href="%{addRepositoryUrl}"> - <img src="<c:url value="/images/icons/create.png" />" alt="" width="16" height="16"/> - Add - </s:a> - </redback:ifAuthorized> -</div> -<h2>Remote Repositories</h2> - -<c:choose> - <c:when test="${empty (remoteRepositories)}"> - <%-- No Remote Repositories. --%> - <strong>There are no remote repositories configured yet.</strong> - </c:when> - <c:otherwise> - <%-- Display the repositories. --%> - <c:forEach items="${remoteRepositories}" var="repository" varStatus="i"> - <c:choose> - <c:when test='${(i.index)%2 eq 0}'> - <c:set var="rowColor" value="dark" scope="page"/> - </c:when> - <c:otherwise> - <c:set var="rowColor" value="lite" scope="page"/> - </c:otherwise> - </c:choose> - - <div class="repository ${rowColor}"> - - <div class="controls"> - <redback:ifAnyAuthorized permissions="archiva-manage-configuration"> - <s:url id="editRepositoryUrl" encode="true" action="editRemoteRepository"> - <s:param name="repoid" value="%{#attr.repository.id}"/> - </s:url> - <s:a href="%{editRepositoryUrl}"> - <img src="<c:url value="/images/icons/edit.png" />" alt="" width="16" height="16"/> - Edit - </s:a> - <s:token/> - <s:url id="deleteRepositoryUrl" encode="true" action="confirmDeleteRemoteRepository"> - <s:param name="repoid" value="%{#attr.repository.id}"/> - <s:param name="struts.token.name">struts.token</s:param> - <s:param name="struts.token"><s:property value="struts.token"/></s:param> - </s:url> - <s:a href="%{deleteRepositoryUrl}"> - <img src="<c:url value="/images/icons/delete.gif" />" alt="" width="16" height="16"/> - Delete - </s:a> - </redback:ifAnyAuthorized> - </div> - - <div style="float: left"> - <img src="<c:url value="/images/archiva-world.png"/>" alt="" width="32" height="32"/> - </div> - - <h3 class="repository"><c:out value="${repository.name}" /></h3> - - <table class="infoTable"> - <tr> - <th>Identifier</th> - <td> - <code><c:out value="${repository.id}" /></code> - </td> - </tr> - <tr> - <th>Name</th> - <td> - <code><c:out value="${repository.name}" /></code> - </td> - </tr> - <tr> - <th>URL</th> - <td><c:out value="${repository.url}" /></td> - </tr> - <tr> - <th>Type</th> - <%-- TODO: can probably just use layout appended to a key prefix in i18n to simplify this --%> - <td> - <c:choose> - <c:when test="${repository.layout == 'default'}"> - Maven 2.x Repository - </c:when> - <c:otherwise> - Maven 1.x Repository - </c:otherwise> - </c:choose> - </td> - </tr> - </table> - - </div> - </c:forEach> - </c:otherwise> -</c:choose> - -</div> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryGroups.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryGroups.jsp deleted file mode 100644 index 71a763b68..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryGroups.jsp +++ /dev/null @@ -1,165 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<html> -<head> - <title>Administration - Repository Groups</title> - <s:head/> -</head> - -<body> - -<h1>Administration - Repository Groups</h1> - -<c:url var="iconDeleteUrl" value="/images/icons/delete.gif"/> -<c:url var="iconEditUrl" value="/images/icons/edit.png"/> -<c:url var="iconCreateUrl" value="/images/icons/create.png"/> -<c:url var="iconUpUrl" value="/images/icons/up.gif"/> -<c:url var="iconDownUrl" value="/images/icons/down.gif"/> - -<div id="contentArea"> - -<s:actionerror/> -<s:actionmessage/> - -<div align="right"> - <redback:ifAnyAuthorized permissions="archiva-manage-configuration"> - <s:form name="addRepositoryGroup" action="addRepositoryGroup" namespace="/admin" validate="true"> - <s:textfield size="10" label="Identifier" name="repositoryGroup.id"/> - <s:token/> - <s:submit value="Add Group" cssClass="button"/> - </s:form> - </redback:ifAnyAuthorized> -</div> - -<h2>Repository Groups</h2> - -<c:choose> -<c:when test="${empty (repositoryGroups)}"> - <strong>No Repository Groups Defined.</strong> -</c:when> -<c:otherwise> - -<div class="admin"> - -<c:forEach items="${repositoryGroups}" var="repositoryGroup" varStatus="i"> - -<div class="repoGroup"> - <div class="managedRepo"> - - <div style="float:right"> - <s:token/> - <s:url id="deleteRepositoryGroupUrl" action="confirmDeleteRepositoryGroup"> - <s:param name="repoGroupId" value="%{#attr.repositoryGroup.key}" /> - <s:param name="struts.token.name">struts.token</s:param> - <s:param name="struts.token"><s:property value="struts.token"/></s:param> - </s:url> - <s:a href="%{deleteRepositoryGroupUrl}" cssClass="delete"> - <img src="${iconDeleteUrl}"/> - </s:a> - </div> - - <img src="<c:url value="/images/archiva-splat-32.gif"/>"/> - <p class="id">${repositoryGroup.key}</p> - <p><a href="${baseUrl}/${repositoryGroup.key}/">${baseUrl}/${repositoryGroup.key}/</a></p> - </div> - - <c:if test="${!empty (groupToRepositoryMap[repositoryGroup.key])}"> - <div class="repos"> - <s:form name="form%{#attr.i}" action="addRepositoryToGroup" namespace="/admin" validate="true"> - <s:hidden name="repoGroupId" value="%{#attr.repositoryGroup.key}"/> - <s:select list="%{#attr.groupToRepositoryMap[#attr.repositoryGroup.key]}" name="repoId" theme="simple"/> - <s:submit value="Add Repository" theme="simple" cssClass="button"/> - </s:form> - </div> - </c:if> - - <c:set var="numberOfRepos" value="${fn:length(repositoryGroup.value.repositories)}" /> - - <c:forEach items="${repositoryGroup.value.repositories}" var="repository" varStatus="r"> - - <c:choose> - <c:when test='${(r.index)%2 eq 0}'> - <c:set var="rowColor" value="dark" scope="page"/> - </c:when> - <c:otherwise> - <c:set var="rowColor" value="lite" scope="page"/> - </c:otherwise> - </c:choose> - - <div class="connector ${rowColor}"> - <div class="controls"> - <redback:ifAnyAuthorized permissions="archiva-manage-configuration"> - <s:url id="sortDownRepositoryUrl" action="sortDownRepositoryFromGroup"> - <s:param name="repoGroupId" value="%{#attr.repositoryGroup.key}"/> - <s:param name="targetRepo" value="%{#attr.managedRepositories[#attr.repository].id}"/> - </s:url> - <s:url id="sortUpRepositoryUrl" action="sortUpRepositoryFromGroup"> - <s:param name="repoGroupId" value="%{#attr.repositoryGroup.key}"/> - <s:param name="targetRepo" value="%{#attr.managedRepositories[#attr.repository].id}"/> - </s:url> - <s:url id="removeRepositoryUrl" action="removeRepositoryFromGroup"> - <s:param name="repoGroupId" value="%{#attr.repositoryGroup.key}"/> - <s:param name="repoId" value="%{#attr.managedRepositories[#attr.repository].id}"/> - </s:url> - <c:if test="${r.count > 1}"> - <s:a href="%{sortUpRepositoryUrl}" cssClass="up" title="Move Repository Up"> - <img src="${iconUpUrl}"/> - </s:a> - </c:if> - <c:if test="${r.count < numberOfRepos}"> - <s:a href="%{sortDownRepositoryUrl}" cssClass="down" title="Move Repository Down"> - <img src="${iconDownUrl}"/> - </s:a> - </c:if> - <s:a href="%{removeRepositoryUrl}" cssClass="delete" title="Delete Repository"> - <img src="${iconDeleteUrl}"/> - </s:a> - </redback:ifAnyAuthorized> - </div> - - <h4>Repository</h4> - - <div class="managedRepo"> - <img src="<c:url value="/images/archiva-splat-32.gif"/>"/> - <p class="id">${repository}</p> - <p class="name">${managedRepositories[repository].name}</p> - <p class="url"><a href="${baseUrl}/${managedRepositories[repository].id}/">${baseUrl}/${managedRepositories[repository].id}</a></p> - </div> - </div> <%-- repository --%> - </c:forEach> - -</div> <%-- repository group --%> -</c:forEach> -</div> <%-- admin --%> - -</c:otherwise> -</c:choose> -</div> <%-- content area --%> - -</body> -</html> - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp deleted file mode 100644 index f4ed3a4c0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp +++ /dev/null @@ -1,261 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<html> -<head> -<title>Administration - Repository Scanning</title> -<s:head /> -</head> - -<body> - -<h1>Administration - Repository Scanning</h1> - -<div id="contentArea"> - -<s:actionerror /> -<s:actionmessage /> - -<c:url var="iconDeleteUrl" value="/images/icons/delete.gif" /> -<c:url var="iconCreateUrl" value="/images/icons/create.png" /> -<s:url id="removeFiletypePatternUrl" action="repositoryScanning" method="removeFiletypePattern"/> -<s:url id="addFiletypePatternUrl" action="repositoryScanning" method="addFiletypePattern"/> - -<script type="text/javascript"> -<!-- - function removeFiletypePattern(action, filetypeId, pattern) - { - var f = document.getElementById('filetypeForm'); - - f.action = action; - f['pattern'].value = pattern; - f['fileTypeId'].value = filetypeId; - f.submit(); - } - - function addFiletypePattern(action, filetypeId, newPatternId) - { - var f = document.forms['filetypeForm']; - - f.action = action; - f.elements['pattern'].value = document.getElementById(newPatternId).value; - f.elements['fileTypeId'].value = filetypeId; - f.submit(); - } -//--> -</script> - -<div class="admin"> -<h2>Repository Scanning - File Types</h2> - -<c:choose> - <c:when test="${empty (fileTypeMap)}"> - <%-- No File Types. Eeek! --%> - <strong>There are no file types configured.</strong> - </c:when> - <c:otherwise> - <%-- Display the filetypes. --%> - - <s:form method="post" action="repositoryScanning" - namespace="/admin" validate="false" - id="filetypeForm" theme="simple"> - <s:token/> - <input type="hidden" name="pattern" /> - <input type="hidden" name="fileTypeId" /> - </s:form> - - <c:forEach items="${fileTypeIds}" var="filetypeId" varStatus="j"> - - <div class="filetype"> - - <div class="controls"><%-- Does this even make sense for file types? --%></div> - - <h3 class="filetype">${filetypeId}</h3> - - <table> - <c:forEach items="${fileTypeMap[filetypeId].patterns}" var="pattern" varStatus="i"> - <c:choose> - <c:when test='${(i.index)%2 eq 0}'> - <c:set var="bgcolor" value="even" scope="page" /> - </c:when> - <c:otherwise> - <c:set var="bgcolor" value="odd" scope="page" /> - </c:otherwise> - </c:choose> - - <c:set var="escapedPattern" value="${fn:escapeXml(pattern)}" scope="page" /> - - <tr> - <td class="pattern ${bgcolor}"> - <code>${escapedPattern}</code> - </td> - <td class="controls ${bgcolor}"> - <s:a href="#" title="Remove [%{#attr.escapedPattern}] Pattern from [%{#attr.filetypeId}]" - onclick="removeFiletypePattern( '%{#attr.removeFiletypePatternUrl}', '%{#attr.filetypeId}', '%{#attr.escapedPattern}' )" - theme="simple"> - <img src="${iconDeleteUrl}" /> - </s:a> - </td> - </tr> - </c:forEach> - <tr> - <td> - <s:textfield size="40" - id="newpattern_%{#attr.j.index}" - theme="simple" /> - </td> - <td> - <s:a href="#" - title="Add Pattern to [%{#attr.filetypeId}]" - onclick="addFiletypePattern( '%{#attr.addFiletypePatternUrl}', '%{#attr.filetypeId}', 'newpattern_%{#attr.j.index}' )" - theme="simple"> - <img src="${iconCreateUrl}" /> - </s:a> - </td> - </tr> - </table> - - </div> - </c:forEach> - - </c:otherwise> -</c:choose> - -<h2>Repository Scanning - Consumers of Known Content</h2> - -<c:choose> - <c:when test="${empty (knownContentConsumers)}"> - <%-- No Good Consumers. Eeek! --%> - <strong>There are no consumers of known content available.</strong> - </c:when> - <c:otherwise> - <%-- Display the consumers. --%> - - <s:form method="post" action="repositoryScanning!updateKnownConsumers" - namespace="/admin" validate="false" theme="simple"> - <s:token/> - <table class="consumers"> - <tr> - <th> </th> - <th>Enabled?</th> - <th>ID</th> - <th>Description</th> - </tr> - <c:forEach items="${knownContentConsumers}" var="consumer" varStatus="i"> - <c:choose> - <c:when test='${(i.index)%2 eq 0}'> - <c:set var="bgcolor" value="even" scope="page" /> - </c:when> - <c:otherwise> - <c:set var="bgcolor" value="odd" scope="page" /> - </c:otherwise> - </c:choose> - - <tr> - <td class="${bgcolor}"> - <input type="checkbox" name="enabledKnownContentConsumers" theme="simple" value="${consumer.id}" <c:if test="${consumer.enabled}">checked</c:if> /> - </td> - <td class="${bgcolor}"> - <c:if test="${consumer.enabled}"> - <strong>enabled</strong> - </c:if> - </td> - <td class="${bgcolor}"> - <code>${consumer.id}</code> - </td> - <td class="${bgcolor}">${consumer.description}</td> - </tr> - </c:forEach> - <tr> - <td colspan="4"> - <s:submit value="Update Consumers" /> - </td> - </tr> - </table> - </s:form> - - </c:otherwise> -</c:choose> - - -<h2>Repository Scanning - Consumers of Invalid Content</h2> - -<c:choose> - <c:when test="${empty (invalidContentConsumers)}"> - <%-- No Consumers. Eeek! --%> - <strong>There are no consumers of invalid content available.</strong> - </c:when> - <c:otherwise> - <%-- Display the consumers. --%> - - <s:form method="post" action="repositoryScanning!updateInvalidConsumers" - namespace="/admin" validate="false" theme="simple"> - <s:token/> - <table class="consumers"> - <tr> - <th> </th> - <th>Enabled?</th> - <th>ID</th> - <th>Description</th> - </tr> - <c:forEach items="${invalidContentConsumers}" var="consumer" varStatus="i"> - <c:choose> - <c:when test='${(i.index)%2 eq 0}'> - <c:set var="bgcolor" value="even" scope="page" /> - </c:when> - <c:otherwise> - <c:set var="bgcolor" value="odd" scope="page" /> - </c:otherwise> - </c:choose> - - <tr> - <td class="${bgcolor}"> - <input type="checkbox" name="enabledInvalidContentConsumers" theme="simple" value="${consumer.id}" <c:if test="${consumer.enabled}">checked</c:if> /> - </td> - <td class="${bgcolor}"> - <c:if test="${consumer.enabled}"> - <strong>enabled</strong> - </c:if> - </td> - <td class="${bgcolor}"> - <code>${consumer.id}</code> - </td> - <td class="${bgcolor}">${consumer.description}</td> - </tr> - </c:forEach> - <tr> - <td colspan="4"> - <s:submit value="Update Consumers" /> - </td> - </tr> - </table> - </s:form> - - </c:otherwise> -</c:choose></div> -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/systemStatus.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/systemStatus.jsp deleted file mode 100644 index 703af95ac..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/systemStatus.jsp +++ /dev/null @@ -1,146 +0,0 @@ -<%@ page import="java.util.Date" %> -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> - -<html> -<head> - <title>Administration - System Status</title> - <s:head/> -</head> - -<body> - -<h1>Administration - System Status</h1> - -<div id="contentArea"> - - <s:actionerror/> - <s:actionmessage/> - - <h2>Queues</h2> - - <table> - <tr> - <th>Queue</th> - <th>Size</th> - </tr> - <c:forEach var="queueEntry" items="${queues}"> - <c:set var="queue" value="${queueEntry.value.queueSnapshot}"/> - <tr> - <td>${queueEntry.key}</td> - <td align="right">${fn:length(queue)}</td> - </tr> - </c:forEach> - </table> - - <h2>Repository Scans Currently in Progress</h2> - - <c:choose> - <c:when test="${!empty scanner.inProgressScans}"> - <table> - <tr> - <th>Repository</th> - <th>Files processed</th> - <th>New files</th> - </tr> - <c:forEach var="scan" items="${scanner.inProgressScans}"> - <tr> - <td>${scan.repository.name} (${scan.repository.id})</td> - <td align="right">${scan.stats.totalFileCount}</td> - <td align="right">${scan.stats.newFileCount}</td> - </tr> - <tr> - <td colspan="3"> - <table> - <tr> - <th>Name</th> - <th>Total</th> - <th>Average</th> - <th>Invocations</th> - </tr> - <c:forEach var="entry" items="${scan.consumerTimings}"> - <tr> - <c:set var="total" value="${scan.consumerCounts[entry.key]}"/> - <td>${entry.key}</td> - <td align="right">${entry.value}ms</td> - <td align="right"><fmt:formatNumber value="${entry.value / total}" pattern="#"/>ms</td> - <td align="right">${total}</td> - </tr> - </c:forEach> - </table> - </td> - </tr> - </c:forEach> - </table> - </c:when> - <c:otherwise> - <p>No scans in progress.</p> - </c:otherwise> - </c:choose> - - <h2>Caches</h2> - - <table> - <tr> - <th>Cache</th> - <th>Size</th> - <th>Hits</th> - <th>Misses</th> - <th>Hit Ratio</th> - <th> </th> - </tr> - <c:forEach var="cacheEntry" items="${caches}"> - <c:set var="flushCacheUrl"> - <s:url action="flushCache"> - <s:param name="cacheKey">${cacheEntry.key}</s:param> - </s:url> - </c:set> - <tr> - <td>${cacheEntry.key}</td> - <td align="right">${cacheEntry.value.statistics.size}</td> - <td align="right">${cacheEntry.value.statistics.cacheHits}</td> - <td align="right">${cacheEntry.value.statistics.cacheMiss}</td> - <td align="right"><fmt:formatNumber value="${cacheEntry.value.statistics.cacheHitRate}" pattern="#%"/></td> - <td><a href="${flushCacheUrl}">Flush</a></td> - </tr> - </c:forEach> - </table> - - <h2>Memory Usage</h2> - - <p>${memoryStatus}</p> - - <h2>Current Time</h2> - - <p><%= new Date() %></p> - - <h2>Version Information</h2> - - Build number: <s:property value="archivaBuildNumber"/> - Build Timestamp: <s:property value="archivaBuildTimestampDateStr"/> - - </div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/alert.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/alert.jsp deleted file mode 100644 index 52b9abd57..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/alert.jsp +++ /dev/null @@ -1,46 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Security Alert Page</title> - <s:head/> -</head> - -<body> - -<div id="contentArea"> - <div id="searchBox"> - <div id="results"> - You are not authorized for this activity. - </div> - </div> -</div> - -<div class="clear"> - <hr/> -</div> - -</body> - -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp deleted file mode 100644 index 8d3bf67a0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp +++ /dev/null @@ -1,192 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> - -<html> -<head> - <title>Browse Repository</title> - <s:head/> - - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> - <script type="text/javascript"> - $(document).ready(function(){ - - $("table.infoTable").hide(); - $("a.expand").click(function(event){ - event.preventDefault(); - $(this).next().toggle("slow"); - }); - }); - </script> - -</head> - -<body> - -<h1>Browse Repository</h1> - -<div id="contentArea"> - <c:if test="${not empty groupId}"> - <p> - <archiva:groupIdLink var="${groupId}" includeTop="true" /> - <c:if test="${not empty artifactId}"> - <strong>${artifactId}</strong> - </c:if> - </p> - </c:if> - - <c:if test="${not empty namespaces}"> - <div id="nameColumn"> - <h2>Groups</h2> - <ul> - <c:forEach items="${namespaces}" var="groupId"> - <c:set var="url"> - <s:url action="browseGroup" namespace="/"> - <s:param name="groupId" value="%{#attr.groupId}"/> - </s:url> - </c:set> - <li><a href="${url}">${groupId}/</a></li> - </c:forEach> - </ul> - </div> - </c:if> - - <c:if test="${not empty projectIds}"> - <div id="nameColumn"> - <h2>Artifacts</h2> - <ul> - <c:url var="rssFeedIconUrl" value="/images/icons/rss-feed.png"/> - <c:forEach items="${projectIds}" var="artifactId"> - <c:set var="url"> - <s:url action="browseArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - </s:url> - </c:set> - <c:url var="rssUrl" value="/feeds/${groupId}/${artifactId}"/> - <li> - <a href="${url}">${artifactId}/</a> - <a href="${rssUrl}"> - <img src="${rssFeedIconUrl}" /> - </a> - </li> - </c:forEach> - </ul> - </div> - </c:if> - - <c:if test="${not empty projectVersions}"> - <%-- show shared project information (MRM-1041) TODO - share JSP code with artifactInfo.jspf --%> - - <c:set var="mavenFacet" value="${sharedModel.facets['org.apache.archiva.metadata.repository.storage.maven2.project']}" /> - <h2>Versions</h2> - <div id="nameColumn" class="versions"> - <a class="expand" href="#">Artifact Info</a> - <table class="infoTable"> - <tr> - <th>Group ID</th> - <td>${mavenFacet.groupId}</td> - </tr> - <tr> - <th>Artifact ID</th> - <td>${mavenFacet.artifactId}</td> - </tr> - <c:if test="${(mavenFacet.packaging != null) && (!empty mavenFacet.packaging)}"> - <tr> - <th>Packaging</th> - <td><code>${mavenFacet.packaging}</code></td> - </tr> - </c:if> - <c:if test="${(sharedModel.name != null) && (!empty sharedModel.name)}"> - <tr> - <th>Name</th> - <td><code>${sharedModel.name}</code></td> - </tr> - </c:if> - <c:if test="${sharedModel.organization != null}"> - <tr> - <th>Organisation</th> - <td> - <c:choose> - <c:when test="${(sharedModel.organization.url != null) && (!empty sharedModel.organization.url)}"> - <a href="${sharedModel.organization.url}">${sharedModel.organization.name}</a> - </c:when> - <c:otherwise> - ${sharedModel.organization.name} - </c:otherwise> - </c:choose> - </td> - </tr> - </c:if> - <c:if test="${sharedModel.issueManagement != null}"> - <tr> - <th>Issue Tracker</th> - <td> - <c:choose> - <c:when test="${!empty (sharedModel.issueManagement.url)}"> - <a href="${sharedModel.issueManagement.url}">${sharedModel.issueManagement.system}</a> - </c:when> - <c:otherwise> - ${sharedModel.issueManagement.system} - </c:otherwise> - </c:choose> - </td> - </tr> - </c:if> - <c:if test="${sharedModel.ciManagement != null}"> - <tr> - <th>Continuous Integration</th> - <td> - <c:choose> - <c:when test="${!empty (sharedModel.ciManagement.url)}"> - <a href="${sharedModel.ciManagement.url}">${sharedModel.ciManagement.system}</a> - </c:when> - <c:otherwise> - ${sharedModel.ciManagement.system} - </c:otherwise> - </c:choose> - </td> - </tr> - </c:if> - </table> - </div> - - <ul> - <c:forEach items="${projectVersions}" var="version"> - <c:set var="url"> - <s:url action="showArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - <s:param name="version" value="%{#attr.version}"/> - </s:url> - </c:set> - <li><a href="${url}">${version}/</a></li> - </c:forEach> - </ul> - </c:if> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp deleted file mode 100644 index ec1b77e3c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp +++ /dev/null @@ -1,52 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib uri="/struts-tags" prefix="s" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - -<div id="companyLogo"> - <s:set name="organisationLogo" value="organisationLogo"/> - <c:choose> - <c:when test="${!empty (organisationLogo)}"> - <s:set name="organisationUrl" value="organisationUrl"/> - <c:choose> - <c:when test="${!empty (organisationUrl)}"> - <a href='<c:out value="${organisationUrl}" />'> - <img src='<c:out value="${organisationLogo}" />' title='<c:out value="${organisationName}" />'/> - </a> - </c:when> - <c:otherwise> - <img src='<c:out value="${organisationLogo}" />' title='<c:out value="${organisationName}" />'/> - </c:otherwise> - </c:choose> - </c:when> - <c:otherwise> - <my:currentWWUrl action="index" namespace="/"> - <c:if test="${is19Sep}"> - <img src="<c:url value='/images/19Sep-logo.png' />"/> - </c:if> - <c:if test="${!is19Sep}"> - <img src="<c:url value='/images/archiva.png' />"/> - </c:if> - </my:currentWWUrl> - </c:otherwise> - </c:choose> -</div>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp deleted file mode 100644 index 057c4cb60..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp +++ /dev/null @@ -1,213 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> -<%@ taglib uri="/struts-tags" prefix="s" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ page import="java.util.Calendar" %> - -<html> -<head> - <title>Apache Archiva \ - <decorator:title default="Apache Archiva"/> - </title> - - <link rel="stylesheet" href="<c:url value="/css/maven-base.css"/>" type="text/css" media="all"/> - <link rel="stylesheet" href="<c:url value="/css/maven-theme.css"/>" type="text/css" media="all"/> - <link rel="stylesheet" href="<c:url value="/css/redback/table.css"/>" type="text/css" media="all"/> - <link rel="stylesheet" href="<c:url value="/css/site.css"/>" type="text/css" media="all"/> - <link rel="stylesheet" href="<c:url value="/css/print.css"/>" type="text/css" media="print"/> - <link rel="shortcut icon" href="<c:url value="/favicon.ico" />"/> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> - <decorator:head /> -</head> - -<% - int inceptionYear = 2005; - Calendar cal = Calendar.getInstance(); - int currentYear = cal.get( Calendar.YEAR ); - String copyrightRange = String.valueOf( inceptionYear ); - if ( inceptionYear != currentYear ) - { - copyrightRange = copyrightRange + "-" + String.valueOf( currentYear ); - } - - if ( cal.get( Calendar.MONTH ) == Calendar.SEPTEMBER && cal.get( Calendar.DAY_OF_MONTH ) == 19 ) - { - request.setAttribute( "is19Sep", "true" ); - } -%> - -<s:if test="%{#application['uiOptions'].disableEasterEggs}"> - <c:remove var="is19Sep" scope="request" /> -</s:if> - -<body onload="<decorator:getProperty property="body.onload" />" class="composite" - <c:if test="${is19Sep}"> - style="background: url('<c:url value="/images/19Sep.png"/>') no-repeat bottom right" - </c:if> -> -<div id="breadcrumbs"> - <div class="xright"> - <%@ include file="/WEB-INF/jsp/redback/include/securityLinks.jsp" %> - </div> - <div class="clear"> - <hr/> - </div> -</div> - - -<div id="topSearchBox"> - <s:form method="get" action="quickSearch" namespace="/" validate="true" id="quickSearchBoxForm"> - <s:textfield id="quickSearchBox" label="Search for" size="30" name="q"/> - </s:form> -</div> - -<div id="leftColumn"> - <div id="navcolumn"> - <s:action namespace="/components" name="companyInfo" executeResult="true"/> - <h5>Find</h5> - <ul> - <li class="none"> - <my:currentWWUrl action="index" namespace="/" linkId="menuSearchLink">Search</my:currentWWUrl> - </li> - - <s:if test="%{#application['uiOptions'].showFindArtifacts}"> - <li class="none"> - <my:currentWWUrl action="findArtifact" namespace="/" linkId="menuFindArtifactLink">Find Artifact</my:currentWWUrl> - </li> - </s:if> - - <li class="none"> - <my:currentWWUrl action="browse" namespace="/" linkId="menuBrowseLink">Browse</my:currentWWUrl> - </li> - </ul> - - <redback:ifAnyAuthorized permissions="archiva-upload-repository,archiva-delete-artifact,archiva-manage-users,archiva-access-reports,archiva-manage-configuration,archiva-view-audit-logs"> - <h5>Manage</h5> - <ul> - <redback:ifAuthorized permission="archiva-access-reports"> - <li class="none"> - <my:currentWWUrl action="pickReport" namespace="/report">Reports</my:currentWWUrl> - </li> - </redback:ifAuthorized> - <redback:ifAuthorized permission="archiva-view-audit-logs"> - <li class="none"> - <my:currentWWUrl action="queryAuditLogReport" namespace="/report">Audit Log Report</my:currentWWUrl> - </li> - </redback:ifAuthorized> - <redback:ifAuthorized permission="archiva-manage-users"> - <li class="none"> - <my:currentWWUrl action="userlist" namespace="/security">User Management</my:currentWWUrl> - </li> - </redback:ifAuthorized> - <redback:ifAuthorized permission="archiva-manage-users"> - <li class="none"> - <my:currentWWUrl action="roles" namespace="/security">User Roles</my:currentWWUrl> - </li> - </redback:ifAuthorized> - <redback:ifAuthorized permission="archiva-manage-configuration"> - <li class="none"> - <my:currentWWUrl action="configureAppearance" namespace="/admin">Appearance</my:currentWWUrl> - </li> - </redback:ifAuthorized> - <redback:ifAuthorized permission="archiva-upload-repository"> - <li class="none"> - <my:currentWWUrl action="upload" namespace="/">Upload Artifact</my:currentWWUrl> - </li> - </redback:ifAuthorized> - <redback:ifAuthorized permission="archiva-delete-artifact"> - <li class="none"> - <my:currentWWUrl action="deleteArtifact" namespace="/">Delete Artifact</my:currentWWUrl> - </li> - </redback:ifAuthorized> - <%-- TODO: future options here. - * Repository Statistics. - * Web Services Statistics. - --%> - </ul> - </redback:ifAnyAuthorized> - - <redback:ifAuthorized permission="archiva-manage-configuration"> - <h5>Administration</h5> - <ul> - <li class="none"> - <my:currentWWUrl action="repositoryGroups" namespace="/admin">Repository Groups</my:currentWWUrl> - </li> - <li class="none"> - <my:currentWWUrl action="repositories" namespace="/admin">Repositories</my:currentWWUrl> - </li> - <li class="none"> - <my:currentWWUrl action="proxyConnectors" namespace="/admin">Proxy Connectors</my:currentWWUrl> - </li> - <li class="none"> - <my:currentWWUrl action="legacyArtifactPath" namespace="/admin">Legacy Support</my:currentWWUrl> - </li> - <li class="none"> - <my:currentWWUrl action="networkProxies" namespace="/admin">Network Proxies</my:currentWWUrl> - </li> - <li class="none"> - <my:currentWWUrl action="repositoryScanning" namespace="/admin">Repository Scanning</my:currentWWUrl> - </li> - <li class="none"> - <my:currentWWUrl action="systemStatus" namespace="/admin">System Status</my:currentWWUrl> - </li> - <li class="none"> - <my:currentWWUrl action="editNetworkConfiguration" namespace="/admin">Network Configuration</my:currentWWUrl> - </li> - <%-- TODO: future options here. - * Repository Syncing Connectors. (rsync, ftp, scp, etc...) - * Web Services (enable / disable), role based? - --%> - </ul> - </redback:ifAuthorized> - - </div> -</div> - -<div id="bodyColumn"> - <div id="contentBox"> - <decorator:body/> - </div> -</div> - -<div class="clear"> - <hr/> -</div> - -<div id="footer"> - <div class="xleft"> - <a target="_blank" href="http://archiva.apache.org/">Apache Ar<c:if test="${is19Sep}">rr</c:if>chiva - <s:property value="archivaVersion"/></a> - </div> - <div class="xright"> - Copyright © <%= copyrightRange%> <a target="_blank" href="http://www.apache.org/">The Apache Software Foundation</a> - </div> - - <div class="clear"> - <hr/> - - </div> -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp deleted file mode 100644 index a742928f5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp +++ /dev/null @@ -1,58 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Delete Artifact</title> - <s:head/> -</head> - -<body> -<h1>Delete Artifact</h1> - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - <s:if test="hasActionErrors()"> - <ul> - <s:iterator value="actionErrors"> - <li><span class="errorMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - <s:if test="hasActionMessages()"> - <ul> - <s:iterator value="actionMessages"> - <li><span class="actionMessage"><s:property escape="true" /></span></li> - </s:iterator> - </ul> - </s:if> - - <div id="contentArea"> - <s:form action="deleteArtifact!doDelete" namespace="/" method="post" validate="true"> - <%@ include file="/WEB-INF/jsp/include/deleteArtifactForm.jspf" %> - <s:token/> - <s:submit/> - </s:form> - </div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/findArtifact.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/findArtifact.jsp deleted file mode 100644 index 7c5d4993f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/findArtifact.jsp +++ /dev/null @@ -1,118 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Find Artifact</title> - <s:head/> -</head> - -<body onload="document.checksumSearch.f.disabled = false"> - -<h1>Find Artifact</h1> - -<div id="contentArea"> - <div id="searchBox"> - <s:if test="%{#application['uiOptions'].appletFindEnabled}"> - <script src="js/md5.js"></script> - <script type="text/javascript"> - function handleChecksum() - { - var f = document.checksumSearch.f - if ( f.value ) - { - if ( f.value.indexOf("/") >= 0 || f.value.indexOf("\\") >= 0) - { - var s = document.ChecksumApplet.generateMd5( f.value ); - // If there is a space, it's an error message, not a checksum - if ( s.indexOf(" ") >= 0 ) - { - alert(s); - } - else - { - document.checksumSearch.q.value = s; - } - } - else if ( f.files[0].getAsBinary ) - { - document.checksumSearch.q.value = hex_md5(f.files[0].getAsBinary()); - } - else - { - alert('This browser is not supported'); - } - } - } - </script> - - <noscript> - <span class="errorMessage">JavaScript is disabled: using the file browser will not work.</span> - </noscript> - - <s:form method="POST" action="checksumSearch" namespace="/" onsubmit="this.f.disabled = true; return true;"> - <tr> - <td class="tdLabel"><label for="checksumSearch_file" class="label">Search for:</label></td> - <td> - <input type="file" name="f" size="50" value="" id="checksumSearch_f" onchange="handleChecksum();"/> - </td> - </tr> - <s:textfield label="Checksum" size="50" name="q"/> - <s:submit value="Search"/> - </s:form> - - <p> - This allows you to search the repository using the checksum of an artifact that you are trying to identify. - You can either specify the checksum to look for directly, or scan a local artifact file. - </p> - - <p> - To scan a local file, select the file you would like to locate in the remote repository. - The entire file will - <b>not</b> - be uploaded to the server. See the progress bar below for progress of - locally creating a checksum that is uploaded to the server after you hit "Search". - <s:actionerror/> - </p> - - <p> - <applet code="org/apache/archiva/applet/ChecksumApplet.class" - archive="archiva-applet.jar" - width="400" height="20" name="ChecksumApplet"> - </applet> - </p> - </s:if> - <s:else> - <s:form method="POST" action="checksumSearch" namespace="/"> - <s:textfield label="Checksum" size="50" name="q"/> - <s:submit value="Search"/> - </s:form> - - <p> - <s:actionerror/> - </p> - </s:else> - </div> -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/generalError.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/generalError.jsp deleted file mode 100644 index 1ee60eabb..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/generalError.jsp +++ /dev/null @@ -1,37 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Error Occurred</title> - <s:head/> -</head> - -<body> - -<h1>Error Occurred</h1> - -<s:actionerror/> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactDependencies.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactDependencies.jspf deleted file mode 100644 index afa9a4e74..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactDependencies.jspf +++ /dev/null @@ -1,41 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - -<%-- TODO: paginate [MRM-491] --%> -<c:forEach items="${dependencies}" var="dependency"> - <h3 class="artifact-title"> - <my:showArtifactTitle groupId="${dependency.groupId}" artifactId="${dependency.artifactId}" - version="${dependency.version}"/> - - </h3> - - <p> - <my:showArtifactLink groupId="${dependency.groupId}" artifactId="${dependency.artifactId}" - version="${dependency.version}" scope="${dependency.scope}" - classifier="${dependency.classifier}"/> - </p> -</c:forEach> -<c:if test="${empty (dependencies)}"> - <strong>No results</strong> -</c:if> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactInfo.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactInfo.jspf deleted file mode 100644 index 1cfd8e825..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactInfo.jspf +++ /dev/null @@ -1,235 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<p> - <archiva:groupIdLink var="${groupId}" includeTop="true" /> - - <c:set var="url"> - <s:url action="browseArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - </s:url> - </c:set> - <a href="${url}">${artifactId}</a> / - <strong>${version}</strong> - - <%-- TODO: new versions? - (<strong class="statusFailed">Newer version available:</strong> - <a href="artifact.html">2.0.3</a>) - --%> -</p> - -<c:if test="${!empty (model.description)}"> - <blockquote>${model.description}</blockquote> -</c:if> - -<c:set var="mavenFacet" value="${model.facets['org.apache.archiva.metadata.repository.storage.maven2.project']}" /> -<table class="infoTable"> - <tr> - <th>Repository</th> - <td>${repositoryId}</td> - </tr> - <tr> - <th>Group ID</th> - <td>${mavenFacet.groupId}</td> - </tr> - <tr> - <th>Artifact ID</th> - <td>${mavenFacet.artifactId}</td> - </tr> - <tr> - <th>Version</th> - <td>${model.version}</td> - </tr> - <tr> - <th>Packaging</th> - <td><code>${mavenFacet.packaging}</code></td> - </tr> - <c:if test="${mavenFacet.parent != null}"> - <tr> - <th>Parent</th> - <td> - ${mavenFacet.parent.groupId} ${mavenFacet.parent.artifactId} ${mavenFacet.parent.version} - <c:set var="url"> - <s:url action="showArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.mavenFacet.parent.groupId}"/> - <s:param name="artifactId" value="%{#attr.mavenFacet.parent.artifactId}"/> - <s:param name="version" value="%{#attr.mavenFacet.parent.version}"/> - </s:url> - </c:set> - (<a href="${url}">View</a>) - </td> - </tr> - </c:if> - <%-- TODO: deployment timestamp - <tr> - <th>Deployment Date</th> - <td> - 15 Jan 2006, 20:38:00 +1000 - </td> - </tr> - --%> - <%-- TODO: origin - <tr> - <th>Origin</th> - <td> - <a href="...">Apache Repository</a> - </td> - </tr> - --%> -</table> - -<c:if test="${mavenFacet.packaging != 'pom'}"> - <h2>POM Snippet</h2> - <c:choose> - <c:when test="${mavenFacet.packaging == 'maven-plugin'}"> -<pre class="pom"> - <plugin> - <groupId>${mavenFacet.groupId}</groupId> - <artifactId>${mavenFacet.artifactId}</artifactId> - <version>${version}</version> - </plugin> -</pre> - </c:when> - <c:otherwise> -<pre class="pom"> - <dependency> - <groupId>${mavenFacet.groupId}</groupId> - <artifactId>${mavenFacet.artifactId}</artifactId> - <version>${version}</version><c:if test="${mavenFacet.packaging != 'jar'}"> - <type>${mavenFacet.packaging}</type></c:if> - </dependency> -</pre> - </c:otherwise> - </c:choose> -</c:if> - -<c:if test="${!empty (model.url) || model.organization != null || !empty (model.licenses) - || model.issueManagement != null || model.ciManagement != null}"> - - <h2>Other Details</h2> - <table class="infoTable"> - <c:if test="${!empty (model.url)}"> - <tr> - <th>URL</th> - <td> - <a href="${model.url}">${model.url}</a> - </td> - </tr> - </c:if> - <c:if test="${model.organization != null}"> - <tr> - <th>Organisation</th> - <td> - <c:choose> - <c:when test="${model.organization.url != null}"> - <a href="${model.organization.url}">${model.organization.name}</a> - </c:when> - <c:otherwise> - ${model.organization.name} - </c:otherwise> - </c:choose> - </td> - </tr> - </c:if> - <c:if test="${!empty (model.licenses)}"> - <c:forEach items="${model.licenses}" var="license"> - <tr> - <th>License</th> - <td> - <c:choose> - <c:when test="${!empty (license.url)}"> - <a href="${license.url}">${license.name}</a> - </c:when> - <c:otherwise> - ${license.name} - </c:otherwise> - </c:choose> - </td> - </tr> - </c:forEach> - </c:if> - <c:if test="${model.issueManagement != null}"> - <tr> - <th>Issue Tracker</th> - <td> - <c:choose> - <c:when test="${!empty (model.issueManagement.url)}"> - <a href="${model.issueManagement.url}">${model.issueManagement.system}</a> - </c:when> - <c:otherwise> - ${model.issueManagement.system} - </c:otherwise> - </c:choose> - </td> - </tr> - </c:if> - <c:if test="${model.ciManagement != null}"> - <tr> - <th>Continuous Integration</th> - <td> - <c:choose> - <c:when test="${!empty (model.ciManagement.url)}"> - <a href="${model.ciManagement.url}">${model.ciManagement.system}</a> - </c:when> - <c:otherwise> - ${model.ciManagement.system} - </c:otherwise> - </c:choose> - </td> - </tr> - </c:if> - </table> -</c:if> - -<c:if test="${model.scm != null}"> - <h2>SCM</h2> - <table class="infoTable"> - <c:if test="${!empty (model.scm.connection)}"> - <tr> - <th>Connection</th> - <td> - <code>${model.scm.connection}</code> - </td> - </tr> - </c:if> - <c:if test="${!empty (model.scm.developerConnection)}"> - <tr> - <th>Dev. Connection</th> - <td> - <code>${model.scm.developerConnection}</code> - </td> - </tr> - </c:if> - <c:if test="${!empty (model.scm.url)}"> - <tr> - <th>Viewer</th> - <td> - <a href="${model.scm.url}">${model.scm.url}</a> - </td> - </tr> - </c:if> - </table> -</c:if> - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactReports.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactReports.jspf deleted file mode 100644 index 6cce9aea6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactReports.jspf +++ /dev/null @@ -1,39 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - -<c:forEach items="${reports}" var="report"> - <h3> - ${report.groupId} : ${report.artifactId} : ${report.version} : ${report.classifier} : ${report.type} - </h3> - <ul> - <c:forEach items="${repor.results}" var="result"> - <li> - <b>${result.reason}</b> - </li> - </c:forEach> - </ul> -</c:forEach> -<c:if test="${empty (reports)}"> - <strong>No reports for this artifact.</strong> -</c:if> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf deleted file mode 100644 index 8633bc7b4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf +++ /dev/null @@ -1,29 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<s:textfield name="groupId" label="Group Id" size="50" required="true"/> -<s:textfield name="artifactId" label="Artifact Id" size="50" required="true"/> -<s:textfield name="version" label="Version" size="50" required="true"/> -<s:textfield name="classifier" label="Classifier" size="60" required="false"/> -<s:textfield name="type" label="Type (mandatory when using classifier)" size="60" required="false" /> -<s:select name="repositoryId" list="managedRepos" label="Repository Id"/> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/dependencyTree.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/dependencyTree.jspf deleted file mode 100644 index f7cde9d46..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/dependencyTree.jspf +++ /dev/null @@ -1,28 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<archiva:dependency-tree groupId="${groupId}" artifactId="${artifactId}" version="${version}" - modelVersion="${model.version}" nodevar="node"> - <my:showArtifactLink groupId="${node.groupId}" artifactId="${node.artifactId}" - version="${node.version}"/> -</archiva:dependency-tree> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf deleted file mode 100644 index 027cfe849..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf +++ /dev/null @@ -1,102 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - -<script type="text/javascript"> - $(function() { - $("#accordion2").accordion(); - }); -</script> - -<table class="infoTable"> - <tr> - <td> - <div id="accordion2"> - - <c:forEach items="${mailingLists}" var="mailingList"> - <h2> - <a href="#">${mailingList.name}</a> - </h2> - <%-- TODO: description - <p> - Description blah blah blah - </p> - --%> - <ul> - <c:if test="${!empty (mailingList.subscribeAddress)}"> - <li> - <b>Subscribe:</b> - <a href="mailto:${mailingList.subscribeAddress}">${mailingList.subscribeAddress}</a> - </li> - </c:if> - <c:if test="${!empty (mailingList.postAddress)}"> - <li> - <b>Post:</b> - <a href="mailto:${mailingList.postAddress}">${mailingList.postAddress}</a> - </li> - </c:if> - <c:if test="${!empty (mailingList.unsubscribeAddress)}"> - <li> - <b>Unsubscribe:</b> - <a href="mailto:${mailingList.unsubscribeAddress}">${mailingList.unsubscribeAddress}</a> - </li> - </c:if> - <%-- TODO: not in the POM yet - <li> - <b>List owner:</b> - <a href="mailto:${mailingList.owner}">${mailingList.owner}</a> - </li> - --%> - <c:if test="${!empty (mailingList.mainArchiveUrl)}"> - <li> - <b>Archive:</b> - <ul> - <li> - <a href="${mailingList.mainArchiveUrl}">${mailingList.mainArchiveUrl}</a> - </li> - </ul> - </li> - </c:if> - <%-- <c:if test="${!empty (mailingList.otherArchives)}"> - <li> - <b>Other Archives:</b> - <ul> - <c:forEach items="${mailingList.otherArchives}" var="archive"> - <li> - <a href="${archive}">${archive}</a> - </li> - </c:forEach> - </ul> - </li> - </c:if> --%> - </ul> - </c:forEach> - </div> - - <c:if test="${empty (mailingLists)}"> - <strong>No mailing lists</strong> - </c:if> - - </td> - </tr> -</table> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mergeActionForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mergeActionForm.jspf deleted file mode 100644 index d173f911a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mergeActionForm.jspf +++ /dev/null @@ -1,42 +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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<s:hidden name="repository.id"/> - <s:label label="ID" name="repository.id" /> - -<s:textfield name="repository.name" label="Name" size="50" required="true"/> -<s:textfield name="repository.location" label="Directory" size="50" required="true"/> -<s:textfield name="repository.indexDir" label="Index Directory" size="50"/> -<s:select list="#@java.util.LinkedHashMap@{'default' : 'Maven 2.x Repository', 'legacy' : 'Maven 1.x Repository'}" - name="repository.layout" label="Type"/> -<s:textfield name="repository.cronExpression" label="Cron" size="40" required="true"/> -<s:textfield name="repository.daysOlder" label="Repository Purge By Days Older Than" size="5"/> -<s:textfield name="repository.retentionCount" label="Repository Purge By Retention Count" size="5"/> -<s:checkbox name="repository.releases" value="repository.releases" label="Releases Included"/> -<s:checkbox name="repository.blockRedeployments" value="repository.blockRedeployments" label="Block Re-deployment of Released Artifacts"/> -<s:checkbox name="repository.snapshots" value="repository.snapshots" label="Snapshots Included"/> -<s:checkbox name="repository.scanned" value="repository.scanned" label="Scannable"/> -<s:checkbox name="repository.deleteReleasedSnapshots" value="repository.deleteReleasedSnapshots" - label="Delete Released Snapshots"/>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectDependees.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectDependees.jspf deleted file mode 100644 index e973042ba..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectDependees.jspf +++ /dev/null @@ -1,40 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - -<%-- TODO: paginate [MRM-491] --%> -<c:forEach items="${dependees}" var="project"> - <h3 class="artifact-title"> - <my:showArtifactTitle groupId="${project.namespace}" artifactId="${project.projectId}" - version="${project.projectVersion}"/> - - </h3> - - <p> - <my:showArtifactLink groupId="${project.namespace}" artifactId="${project.projectId}" - version="${project.projectVersion}"/> - </p> -</c:forEach> -<c:if test="${empty (dependees)}"> - <strong>No results</strong> -</c:if> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf deleted file mode 100644 index 67b42a687..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf +++ /dev/null @@ -1,86 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<div> - - <redback:ifAuthorized permission="archiva-add-metadata" resource="${repositoryId}"> - <div id="effect" class="ui-widget-content ui-corner-all"> - <h3 class="ui-widget-header ui-corner-all">Add Property</h3> - - <s:form action="addMetadataProperty" namespace="/" method="post" validate="true" theme="simple"> - <s:hidden name="groupId" value="%{groupId}" /> - <s:hidden name="artifactId" value="%{artifactId}" /> - <s:hidden name="version" value="%{version}" /> - <s:hidden name="repositoryId" value="%{repositoryId}" /> - <table> - <tr> - <td align="center"><strong>Property Name</strong></td> - <td align="center"><strong>Property Value</strong></td> - <td/> - </tr> - <tr> - <td> - <s:textfield name="propertyName" size="30" required="true"/> - </td> - <td> - <s:textfield name="propertyValue" size="30" required="true"/> - </td> - <td align="right"> - <s:submit value="Add"/> - </td> - </tr> - </table> - </s:form> - </div> - </redback:ifAuthorized> - - <div> - <c:if test="${empty genericMetadata}"> - <p> - <strong>No metadata content.</strong> - </p> - </c:if> - - <c:if test="${!empty genericMetadata}"> - <ul> - <c:forEach var="prop" items="${genericMetadata}"> - <c:url var="deletePropertyUrl" value="showProjectMetadata!deleteMetadataEntry.action"> - <c:param name="groupId" value="${groupId}"/> - <c:param name="artifactId" value="${artifactId}"/> - <c:param name="version" value="${version}"/> - <c:param name="deleteItem" value="${prop.key}"/> - </c:url> - <li>${prop.key}=${prop.value} - <redback:ifAuthorized permission="archiva-delete-metadata" resource="${repositoryId}"> - <a href="${deletePropertyUrl}"> - <img src="<c:url value="/images/icons/delete.gif" />" alt="Delete" width="12" length="12"/> - </a> - </redback:ifAuthorized> - </li> - </c:forEach> - </ul> - </c:if> - </div> - -</div> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf deleted file mode 100644 index d99dd8055..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf +++ /dev/null @@ -1,34 +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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<s:textfield name="groupId" label="Group Id" size="50" required="true"/> -<s:textfield name="artifactId" label="Artifact Id" size="50" required="true"/> -<s:textfield name="version" label="Version" size="50" required="true"/> -<s:textfield name="packaging" label="Packaging" size="50" required="true"/> -<s:textfield name="classifier" label="Classifier" size="50" required="false"/> -<s:checkbox name="generatePom" value="generatePom" label="Generate Maven 2 POM"/> -<s:file name="artifact" label="Artifact File" required="true"/> -<s:file name="pom" label="POM File"/> -<s:select name="repositoryId" list="managedRepoIdList" label="Repository Id"/> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp deleted file mode 100644 index 8f298aa12..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp +++ /dev/null @@ -1,155 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> - -<html> -<head> - <title>Quick Search</title> - <s:head/> - <script type="text/javascript"> - function addSearchField(fieldText, field, divName) - { - var element = document.getElementById( field ); - if( element != null ) - { - alert( "Cannot add field! Field has already been added." ); - return 0; - } - - var table = document.getElementById( "dynamicTable" ); - var row = document.createElement( "TR" ); - var label = document.createElement("TD"); - label.innerHTML = fieldText + ": "; - - var textfield = document.createElement( "TD" ); - var inp1 = document.createElement( "INPUT" ); - inp1.setAttribute( "type", "text" ); - inp1.setAttribute( "size", "30" ); - inp1.setAttribute( "id", field ); - inp1.setAttribute( "name", field ); - textfield.appendChild( inp1 ); - - row.appendChild( label ); - row.appendChild( textfield ); - table.tBodies[0].appendChild( row ); - - } - </script> - - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> - <script type="text/javascript"> - $(document).ready(function(){ - - $("table.settings").hide(); - $("a.expand").click(function(event){ - event.preventDefault(); - $(this).next().toggle("slow"); - }); - }); - </script> - - <%-- advanced search --%> - <script type="text/javascript"> - $(document).ready(function(){ - - $("table.settings-search").hide(); - $("a.expand-search").click(function(event){ - event.preventDefault(); - $(this).next().toggle("slow"); - }); - }); - </script> -</head> - -<s:if test="%{infoMessage != null}"> - <p>${infoMessage}</p> -</s:if> - -<body> - -<h1>Search</h1> - -<div id="contentArea"> -<div id="searchBox"> - - <c:url var="iconCreateUrl" value="/images/icons/create.png" /> - - <s:form method="get" id="quickSearch" action="quickSearch" validate="true"> - <s:textfield label="Search for" size="50" name="q" id="quickSearchValue"/> - <s:hidden name="completeQueryString" value="%{completeQueryString}"/> - <s:submit value="Search" id="quickSearchSubmit"/> - </s:form> - <p> - <s:actionerror/> - </p> - <a class="expand-search" href="#"><strong>Advanced Search >></strong></a> - <table class="settings-search"> - <tr> - <td> - <b>*</b> To do a filtered or advanced search, select the criteria from the list below and click the <img src="${iconCreateUrl}"/> icon. Specify the term you want to be matched in the created text field. - </td> - </tr> - <tr> - <td> - <s:form id="filteredSearch" method="get" action="filteredSearch" validate="true"> - <label><strong>Advanced Search Fields: </strong></label><s:select name="searchField" list="searchFields" theme="simple"/> - <s:a href="#" title="Add Search Field" onclick="addSearchField( document.filteredSearch.searchField.options[document.filteredSearch.searchField.selectedIndex].text, document.filteredSearch.searchField.value, 'dynamicFields' )" theme="simple"> - <img src="${iconCreateUrl}" /> - </s:a> - <table id="dynamicTable"> - <tbody> - <tr> - <td><label>Repository: </td> - <td><s:select name="repositoryId" list="managedRepositoryList" theme="simple"/></td> - </tr> - <tr> - <td/> - <td/> - </tr> - </tbody> - </table> - <s:submit value="Search" theme="simple"/> - </s:form> - </td> - </tr> - </table> -</div> - -<div id="searchHint"> - Enter your search terms. A variety of data will be searched for your keywords. <a class="expand" href="#"><img src="<c:url value="/images/icon_info_sml.gif"/>" /></a> - - <table class="settings"> - <tr> - <td> - <b>*</b> To perform a boolean <code>NOT</code> search, use the keyword <code>NOT</code> after your search - term, followed by the term you want to exclude. For example, to exclude artifacts with - a dependency on the artifact you are searching for from showing up in the search results: - <code>myQueryTerm NOT dependency</code> - </td> - </tr> - </table> -</div> - -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp deleted file mode 100644 index e51402fc2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp +++ /dev/null @@ -1,153 +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="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %> - -<html> -<head> - - <title>Audit Log Report</title> - <s:head theme="xhtml" /> - - <link rel="stylesheet" href="<c:url value='/css/no-theme/jquery.ui-1.8.14.theme.css'/>" type="text/css" /> - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> - <script type="text/javascript" src="<c:url value='/js/jquery-ui-1.8.14.custom.min.js'/>"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() - { - $('#startDate').datepicker() - $('#endDate').datepicker() - }); - </script> -</head> - -<body> -<h1>Audit Log Report</h1> - -<div id="contentArea"> - - <s:form action="viewAuditLogReport" namespace="/report" validate="false"> - - <s:hidden name="initial"/> - - <div id="auditLogReport"> - <table id="auditLogFieds"> - <tbody> - <tr> - <td>Repository: </td> - <td><s:select name="repository" list="repositories" theme="simple"/></td> - </tr> - <tr> - <td>Group ID: </td> - <td><s:textfield id="groupId" name="groupId" theme="simple"/></td> - </tr> - <tr> - <td>Artifact ID: </td> - <td><s:textfield id="artifactId" name="artifactId" theme="simple"/></td> - </tr> - <tr> - <td>Start Date: </td> - <td><s:textfield id="startDate" name="startDate" theme="simple"/></td> - </tr> - <tr> - <td>End Date: </td> - <td><s:textfield id="endDate" name="endDate" theme="simple"/></td> - </tr> - <tr> - <td>Row Count: </td> - <td><s:textfield name="rowCount" theme="simple"/></td> - </tr> - <tr> - <td/> - <td style="text-align: right"><s:submit value="View Audit Log" theme="simple"/></td> - </tr> - </tbody> - </table> - </div> - - <p/> - - <div class="auditLogReportResults"> - - <h2>${headerName}</h2> - <p> - <s:actionerror/> - </p> - - <c:if test="${not empty (auditLogs)}"> - <table class="auditlogs" cellspacing="0"> - <tr> - <th>Event</th> - <th>Repository</th> - <th>Resource</th> - <th>Event Date</th> - <th>Username</th> - </tr> - - <c:forEach items="${auditLogs}" var="auditLog" varStatus="i"> - <tr> - <td>${auditLog.action}</td> - <td>${auditLog.repositoryId}</td> - <td>${auditLog.resource}</td> - <td>${auditLog.timestamp}</td> - <td>${auditLog.userId}</td> - </tr> - </c:forEach> - </table> - - <c:set var="prevPageUrl"> - <s:url action="viewAuditLogReport" namespace="/report"> - <s:param name="repository" value="%{#attr.repository}" /> - <s:param name="groupId" value="%{#attr.groupId}" /> - <s:param name="artifactId" value="%{#attr.artifactId}" /> - <s:param name="rowCount" value="%{#attr.rowCount}" /> - <s:param name="page" value="%{#attr.page - 1}"/> - <s:param name="startDate" value="%{#attr.startDate}"/> - <s:param name="endDate" value="%{#attr.endDate}" /> - </s:url> - </c:set> - <c:set var="nextPageUrl"> - <s:url action="viewAuditLogReport" namespace="/report"> - <s:param name="repository" value="%{#attr.repository }" /> - <s:param name="groupId" value="%{#attr.groupId}" /> - <s:param name="artifactId" value="%{#attr.artifactId }" /> - <s:param name="rowCount" value="%{#attr.rowCount}" /> - <s:param name="page" value="%{#attr.page + 1}"/> - <s:param name="startDate" value="%{#attr.startDate}"/> - <s:param name="endDate" value="%{#attr.endDate}" /> - </s:url> - </c:set> - - <s:set name="page" value="page"/> - <c:if test="${page gt 1}"><a href="${prevPageUrl}"><<</a></c:if> - <strong>Page: </strong>${page} - <s:set name="isLastPage" value="isLastPage"/> - <c:if test="${!isLastPage}"><a href="${nextPageUrl}">>></a></c:if> - - </c:if> - </div> - - </s:form> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp deleted file mode 100644 index 8a21877f9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp +++ /dev/null @@ -1,79 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<html> -<head> - <title>Reports</title> - <s:head/> -</head> - -<body> -<h1>Reports</h1> - -<div id="contentArea"> - - <c:forEach var="repository" items="${repositoriesMap}"> - <strong>Repository: ${repository.key}</strong> - <c:forEach var="report" items='${repository.value}'> - <p> - <archiva:groupIdLink var="${report.namespace}" includeTop="true"/> - <c:set var="url"> - <s:url action="browseArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.report.namespace}"/> - <s:param name="artifactId" value="%{#attr.report.project}"/> - </s:url> - </c:set> - <a href="${url}">${report.project}</a> / - <strong>${report.version}</strong> - </p> - - <blockquote><c:out value="${report.message}" /></blockquote> - </c:forEach> - </c:forEach> - - <c:set var="prevPageUrl"> - <s:url action="generateReport" namespace="/report"> - <s:param name="groupId" value="%{#attr.groupId}" /> - <s:param name="repositoryId" value="%{#attr.repositoryId }" /> - <s:param name="rowCount" value="%{#attr.rowCount}" /> - <s:param name="page" value="%{#attr.page - 1}"/> - </s:url> - </c:set> - <c:set var="nextPageUrl"> - <s:url action="generateReport" namespace="/report"> - <s:param name="groupId" value="%{#attr.groupId}" /> - <s:param name="repositoryId" value="%{#attr.repositoryId }" /> - <s:param name="rowCount" value="%{#attr.rowCount}" /> - <s:param name="page" value="%{#attr.page + 1}"/> - </s:url> - </c:set> - <s:set name="page" value="page" /> - <c:if test="${page gt 1}"><a href="${prevPageUrl}"><<</a></c:if> - Page: ${page} - <s:set name="lastPage" value="lastPage"/> - <c:if test="${!lastPage}"><a href="${nextPageUrl}">>></a></c:if> - -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/blankReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/blankReport.jsp deleted file mode 100644 index b4d11f96a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/blankReport.jsp +++ /dev/null @@ -1,38 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Reports</title> - <s:head/> -</head> - -<body> -<h1>Reports</h1> - -<div id="contentArea"> - - <s:text name="The operation generated an empty report."/> - -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp deleted file mode 100644 index d197a1979..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp +++ /dev/null @@ -1,80 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - - <title>Reports</title> - <s:head theme="xhtml" /> - - <link rel="stylesheet" href="<c:url value='/css/no-theme/jquery.ui-1.8.14.theme.css'/>" type="text/css" /> - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> - <script type="text/javascript" src="<c:url value='/js/jquery-ui-1.8.14.custom.min.js'/>"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() - { - $('#startDate').datepicker(); - $('#endDate').datepicker(); - }); - </script> -</head> - -<body> -<h1>Reports</h1> - -<div id="contentArea"> - - <h2>Repository Statistics</h2> - <s:form action="generateStatisticsReport" namespace="/report" validate="false"> - - <s:optiontransferselect label="Repositories To Be Compared" name="availableRepositories" - list="availableRepositories" doubleName="selectedRepositories" - doubleList="selectedRepositories" size="8" doubleSize="8" - addAllToRightOnclick="selectAllOptions(document.getElementById('generateStatisticsReport_availableRepositories'));selectAllOptions(document.getElementById('generateStatisticsReport_selectedRepositories'));" - addToRightOnclick="selectAllOptions(document.getElementById('generateStatisticsReport_availableRepositories'));selectAllOptions(document.getElementById('generateStatisticsReport_selectedRepositories'));" - addAllToLeftOnclick="selectAllOptions(document.getElementById('generateStatisticsReport_availableRepositories'));selectAllOptions(document.getElementById('generateStatisticsReport_selectedRepositories'));" - addToLeftOnclick="selectAllOptions(document.getElementById('generateStatisticsReport_availableRepositories'));selectAllOptions(document.getElementById('generateStatisticsReport_selectedRepositories'));" - /> - - <s:textfield label="Row Count" name="rowCount" /> - - <s:textfield label="Start Date" id="startDate" name="startDate"/> - - <s:textfield label="End Date" id="endDate" name="endDate"/> - - <s:submit value="View Statistics"/> - </s:form> - - <h2>Repository Health</h2> - <s:form namespace="/report" action="generateReport" validate="true"> - <s:textfield label="Row Count" name="rowCount" /> - <s:textfield label="Group ID" name="groupId"/> - <s:select label="Repository ID" name="repositoryId" list="repositoryIds"/> - - <s:submit value="Show Report"/> - </s:form> - -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp deleted file mode 100644 index 7a7d2c85f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp +++ /dev/null @@ -1,230 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - -<html> -<head> - <title>Reports</title> - <s:head/> -</head> - -<body> -<h1>Statistics Report</h1> - -<c:url var="imgNextPageUrl" value="/images/icon_next_page.gif"/> -<c:url var="imgPrevPageUrl" value="/images/icon_prev_page.gif"/> -<c:url var="imgPrevPageDisabledUrl" value="/images/icon_prev_page_disabled.gif"/> -<c:url var="imgNextPageDisabledUrl" value="/images/icon_next_page_disabled.gif"/> - -<div id="contentArea"> - - <%-- TODO: fix problem in date format! --%> - - <%-- Pagination - start --%> - <p> - - <%-- Set Prev & Next icons --%> - <c:set var="prevPageUrl"> - <s:url action="generateStatisticsReport" namespace="/report"> - <s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/> - <s:param name="rowCount" value="%{#attr.rowCount}"/> - <s:param name="startDate" value="%{#attr.startDate}"/> - <s:param name="endDate" value="%{#attr.endDate}"/> - <s:param name="page" value="%{#attr.page - 1}"/> - </s:url> - </c:set> - <c:set var="nextPageUrl"> - <s:url action="generateStatisticsReport" namespace="/report"> - <s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/> - <s:param name="rowCount" value="%{#attr.rowCount}"/> - <s:param name="startDate" value="%{#attr.startDate}"/> - <s:param name="endDate" value="%{#attr.endDate}"/> - <s:param name="page" value="%{#attr.page + 1}"/> - </s:url> - </c:set> - - <c:choose> - <c:when test="${page == 1}"> - <img src="${imgPrevPageDisabledUrl}"/> - </c:when> - <c:otherwise> - <a href="${prevPageUrl}"> - <img src="${imgPrevPageUrl}"/> - </a> - </c:otherwise> - </c:choose> - - <%-- Google-style pagination --%> - <c:choose> - <c:when test="${numPages > 11}"> - <c:choose> - <c:when test="${(page - 5) < 0}"> - <c:set var="beginVal">0</c:set> - <c:set var="endVal">10</c:set> - </c:when> - <c:when test="${(page + 5) > (numPages - 1)}"> - <c:set var="beginVal">${(numPages - 1) - 10}</c:set> - <c:set var="endVal">${numPages - 1}</c:set> - </c:when> - <c:otherwise> - <c:set var="beginVal">${page - 5}</c:set> - <c:set var="endVal">${page + 5}</c:set> - </c:otherwise> - </c:choose> - </c:when> - <c:otherwise> - <c:set var="beginVal">0</c:set> - <c:set var="endVal">${numPages - 1}</c:set> - </c:otherwise> - </c:choose> - - <c:forEach var="i" begin="${beginVal}" end="${endVal}"> - <c:choose> - <c:when test="${i != (page - 1)}"> - <c:set var="specificPageUrl"> - <s:url action="generateStatisticsReport" namespace="/report"> - <s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/> - <s:param name="rowCount" value="%{#attr.rowCount}"/> - <s:param name="startDate" value="%{#attr.startDate}"/> - <s:param name="endDate" value="%{#attr.endDate}"/> - <s:param name="page" value="%{#attr.page + 1}"/> - </s:url> - </c:set> - <a href="${specificPageUrl}">${i + 1}</a> - </c:when> - <c:otherwise> - <b>${i + 1}</b> - </c:otherwise> - </c:choose> - </c:forEach> - - <c:choose> - <c:when test="${page == numPages}"> - <img src="${imgNextPageDisabledUrl}"/> - </c:when> - <c:otherwise> - <a href="${nextPageUrl}"> - <img src="${imgNextPageUrl}"/> - </a> - </c:otherwise> - </c:choose> - </p> - <%-- Pagination - end --%> - - <%-- Export to CSV link --%> - <s:url id="downloadStatsReportUrl" action="downloadStatsReport" namespace="/report"> - <s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/> - <s:param name="startDate" value="%{#attr.startDate}"/> - <s:param name="endDate" value="%{#attr.endDate}"/> - </s:url> - <s:a href="%{downloadStatsReportUrl}">Export to CSV</s:a> - - <c:choose> - <c:when test="${repositoryId == null}"> - - <h1>Latest Statistics Comparison Report</h1> - <table class="infoTable" border="1"> - <tr> - <th>Repository</th> - <th>Total File Count</th> - <th>Total Size</th> - <th>Artifact Count</th> - <th>Group Count</th> - <th>Project Count</th> - <th>Plugins</th> - <th>Archetypes</th> - <th>Jars</th> - <th>Wars</th> - <th>Ears</th> - <th>Exes</th> - <th>Dlls</th> - <th>Zips</th> - </tr> - - <c:forEach var="stats" items="${repositoryStatistics}" varStatus="i"> - <tr> - <td>${selectedRepositories[i.count-1]}</td> - <td align="right">${stats.totalFileCount}</td> - <td align="right">${stats.totalArtifactFileSize}</td> - <td align="right">${stats.totalArtifactCount}</td> - <td align="right">${stats.totalGroupCount}</td> - <td align="right">${stats.totalProjectCount}</td> - <td align="right">${stats.totalCountForType['maven-plugin']}</td> - <td align="right">${stats.totalCountForType['maven-archetype']}</td> - <td align="right">${stats.totalCountForType['jar']}</td> - <td align="right">${stats.totalCountForType['war']}</td> - <td align="right">${stats.totalCountForType['ear']}</td> - <td align="right">${stats.totalCountForType['exe']}</td> - <td align="right">${stats.totalCountForType['dll']}</td> - <td align="right">${stats.totalCountForType['zip']}</td> - </tr> - </c:forEach> - </table> - </c:when> - <c:otherwise> - - <h1>Statistics for Repository '${repositoryId}'</h1> - <table class="infoTable" border="1"> - <tr> - <th>Date of Scan</th> - <th>Total File Count</th> - <th>Total Size</th> - <th>Artifact Count</th> - <th>Group Count</th> - <th>Project Count</th> - <th>Plugins</th> - <th>Archetypes</th> - <th>Jars</th> - <th>Wars</th> - <th>Ears</th> - <th>Exes</th> - <th>Dlls</th> - <th>Zips</th> - </tr> - - <c:forEach var="stats" items="${repositoryStatistics}"> - <tr> - <td align="right">${stats.scanStartTime}</td> - <td align="right">${stats.totalFileCount}</td> - <td align="right">${stats.totalArtifactFileSize}</td> - <td align="right">${stats.totalArtifactCount}</td> - <td align="right">${stats.totalGroupCount}</td> - <td align="right">${stats.totalProjectCount}</td> - <td align="right">${stats.totalCountForType['maven-plugin']}</td> - <td align="right">${stats.totalCountForType['maven-archetype']}</td> - <td align="right">${stats.totalCountForType['jar']}</td> - <td align="right">${stats.totalCountForType['war']}</td> - <td align="right">${stats.totalCountForType['ear']}</td> - <td align="right">${stats.totalCountForType['exe']}</td> - <td align="right">${stats.totalCountForType['dll']}</td> - <td align="right">${stats.totalCountForType['zip']}</td> - </tr> - </c:forEach> - </table> - - </c:otherwise> - </c:choose> - -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp deleted file mode 100644 index 9b0ce4bec..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp +++ /dev/null @@ -1,366 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib uri="/struts-tags" prefix="s" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="archiva" tagdir="/WEB-INF/tags" %> - -<html> -<head> - <title>Search Results</title> - <s:head/> - <script type="text/javascript"> - function addSearchField(fieldText, field, divName) - { - var element = document.getElementById( field ); - if( element != null ) - { - alert( "Cannot add field! Field has already been added." ); - return 0; - } - - var table = document.getElementById( "dynamicTable" ); - var row = document.createElement( "TR" ); - var label = document.createElement("TD"); - label.innerHTML = fieldText + ": "; - - var textfield = document.createElement( "TD" ); - var inp1 = document.createElement( "INPUT" ); - inp1.setAttribute( "type", "text" ); - inp1.setAttribute( "size", "30" ); - inp1.setAttribute( "id", field ); - inp1.setAttribute( "name", field ); - textfield.appendChild( inp1 ); - - row.appendChild( label ); - row.appendChild( textfield ); - table.appendChild( row ); - } - </script> -</head> - -<body> - -<c:url var="iconCreateUrl" value="/images/icons/create.png" /> - -<c:if test="${fromFilterSearch == true}"> - <h1>Advanced Search</h1> -</c:if> -<c:if test="${fromFilterSearch == false}"> - <h1>Search</h1> -</c:if> - -<c:url var="imgNextPageUrl" value="/images/icon_next_page.gif"/> -<c:url var="imgPrevPageUrl" value="/images/icon_prev_page.gif"/> -<c:url var="imgPrevPageDisabledUrl" value="/images/icon_prev_page_disabled.gif"/> -<c:url var="imgNextPageDisabledUrl" value="/images/icon_next_page_disabled.gif"/> - -<div id="contentArea"> - <div id="searchBoxResults"> - - <c:if test="${fromFilterSearch == true}"> - <table> - <tr> - <td> - <b>*</b> To do a filtered or advanced search, select the criteria from the list below and click the <img src="${iconCreateUrl}"/> icon. Specify the term you want to be matched in the created text field. - </td> - </tr> - <tr> - <td> - <s:form id="filteredSearch" method="get" action="filteredSearch" validate="true"> - <s:hidden name="fromFilterSearch" value="%{#attr.fromFilterSearch}" theme="simple"/> - <label><strong>Advanced Search Fields: </strong></label><s:select name="searchField" list="searchFields" theme="simple"/> - <s:a href="#" title="Add Search Field" onclick="addSearchField( document.filteredSearch.searchField.options[document.filteredSearch.searchField.selectedIndex].text, document.filteredSearch.searchField.value, 'dynamicFields' )" theme="simple"> - <img src="${iconCreateUrl}" /> - </s:a> - <table id="dynamicTable"> - <tr> - <td><label>Repository: </td> - <td><s:select name="repositoryId" list="managedRepositoryList" theme="simple"/></td> - </tr> - <tr> - <td/> - <td/> - </tr> - </table> - <s:submit value="Search" theme="simple"/> - </s:form> - </td> - </tr> - </table> - </c:if> - <c:if test="${fromFilterSearch == false}"> - <s:form method="get" action="quickSearch" validate="true"> - <s:textfield label="Search for" size="50" name="q"/> - <s:checkbox label="Search within results" name="searchResultsOnly"/> - <s:hidden name="completeQueryString" value="%{#attr.completeQueryString}"/> - <s:submit label="Go!"/> - </s:form> - <script type="text/javascript"> - document.getElementById("quickSearchValue").focus(); - </script> - </c:if> - - <p> - <s:actionerror/> - </p> - </div> - - <h1>Results</h1> - - <div id="resultsBox"> - <c:choose> - - <%-- search was made from the indices --%> - <c:when test="${databaseResults == null}"> - <c:set var="hitsNum">${fn:length(results.hits) + (currentPage * results.limits.pageSize)}</c:set> - <c:choose> - <c:when test="${results.totalHits > results.limits.pageSize}"> - <c:choose> - <c:when test="${fn:length(results.hits) < rowCount}"> - <p>Hits: ${(rowCount * currentPage) + 1} to ${hitsNum} of ${results.totalHitsMapSize}</p> - </c:when> - <c:otherwise> - <p>Hits: ${(hitsNum - results.limits.pageSize) + 1} to ${hitsNum} of ${results.totalHitsMapSize}</p> - </c:otherwise> - </c:choose> - </c:when> - <c:otherwise> - <p>Hits: 1 to ${hitsNum} of ${results.totalHits}</p> - </c:otherwise> - </c:choose> - <c:choose> - <c:when test="${empty results.hits}"> - <p>No results</p> - </c:when> - <c:otherwise> - - <%-- Pagination start --%> - <p> - <%-- Prev & Next icons --%> - <c:if test="${fromFilterSearch == false}"> - <c:set var="prevPageUrl"> - <s:url action="quickSearch" namespace="/"> - <s:param name="q" value="%{#attr.q}"/> - <s:param name="currentPage" value="%{#attr.currentPage - 1}"/> - </s:url> - </c:set> - <c:set var="nextPageUrl"> - <s:url action="quickSearch" namespace="/"> - <s:param name="q" value="%{#attr.q}"/> - <s:param name="currentPage" value="%{#attr.currentPage + 1}"/> - </s:url> - </c:set> - </c:if> - - <c:if test="${fromFilterSearch == true}"> - <c:set var="prevPageUrl"> - <s:url action="filteredSearch" namespace="/"> - <s:param name="rowCount" value="%{#attr.rowCount}"/> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - <s:param name="version" value="%{#attr.version}"/> - <s:param name="className" value="%{#attr.className}"/> - <s:param name="repositoryId" value="%{#attr.repositoryId}"/> - <s:param name="filterSearch" value="%{#attr.filterSearch}"/> - <s:param name="fromResultsPage" value="true"/> - <s:param name="currentPage" value="%{#attr.currentPage - 1}"/> - <s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/> - <s:param name="completeQueryString" value="%{#attr.completeQueryString}"/> - </s:url> - </c:set> - <c:set var="nextPageUrl"> - <s:url action="filteredSearch" namespace="/"> - <s:param name="rowCount" value="%{#attr.rowCount}"/> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - <s:param name="version" value="%{#attr.version}"/> - <s:param name="className" value="%{#attr.className}"/> - <s:param name="repositoryId" value="%{#attr.repositoryId}"/> - <s:param name="filterSearch" value="%{#attr.filterSearch}"/> - <s:param name="fromResultsPage" value="true"/> - <s:param name="currentPage" value="%{#attr.currentPage + 1}"/> - <s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/> - <s:param name="completeQueryString" value="%{#attr.completeQueryString}"/> - </s:url> - </c:set> - </c:if> - - <c:choose> - <c:when test="${currentPage == 0}"> - <img src="${imgPrevPageDisabledUrl}"/> - </c:when> - <c:otherwise> - <a href="${prevPageUrl}"> - <img src="${imgPrevPageUrl}"/> - </a> - </c:otherwise> - </c:choose> - - <%-- Google-style pagination --%> - <c:choose> - <c:when test="${totalPages > 11}"> - <c:choose> - <c:when test="${(currentPage - 5) < 0}"> - <c:set var="beginVal">0</c:set> - <c:set var="endVal">10</c:set> - </c:when> - <c:when test="${(currentPage + 5) > (totalPages - 1)}"> - <c:set var="beginVal">${(totalPages -1) - 10}</c:set> - <c:set var="endVal">${totalPages - 1}</c:set> - </c:when> - <c:otherwise> - <c:set var="beginVal">${currentPage - 5}</c:set> - <c:set var="endVal">${currentPage + 5}</c:set> - </c:otherwise> - </c:choose> - </c:when> - <c:otherwise> - <c:set var="beginVal">0</c:set> - <c:set var="endVal">${totalPages - 1}</c:set> - </c:otherwise> - </c:choose> - - <c:forEach var="i" begin="${beginVal}" end="${endVal}"> - <c:if test="${fromFilterSearch == false}"> - <c:choose> - <c:when test="${i != currentPage}"> - <c:set var="specificPageUrl"> - <s:url action="quickSearch" namespace="/"> - <s:param name="q" value="%{#attr.q}"/> - <s:param name="currentPage" value="%{#attr.i}"/> - <s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/> - <s:param name="completeQueryString" value="%{#attr.completeQueryString}"/> - </s:url> - </c:set> - <a href="${specificPageUrl}">${i + 1}</a> - </c:when> - <c:otherwise> - <b>${i + 1}</b> - </c:otherwise> - </c:choose> - </c:if> - - <c:if test="${fromFilterSearch == true}"> - <c:choose> - <c:when test="${i != currentPage}"> - <c:set var="specificPageUrl"> - <s:url action="filteredSearch" namespace="/"> - <s:param name="rowCount" value="%{#attr.rowCount}"/> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - <s:param name="version" value="%{#attr.version}"/> - <s:param name="className" value="%{#attr.className}"/> - <s:param name="repositoryId" value="%{#attr.repositoryId}"/> - <s:param name="filterSearch" value="%{#attr.filterSearch}"/> - <s:param name="fromResultsPage" value="true"/> - <s:param name="currentPage" value="%{#attr.i}"/> - <s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/> - <s:param name="completeQueryString" value="%{#attr.completeQueryString}"/> - </s:url> - </c:set> - <a href="${specificPageUrl}">${i + 1}</a> - </c:when> - <c:otherwise> - <b>${i + 1}</b> - </c:otherwise> - </c:choose> - </c:if> - </c:forEach> - - <c:choose> - <c:when test="${currentPage == (totalPages - 1)}"> - <img src="${imgNextPageDisabledUrl}"/> - </c:when> - <c:otherwise> - <a href="${nextPageUrl}"> - <img src="${imgNextPageUrl}"/> - </a> - </c:otherwise> - </c:choose> - </p> - <%-- Pagination end --%> - - <c:forEach items="${results.hits}" var="record" varStatus="i"> - <c:choose> - <c:when test="${not empty (record.groupId)}"> - <h3 class="artifact-title"> - <archiva:showArtifactTitle groupId="${record.groupId}" artifactId="${record.artifactId}"/> - </h3> - <p> - <archiva:showArtifactLink groupId="${record.groupId}" artifactId="${record.artifactId}" - versions="${record.versions}" repositoryId="${record.repositoryId}"/> - </p> - </c:when> - <c:otherwise> - <p> - <c:url var="hiturl" value="/repository/${record.url}" /> - <a href="${hiturl}">${record.urlFilename}</a> - </p> - </c:otherwise> - </c:choose> - </c:forEach> - </c:otherwise> - </c:choose> - </c:when> - - <%-- search was made from the database (find artifact)--%> - <c:otherwise> - <p>Hits: ${fn:length(databaseResults)}</p> - - <c:choose> - <c:when test="${empty databaseResults}"> - <p>No results</p> - </c:when> - <c:otherwise> - <c:forEach items="${databaseResults}" var="artifactModel" varStatus="i"> - <c:choose> - <c:when test="${not empty (artifactModel.namespace)}"> - <h3 class="artifact-title"> - <archiva:showArtifactTitle groupId="${artifactModel.namespace}" - artifactId="${artifactModel.project}" - version="${artifactModel.version}"/> - - </h3> - <p> - <archiva:showArtifactLink groupId="${artifactModel.namespace}" - artifactId="${artifactModel.project}" - version="${artifactModel.version}"/> - - </p> - </c:when> - <c:otherwise> - <p> - <c:url var="hiturl" value="/repository/${artifactModel.repositoryId}" /> - <a href="${hiturl}">${artifactModel.repositoryId}</a> - </p> - </c:otherwise> - </c:choose> - </c:forEach> - </c:otherwise> - </c:choose> - - </c:otherwise> - </c:choose> - </div> -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp deleted file mode 100644 index d75477921..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp +++ /dev/null @@ -1,267 +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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> - -<html> -<head> - <title>Browse Repository</title> - <s:head/> - <script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script> - <script type="text/javascript" src="<c:url value='/js/jquery-ui-1.8.14.custom.min.js'/>"></script> - <script type="text/javascript"> - $(function() { - $("#accordion").accordion({autoHeight:false}); - }); - </script> - <link rel="stylesheet" href="<c:url value='/css/no-theme/jquery.ui-1.8.14.theme.css'/>" type="text/css" media="all"/> -</head> - -<body> - -<s:set name="model" value="model"/> -<c:set var="mavenFacet" value="${model.facets['org.apache.archiva.metadata.repository.storage.maven2.project']}" /> - -<c:choose> - <c:when test="${mavenFacet.packaging == 'maven-plugin'}"> - <c:url var="imageUrl" value="/images/mavenplugin.gif"/> - <c:set var="packageName">Maven Plugin</c:set> - </c:when> - <c:when test="${mavenFacet.packaging == 'pom'}"> - <c:url var="imageUrl" value="/images/pom.gif"/> - <c:set var="packageName">POM</c:set> - </c:when> - <%-- These types aren't usually set in the POM yet, so we fudge them for the well known ones --%> - <c:when test="${mavenFacet.packaging == 'maven-archetype' or mavenFacet.groupId == 'org.apache.maven.archetypes'}"> - <c:url var="imageUrl" value="/images/archetype.gif"/> - <c:set var="packageName">Maven Archetype</c:set> - </c:when> - <c:when test="${mavenFacet.packaging == 'maven-skin' or mavenFacet.groupId == 'org.apache.maven.skins'}"> - <c:url var="imageUrl" value="/images/skin.gif"/> - <c:set var="packageName">Maven Skin</c:set> - </c:when> - <%-- Must be last so that the above get picked up if possible --%> - <c:when test="${mavenFacet.packaging == 'jar'}"> - <c:url var="imageUrl" value="/images/jar.gif"/> - <c:set var="packageName">JAR</c:set> - </c:when> - <c:otherwise> - <c:url var="imageUrl" value="/images/other.gif"/> - <c:set var="packageName"></c:set> - </c:otherwise> -</c:choose> -<img src="${imageUrl}" width="66" height="66" alt="${packageName}" title="${packageName}" style="float: left"/> - -<h1> - <c:choose> - <c:when test="${empty (model.name)}"> - ${mavenFacet.artifactId} - </c:when> - <c:otherwise> - ${model.name} - </c:otherwise> - </c:choose> -</h1> - -<div id="contentArea"> - <div id="tabs"> - <span> - <c:set var="url"> - <s:url action="showArtifact"> - <s:param name="groupId" value="%{groupId}"/> - <s:param name="artifactId" value="%{artifactId}"/> - <s:param name="version" value="%{version}"/> - </s:url> - </c:set> - <my:currentWWUrl url="${url}" useParams="true">Info</my:currentWWUrl> - <c:set var="url"> - <s:url action="showArtifactDependencies"> - <s:param name="groupId" value="%{groupId}"/> - <s:param name="artifactId" value="%{artifactId}"/> - <s:param name="version" value="%{version}"/> - </s:url> - </c:set> - <my:currentWWUrl url="${url}" useParams="true">Dependencies</my:currentWWUrl> - <c:set var="url"> - <s:url action="showArtifactDependencyTree"> - <s:param name="groupId" value="%{groupId}"/> - <s:param name="artifactId" value="%{artifactId}"/> - <s:param name="version" value="%{version}"/> - </s:url> - </c:set> - <my:currentWWUrl url="${url}" useParams="true">Dependency Tree</my:currentWWUrl> - <c:set var="url"> - <s:url action="showArtifactDependees"> - <s:param name="groupId" value="%{groupId}"/> - <s:param name="artifactId" value="%{artifactId}"/> - <s:param name="version" value="%{version}"/> - </s:url> - </c:set> - <my:currentWWUrl url="${url}" useParams="true">Used By</my:currentWWUrl> - <c:set var="url"> - <s:url action="showArtifactMailingLists"> - <s:param name="groupId" value="%{groupId}"/> - <s:param name="artifactId" value="%{artifactId}"/> - <s:param name="version" value="%{version}"/> - </s:url> - </c:set> - <my:currentWWUrl url="${url}" useParams="true">Mailing Lists</my:currentWWUrl> - <c:set var="url"> - <s:url action="showProjectMetadata"> - <s:param name="groupId" value="%{groupId}"/> - <s:param name="artifactId" value="%{artifactId}"/> - <s:param name="version" value="%{version}"/> - </s:url> - </c:set> - <my:currentWWUrl url="${url}" useParams="true">Metadata</my:currentWWUrl> - <%-- TODO - <redback:ifAnyAuthorized permissions="archiva-access-reports"> - <c:set var="url"> - <s:url action="showArtifactReports"> - <s:param name="groupId" value="%{groupId}"/> - <s:param name="artifactId" value="%{artifactId}"/> - <s:param name="version" value="%{version}"/> - </s:url> - </c:set> - <my:currentWWUrl url="${url}" useParams="true">Reports</my:currentWWUrl> - </redback:ifAnyAuthorized> - --%> - - </span> - </div> - - <div id="download"> - <h2>Download</h2> - - <div id="accordion"> - <c:forEach items="${snapshotVersions}" var="v"> - <p><a href="#">${v}</a></p> - <div> - <table cellpadding="0" cellspacing="0" border="0" width="100%"> - <tbody> - <c:forEach items="${artifacts[v]}" var="a"> - <c:choose> - <c:when test="${a.type == 'maven-plugin'}"> - <c:url var="imageUrl" value="/images/download-type-maven-plugin.png"/> - <c:set var="packageName">Maven Plugin</c:set> - </c:when> - <c:when test="${a.type == 'pom'}"> - <c:url var="imageUrl" value="/images/download-type-pom.png"/> - <c:set var="packageName">POM</c:set> - </c:when> - <%-- These types aren't usually set in the POM yet, so we fudge them for the well known ones --%> - <c:when test="${a.type == 'maven-archetype' or a.groupId == 'org.apache.maven.archetypes'}"> - <c:url var="imageUrl" value="/images/download-type-archetype.png"/> - <c:set var="packageName">Maven Archetype</c:set> - </c:when> - <c:when test="${a.type == 'maven-skin' or a.groupId == 'org.apache.maven.skins'}"> - <c:url var="imageUrl" value="/images/download-type-skin.png"/> - <c:set var="packageName">Maven Skin</c:set> - </c:when> - <c:when test="${a.type == 'java-source'}"> - <c:url var="imageUrl" value="/images/download-type-jar.png"/> - <c:set var="packageName">Java Sources</c:set> - </c:when> - <c:when test="${a.type == 'javadoc'}"> - <c:url var="imageUrl" value="/images/download-type-other.png"/> - <c:set var="packageName">JavaDoc Archive</c:set> - </c:when> - <c:when test="${a.type == 'library' || a.type == 'dotnet-library'}"> - <c:url var="imageUrl" value="/images/download-type-other.png"/> - <c:set var="packageName">.NET Library</c:set> - </c:when> - <%-- TODO: other NPanday types, and move this code into the plugin somehow --%> - <%-- Must be last so that the above get picked up if possible --%> - <c:when test="${a.type == 'jar'}"> - <c:url var="imageUrl" value="/images/download-type-jar.png"/> - <c:if test="${a.classifier != null}"> - <c:set var="packageName">JAR - <c:out value="${a.classifier}"/></c:set> - </c:if> - <c:if test="${a.classifier == null}"> - <c:set var="packageName">JAR</c:set> - </c:if> - </c:when> - <c:otherwise> - <c:url var="imageUrl" value="/images/download-type-other.png"/> - <c:set var="packageName">${a.type}</c:set> - </c:otherwise> - </c:choose> - <c:url var="url" value="/repository/${a.repositoryId}/${a.path}" /> - <tr> - <td> - <a href="${url}" title="Download ${a.artifactId}"><img src="${imageUrl}" alt="" width="24" height="24"/></a> - </td> - <td class="type"><a href="${url}" title="Download ${a.artifactId}">${packageName}</a></td> - <td class="size">${a.size}</td> - </tr> - </c:forEach> - </tbody> - </table> - </div> - </c:forEach> - </div> - </div> - - <%-- TODO: perhaps using ajax? --%> - <%-- TODO: panels? this is ugly as is --%> - <div id="tabArea"> - <c:choose> - <c:when test="${genericMetadata != null}"> - <%@ include file="/WEB-INF/jsp/include/projectMetadata.jspf" %> - </c:when> - <c:when test="${dependencies != null}"> - <%@ include file="/WEB-INF/jsp/include/artifactDependencies.jspf" %> - </c:when> - <c:when test="${dependencyTree}"> - <%@ include file="/WEB-INF/jsp/include/dependencyTree.jspf" %> - </c:when> - <c:when test="${dependees != null}"> - <%@ include file="/WEB-INF/jsp/include/projectDependees.jspf" %> - </c:when> - <c:when test="${mailingLists != null}"> - <%@ include file="/WEB-INF/jsp/include/mailingLists.jspf" %> - </c:when> - <c:when test="${reports != null}"> - <%@ include file="/WEB-INF/jsp/include/artifactReports.jspf" %> - </c:when> - <c:otherwise> - <%@ include file="/WEB-INF/jsp/include/artifactInfo.jspf" %> - </c:otherwise> - - </c:choose> - - <s:if test="hasActionMessages()"> - <div id="messagesinfo"> - <s:actionmessage /> - </div> - </s:if> - <s:if test="hasActionErrors()"> - <div id="messages"> - <s:actionerror/> - </div> - </s:if> - </div> -</div> -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp deleted file mode 100644 index 2299f9521..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp +++ /dev/null @@ -1,47 +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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<html> -<head> - <title>Upload Artifact</title> - <s:head/> -</head> - -<body> -<h1>Upload Artifact</h1> - -<div id="contentArea"> - - <s:actionerror/> - <s:actionmessage/> - - <s:form action="upload!doUpload" method="post" enctype="multipart/form-data" validate="true"> - <%@ include file="/WEB-INF/jsp/include/uploadForm.jspf" %> - <s:submit id="uploadSubmit"/> - </s:form> -</div> - -</body> -</html> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/currentWWUrl.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/currentWWUrl.tag deleted file mode 100644 index d8cb7edd0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/currentWWUrl.tag +++ /dev/null @@ -1,60 +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 uri="/struts-tags" prefix="s" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ attribute name="action" %>
-<%@ attribute name="namespace" %>
-<%@ attribute name="linkId" required="false" %>
-<%@ attribute name="url" %>
-<%@ attribute name="useParams" required="false" %>
-
-<c:set var="currentUrl">
- <s:url>
- <c:if test="${useParams}">
- <s:param name="groupId" value="%{groupId}"/>
- <s:param name="artifactId" value="%{artifactId}"/>
- <s:param name="version" value="%{version}"/>
- </c:if>
- </s:url>
-</c:set>
-<c:if test="${!empty (action) && !empty (namespace)}">
- <c:set var="url">
- <s:url action="%{#attr.action}" namespace="%{#attr.namespace}"/>
- </c:set>
-</c:if>
-
-<c:set var="text">
- <jsp:doBody/>
-</c:set>
-<!--URL: <c:out value="${url}"/>
-Current URL: <c:out value="${currentUrl}"/>
--->
-<c:choose>
- <c:when test="${currentUrl == url}">
- <b>
- ${text}
- </b>
- </c:when>
- <c:otherwise>
- <a href="${url}">
- ${text}
- </a>
- </c:otherwise>
-</c:choose>
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/displayUpdatePolicy.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/displayUpdatePolicy.tag deleted file mode 100644 index 702d74d76..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/displayUpdatePolicy.tag +++ /dev/null @@ -1,41 +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. - --%> - -<%-- TODO: this could perhaps just be a i18n call --%> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ attribute name="policy" required="true" %> -<%@ attribute name="interval" %> - -<c:choose> - <c:when test="${policy == 'disabled'}"> - Disabled - </c:when> - <c:when test="${policy == 'always'}"> - Updated every request - </c:when> - <c:when test="${policy == 'hourly'}"> - Updated hourly - </c:when> - <c:when test="${policy == 'daily'}"> - Updated daily - </c:when> - <c:when test="${policy == 'interval'}"> - Updated every ${interval} minutes - </c:when> -</c:choose>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactLink.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactLink.tag deleted file mode 100644 index 45398f696..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactLink.tag +++ /dev/null @@ -1,77 +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="s" uri="/struts-tags" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<%@ attribute name="groupId" required="true" %> -<%@ attribute name="artifactId" %> -<%@ attribute name="version" %> -<%@ attribute name="classifier" %> -<%@ attribute name="scope" %> -<%@ attribute name="versions" type="java.util.List" %> -<%@ attribute name="repositoryId" %> - -<span class="artifact-link"> - <archiva:groupIdLink var="${groupId}" includeTop="false" /> - <c:if test="${!empty (artifactId)}"> - <c:set var="url"> - <s:url action="browseArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - </s:url> - </c:set> - <a href="${url}">${artifactId}</a> - </c:if> - | <strong>Version(s):</strong> - <c:choose> - <c:when test="${!empty (version)}"> - <c:set var="url"> - <s:url action="showArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - <c:if test="${!empty (version)}"> - <s:param name="version" value="%{#attr.version}"/> - </c:if> - </s:url> - </c:set> - <a href="${url}">${version}</a> - </c:when> - <c:otherwise> - <c:forEach items="${versions}" var="v" varStatus="i"> - <c:set var="url"> - <s:url action="showArtifact" namespace="/"> - <s:param name="groupId" value="%{#attr.groupId}"/> - <s:param name="artifactId" value="%{#attr.artifactId}"/> - <s:param name="version" value="%{#attr.v}"/> - </s:url> - </c:set> - <a href="${url}">${v}</a> - <c:if test="${!i.last}">,</c:if> - </c:forEach> - </c:otherwise> - </c:choose> - <c:if test="${!empty (scope)}"> - | <strong>Scope:</strong> ${scope} - </c:if> - <c:if test="${!empty (classifier)}"> - | <strong>Classifier:</strong> ${classifier} - </c:if> -</span> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactTitle.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactTitle.tag deleted file mode 100644 index bfcb5e4d0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactTitle.tag +++ /dev/null @@ -1,46 +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="s" uri="/struts-tags" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ attribute name="groupId" required="true" %>
-<%@ attribute name="artifactId" %>
-<%@ attribute name="version" %>
-
- <span class="artifact-title">
- <c:set var="url">
- <c:choose>
- <c:when test="${!empty (version)}">
- <s:url action="showArtifact" namespace="/">
- <s:param name="groupId" value="%{#attr.groupId}"/>
- <s:param name="artifactId" value="%{#attr.artifactId}"/>
- <s:param name="version" value="%{#attr.version}"/>
- </s:url>
- </c:when>
- <c:otherwise>
- <s:url action="browseArtifact" namespace="/">
- <s:param name="groupId" value="%{#attr.groupId}"/>
- <s:param name="artifactId" value="%{#attr.artifactId}"/>
- </s:url>
- </c:otherwise>
- </c:choose>
- </c:set>
- <%-- TODO: showing the name and description would be nice, but that would require loading the POMs --%>
- <a href="${url}">${artifactId}</a>
- </span>
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tld/web-tags.tld b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tld/web-tags.tld deleted file mode 100644 index 335c6325a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tld/web-tags.tld +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> - -<!-- - ~ 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 xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"> - <description><![CDATA[Archiva taglibs.]]></description> - <display-name>Archiva Taglib</display-name> - <tlib-version>2.2.3</tlib-version> - <short-name>archiva</short-name> - <uri>/archiva-web-tag</uri> - <tag> - <description><![CDATA[Render a copy paste snippet for the provided object]]></description> - <name>copy-paste-snippet</name> - <tag-class>org.apache.archiva.web.tags.CopyPasteSnippetTag</tag-class> - <body-content>empty</body-content> - <attribute> - <description><![CDATA[The Object to Render]]></description> - <name>object</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description><![CDATA[The wrapper type to use, can be 'pre' or 'toggle']]></description> - <name>wrapper</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - <tag> - <description><![CDATA[Render a dependency tree for the provided project.]]></description> - <name>dependency-tree</name> - <tag-class>org.apache.archiva.web.tags.DependencyTreeTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description><![CDATA[The artifactId]]></description> - <name>artifactId</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description><![CDATA[The groupId]]></description> - <name>groupId</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description><![CDATA[The version of the project model. Used to verify the dependency graph for generic snapshots not yet in the repo.]]></description> - <name>modelVersion</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description><![CDATA[The variable name for the node.]]></description> - <name>nodevar</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description><![CDATA[The version]]></description> - <name>version</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - <tag> - <description><![CDATA[Render a groupId as a set of Links]]></description> - <name>groupIdLink</name> - <tag-class>org.apache.archiva.web.tags.GroupIdLinkTag</tag-class> - <body-content>empty</body-content> - <attribute> - <description><![CDATA[Boolean indicating if 'top' link should be created or not.]]></description> - <name>includeTop</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description><![CDATA[The GroupID String]]></description> - <name>var</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> -</taglib> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 6e7157ea2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,167 +0,0 @@ -<?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. - --> - -<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> - - <display-name>Apache Archiva</display-name> - - <filter> - <filter-name>webwork-cleanup</filter-name> - <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> - </filter> - - <filter> - <filter-name>sitemesh</filter-name> - <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> - </filter> - - <filter> - <filter-name>struts2</filter-name> - <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> - </filter> - - <filter> - <filter-name>encodingFilter</filter-name> - <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> - <init-param> - <param-name>encoding</param-name> - <param-value>UTF-8</param-value> - </init-param> - <init-param> - <param-name>forceEncoding</param-name> - <param-value>true</param-value> - </init-param> - </filter> - - <filter-mapping> - <filter-name>encodingFilter</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - - <!-- this must be before the sitemesh filter --> - <filter-mapping> - <filter-name>webwork-cleanup</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - - <filter-mapping> - <filter-name>sitemesh</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - - <filter-mapping> - <filter-name>struts2</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - - <listener> - <listener-class> - org.springframework.web.context.ContextLoaderListener - </listener-class> - </listener> - <listener> - <!-- TODO: some Spring technique for this? --> - <listener-class> - org.apache.archiva.web.startup.ArchivaStartup - </listener-class> - </listener> - - <listener> - <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class> - </listener> - - <!-- to cleanup temporary group index created during a session --> - <listener> - <listener-class>org.apache.archiva.webdav.util.TemporaryGroupIndexSessionCleaner</listener-class> - </listener> - - <context-param> - <param-name>contextConfigLocation</param-name> - <param-value> - classpath*:META-INF/spring-context.xml - /WEB-INF/applicationContext.xml - </param-value> - </context-param> - - <servlet> - <servlet-name>RepositoryServlet</servlet-name> - <servlet-class> - org.apache.archiva.webdav.RepositoryServlet - </servlet-class> - <!-- Loading this on startup so as to take advantage of configuration listeners --> - <load-on-startup>1</load-on-startup> - </servlet> - - - <servlet> - <servlet-name>RssFeedServlet</servlet-name> - <servlet-class> - org.apache.archiva.web.rss.RssFeedServlet - </servlet-class> - </servlet> - - <servlet-mapping> - <servlet-name>RssFeedServlet</servlet-name> - <url-pattern>/feeds/*</url-pattern> - </servlet-mapping> - - <servlet-mapping> - <servlet-name>RepositoryServlet</servlet-name> - <url-pattern>/repository/*</url-pattern> - </servlet-mapping> - - - - <resource-ref> - <res-ref-name>jdbc/users</res-ref-name> - <res-type>javax.sql.DataSource</res-type> - <res-auth>Container</res-auth> - <res-sharing-scope>Shareable</res-sharing-scope> - </resource-ref> - <resource-ref> - <res-ref-name>mail/Session</res-ref-name> - <res-type>javax.mail.Session</res-type> - <res-auth>Container</res-auth> - <res-sharing-scope>Shareable</res-sharing-scope> - </resource-ref> - - <servlet> - <servlet-name>CXFServlet</servlet-name> - <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> - <load-on-startup>1</load-on-startup> - </servlet> - - <servlet-mapping> - <servlet-name>CXFServlet</servlet-name> - <url-pattern>/restServices/*</url-pattern> - </servlet-mapping> - - <welcome-file-list> - <welcome-file>index.jsp</welcome-file> - </welcome-file-list> - - <session-config> - <!-- 30 minutes session timeout --> - <session-timeout>30</session-timeout> - </session-config> - -</web-app> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css deleted file mode 100644 index c380a626c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css +++ /dev/null @@ -1,205 +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. - */ - -body { - margin: 0px; - padding: 0px; -} - -img { - border: none; -} - -table { - padding: 0px; - width: 100%; - margin-left: -2px; - margin-right: -2px; -} - -acronym { - cursor: help; - border-bottom: 1px dotted #feb; -} - -table.bodyTable th, table.bodyTable td { - padding: 2px 4px 2px 4px; - vertical-align: top; -} - -div.clear { - clear: both; - visibility: hidden; -} - -div.clear hr { - display: none; -} - -#bannerLeft, #bannerRight { - font-size: xx-large; - font-weight: bold; -} - -#bannerLeft img, #bannerRight img { - margin: 0px; -} - -.xleft, #bannerLeft img { - float: left; -} - -.xright, #bannerRight img { - float: right; -} - -.composite { -} - -#banner { - padding: 0px; -} - -#banner img { - border: none; -} - -#breadcrumbs { - padding: 3px 10px 3px 10px; -} - -#leftColumn { - width: 170px; - float: left; - overflow: auto; -} - -#bodyColumn { - margin-right: 1.5em; - margin-left: 197px; - min-height: 575px -} - -#legend { - padding: 8px 0 8px 0; -} - -#navcolumn { - padding: 8px 4px 0 8px; -} - -#navcolumn h5 { - margin: 0; - padding: 0; - font-size: small; -} - -#navcolumn ul { - margin: 0; - padding: 0; - font-size: small; -} - -#navcolumn li { - list-style-type: none; - background-image: none; - background-repeat: no-repeat; - background-position: 0 0.4em; - padding-left: 16px; - list-style-position: outside; - line-height: 1.2em; - font-size: smaller; -} - -#navcolumn li.expanded { - background-image: url( ../images/expanded.gif ); -} - -#navcolumn li.collapsed { - background-image: url( ../images/collapsed.gif ); -} - -#poweredBy { - text-align: center; -} - -#navcolumn img { - margin-top: 10px; - margin-bottom: 3px; -} - -#poweredBy img { - display: block; - margin: 20px 0 20px 17px; - border: 1px solid black; - width: 90px; - height: 30px; -} - -#search img { - margin: 0px; - display: block; -} - -#search #q, #search #btnG { - border: 1px solid #999; - margin-bottom: 10px; -} - -#search form { - margin: 0px; -} - -#lastPublished { - font-size: x-small; -} - -.navSection { - margin-bottom: 2px; - padding: 8px; -} - -.navSectionHead { - font-weight: bold; - font-size: x-small; -} - -.section { - padding: 4px; -} - -#footer { - padding: 3px 10px 3px 10px; - font-size: x-small; -} - -#breadcrumbs { - font-size: x-small; - margin: 0pt; -} - -.source { - padding: 12px; - margin: 1em 7px 1em 7px; -} - -.source pre { - margin: 0px; - padding: 0px; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css deleted file mode 100644 index ea4e414f5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css +++ /dev/null @@ -1,350 +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. - */ - -body { - padding: 0 0 10px 0; -} - -body, td, th, select, input, li { - font-family: Verdana, Helvetica, Arial, sans-serif; - font-size: 9pt; -} - -select, input { - font-size: 0.9em; - border: 1px solid #AAAAAA; -} - -select { - padding-left: 3px; - height: auto; - width: auto; -} - -input { - padding: 2px; -} - -label .required { - color: red; - font-weight: bold; -} - -th { - text-align: right; - padding-right: 1em; - font-size: x-small; - vertical-align: top; -} - -.infoTable th { - width: 15em; -} - -#contentBox h1 { - background-image: url( ../images/arrow.gif ); - background-repeat: no-repeat; - background-position: left bottom; - border-bottom: 1px solid #DFDEDE; - padding: 0 0 1px 23px; - margin-bottom: 0.5em; - color: #333; - voice-family: inherit; - font-size: medium !important; -} - -#contentBox h2 { - border-bottom: 1px solid #DFDEDE; - padding: 0 0 1px 0; - margin-bottom: 0.5em; - color: #333; - voice-family: inherit; - font-size: small !important; -} - -#contentBox h3 { - border-bottom: 1px solid #DFDEDE; - padding: 0 0 1px 0; - margin-bottom: 0.5em; - color: #333; - voice-family: inherit; - font-size: small !important; - margin-left: 2em; -} - -table { - width: auto; -} - -code { - font-family: Courier, monospace; - font-size: 13px; -} - -#legend li.externalLink { - background: url( ../images/external.png ) left top no-repeat; - padding-left: 18px; -} - -a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { - background: url( ../images/external.png ) right center no-repeat; - padding-right: 18px; -} - -#legend li.newWindow { - background: url( ../images/newwindow.png ) left top no-repeat; - padding-left: 18px; -} - -a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { - background: url( ../images/newwindow.png ) right center no-repeat; - padding-right: 18px; -} - -p { - line-height: 1.3em; - font-size: small; -} - -#breadcrumbs { - background-image: url(../images/breadcrumbs.jpg); - padding: 2px 8px; -} - -#navcolumn h5 { - color: gray; - font-weight: bold; - font-size: 11px; - padding: 10px 0 1px 19px; -} - -.source { - border: 1px solid #999; -} - -#companyLogo { - display: block; - margin-left: auto; - margin-right: auto; - text-align: center; -} - -dl { - padding: 4px 4px 4px 6px; - border: 1px solid #aaa; - background-color: #ffc; -} - -dt { - color: #900; -} - -#organizationLogo img, #projectLogo img, #projectLogo span { - margin: 8px; -} - -#banner { - border-bottom: 1px solid #fff; - padding: 8px; -} - -#breadcrumbs a:link { - text-decoration: none; -} - -#breadcrumbs a:visited { - text-decoration: none; - color: #333 -} - -#breadcrumbs a:hover { - text-decoration: none; - color: white -} - -.errormark, .warningmark, .donemark, .infomark { - background: url( ../images/icon_error_sml.gif ) no-repeat; -} - -.warningmark { - background-image: url( ../images/icon_warning_sml.gif ); -} - -.donemark { - background-image: url( ../images/icon_success_sml.gif ); -} - -.infomark { - background-image: url( ../images/icon_info_sml.gif ); -} - -.booleanIcon { - padding-left: 20px; - height: 20px; -} - -pre.pom { - font-size: 0.9em; - border: 1px solid #ddddff; - background-color: #f8f8ff; - padding: 5px; -} - -pre.pom code { - font-size: 0.9em; -} - -#leftColumn { - padding: 4px 4px 4px 4px; - overflow: hidden; -} - -#navcolumn { - padding: 6px 0 0 2px; -} - -#navcolumn li { - font-size: 9px; - text-indent: 19px; - line-height: 24px; - height: 25px; - width: 161px; - background-image: url( ../images/super.gif ); - background-position: 0 0; - background-repeat: no-repeat; - display: block; - padding-left: 0; -} - -#navcolumn li li { - padding-left: 16px; - background: none; - display: block; -} - -#navcolumn li li a:hover { - color: black !important; - background: none; - display: block; -} - -#navcolumn li li a:active { - color: red !important; - background: none; - display: block; -} - -#navcolumn li.collapsed { - background-image: url( ../images/super.gif ); -} - -#navcolumn li.expanded { - background-image: url( ../images/super.gif ); - height: inherit; -} - -#navcolumn li a:link { - color: #666; - display: block; -} - -#navcolumn li a:hover { - color: #fff !important; - background: url( ../images/super_hl.gif ) 0 -25px no-repeat; - display: block; -} - -#navcolumn li a:active { - color: #fff !important; - background: url( ../images/super_hl.gif ) 0 -50px no-repeat; - display: block; -} - -#navcolumn li a:visited { - color: #666; - display: block; -} - -#navcolumn li ul li { - color: #333 !important; - text-indent: 30px !important; - line-height: 20px !important; - height: 20px !important; - background-image: url( ../images/supersub.gif ) !important; - font-size: 9px; - width: 161px; - background-repeat: no-repeat; - display: block; - padding-left: 0; -} - -#navcolumn li ul li a:hover { - color: #fff !important; - background: url( ../images/super_hl_sub.gif ) 0 -20px no-repeat; - background-position: right; - width: 161px; - display: block; -} - -#footer { - border-top: 1px solid #CCCCCC; - padding: 14px 4px 12px 4px; - color: #333333; - margin-top: 2em; -} - -a:link, a:visited { - color: #333; -} - -#navcolumn a { - text-decoration: none; -} - -a:active, a:hover { - color: #f30; -} - -blockquote { - border-left: 1px solid #DFDEDE; - padding-left: 1em; -} - -.missing { - background-color: red; - color: white; - font-weight: bold; - padding: 4px; - margin-left: 20px; - margin-right: 20px; - -} - -#searchBox { - margin: 5%; -} - -#searchHint { - margin: 5%; -} - -#topSearchBox { - float: right; - padding: 2px 8px; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_0_aaaaaa_40x100.png Binary files differdeleted file mode 100644 index 5b5dab2ab..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_0_aaaaaa_40x100.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_75_ffffff_40x100.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_75_ffffff_40x100.png Binary files differdeleted file mode 100644 index ac8b229af..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_75_ffffff_40x100.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_55_fbf9ee_1x400.png Binary files differdeleted file mode 100644 index ad3d6346e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_55_fbf9ee_1x400.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_65_ffffff_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_65_ffffff_1x400.png Binary files differdeleted file mode 100755 index 42ccba269..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_65_ffffff_1x400.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_dadada_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_dadada_1x400.png Binary files differdeleted file mode 100644 index 5a46b47cb..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_dadada_1x400.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_e6e6e6_1x400.png Binary files differdeleted file mode 100644 index 86c2baa65..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_e6e6e6_1x400.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_95_fef1ec_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_95_fef1ec_1x400.png Binary files differdeleted file mode 100644 index 4443fdc1a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_95_fef1ec_1x400.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png Binary files differdeleted file mode 100644 index 7c9fa6c6e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_222222_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_222222_256x240.png Binary files differdeleted file mode 100755 index ee039dc09..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_222222_256x240.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_2e83ff_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_2e83ff_256x240.png Binary files differdeleted file mode 100644 index 45e8928e5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_2e83ff_256x240.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_454545_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_454545_256x240.png Binary files differdeleted file mode 100644 index 7ec70d11b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_454545_256x240.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_888888_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_888888_256x240.png Binary files differdeleted file mode 100644 index 5ba708c39..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_888888_256x240.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_cd0a0a_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_cd0a0a_256x240.png Binary files differdeleted file mode 100644 index 7930a5580..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_cd0a0a_256x240.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/jquery.ui-1.8.14.theme.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/jquery.ui-1.8.14.theme.css deleted file mode 100644 index c029f4495..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/jquery.ui-1.8.14.theme.css +++ /dev/null @@ -1,247 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/ - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } -.ui-widget-content a { color: #222222/*{fcContent}*/; } -.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } -.ui-widget-header a { color: #222222/*{fcHeader}*/; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } -.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } - -/* Overlays */ -.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/print.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/print.css deleted file mode 100644 index 7f9db33dc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/print.css +++ /dev/null @@ -1,27 +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. - */ - -#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { - display: none !important; -} - -#bodyColumn, body.docs div.docs { - margin: 0 !important; - border: none !important -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css deleted file mode 100644 index faac56bd5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css +++ /dev/null @@ -1,399 +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. - */ - -#download { - float: right; -} - -#download a { - text-decoration: none; -} - -#download td.type { - padding-right: 1em; - white-space: nowrap; -} - -#download td.size { - text-align: right; -} - -#contentArea { - /* margin-right: 15em; */ - padding: 1em; -} - -#tabs b { - border: 1px #DFDEDE solid; - padding-left: 1em; - padding-right: 1em; -} - -#tabs a { - border: 1px #DFDEDE solid; - padding-left: 1em; - padding-right: 1em; - text-decoration: none; -} - -#tabArea { - border-top: 1px solid #DFDEDE; - padding: 1em; -} - -#searchTypes { - text-align: right; - font-size: xx-small; -} - -.statusFailed { - color: red; - font-weight: bold; -} - -/* WebWork validation failures */ -.errorMessage { - color: red; - font-weight: bold; -} - -.actionMessage { - font-size: 1.0em; - font-weight: bold; - color: blue; -} - -.errorBullet { - list-style-image: url( "../images/icon_error_sml.gif" ); -} - -.warningBullet { - list-style-image: url( "../images/icon_warning_sml.gif" ); -} - -.infoBullet { - list-style-image: url( "../images/icon_info_sml.gif" ); -} - -.artifact-link { - font-size: x-small; - padding-left: 5em; -} - -.artifact-title { - -} - -ul.dependencyTree { - margin-left: 50px; -} - -ul.dependencyTree span.artifact-link { - padding-left: 0px; -} - -.eXtremeTable tr.filter { - padding: 1px; -} - -.eXtremeTable .tableRegion,.eXtremeTable .statusBar { - width: 100%; -} - -.eXtremeTable .tableRegion .tableHeader { - background-color: None; - background-image: url(../images/breadcrumbs.jpg); - color: gray; -} - -.eXtremeTable .tableRegion .tableHeaderSort { - background-color: #FFBF5F; -} - -.eXtremeTable .compactToolbar td { - white-space: nowrap; -} - -.tools { - border-color: gray !important; -} - -table.tools th.toolHeading -{ - color: gray; -} - -.tools .toolHeading { - padding: 0px 3px 0px 3px; - margin: 0px !important; - font-size: 11px !important; - background-color: red; - background-image: url(../images/breadcrumbs.jpg); -} - -div.repository h3 { - border-bottom: 0px !important; - padding-left: 15px !important; -} - -div.repository { - border-bottom: 1px solid #DFDEDE; -} - -div.proxyConfig, -div.repoGroup { - border: 1px dashed #DFDEDE; - margin-bottom: 15px; - padding: 5px; -} - -div.proxyConfig div.managedRepo, -div.proxyConfig div.remoteRepo, -div.repoGroup div.managedRepo { - border: 1px dotted gray; - padding: 5px; - background-color: white; -} - -div.proxyConfig div.remoteRepo { - margin: 5px; -} - -div.proxyConfig div.managedRepo img, -div.proxyConfig div.remoteRepo img, -div.repoGroup div.managedRepo img { - float: left; - border: 0px; -} - -div.proxyConfig div.managedRepo p, -div.proxyConfig div.remoteRepo p { - margin: 0px; - margin-left: 40px; - padding: 0px; -} - -div.repoGroup div.managedRepo p { - margin: 8px; - margin-left: 40px; - padding: 0px; -} - -div.proxyConfig div.managedRepo p.id, -div.proxyConfig div.remoteRepo p.id, -div.repoGroup div.managedRepo p.id { - font-family: monospace; -} - -div.proxyConfig div.connector, -div.repoGroup div.connector { - border: 1px solid #aaaaff; - margin-top: 10px; - margin-left: 40px !important; -} - -div.proxyConfig a.expand { - font-size: 7pt; - color: gray; -} - -div.proxyConfig div.controls, -div.repoGroup div.controls { - float: right; -} - -div.proxyConfig div.connector h4, -div.repoGroup div.connector h4 { - padding: 3px; - font-size: 8pt; - margin: 0px; -} - -div.proxyConfig div.connector table.settings { - border: 0px; - background-color: transparent; - font-size: 8pt; - margin-left: 10px; -} - -div.proxyConfig div.connector table.settings th, -div.proxyConfig div.connector table.settings td { - font-size: 8pt; -} - -div.proxyConfig div.connector table.settings table.policies { - border: 1px dotted gray; -} - -div.proxyConfig div.connector table p { - margin: 0px; - padding: 0px; -} - -div.repoGroup div.repos { - text-align: right; - padding: 4px 0px 0px 0px; -} - -div.admin div.dark, -div.admin div.lite { - border: 1px solid #aaaaaa; - font-size: 11pt; - margin-left: 15px; - margin-right: 15px; - margin-bottom: 5px; - padding: 5px; -} - -div.admin div.lite { - background-color: white; -} - -div.admin div.dark { - background-color: #eeeeee; -} - -div.admin div.controls { - float: right; - font-size: 8pt !important; -} - -div.admin div.filetype table { - margin-left: 25px; - border: 1px solid gray; -} - -div.filetype table td.controls { - width: 5%; -} - -div.filetype table td.odd, -div.admin table.consumers td.odd { - background-color: #dddddd; -} - -div.filetype table td.even, -div.admin table.consumers td.even { - background-color: white; -} - -div.admin table.consumers { - margin-left: 15px; - border: 1px solid gray; -} - -div.admin table.consumers th { - font-size: 1.0em; - background-color: #cccccc; - text-align: left; -} - -div.admin table.consumers td strong { - font-size: 0.8em; -} - -div.warningbox { - margin: 20px 40px 20px 40px; - border: 1px solid #CC0000; - background-color: #FFCCCC; - color: #000000; - font-size: 15pt; - padding: 20px; -} - -div.infobox { - margin: 20px 40px 20px 40px; - border: 1px solid #0000CC; - background-color: #EEEEFF; - font-size: 9pt; - padding: 20px; -} - -div.buttons { - text-align: center; -} - -div.versions { - border: 1px dashed #DFDEDE; - margin-bottom: 15px; - padding: 5px; -} - -div.versions a.expand { - font-size: 7pt; - color: gray; -} - -#messages { - background-color: yellow; - border: 1px solid orange; - margin-top: 2em; -} - -#messages ul { - list-style-image: url(../images/icon_warning_sml.gif) -} - -#messagesinfo { - background-color: yellow; - border: 1px solid orange; - margin-top: 2em; -} - -#messagesinfo ul { - list-style-image: url(../images/icon_success_sml.gif) -} - -table.auditlogs { - text-align: center; - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif ; - font-weight: normal; - font-size: 11px; - color: #fff; - width: 100%; - background-color: #666; - border: 0px; - border-collapse: collapse; - border-spacing: 0px; -} - -table.auditlogs th { - background-color: #666; - color: #fff; - padding: 4px; - text-align: center; - border-bottom: 2px #fff solid; - font-size: 12px; - font-weight: bold; -} - -table.auditlogs td { - background-color: #CCC; - color: #000; - padding: 4px; - text-align: center; - border: 1px #fff solid; -} - -div.auditLogReportResults { - border: 1px dashed #DFDEDE; - margin-bottom: 15px; - margin-left: 2px; - padding: 5px; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/favicon.ico b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/favicon.ico Binary files differdeleted file mode 100644 index 06714d34a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/favicon.ico +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep-logo.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep-logo.png Binary files differdeleted file mode 100644 index cbaf680a5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep-logo.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep.png Binary files differdeleted file mode 100644 index e311868be..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archetype.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archetype.gif Binary files differdeleted file mode 100755 index fc84feff5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archetype.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-splat-32.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-splat-32.gif Binary files differdeleted file mode 100644 index 97dff07d2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-splat-32.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-world.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-world.png Binary files differdeleted file mode 100644 index 8afb6cc93..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-world.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva.png Binary files differdeleted file mode 100644 index 729803c7b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.gif Binary files differdeleted file mode 100755 index ce00e3d0c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.left.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.left.png Binary files differdeleted file mode 100644 index 93085aaaa..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.left.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.right.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.right.png Binary files differdeleted file mode 100644 index 79abee507..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.right.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/breadcrumbs.jpg b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/breadcrumbs.jpg Binary files differdeleted file mode 100644 index 1385fa0bd..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/breadcrumbs.jpg +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/collapsed.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/collapsed.gif Binary files differdeleted file mode 100644 index 6e7108406..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/collapsed.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/dl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/dl.gif Binary files differdeleted file mode 100755 index 710e7b848..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/dl.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-archetype.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-archetype.png Binary files differdeleted file mode 100644 index c0a19dac7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-archetype.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-jar.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-jar.png Binary files differdeleted file mode 100644 index 6eb48831d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-jar.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-maven-plugin.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-maven-plugin.png Binary files differdeleted file mode 100644 index 3f27ddb6d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-maven-plugin.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-other.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-other.png Binary files differdeleted file mode 100644 index cb268e025..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-other.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-pom.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-pom.png Binary files differdeleted file mode 100644 index 7ed1db583..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-pom.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-skin.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-skin.png Binary files differdeleted file mode 100644 index 0671e0956..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-skin.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.bl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.bl.gif Binary files differdeleted file mode 100644 index c59ba0062..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.bl.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.br.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.br.gif Binary files differdeleted file mode 100644 index d80f62ee8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.br.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.ml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.ml.gif Binary files differdeleted file mode 100644 index 8fcfa4220..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.ml.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.mr.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.mr.gif Binary files differdeleted file mode 100644 index ded125be9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.mr.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tl.gif Binary files differdeleted file mode 100644 index b4a8e97d3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tl.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tr.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tr.gif Binary files differdeleted file mode 100644 index 07aeccee5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tr.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/expanded.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/expanded.gif Binary files differdeleted file mode 100644 index 0fef3d89e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/expanded.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/external.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/external.png Binary files differdeleted file mode 100644 index 3f999fc88..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/external.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/folder.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/folder.png Binary files differdeleted file mode 100644 index 65bd0bbdc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/folder.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/footerborder.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/footerborder.gif Binary files differdeleted file mode 100644 index 958ce7ae3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/footerborder.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_error_sml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_error_sml.gif Binary files differdeleted file mode 100644 index 61132ef2b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_error_sml.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_info_sml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_info_sml.gif Binary files differdeleted file mode 100644 index c6cb9ad7c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_info_sml.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page.gif Binary files differdeleted file mode 100644 index 7c5b30758..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page_disabled.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page_disabled.gif Binary files differdeleted file mode 100644 index 99c292f62..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page_disabled.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page.gif Binary files differdeleted file mode 100644 index a051fa1f3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page_disabled.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page_disabled.gif Binary files differdeleted file mode 100644 index 79c241b37..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page_disabled.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_success_sml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_success_sml.gif Binary files differdeleted file mode 100644 index 52e85a430..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_success_sml.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_warning_sml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_warning_sml.gif Binary files differdeleted file mode 100644 index 873bbb52c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_warning_sml.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-down.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-down.png Binary files differdeleted file mode 100644 index 7ced90cd2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-down.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-left.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-left.png Binary files differdeleted file mode 100644 index 9e37b4128..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-left.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-right.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-right.png Binary files differdeleted file mode 100644 index 00a443dbe..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-right.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-up.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-up.png Binary files differdeleted file mode 100644 index 310c61728..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-up.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/box.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/box.png Binary files differdeleted file mode 100644 index 4d62e48ec..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/box.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/create.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/create.png Binary files differdeleted file mode 100644 index 24a84bb49..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/create.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/delete.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/delete.gif Binary files differdeleted file mode 100644 index b6922ac11..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/delete.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/down.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/down.gif Binary files differdeleted file mode 100644 index 9561bbe2a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/down.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/edit.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/edit.png Binary files differdeleted file mode 100644 index 5ea781e6d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/edit.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/off-symbol.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/off-symbol.png Binary files differdeleted file mode 100644 index 6326912c1..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/off-symbol.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/on-symbol.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/on-symbol.png Binary files differdeleted file mode 100644 index 4bcccd5a0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/on-symbol.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/rss-feed.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/rss-feed.png Binary files differdeleted file mode 100644 index 6652d3e57..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/rss-feed.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-key.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-key.png Binary files differdeleted file mode 100644 index e66758a83..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-key.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-lock.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-lock.png Binary files differdeleted file mode 100644 index be4d4da03..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-lock.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/up.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/up.gif Binary files differdeleted file mode 100644 index 61942d6d1..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/up.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/user.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/user.png Binary files differdeleted file mode 100644 index 7f4c6d739..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/user.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/jar.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/jar.gif Binary files differdeleted file mode 100755 index 63dcb611a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/jar.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/mavenplugin.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/mavenplugin.gif Binary files differdeleted file mode 100755 index 4e335e3f2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/mavenplugin.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/newwindow.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/newwindow.png Binary files differdeleted file mode 100644 index 6287f72bd..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/newwindow.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/other.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/other.gif Binary files differdeleted file mode 100755 index 9b01e3e2c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/other.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/package-x-generic.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/package-x-generic.png Binary files differdeleted file mode 100644 index 901542615..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/package-x-generic.png +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/pom.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/pom.gif Binary files differdeleted file mode 100755 index b6efdc34c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/pom.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/skin.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/skin.gif Binary files differdeleted file mode 100755 index 64ff878eb..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/skin.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super.gif Binary files differdeleted file mode 100644 index c8ee24344..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl.gif Binary files differdeleted file mode 100644 index d90b8f0f8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl_sub.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl_sub.gif Binary files differdeleted file mode 100755 index 0b35f7a26..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl_sub.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/supersub.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/supersub.gif Binary files differdeleted file mode 100755 index 3f28dbce5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/supersub.gif +++ /dev/null diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.jsp deleted file mode 100644 index 77a2bd6a9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.jsp +++ /dev/null @@ -1,20 +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. - --%> - -<%response.sendRedirect( request.getContextPath() + "/index.action" );%>
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-1.6.1.min.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-1.6.1.min.js deleted file mode 100644 index b2ac1747f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-1.6.1.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu May 12 15:04:36 2011 -0400 - */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("<!doctype><html><body></body></html>");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bF.test(a)?d(a,e):b_(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bU,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bQ),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bD(a,b,c){var d=b==="width"?bx:by,e=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return e;f.each(d,function(){c||(e-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?e+=parseFloat(f.css(a,"margin"+this))||0:e-=parseFloat(f.css(a,"border"+this+"Width"))||0});return e}function bn(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bm(a){f.nodeName(a,"input")?bl(a):a.getElementsByTagName&&f.grep(a.getElementsByTagName("input"),bl)}function bl(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bk(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bj(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bi(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bh(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(S.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(y,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:E?function(a){return a==null?"":E.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?C.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(F)return F.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=D.call(arguments,2),g=function(){return a.apply(c,f.concat(D.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){G["[object "+b+"]"]=b.toLowerCase()}),x=e.uaMatch(w),x.browser&&(e.browser[x.browser]=!0,e.browser.version=x.version),e.browser.webkit&&(e.browser.safari=!0),j.test("Â ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?z=function(){c.removeEventListener("DOMContentLoaded",z,!1),e.ready()}:c.attachEvent&&(z=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",z),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.addClass(a.call(this,b,c.attr("class")||""))});if(a&&typeof a=="string"){var b=(a||"").split(o);for(var c=0,d=this.length;c<d;c++){var e=this[c];if(e.nodeType===1)if(!e.className)e.className=a;else{var g=" "+e.className+" ",h=e.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);e.className=f.trim(h)}}}return this},removeClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a=="string"||a===b){var c=(a||"").split(o);for(var d=0,e=this.length;d<e;d++){var g=this[d];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(n," ");for(var i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){var d=f(this);d.toggleClass(a.call(this,c,d.attr("class"),b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem -)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,O(a.origType,a.selector),f.extend({},a,{handler:N,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,O(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?F:E):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=F;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=F;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=F,this.stopPropagation()},isDefaultPrevented:E,isPropagationStopped:E,isImmediatePropagationStopped:E};var G=function(a){var b=a.relatedTarget;a.type=a.data;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&f.event.handle.apply(this,arguments)}catch(d){}},H=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?H:G,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?H:G)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&L("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&L("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var I,J=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var M={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||E,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=y.exec(h),k="",j&&(k=j[0],h=h.replace(y,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,M[h]?(a.push(M[h]+k),h=h+k):h=(M[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+O(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+O(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var P=/Until$/,Q=/^(?:parents|prevUntil|prevAll)/,R=/,/,S=/^.[^:#\[\.,]*$/,T=Array.prototype.slice,U=f.expr.match.POS,V={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(X(this,a,!1),"not",a)},filter:function(a){return this.pushStack(X(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=U.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/<tbody/i,bb=/<|&#?\w+;/,bc=/<(?:script|object|embed|option|style)/i,bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bh(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bn)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bc.test(a[0])&&(f.support.checkClone||!bd.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument|| -b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1></$2>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bm(k[i]);else bm(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bo=/alpha\([^)]*\)/i,bp=/opacity=([^)]*)/,bq=/-([a-z])/ig,br=/([A-Z]|^ms)/g,bs=/^-?\d+(?:px)?$/i,bt=/^-?\d/,bu=/^[+\-]=/,bv=/[^+\-\.\de]+/g,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB,bC=function(a,b){return b.toUpperCase()};f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0,widows:!0,orphans:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bu.test(d)&&(d=+d.replace(bv,"")+parseFloat(f.css(a,c))),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bq,bC)}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){a.offsetWidth!==0?e=bD(a,b,d):f.swap(a,bw,function(){e=bD(a,b,d)});if(e<=0){e=bz(a,b,b),e==="0px"&&bB&&(e=bB(a,b,b));if(e!=null)return e===""||e==="auto"?"0px":e}if(e<0||e==null){e=a.style[b];return e===""||e==="auto"?"0px":e}return typeof e=="string"?e:e+"px"}},set:function(a,b){if(!bs.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cv(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cm.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=cn.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this),f.isFunction(d.old)&&d.old.call(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cq||cs(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!co&&(cr?(co=1,g=function(){co&&(cr(g),e.tick())},cr(g)):co=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cq||cs(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.8.14.custom.min.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.8.14.custom.min.js deleted file mode 100644 index f9e4f1e84..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.8.14.custom.min.js +++ /dev/null @@ -1,789 +0,0 @@ -/*! - * jQuery UI 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.14", -keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus(); -b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this, -"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection", -function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth, -outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b); -return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e= -0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery); -;/*! - * jQuery UI Widget 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h, -a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h; -e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options, -this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")}, -widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this}, -enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); -;/*! - * jQuery UI Mouse 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b){var d=false;b(document).mousedown(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+ -this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!== -false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&& -!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= -false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); -;/* - * jQuery UI Position 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, -left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= -k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= -m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= -d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= -a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), -g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); -;/* - * jQuery UI Draggable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Draggables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== -"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= -this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options;this.helper= -this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); -this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true}, -_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b= -false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, -10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle|| -!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&& -a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= -this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"), -10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"), -10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, -(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!= -"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"), -10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+ -this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&& -!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.left<g[0])e=g[0]+this.offset.click.left; -if(a.pageY-this.offset.click.top<g[1])h=g[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>g[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.top<g[1]||h-this.offset.click.top>g[3])?h:!(h-this.offset.click.top<g[1])?h-b.grid[1]:h+b.grid[1]:h;e=b.grid[0]?this.originalPageX+Math.round((e-this.originalPageX)/ -b.grid[0])*b.grid[0]:this.originalPageX;e=g?!(e-this.offset.click.left<g[0]||e-this.offset.click.left>g[2])?e:!(e-this.offset.click.left<g[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version< -526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b, -c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.14"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var h=d.data(this,"sortable");if(h&&!h.options.disabled){c.sortables.push({instance:h,shouldRevert:h.options.revert}); -h.refreshPositions();h._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval= -false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true); -this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top; -c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&& -this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity= -a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!= -"x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left< -c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()- -c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this, -width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,h=b.offset.left,g=h+c.helperProportions.width,n=b.offset.top,o=n+c.helperProportions.height,i=c.snapElements.length-1;i>=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e<h&&h<l+e&&k-e<n&&n<m+e||j-e<h&&h<l+e&&k-e<o&&o<m+e||j-e<g&&g<l+e&&k-e<n&&n<m+e||j-e<g&&g<l+e&&k-e<o&& -o<m+e){if(f.snapMode!="inner"){var p=Math.abs(k-o)<=e,q=Math.abs(m-n)<=e,r=Math.abs(j-g)<=e,s=Math.abs(l-h)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l}).left-c.margins.left}var t= -p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(k-n)<=e;q=Math.abs(m-o)<=e;r=Math.abs(j-h)<=e;s=Math.abs(l-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[i].snapping&& -(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=p||q||r||s||t}else{c.snapElements[i].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"), -10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery); -;/* - * jQuery UI Droppable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Droppables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.mouse.js - * jquery.ui.draggable.js - */ -(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this); -a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&& -this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass); -this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g= -d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop", -a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.14"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height; -switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>= -i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!= -"none";if(c[f].visible){e=="mousedown"&&c[f]._activate.call(c[f],b);c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight}}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem|| -a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},dragStart:function(a,b){a.element.parentsUntil("body").bind("scroll.droppable",function(){a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)})},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c= -!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})},dragStop:function(a,b){a.element.parentsUntil("body").unbind("scroll.droppable"); -a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)}}})(jQuery); -;/* - * jQuery UI Resizable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, -_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), -top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= -this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", -nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== -String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); -this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); -var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a= -false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"}); -this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff= -{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis]; -if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false}, -_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f, -{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight: -Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(c<a.maxWidth)a.maxWidth=c;if(f<a.maxHeight)a.maxHeight=f}this._vBoundaries=a},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width= -b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(k(b.height))b.width=b.height*this.aspectRatio;else if(k(b.width))b.height=b.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this._vBoundaries,c=this.axis,d=k(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=k(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=k(b.width)&&a.minWidth&& -a.minWidth>b.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left= -null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)|| -0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ -a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+ -c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]); -b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.14"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(), -10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top- -f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType? -e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a= -e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing, -step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= -e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset; -var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left: -a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top- -d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition, -f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, -display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b= -e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height= -d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); -;/* - * jQuery UI Selectable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), -selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, -c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", -c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= -this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting"); -a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&& -!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d= -e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.14"})})(jQuery); -;/* - * jQuery UI Sortable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Sortables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable"); -this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a=== -"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&& -!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top, -left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; -this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= -document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); -return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top< -b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()- -b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this, -a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0], -e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset(); -c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): -this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null, -dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")}, -toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers|| -this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection(); -var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)}, -_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith(); -if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), -this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element), -this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&& -this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= -this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= -d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| -0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", -a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- -f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b= -this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width== -""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top= -this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a= -{top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"), -10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"? -document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), -10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b= -this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&& -this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset(); -var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- -this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g- -this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0], -this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]= -"";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove", -f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, -this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", -a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()}, -_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.14"})})(jQuery); -;/* - * jQuery UI Accordion 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); -a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); -if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", -function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a= -this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); -this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); -b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); -a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ -c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; -if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); -if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), -e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| -e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", -"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.14", -animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/); -f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", -paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); -;/* - * jQuery UI Autocomplete 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g= -false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!= -a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)}; -this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&& -a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); -d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&& -b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source= -this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close(); -this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label|| -b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position));this.options.autoFocus&&this.menu.next(new d.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var g=this; -d.each(b,function(c,f){g._renderItem(a,f)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, -"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); -(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", --1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); -this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b, -this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[d.fn.prop?"prop":"attr"]("scrollHeight")},select:function(e){this._trigger("selected",e,{item:this.active})}})})(jQuery); -;/* - * jQuery UI Button 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b){var h,i,j,g,l=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},k=function(a){var c=a.name,e=a.form,f=b([]);if(c)f=e?b(e).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form});return f};b.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",l);if(typeof this.options.disabled!== -"boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var a=this,c=this.options,e=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!e?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){b(this).addClass("ui-state-hover"); -this===h&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||b(this).removeClass(f)}).bind("click.button",function(d){if(c.disabled){d.preventDefault();d.stopImmediatePropagation()}});this.element.bind("focus.button",function(){a.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){a.buttonElement.removeClass("ui-state-focus")});if(e){this.element.bind("change.button",function(){g||a.refresh()});this.buttonElement.bind("mousedown.button",function(d){if(!c.disabled){g= -false;i=d.pageX;j=d.pageY}}).bind("mouseup.button",function(d){if(!c.disabled)if(i!==d.pageX||j!==d.pageY)g=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).toggleClass("ui-state-active");a.buttonElement.attr("aria-pressed",a.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).addClass("ui-state-active");a.buttonElement.attr("aria-pressed",true); -var d=a.element[0];k(d).not(d).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;b(this).addClass("ui-state-active");h=this;b(document).one("mouseup",function(){h=null})}).bind("mouseup.button",function(){if(c.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(d){if(c.disabled)return false;if(d.keyCode==b.ui.keyCode.SPACE|| -d.keyCode==b.ui.keyCode.ENTER)b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(d){d.keyCode===b.ui.keyCode.SPACE&&b(this).click()})}this._setOption("disabled",c.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type=== -"radio"){var a=this.element.parents().filter(":last"),c="label[for="+this.element.attr("id")+"]";this.buttonElement=a.find(c);if(!this.buttonElement.length){a=a.length?a.siblings():this.element.siblings();this.buttonElement=a.filter(c);if(!this.buttonElement.length)this.buttonElement=a.find(c)}this.element.addClass("ui-helper-hidden-accessible");(a=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",a)}else this.buttonElement=this.element}, -widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title"); -b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);if(a==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");else this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);if(this.type==="radio")k(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",true): -b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"), -c=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+e.primary+"'></span>");e.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+e.secondary+"'></span>");if(!this.options.text){d.push(f?"ui-button-icons-only": -"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")=== -"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); -b.Widget.prototype.destroy.call(this)}})})(jQuery); -;/* - * jQuery UI Dialog 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, -position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ -b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), -h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id", -e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); -a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== -b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+= -1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== -f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, -function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('<button type="button"></button>').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", -handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, -originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", -f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): -[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); -if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): -e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= -this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- -b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), -height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); -b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a= -a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery); -;/* - * jQuery UI Slider 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var b=this,a=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=a.values&&a.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+ -this.orientation+" ui-widget ui-widget-content ui-corner-all"+(a.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(a.range){if(a.range===true){if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(a.range==="min"||a.range==="max"?" ui-slider-range-"+a.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>"); -this.handles=c.add(d(e.join("")).appendTo(b.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle", -g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!b.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");i=b._start(g,l);if(i===false)return}break}m=b.options.step;i=b.options.values&&b.options.values.length? -(h=b.values(l)):(h=b.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=b._valueMin();break;case d.ui.keyCode.END:h=b._valueMax();break;case d.ui.keyCode.PAGE_UP:h=b._trimAlignValue(i+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(i-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===b._valueMax())return;h=b._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===b._valueMin())return;h=b._trimAlignValue(i- -m);break}b._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(g,k);b._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy(); -return this},_mouseCapture:function(b){var a=this.options,c,f,e,j,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(a.range===true&&this.values(1)===a.min){g+=1;e=d(this.handles[g])}if(this._start(b,g)===false)return false; -this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();a=e.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-e.width()/2,top:b.pageY-a.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(b){var a= -this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;if(this.orientation==="horizontal"){a= -this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a); -c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var f;if(this.options.values&&this.options.values.length){f=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>f||a===1&&c<f))c=f;if(c!==this.values(a)){f=this.values();f[a]=c;b=this._trigger("slide",b,{handle:this.handles[a],value:c,values:f});this.values(a?0:1);b!==false&&this.values(a,c,true)}}else if(c!==this.value()){b=this._trigger("slide",b,{handle:this.handles[a],value:c}); -b!==false&&this.value(c)}},_stop:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("stop",b,c)},_change:function(b,a){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("change",b,c)}},value:function(b){if(arguments.length){this.options.value= -this._trimAlignValue(b);this._refreshValue();this._change(null,0)}else return this._value()},values:function(b,a){var c,f,e;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(b): -this.value();else return this._values()},_setOption:function(b,a){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(b){case "disabled":if(a){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation(); -this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var a,c;if(arguments.length){a=this.options.values[b]; -return a=this._trimAlignValue(a)}else{a=this.options.values.slice();for(c=0;c<a.length;c+=1)a[c]=this._trimAlignValue(a[c]);return a}},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, -_refreshValue:function(){var b=this.options.range,a=this.options,c=this,f=!this._animateOff?a.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},a.animate); -if(h===1)c.range[f?"animate":"css"]({width:e-g+"%"},{queue:false,duration:a.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},a.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:a.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, -1)[f?"animate":"css"]({width:e+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.14"})})(jQuery); -;/* - * jQuery UI Tabs 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& -e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= -d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| -(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); -this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= -this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); -if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); -this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ -g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", -function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; -this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= --1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; -d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= -d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, -e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); -j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); -if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, -this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, -load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, -"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, -url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.14"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&& -a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery); -;/* - * jQuery UI Datepicker 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker - * - * Depends: - * jquery.ui.core.js - */ -(function(d,C){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass= -"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su", -"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10", -minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.bind("mouseout",function(b){b= -d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");b.addClass("ui-state-hover"); -b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.14"}});var A=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){H(this._defaults, -a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0, -selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]= -h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c= -this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a, -"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker", -function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput); -a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left", -this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus", -this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b= -b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5", -cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false}, -_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e, -"max");H(e.settings,f);if(i!==null&&f.dateFormat!==C&&f.minDate===C)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==C&&f.maxDate===C)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a, -b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv); -c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target); -c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey|| -a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b= -d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==C?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a); -d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c= -d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c= -{left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover"); -if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv); -J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"); -a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]|| -c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+ -i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b= -this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute", -left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&& -d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth= -b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear= -!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a); -a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a)); -d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()% -100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=B+1<a.length&&a.charAt(B+1)==p)&&B++;return p},m=function(p){var D=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&D?4:p=="o"?3:2)+"}");p=b.substring(q).match(p);if(!p)throw"Missing number at position "+q;q+= -p[0].length;return parseInt(p[0],10)},n=function(p,D,K){p=d.map(o(p)?K:D,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=x[1];if(b.substr(q,w.length).toLowerCase()==w.toLowerCase()){E=x[0];q+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+q;},s=function(){if(b.charAt(q)!=a.charAt(B))throw"Unexpected literal at position "+q;q++},q=0,B=0;B<a.length;B++)if(k)if(a.charAt(B)=="'"&&!o("'"))k=false; -else s();else switch(a.charAt(B)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))s();else k=true;break;default:s()}if(q<b.length)throw"Extra/unparsed characters found in date: "+b.substring(q); -if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y", -TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length< -n;)m="0"+m;return m},j=function(o,m,n,s){return i(o)?s[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h, -c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+= -"0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==C?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth= -f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g= -(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j, -l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= -a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), -b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= -this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+A+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+ -(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+A+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+s+'"><span class="ui-icon ui-icon-circle-triangle-'+ -(c?"w":"e")+'">'+s+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+A+'.datepicker._hideDatepicker();">'+this._get(a, -"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,s)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+A+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),B= -this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){var O="";this.maxRows=4;for(var G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right": -"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,B,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var z=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>": -"";for(t=0;t<7;t++){var r=(t+h)%7;z+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+s[r]+'">'+q[r]+"</span></th>"}y+=z+"</tr></thead><tbody>";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<z;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+ -this._get(a,"calculateWeek")(r)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&r<k||o&&r>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(r.getTime()==P.getTime()&&g==a.selectedMonth&&a._keyEvent||E.getTime()==r.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!D?"":" "+I[1]+(r.getTime()==u.getTime()?" "+ -this._currentClass:"")+(r.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||D)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+A+".datepicker._selectDay('#"+a.id+"',"+r.getMonth()+","+r.getFullYear()+', this);return false;"')+">"+(F&&!D?" ":L?'<span class="ui-state-default">'+r.getDate()+"</span>":'<a class="ui-state-default'+(r.getTime()==b.getTime()?" ui-state-highlight":"")+(r.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+ -r.getDate()+"</a>")+"</td>";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"), -l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+A+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+A+".datepicker._clickMonthYear('#"+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+ -n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()): -g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+A+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+A+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c== -"Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear"); -if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); -c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, -"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= -function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker, -[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.14";window["DP_jQuery_"+A]=d})(jQuery); -;/* - * jQuery UI Progressbar 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); -this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* -this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); -;/* - * jQuery UI Effects 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/ - */ -jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, -0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, -211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})}; -f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this, -[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.14",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b= -0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}); -c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c, -a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments); -a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%", -"pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d* -((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/= -e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/= -e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/ -h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5* -h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c, -e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery); -;/* - * jQuery UI Effects Blind 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Blind - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a, -g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Bounce 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Bounce - * - * Depends: - * jquery.effects.core.js - */ -(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/ -3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a); -b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery); -;/* - * jQuery UI Effects Clip 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Clip - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position, -c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Drop 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Drop - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e== -"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Explode 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Explode - * - * Depends: - * jquery.effects.core.js - */ -(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f= -0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ -e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); -;/* - * jQuery UI Effects Fade 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fade - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Fold 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fold - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], -10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Highlight 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Pulsate 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Pulsate - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration, -a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery); -;/* - * jQuery UI Effects Scale 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Scale - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a, -b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity= -1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"], -p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}}; -if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a); -a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from); -child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a, -n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Shake 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Shake - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]= -(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery); -;/* - * jQuery UI Effects Slide 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Slide - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e); -var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Transfer 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Transfer - * - * Depends: - * jquery.effects.core.js - */ -(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); -b.dequeue()})})}})(jQuery); -;
\ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/md5.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/md5.js deleted file mode 100644 index 46d2aab7d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/md5.js +++ /dev/null @@ -1,256 +0,0 @@ -/* - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ - -/* - * Configurable variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - */ -var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ -var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ -var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ - -/* - * These are the functions you'll usually want to call - * They take string arguments and return either hex or base-64 encoded strings - */ -function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));} -function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));} -function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));} -function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); } -function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); } -function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); } - -/* - * Perform a simple self-test to see if the VM is working - */ -function md5_vm_test() -{ - return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; -} - -/* - * Calculate the MD5 of an array of little-endian words, and a bit length - */ -function core_md5(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << ((len) % 32); - x[(((len + 64) >>> 9) << 4) + 14] = len; - - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - - a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); - d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); - c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); - b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); - a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); - d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); - c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); - b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); - a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); - d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); - c = md5_ff(c, d, a, b, x[i+10], 17, -42063); - b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); - a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); - d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); - c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); - b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); - - a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); - d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); - c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); - b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); - a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); - d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); - c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); - b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); - a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); - d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); - c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); - b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); - a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); - d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); - c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); - b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); - - a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); - d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); - c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); - b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); - a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); - d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); - c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); - b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); - a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); - d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); - c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); - b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); - a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); - d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); - c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); - b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); - - a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); - d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); - c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); - b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); - a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); - d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); - c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); - b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); - a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); - d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); - c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); - b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); - a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); - d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); - c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); - b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - } - return Array(a, b, c, d); - -} - -/* - * These functions implement the four basic operations the algorithm uses. - */ -function md5_cmn(q, a, b, x, s, t) -{ - return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); -} -function md5_ff(a, b, c, d, x, s, t) -{ - return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); -} -function md5_gg(a, b, c, d, x, s, t) -{ - return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); -} -function md5_hh(a, b, c, d, x, s, t) -{ - return md5_cmn(b ^ c ^ d, a, b, x, s, t); -} -function md5_ii(a, b, c, d, x, s, t) -{ - return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); -} - -/* - * Calculate the HMAC-MD5, of a key and some data - */ -function core_hmac_md5(key, data) -{ - var bkey = str2binl(key); - if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz); - - var ipad = Array(16), opad = Array(16); - for(var i = 0; i < 16; i++) - { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); - return core_md5(opad.concat(hash), 512 + 128); -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function bit_rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -/* - * Convert a string to an array of little-endian words - * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. - */ -function str2binl(str) -{ - var bin = Array(); - var mask = (1 << chrsz) - 1; - for(var i = 0; i < str.length * chrsz; i += chrsz) - bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); - return bin; -} - -/* - * Convert an array of little-endian words to a string - */ -function binl2str(bin) -{ - var str = ""; - var mask = (1 << chrsz) - 1; - for(var i = 0; i < bin.length * 32; i += chrsz) - str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); - return str; -} - -/* - * Convert an array of little-endian words to a hex string. - */ -function binl2hex(binarray) -{ - var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i++) - { - str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + - hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); - } - return str; -} - -/* - * Convert an array of little-endian words to a base-64 string - */ -function binl2b64(binarray) -{ - var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i += 3) - { - var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) - | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) - | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); - for(var j = 0; j < 4; j++) - { - if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; - else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); - } - } - return str; -} |