Index: site-manage/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java =================================================================== --- site-manage/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java (revision 49147) +++ site-manage/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java (revision 50540) @@ -358,6 +372,12 @@ /** %%% in transition from putting all form variables in state */ private final static String FORM_TITLE = "form_title"; + private final static String FORM_URL_BASE = "form_url_base"; + + private final static String FORM_URL_ALIAS = "form_url_alias"; + + private final static String FORM_URL_ALIAS_FULL = "form_url_alias_full"; + private final static String FORM_DESCRIPTION = "form_description"; private final static String FORM_HONORIFIC = "form_honorific"; @@ -906,6 +912,9 @@ context.put("courseSiteType", state.getAttribute(STATE_COURSE_SITE_TYPE)); Site site = getStateSite(state); + + // get alias base path + String aliasBaseUrl = ServerConfigurationService.getPortalUrl() + Entity.SEPARATOR + "site" + Entity.SEPARATOR; switch (index) { case 0: @@ -1170,8 +1243,10 @@ context.put("back", "1"); } context.put(FORM_TITLE, siteInfo.title); + context.put(FORM_URL_BASE, aliasBaseUrl); + context.put(FORM_URL_ALIAS, siteInfo.url_alias); context.put(FORM_SHORT_DESCRIPTION, siteInfo.short_description); context.put(FORM_DESCRIPTION, siteInfo.description); // defalt the site contact person to the site creator @@ -1530,6 +1541,12 @@ context.put("iconUrl", siteInfo.iconUrl); } } + + if (StringUtil.trimToNull(siteInfo.getUrlAlias()) != null) { + String urlAliasFull = aliasBaseUrl + siteInfo.getUrlAlias(); + context.put(FORM_URL_ALIAS_FULL, urlAliasFull); + } + context.put("title", siteInfo.title); context.put("description", siteInfo.description); context.put("short_description", siteInfo.short_description); @@ -6737,6 +6967,20 @@ state.setAttribute(STATE_TEMPLATE_INDEX, "2"); return; } + + // validate the alias + if (StringUtil.trimToNull(siteInfo.url_alias) != null && + !siteInfo.url_alias.equals(NULL_STRING)) { + try { + AliasService.getTarget(siteInfo.url_alias); + addAlert(state, rb.getString("java.alias") + " " + siteInfo.url_alias + + " " + rb.getString("java.exists")); + state.setAttribute(STATE_TEMPLATE_INDEX, "2"); + return; + } catch (IdUnusedException e) { + // Do nothing. We want the alias to be unused. + } + } } updateSiteAttributes(state); @@ -7851,6 +8176,11 @@ } siteInfo.site_contact_email = email; } + + if (params.getString("url_alias") != null) { + siteInfo.url_alias = params.getString("url_alias"); + } + state.setAttribute(STATE_SITE_INFO, siteInfo); } // updateSiteInfo @@ -9754,6 +10124,34 @@ siteInfo.site_contact_email); state.setAttribute(STATE_SITE_INSTANCE_ID, site.getId()); + + // create an alias for the site + if (!siteInfo.url_alias.equals(NULL_STRING)) { + String alias = siteInfo.url_alias; + String siteReference = site.getReference(); + try { + AliasService.setAlias(alias, siteReference); + // In case of failure, return to the confirmation page + // with an error and undo the site creation we've done so far + } catch (IdUsedException ee) { + addAlert(state, rb.getString("java.alias") + " " + alias + + " " + rb.getString("java.exists")); + state.setAttribute(STATE_TEMPLATE_INDEX, params + .getString("template-index")); + SiteService.removeSite(site); + return; + } catch (IdInvalidException ee) { + addAlert(state, rb.getString("java.alias") + " " + alias + + " " + rb.getString("java.isinval")); + state.setAttribute(STATE_TEMPLATE_INDEX, params + .getString("template-index")); + SiteService.removeSite(site); + return; + } catch (PermissionException ee) { + M_log.warn(SessionManager.getCurrentSessionUserId() + + " does not have permission to add alias. "); + } + } // commit newly added site in order to enable related realm commitSite(site); @@ -11117,6 +11582,8 @@ public String joinerRole = NULL_STRING; public String title = NULL_STRING; // the short name of the site + + public String url_alias = NULL_STRING; // the url alias for the site public String short_description = NULL_STRING; // the short (20 char) @@ -11193,6 +11679,14 @@ return site_contact_email; } + public void setUrlAlias(String urlAlias) { + this.url_alias = urlAlias; + } + + public String getUrlAlias() { + return url_alias; + } + } // SiteInfo // dissertation tool related Index: site-manage/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-newSiteInformation.vm =================================================================== --- site-manage/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-newSiteInformation.vm (revision 49147) +++ site-manage/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-newSiteInformation.vm (revision 50522) @@ -125,6 +135,13 @@   #end

+

+ + $!form_url_base + +