diff --git a/config/alfresco/bootstrap/invite/moderated-reject-email.ftl b/config/alfresco/bootstrap/invite/moderated-reject-email.ftl
index ad17329047..41495b3419 100644
--- a/config/alfresco/bootstrap/invite/moderated-reject-email.ftl
+++ b/config/alfresco/bootstrap/invite/moderated-reject-email.ftl
@@ -1,7 +1,7 @@
Your request to join site '${resourceName}' has not been approved.
-'${reviewComments}'
+<#if reviewComments??>'${reviewComments}'#if>
Regards,
Alfresco Share Team
diff --git a/config/alfresco/template-services-context.xml b/config/alfresco/template-services-context.xml
index 76d5920620..85bbc2d934 100644
--- a/config/alfresco/template-services-context.xml
+++ b/config/alfresco/template-services-context.xml
@@ -1,144 +1,156 @@
-
-
-
-
-
-
-
- freemarker
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- freemarker
-
-
- ftl
-
-
-
-
-
-
-
-
-
-
-
-
- avm
-
-
-
-
-
-
-
-
- session
-
-
-
-
-
-
-
-
- classification
-
-
- ${spaces.store}
-
-
-
-
-
-
-
-
- workflow
-
-
-
-
-
-
-
-
- people
-
-
- ${spaces.store}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hasAspect
-
-
-
-
-
- hasPermission
-
-
-
-
-
- message
-
-
-
-
-
- dateCompare
-
-
-
-
-
- incrementDate
-
-
-
-
-
- xmldate
-
-
-
-
-
- cropContent
-
-
-
-
+
+
+
+
+
+
+
+ freemarker
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ freemarker
+
+
+ ftl
+
+
+
+
+
+
+
+
+
+
+
+
+ avm
+
+
+
+
+
+
+
+
+ session
+
+
+
+
+
+
+
+
+ classification
+
+
+ ${spaces.store}
+
+
+
+
+
+
+
+
+ workflow
+
+
+
+
+
+
+
+
+ people
+
+
+ ${spaces.store}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ site
+
+
+
+
+
+
+
+
+
+
+
+ hasAspect
+
+
+
+
+
+ hasPermission
+
+
+
+
+
+ message
+
+
+
+
+
+ dateCompare
+
+
+
+
+
+ incrementDate
+
+
+
+
+
+ xmldate
+
+
+
+
+
+ cropContent
+
+
+
+
diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages.properties
index 582d1988ce..671424b4df 100644
--- a/config/alfresco/workflow/invitation-moderated-workflow-messages.properties
+++ b/config/alfresco/workflow/invitation-moderated-workflow-messages.properties
@@ -4,24 +4,28 @@
# Moderated Invitation
#
-wf_invitation-moderated.workflow.title=Invitation - Moderated
-wf_invitation-moderated.workflow.description=Moderated invitation to a resource such as a web site.
+imwf_invitation-moderated.workflow.title=Invitation - Moderated
+imwf_invitation-moderated.workflow.description=Moderated invitation to a resource such as a web site.
-wf_invitation-moderated-workflow-model.type.wf_moderatedInvitationSubmitTask.title=Start Invitation
-wf_invitation-moderated-workflow-model.type.wf_moderatedInvitationSubmitTask=Start a moderated invitation
+imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Moderated Site Invitation
+imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Start a moderated invitation
-wf_invitation-moderated-model.type.approveInvitationTask.title=Approve Invitation
-wf_invitation-moderated-model.type.approveInvitationTask.description=Approve Invitation
+imwf_invitation-moderated-model.type.approveInvitationTask.title=Approve Invitation
+imwf_invitation-moderated-model.type.approveInvitationTask.description=Approve Invitation
-wf_invitation-moderated.node.start.title=Start
-wf_invitation-moderated.node.start.description=Start moderated invitation
-wf_invitation-moderated.node.review.title=Review Invitation
-wf_invitation-moderated.node.review.description=Review moderated invitation
-wf_invitation-moderated.node.review.transition.reject.title=Reject
-wf_invitation-moderated.node.review.transition.reject.description=Reject
-wf_invitation-moderated.node.review.transition.approve.title=Approve
-wf_invitation-moderated.node.review.transition.approve.description=Approve
-wf_invitation-moderated.node.review.transition.cancel.title=Cancel
-wf_invitation-moderated.node.review.transition.cancel.description=Cancel
-wf_invitation-moderated.node.end.title=End
-wf_invitation-moderated.node.end.description=End
\ No newline at end of file
+imwf_invitation-moderated.node.start.title=Start
+imwf_invitation-moderated.node.start.description=Start moderated invitation
+imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Start
+imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Start moderated invitation
+imwf_invitation-moderated.node.review.title=Review Invitation
+imwf_invitation-moderated.node.review.description=Review moderated invitation
+imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Review Invitation
+imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Review moderated invitation
+imwf_invitation-moderated.node.review.transition.reject.title=Reject
+imwf_invitation-moderated.node.review.transition.reject.description=Reject
+imwf_invitation-moderated.node.review.transition.approve.title=Approve
+imwf_invitation-moderated.node.review.transition.approve.description=Approve
+imwf_invitation-moderated.node.review.transition.cancel.title=Cancel
+imwf_invitation-moderated.node.review.transition.cancel.description=Cancel
+imwf_invitation-moderated.node.end.title=End
+imwf_invitation-moderated.node.end.description=End
\ No newline at end of file
diff --git a/config/alfresco/workflow/invitation-moderated_processdefinition.xml b/config/alfresco/workflow/invitation-moderated_processdefinition.xml
index 36809144ce..b7a23e357e 100644
--- a/config/alfresco/workflow/invitation-moderated_processdefinition.xml
+++ b/config/alfresco/workflow/invitation-moderated_processdefinition.xml
@@ -24,18 +24,17 @@
-
-
-
-
-
-
-
diff --git a/source/java/org/alfresco/repo/template/Site.java b/source/java/org/alfresco/repo/template/Site.java
new file mode 100644
index 0000000000..89d9d8875f
--- /dev/null
+++ b/source/java/org/alfresco/repo/template/Site.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2005-2009 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have received a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.template;
+
+import org.alfresco.service.ServiceRegistry;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
+import org.alfresco.service.cmr.site.SiteService;
+import org.alfresco.util.ParameterCheck;
+
+/**
+ * Site support in FreeMarker templates.
+ *
+ * @author Mike Hatfield
+ */
+public class Site extends BaseTemplateProcessorExtension
+{
+ /** Repository Service Registry */
+ private ServiceRegistry services;
+ private SiteService siteService;
+
+
+ /**
+ * Set the service registry
+ *
+ * @param serviceRegistry the service registry
+ */
+ public void setServiceRegistry(ServiceRegistry serviceRegistry)
+ {
+ this.services = serviceRegistry;
+ }
+
+ /**
+ * Set the site service
+ *
+ * @param siteService The siteService to set.
+ */
+ public void setSiteService(SiteService siteService)
+ {
+ this.siteService = siteService;
+ }
+
+ /**
+ * Gets the SiteInfo given the shortName
+ *
+ * @param shortName the shortName of the Site to get
+ * @return the Site or null if no such site exists
+ */
+ public SiteInfo getSiteInfo(String shortName)
+ {
+ ParameterCheck.mandatoryString("shortName", shortName);
+ return siteService.getSite(shortName);
+ }
+}