Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Revert back request to join group page from version group
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Feb 11, 2014
1 parent 14576f5 commit 10f9a4d
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 13 deletions.
Expand Up @@ -58,14 +58,17 @@ public class VersionGroupJoinAction implements Serializable {
@In
private VersionGroupDAO versionGroupDAO;

@In
private ProjectDAO projectDAO;

@In
private ProjectIterationDAO projectIterationDAO;

@In(create = true)
private SendEmailAction sendEmail;

@Getter
private HProjectIteration selectedVersion;
@In(required = false, value = JpaIdentityStore.AUTHENTICATED_USER)
private HAccount authenticatedAccount;

@Getter
@Setter
Expand All @@ -79,15 +82,34 @@ public class VersionGroupJoinAction implements Serializable {
@Setter
private String projectSlug;

@Getter
private List<SelectableProject> projectVersions = Lists.newArrayList();

public void searchMaintainedProjectVersion() {
Set<HProject> maintainedProjects =
authenticatedAccount.getPerson().getMaintainerProjects();
for (HProject project : maintainedProjects) {
for (HProjectIteration projectIteration : projectDAO
.getAllIterations(project.getSlug())) {
projectVersions.add(new SelectableProject(projectIteration,
false));
}
}
}

public String getGroupName() {
return versionGroupDAO.getBySlug(slug).getName();
}

public void searchProjectVersion() {
if (StringUtils.isNotEmpty(iterationSlug)
&& StringUtils.isNotEmpty(projectSlug)) {
selectedVersion =
HProjectIteration projectIteration =
projectIterationDAO.getBySlug(projectSlug, iterationSlug);
if (projectIteration != null) {
projectVersions.add(new SelectableProject(projectIteration,
true));
}
}
}

Expand All @@ -101,8 +123,14 @@ public void cancel() {
}

public String send() {
if (selectedVersion != null
&& !isVersionInGroup(selectedVersion.getId())) {
boolean isAnyVersionSelected = false;
for (SelectableProject projectVersion : projectVersions) {
if (projectVersion.isSelected()) {
isAnyVersionSelected = true;
break;
}
}
if (isAnyVersionSelected) {
List<HPerson> maintainers = new ArrayList<HPerson>();
for (HPerson maintainer : versionGroupServiceImpl
.getMaintainersBySlug(slug)) {
Expand All @@ -114,6 +142,16 @@ public String send() {
"#{messages['jsf.NoProjectVersionSelected']}");
return "success";
}
}

@AllArgsConstructor
public final class SelectableProject {

@Getter
private HProjectIteration projectIteration;

@Getter
@Setter
private boolean selected;
}
}
5 changes: 3 additions & 2 deletions zanata-war/src/main/resources/messages.properties
Expand Up @@ -61,6 +61,7 @@ jsf.Status=Status
jsf.Update=Update
jsf.Upload=Upload
jsf.Username=Username
jsf.Project=Project
jsf.Version=Version

#--- Menus (all pages) ---
Expand Down Expand Up @@ -832,7 +833,7 @@ jsf.AdditionalInfo=Additional information
jsf.email.MessageBody=Message
jsf.email.Send=Send Message
jsf.NoProjects=No projects to display.
jsf.RequestToAddProjectVersionToGroup=Request to add project version '{0}' to group '{1}'
jsf.RequestToAddProjectVersionToGroup=Request to add project version(s) to group '{0}'
jsf.NoProjectVersionSelected=No project version selected.
jsf.ClickSendMessageToProceedRequest=Enter additional information and click 'Send Message' to proceed
jsf.RequestAddProjectToGroup=Request to add a project to {0}
Expand Down Expand Up @@ -927,7 +928,7 @@ jsf.email.rolerequest.AddUserInstructions=You can assign #{sendEmail.fromName} t
#------ request-to-join-group email ------
jsf.email.group.maintainer.SentNotification=Your message has been sent to the #{versionGroupJoinAction.groupName} group maintainer
jsf.email.maintainer.DearMaintainer=Dear Group Maintainer,
jsf.email.joingrouprequest.RequestingToJoinGroup=Zanata user '#{sendEmail.fromName}' with id '#{sendEmail.fromLoginName}' is requesting project version '#{versionGroupJoinAction.selectedVersion.project.slug} - #{versionGroupJoinAction.selectedVersion.slug}' to be added to group '#{versionGroupJoinAction.groupName}'.
jsf.email.joingrouprequest.RequestingToJoinGroup=Zanata user '#{sendEmail.fromName}' with id '#{sendEmail.fromLoginName}' is requesting project version to be added to group '#{versionGroupJoinAction.groupName}'.
jsf.email.UserMessageIntro=#{sendEmail.fromName} has included the following message with their request:
jsf.email.JoinGroupRequest.ResponseInstructions=Click the link below to go act on the request. Please reply to #{sendEmail.fromName} at #{sendEmail.replyEmail} when you have finished processing their request.
jsf.email.group.maintainer.ReceivedReason=You are maintainer in group '#{versionGroupJoinAction.groupName}'
Expand Down
@@ -1,10 +1,7 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.org/schema/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
template="/WEB-INF/facelets/email/template_email.xhtml">

<ui:param name="toName" value="#{emailServiceImpl.toName}"/>
Expand All @@ -18,6 +15,16 @@
<p>#{messages['jsf.email.maintainer.DearMaintainer']}</p>

<p>#{messages['jsf.email.joingrouprequest.RequestingToJoinGroup']}</p>
<ul class="list--slat">
<ui:repeat value="#{versionGroupJoinAction.projectVersions}"
var="version">
<s:fragment rendered="#{version.selected}">
<li>
#{messages['jsf.Project']}:#{version.projectIteration.project.slug} - #{messages['jsf.Version']}:#{version.projectIteration.slug}
</li>
</s:fragment>
</ui:repeat>
</ul>
<s:fragment rendered="#{not empty sendEmail.htmlMessage}">
<p>#{messages['jsf.email.UserMessageIntro']}</p>
<hr/>
Expand Down
Expand Up @@ -6,17 +6,40 @@
xmlns:rich="http://richfaces.org/rich">


<h:form rendered="#{not empty versionGroupJoinAction.selectedVersion}">
<h:form rendered="#{not empty versionGroupJoinAction.projectVersions}">
<s:token allowMultiplePosts="true"/>

<h2>
<h:outputFormat
value="#{messages['jsf.RequestToAddProjectVersionToGroup']}">
<f:param
value="#{versionGroupJoinAction.selectedVersion.project.name} - #{versionGroupJoinAction.selectedVersion.slug}"/>
<f:param value="#{versionGroupJoinAction.groupName}"/>
</h:outputFormat>
</h2>

<rich:dataTable id="resultTable"
value="#{versionGroupJoinAction.projectVersions}"
var="selectableVersion">
<rich:column
sortBy="#{selectableVersion.projectIteration.project.name}">
<f:facet name="header">#{messages['jsf.ProjectName']}</f:facet>
#{selectableVersion.projectIteration.project.name}
</rich:column>
<rich:column sortBy="#{selectableVersion.projectIteration.slug}">
<f:facet name="header">#{messages['jsf.Version']}</f:facet>
#{selectableVersion.projectIteration.slug}
</rich:column>

<rich:column styleClass="centered">
<f:facet name="header">#{messages['jsf.Actions']}</f:facet>
<h:selectBooleanCheckbox title="#{messages['jsf.Select']}"
value="#{selectableVersion.selected}"
rendered="#{!versionGroupJoinAction.isVersionInGroup(selectableVersion.projectIteration.id)}"/>

<h:outputText value="#{messages['jsf.AlreadyInGroup']}"
rendered="#{versionGroupJoinAction.isVersionInGroup(selectableVersion.projectIteration.id)}"/>
</rich:column>
</rich:dataTable>

<h4>#{messages['jsf.ClickSendMessageToProceedRequest']}</h4>
<rich:panel>
<s:decorate id="nameField" template="../display.xhtml">
Expand Down
35 changes: 35 additions & 0 deletions zanata-war/src/main/webapp/WEB-INF/pages.xml
Expand Up @@ -407,6 +407,41 @@
<action execute="#{versionGroupHome.validateSuppliedId}" />
</page>

<page view-id="/version-group/request_to_join.xhtml">
<param name="emailType" value="#{sendEmail.emailType}" />
<param name="versionGroupSlug" value="#{versionGroupJoinAction.slug}" />
<action
execute="#{versionGroupJoinAction.searchMaintainedProjectVersion()}" />

<action execute="#{breadcrumbs.clear}" />
<action
execute="#{breadcrumbs.addLocation('/version-group/home.xhtml', messages['jsf.Groups'])}" />
<action
execute="#{breadcrumbs.addLocation('/version-group/version_group.xhtml', versionGroupJoinAction.slug).param('versionGroupSlug', versionGroupJoinAction.slug)}" />
<action
execute="#{breadcrumbs.addLocation('', messages['jsf.RequestJoinGroup'])}" />

<navigation from-action="#{versionGroupJoinAction.send}">
<rule if-outcome="success">
<redirect view-id="/version-group/version_group.xhtml">
<param name="versionGroupSlug"
value="#{versionGroupJoinAction.slug}" />
</redirect>
</rule>
<rule if-outcome="failure">
<redirect view-id="/version-group/request_to_join.xhtml" />
</rule>
</navigation>
<navigation from-action="#{versionGroupJoinAction.cancel}">
<rule>
<redirect view-id="/version-group/version_group.xhtml">
<param name="versionGroupSlug"
value="#{versionGroupJoinAction.slug}" />
</redirect>
</rule>
</navigation>
</page>

<!-- Profile -->
<page view-id="/profile/edit.xhtml">
<restrict>#{identity.preAuthenticated}</restrict>
Expand Down
17 changes: 17 additions & 0 deletions zanata-war/src/main/webapp/version-group/request_to_join.xhtml
@@ -0,0 +1,17 @@
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/WEB-INF/template/template_2x.xhtml">

<ui:param name="showGlobalMessages" value="true"/>

<ui:define
name="page_title">#{messages['jsf.RequestToJoinVersionGroup']}</ui:define>

<ui:define name="center_content">
<ui:include src="../WEB-INF/layout/version-group/request_join.xhtml"/>

</ui:define>

</ui:composition>

0 comments on commit 10f9a4d

Please sign in to comment.