General Actions:
Log-in
Register
Wiki:
Main wiki
▼
:
Document Index
»
Space:
WorkspaceManager
▼
:
Document Index
»
Page:
CreateNewWorkspace
Search
en
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
Main wiki
»
Browse Workspaces
»
Create a new workspace
Wiki source code of
Create a new workspace
Last modified by
Administrator
on 2012/03/21 17:40
Content
·
Comments
(0)
·
Annotations
(0)
·
Attachments
(0)
·
History
·
Information
Hide line numbers
1: {{velocity}} 2: #set ($discard = $xwiki.jsx.use($doc.fullName)) 3: ############################################################################################ 4: ## TRANLSATIONS AUTOMATIC REGISTRATION 5: #set ($WORKSPACE_MANAGER_TRANSLATIONS_PAGE = 'WorkspaceManager.Translations') 6: #set ($xwikiPreferencesDocumentReference = $services.model.createDocumentReference('xwiki', 'XWiki', 'XWikiPreferences')) 7: #set ($xwikiPreferencesDocument = $xwiki.getDocument($xwikiPreferencesDocumentReference)) 8: #set ($documentBundlesValue = $xwikiPreferencesDocument.documentBundles) 9: #if (!$documentBundlesValue.contains($WORKSPACE_MANAGER_TRANSLATIONS_PAGE)) 10: #set ($documentBundlesValue = "${WORKSPACE_MANAGER_TRANSLATIONS_PAGE},${documentBundlesValue}") 11: #set ($temp = $xwikiPreferencesDocument.set('documentBundles', $documentBundlesValue)) 12: ## Save the preferences page using programming rights of the current document. 13: #set ($temp = $xwiki.getXWiki().saveDocument($xwikiPreferencesDocument.document, "Added $WORKSPACE_MANAGER_TRANSLATIONS_PAGE to the list of document bundles.", true, $xcontext.context)) 14: {{info}}$msg.get('workspacemanager.install.translations'){{/info}} 15: 16: #end 17: ############################################################################################ 18: ## PLUGINS DEPENDANCIES 19: #set ($WorkspaceManager = $services.workspace) 20: #if (!$WorkspaceManager) 21: {{error}}$msg.get('workspacemanager.pluginnotenabled'){{/error}} 22: 23: #end 24: #set ($WikiManager = $services.wikimanager) 25: #if (!$WikiManager) 26: {{error}}$msg.get('workspacemanager.dependencies.wikimanager.missing'){{/error}} 27: 28: #end 29: #if (!$services.applicationmanager) 30: {{error}}$msg.get('workspacemanager.dependencies.applicationmanager.missing'){{/error}} 31: 32: #end 33: #if(!$xwiki.isVirtualMode()) 34: {{error}}$msg.get('workspacemanager.error.notinvirtualmode'){{/error}} 35: 36: #end 37: ############################################################################################ 38: ## WORKSPACE INSTALLATION STATUS CHECK 39: #set ($isInstallComplete = "$!{WikiManager.getWikiTemplateDocument('workspacetemplate')}" != '') 40: #if (!$isInstallComplete) 41: {{warning}}$msg.get('workspacemanager.template.install.notYetComplete', ['WorkspaceManager.Install']){{/warning}} 42: 43: #end 44: ############################################################################################ 45: ## MACROS 46: #macro(getRequestList $paramlist $paramname) 47: #set ($paramtable = []) 48: #set ($paramtable = $request.getParameterValues($paramname)) 49: #if ($paramtable && $paramlist) 50: #set ($ok = $paramlist.clear()) 51: #foreach($paramvalue in $paramtable) 52: #set ($ok = $paramlist.add($paramvalue)) 53: #end 54: #end 55: #end 56: ############################################################################################ 57: ## TOOLS 58: #set ($ALIASSUFFIX = "") 59: ## 60: ############################################################################################ 61: ## REQUEST PARAMETERS 62: #set ($wikidocument = $WikiManager.createWikiDocument()) 63: #set ($wikidocumentobject = $wikidocument.updateObjectFromRequest('XWiki.XWikiServerClass')) 64: #set ($wikidocumentWorkspaceObject = $wikidocument.updateObjectFromRequest('WorkspaceManager.WorkspaceClass')) 65: ## 66: #if ($request.actioncreate) 67: #set ($action = 'create') 68: #else 69: #set ($action = $request.getParameter('action')) 70: #end 71: ## 72: #set ($wikiname = $request.getParameter('wikiname')) 73: ## Make sure to prefix the owner user with the wiki name. 74: #if ($wikidocument.owner == "") 75: #set($temp = $wikidocument.set('owner', "${xcontext.mainWikiName}:${xcontext.user}")) 76: #elseif (!($wikidocument.owner.startsWith("${xcontext.mainWikiName}:"))) 77: #set($temp = $wikidocument.set('owner', "${xcontext.mainWikiName}:${wikidocument.owner}")) 78: #end 79: #if ($wikidocument.server == '' && "$!wikiname" != '') 80: #set ($alias = "${wikiname}") 81: #if ("$!ALIASSUFFIX" != '') 82: #set ($alias = "${alias}.${ALIASSUFFIX}") 83: #else 84: #set ($usePath = $xwiki.xWiki.Param('xwiki.virtual.usepath', '1')) 85: #if ($usePath == '0') 86: #set ($serverURL = $xcontext.getURLFactory().getServerURL($xcontext.context)) 87: #set ($alias = "${alias}.$serverURL.host") 88: #end 89: #end 90: #set($temp = $wikidocument.set('server', "${alias}")) 91: #end 92: ## 93: #set($members = []) 94: #getRequestList($members 'members') 95: ## Remove any duplicate members (like the owner in some cases). 96: #set ($discard = $members.remove($wikidocument.owner)) 97: ############################################################################# 98: ## 99: #if ($action && $action == 'create') 100: #set ($discard = $WorkspaceManager.createWorkspace($wikiname, $wikidocument)) 101: ## 102: #if ("$!WorkspaceManager.lastException" == '') 103: ## Add members. 104: #if ("$!members" != '' && $members.size() > 0) 105: #set ($WorkspaceManager = $services.workspace) 106: #set ($workspace = $WorkspaceManager.getWorkspace($wikiname)) 107: #set ($groupsClassName = "$wikiname:XWiki.XWikiGroups") 108: #set ($workspaceGroupDocument = $workspace.groupDocument) 109: #foreach($member in $members) 110: #set($memberObject = $workspaceGroupDocument.newObject($groupsClassName)) 111: #if (!$member.startsWith("${xcontext.mainWikiName}:")) 112: #set ($member = "${xcontext.mainWikiName}:${member}") 113: #end 114: #set($temp = $memberObject.set('member', $member)) 115: #end 116: ## Save the group document to preserve the member additions. 117: #set($temp = $workspaceGroupDocument.save('Added initial workspace members', true)) 118: #end 119: ## Redirect to the new workspace's homepage. 120: #set($temp = $response.sendRedirect("$wikidocument.getHomePageUrl()")) 121: #else 122: {{error}}$msg.get('workspacemanager.errorcreatewiki', [$wikiname, $WorkspaceManager.lastException]){{/error}} 123: 124: #end 125: #end 126: {{html clean='false'}} 127: ## 128: ############################################################################# 129: ## 130: <form method='post' action='' id='wikicreationform' class='xform third'> 131: <dl> 132: <dt> 133: <label for='wikiname'>$msg.get('workspacemanager.prop.wiki.wikiname') <span class='xRequired'>(Required)</span></label> 134: <span class='xHint'>$msg.get('workspacemanager.doc.createwiki.wikiname')</span> 135: <span id='wikinamevalidation' class='xErrorMsg'></span> 136: </dt> 137: 138: <dd> 139: <input size='60' id='wikiname' name='wikiname' type='text' onchange='wikiNameChanged();' onkeyup='wikiNameChanged();' #if(!$isInstallComplete)disabled='disabled'#{end} /> 140: </dd> 141: </dl> 142: ## 143: ############################################################################# 144: ## 145: <dl> 146: <dt> 147: <label for='XWiki.XWikiServerClass_0_wikiprettyname'>$msg.get('workspacemanager.prop.wiki.wikiprettyname') <span class='xRequired'>(Required)</span></label> 148: <span class='xHint'>$msg.get('workspacemanager.doc.createwiki.desc.wikiprettyname')</span> 149: <span id='wikiprettynamevalidation' class='xErrorMsg'></span> 150: </dt> 151: <dd><input size='60' id='XWiki.XWikiServerClass_0_wikiprettyname' name='XWiki.XWikiServerClass_0_wikiprettyname' type='text' onchange='prettyNameChanged();' onkeyup='prettyNameChanged();' #if(!$isInstallComplete)disabled='disabled'#{end} /></dd> 152: </dl> 153: 154: <dl> 155: <dt> 156: <label for='XWiki.XWikiServerClass_0_description'>$msg.get('workspacemanager.prop.wiki.description')</label> 157: <span class='xHint'>$msg.get('workspacemanager.doc.createwiki.desc.description')</span> 158: </dt> 159: <dd><textarea id='XWiki.XWikiServerClass_0_description' name='XWiki.XWikiServerClass_0_description' rows='7' cols='45' #if(!$isInstallComplete)disabled='disabled'#{end} ></textarea></dd> 160: </dl> 161: 162: #set ($rightsmanager = $xwiki.rightsmanager) 163: #set ($users = $sorttool.sort($rightsmanager.usersApi.allGlobalUsersNames)) 164: 165: ## Make this section available only to admins, so that only admins can create workspaces in the name of other users. 166: #if ($hasAdmin) 167: <dl> 168: <dt> 169: <label for='XWiki.XWikiServerClass_0_owner'>$msg.get('workspacemanager.prop.wiki.owner') <span class='xRequired'>(Required)</span></label> 170: <span class='xHint'>$msg.get('workspacemanager.doc.createwiki.desc.owner')</span> 171: </dt> 172: <dd> 173: <select name='XWiki.XWikiServerClass_0_owner' id='XWiki.XWikiServerClass_0_owner' size='4' #if(!$isInstallComplete)disabled='disabled'#{end} > 174: #foreach ($user in $users) 175: ## Skip the guest user. 176: #if ($user != 'XWiki.XWikiGuest') 177: #set ($selectAsOwner = ($xcontext.user == $user)) 178: #if ($xcontext.isMainWiki()) #set ($user = "${xcontext.mainWikiName}:${user}") #end 179: <option value="$user" #if($selectAsOwner)selected='selected'#{end}>$xwiki.getUserName($user, $util.null, false)</option> 180: #end 181: #end 182: </select> 183: </dd> 184: </dl> 185: #else 186: <div> 187: <input id='XWiki.XWikiServerClass_0_owner' name='XWiki.XWikiServerClass_0_owner' type='hidden' value="${xcontext.mainWikiName}:${xcontext.user}" #if(!$isInstallComplete)disabled='disabled'#{end} /> 188: </div> 189: #end 190: ## 191: ############################################################################# 192: ## 193: <dl> 194: <dt> 195: <label for='members'>$msg.get('workspacemanager.members')</label> 196: <span class='xHint'>$msg.get('workspacemanager.doc.createwiki.members')</span> 197: </dt> 198: <dd> 199: <select name='members' id='members' multiple='multiple' #if(!$isInstallComplete)disabled='disabled'#{end} > 200: #foreach ($user in $users) 201: ## Skip the current user if the user is not an admin. The current user is made owner by default and, 202: ## thus, a member of the workspace. However, an admin can choose a different owner. 203: ## Also skip the guest user. 204: #if (($hasAdmin || (!$hasAdmin && $user != $xcontext.user)) && ($user != 'XWiki.XWikiGuest')) 205: #if ($xcontext.isMainWiki()) #set ($user = "${xcontext.mainWikiName}:${user}") #end 206: <option value="$user">$xwiki.getUserName($user, $util.null, false)</option> 207: #end 208: #end 209: </select> 210: </dd> 211: </dl> 212: 213: #set($workspaceClass = $xwiki.getDocument('WorkspaceClass').getxWikiClass()) 214: #set($membershipTypeProperty = $workspaceClass.get('membershipType')) 215: #set($membershipTypeValues = '') 216: #set($membershipTypeValues = $membershipTypeProperty.getListValues()) 217: #set($membershipTypeDetailsMap = $membershipTypeProperty.getMapValues()) 218: <dl> 219: <dt> 220: <label>$msg.get('workspacemanager.prop.workspace.membershipType.label')</label> 221: <span class='xHint'>$msg.get('workspacemanager.prop.workspace.membershipType.hint')</span> 222: </dt> 223: 224: <dd> 225: #foreach($membershipTypeValue in $membershipTypeValues) 226: #set ($membershipTypeValueId = "WorkspaceManager.WorkspaceClass_0_membershipType${foreach.index}") 227: <div> 228: <label for="$membershipTypeValueId"> 229: <input type='radio' id="$membershipTypeValueId" name='WorkspaceManager.WorkspaceClass_0_membershipType' value="$membershipTypeValue" #if($foreach.index==0)checked='checked'#end #if(!$isInstallComplete)disabled='disabled'#{end} /> 230: $membershipTypeDetailsMap.get($membershipTypeValue).getValue() 231: </label> 232: </div> 233: #end 234: </dd> 235: </dl> 236: ## 237: ############################################################################# 238: ## 239: <div> 240: <div id='actioncreate'> 241: <br/> 242: <input type='hidden' name='form_token' value="$!{services.csrf.getToken()}" /> 243: <input class='button' type='submit' id='actioncreatebutton' name='actioncreate' value="${msg.get('create')}" #if($isInstallComplete)onclick='return validate();'#{else}disabled='disabled'#{end} /> 244: </div> 245: </div> 246: </form> 247: {{/html}} 248: {{/velocity}}