Index: InvitationTemplate =================================================================== --- InvitationTemplate (revision 0) +++ InvitationTemplate (revision 0) @@ -0,0 +1,71 @@ + + + +XWSCode +InvitationTemplate + +en +0 + +XWiki.Admin +XWiki.Admin + +XWiki.Admin +1210664272000 +1211282290000 +1211282290000 +11.1 +$xwiki.getUserName($context.getUser(),false) invited you to join his space! + + + + +false + + +XWiki.TagClass + + + + + + + + +0 +input +1 +tags +1 +Tags +1 + + ,| +30 +0 + +com.xpn.xwiki.objects.classes.StaticListClass + + +XWSCode.InvitationTemplate +0 +XWiki.TagClass + + + + +$xwiki.getUserName($context.getUser(),false) has invited to join the space with the role of +#foreach($role in $invitation.getRoles()) + +#set($k = "invitations.roles."+$role) +- $k + +#end + +He says: +" $context.get("invitation_message") " + +To accept his invitation follow this URL: $xwiki.getURL("XWSCode.ProcessInvitation")?type=accept&invitation=$invitation.getFullName() &code=$invitation.get("code") + +If you don't want to join you don't have to do anything. + Index: ProcessInvitation =================================================================== --- ProcessInvitation (revision 0) +++ ProcessInvitation (revision 0) @@ -0,0 +1,103 @@ + + + +XWSCode +ProcessInvitation + +en +0 + +XWiki.Admin +XWiki.Admin + +XWiki.Admin +1211215052000 +1211235386000 +1211235386000 +17.1 + + + + + +false + + +XWiki.TagClass + + + + + + + + +0 +input +1 +tags +1 +Tags +1 + + ,| +30 +0 + +com.xpn.xwiki.objects.classes.StaticListClass + + +XWSCode.ProcessInvitation +0 +XWiki.TagClass + + + + +#if( $request.invitation ) + #set($invdoc = $xwiki.getDocument($request.invitation)) + #if(!$invdoc.isNew()) + #set($io = $invdoc.getObject("XWiki.InvitationClass")) + #if($io) + #set($spname = $invdoc.get("space")) + #set($sp = $xwsmgr.getSpace($spname)) + #if($sp) + #set($code = $io.get("code")) + #if($code==$request.code || $hasAdmin) + + #set($inv = $xwiki.invitationmanager) + + #if($request.type == "accept") + $inv.acceptInvitation($spname,$io.get("invitee"),$io.get("code")) + #elseif($request.type == "cancel") + $inv.cancelInvitation($io.get("invitee"),$spname) + #elseif($request.type == "refuse") + $inv.rejectInvitation($spname,$io.get("invitee"),$io.get("code")) + #else + #error("invitations.process.no_process_type") + #end + + #if($request.redirect) + $response.sendRedirect($request.redirect) + #else + #set($rdoc = $spname+".WebPreferences") + #set($rurl = $xwiki.getURL($rdoc)+"?s=vi") + $response.sendRedirect($rurl) + #end + + #else + #error("invitations.process.no_rights") + #end ##no rights + #else + #error($msg.get("invitations.process.no_such_space")) + #end ##there is no such space + #else + #error($msg.get("invitations.process.no_such_invitation")) + #end ##no invitation object + #else ##the invitation doc is new + #error($msg.get("invitations.process.no_such_invitation")) + #end ##the invitation doc is new +#else ##there is no invitation parameter + #error($msg.get("invitations.process.no_params")) +#end + \ No newline at end of file Index: SpaceInvitations =================================================================== --- SpaceInvitations (revision 0) +++ SpaceInvitations (revision 0) @@ -0,0 +1,88 @@ + + + +XWSCode +SpaceInvitations + +en +0 + +XWiki.Admin +XWiki.Admin + +XWiki.Admin +1210671985000 +1211263738000 +1211263738000 +24.1 + + + + + +false + + +XWiki.TagClass + + + + + + + + +0 +input +1 +tags +1 +Tags +1 + + ,| +30 +0 + +com.xpn.xwiki.objects.classes.StaticListClass + + +XWSCode.SpaceInvitations +0 +XWiki.TagClass + + + + +1. $msg.get("invitations.view.title") +#set($inv = $xwiki.invitationmanager) +#set($invitations = $inv.getInvitations("Space_Admin")) +<table class="invitations-list"> +<tr> + <th>$msg.get("invitations.list.invitee")</th> + <th>$msg.get("invitations.list.inviter")</th> + <th>$msg.get("invitations.list.roles")</th> + <th>$msg.get("invitations.list.date")</th> + <th>$msg.get("invitations.list.status")</th> + <th>$msg.get("invitations.list.actions")</th> +</tr> +#foreach($invit in $invitations) + <tr> + <td class="invitation-invitee">$invit.getInvitee()</td> + <td class="invitation-inviter">$xwiki.getUserName($invit.getInviter())</td> + <td class="invitation-roles">#set($rls = $invit.getRoles()) #foreach($r in $rls) $r #end</td> + <td class="invitation-date">$xwiki.formatDate($invit.getRequestDate(),$msg.get("invitations.dateformat"))</td> + <td class="invitation-status">$msg.get("invitations.list.status_${invit.getStatus()}")</td> + <td class="invitation-actions"> + #if($invit.status != 3) +<a class="button" href="$xwiki.getURL("XWSCode.ProcessInvitation")?type=accept&invitation=$invit.getFullName()">$msg.get("invitations.list.accept")</a> + #end + #if($invit.status == 2) +<a class="button" href="$xwiki.getURL("XWSCode.ProcessInvitation")?type=cancel&invitation=$invit.getFullName()">$msg.get("invitations.list.cancel")</a> +<a class="button" href="$xwiki.getURL("XWSCode.ProcessInvitation")?type=refuse&invitation=$invit.getFullName()">$msg.get("invitations.list.reject")</a> + #end + </td> + </tr> +#end +</table> + Index: SpaceInvite =================================================================== --- SpaceInvite (revision 0) +++ SpaceInvite (revision 0) @@ -0,0 +1,135 @@ + + + +XWSCode +SpaceInvite + +en +0 + +XWiki.Admin +XWiki.Admin + +XWiki.Admin +1209976983000 +1211273255000 +1211273255000 +81.1 + + + + + +false + + +XWiki.TagClass + + + + + + + + +0 +input +1 +tags +1 +Tags +1 + + ,| +30 +0 + +com.xpn.xwiki.objects.classes.StaticListClass + + +XWSCode.SpaceInvite +0 +XWiki.TagClass + + + + +1 Send invitation +#set($inv = $xwiki.invitationmanager) + +#set( $do = false ) +#if( $request.method=="POST" ) + #set( $do = true ) + + #if( !$request.emails || $request.emails.trim()=="" ) + #error( $msg.get("invitations.send.fail.empty_email") ) + #set( $do = false ) + #end + #if( !$request.message || $request.message.trim()=="" ) + #error( $msg.get("invitations.send.fail.empty_message") ) + #set( $do = false ) + #end + #if( !$request.level ) + #error( $msg.get("invitations.send.fail.empty_level") ) + #set( $do = false ) + #end + +#end + +#if( $do ) ##{ + #set($emails = $request.emails.split(",")) + #foreach($email in $emails) + #set($email = $email.trim()) + #end + #set($message = $request.message) + #set($putmsg = $context.put("invitation_message",$message)) + #set($roles = $request.level.split(",")) + #foreach($role in $roles) + #set($role = $role.trim()) + #end + #foreach($email in $emails) + #set($success = $inv.inviteUser( $email, $workspace.spaceName, true, [$request.level.trim()], "XWSCode.InvitationTemplate" )) + #end + + #set( $exc = $context.get("InvitationManagerException")) + #if( $exc ) + #error( $exc.getMessage() ) + #else + #info( $msg.get("invitations.send.success") ) + #end + + <table><tr><td> + <div class="buttonwrapper"><a class="button" href="$doc.getURL()?s=m">$msg.get("invitations.goto_members")</a></div> + </td><td> + <div class="buttonwrapper"><a class="button" href="$doc.getURL()?s=i">$msg.get("invitations.send.another")</a></div> + </td></tr></table> + + +#else ##}else{ +<form action="$doc.getURL()?s=i" method="post"> +<div><label for="emails">$msg.get("invitations.emails")</label></div> +<div><input type="text" name="emails" style="width:100%" /></div> +<br /> +<div><label for="message">$msg.get("invitations.message")</label></div> +<div><textarea name="message" style="width:100%">$msg.get("invitations.default_message")</textarea></div> +<br /> +<div><label for="level">$msg.get("invitations.level")</label></div> +<div> + + #if($hasAdmin) + <input type="radio" name="level" value="admin">$msg.get("invitations.roles.admin")</input> + #end + <input type="radio" name="level" value="power">$msg.get("invitations.roles.power")</input> + <input type="radio" name="level" value="insider">$msg.get("invitations.roles.insider")</input> + <input type="radio" name="level" value="outsider">$msg.get("invitations.roles.outsider")</input> + </select> +</div> +<br /> +<table><tr><td> +<div class="buttonwrapper"><input type="submit" value="$msg.get("invitations.send")" /></div> +</td><td> +<div class="buttonwrapper"><input type="button" value="$msg.get("invitations.cancel")" onclick="if(confirm('$msg.get("invitations.cancel.confirm")')) window.location='$doc.getURL()?s=m'" /></div> +</td></tr></table> +</form> +#end + Index: SpaceMembers =================================================================== --- SpaceMembers (revision 9878) +++ SpaceMembers (working copy) @@ -12,9 +12,9 @@ XWiki.Admin 1194252470000 -1205587960000 -1205587960000 -5.1 +1210672451000 +1210672451000 +10.1 SpaceMembers @@ -210,5 +210,11 @@ </script> {/pre} </div> -#end +#end + +1.1.1 $msg.get("invitations.title") +<table><tr> +<td><div class="buttonwrapper"><a href="$doc.getURL()?s=i">$msg.get("invitations.invite_external")</a></div></td> +<td><div class="buttonwrapper"><a href="$doc.getURL()?s=vi">$msg.get("invitations.view_invitations")</a></div></td> +</tr></table> Index: SpacePreferences =================================================================== --- SpacePreferences (revision 9878) +++ SpacePreferences (working copy) @@ -12,9 +12,9 @@ XWiki.Admin 1194252700000 -1209916344000 -1209916344000 -3.1 +1209976956000 +1209976956000 +4.1 SpacePreferences @@ -62,7 +62,7 @@ #if($xwsmgr.isAdmin($workspace.spaceName, $context.user) || $hasAdmin) #if($request.do) #includeInContext('XWSCode.MembersService') - #else + #else ##{ #if($request.s && $request.s=="r") #includeInContext("XWSCode.SpaceRights") #elseif($request.s && $request.s=="a") @@ -71,10 +71,14 @@ #includeInContext("XWSCode.SpaceCategories") #elseif($request.s && $request.s=="m") #includeInContext("XWSCode.SpaceMembers") + #elseif($request.s && $request.s=="i") + #includeInContext("XWSCode.SpaceInvite") + #elseif($request.s && $request.s=="vi") + #includeInContext("XWSCode.SpaceInvitations") #else #includeInContext("XWSCode.SpaceDetails") #end - #end + #end ##} #else #error("$msg.get('commons.error.actionnotallowed')") #end Index: Translations =================================================================== --- Translations (revision 9878) +++ Translations (working copy) @@ -12,9 +12,9 @@ XWiki.Admin 1206992640000 -1211223629000 -1211223629000 -14.1 +1211270684000 +1211270684000 +18.1 @@ -54,7 +54,7 @@ -{table} +{table} XWiki.WorkspaceSpaceClass_accesslevel_public=Public XWiki.WorkspaceSpaceClass_accesslevel_private=Private XWiki.WorkspaceSpaceClass_accesslevel_open=Open @@ -156,13 +156,13 @@ xws.createworkspace.spacetitle=Space name xws.createworkspace.spacetype=Access level xws.createworkspace.spacedesc=Description -xws.createworkspace.spaceapps=Applications +xws.createworkspace.spaceapps=Applications xws.createworkspace.spacecolor=Color -xws.createworkspace.spacetitle.legend=<strong>Mandatory -</strong> You can enter up to <span id="spacetitlecharsleft">50</span> more characters for your new space title : -xws.createworkspace.spacedesc.legend=<strong>Optional -</strong> You can enter a short text describing the purpose of this workspace : -xws.createworkspace.spaceapps.legend=Choose the applications you want to install in your workspace from the list below : -xws.createworkspace.spacetype.legend=Select an access level for this workspace : -xws.createworkspace.spacecolor.legend=Choose a background color for your workspace : +xws.createworkspace.spacetitle.legend=<strong>Mandatory -</strong> You can enter up to <span id="spacetitlecharsleft">50</span> more characters for your new space title : +xws.createworkspace.spacedesc.legend=<strong>Optional -</strong> You can enter a short text describing the purpose of this workspace : +xws.createworkspace.spaceapps.legend=Choose the applications you want to install in your workspace from the list below : +xws.createworkspace.spacetype.legend=Select an access level for this workspace : +xws.createworkspace.spacecolor.legend=Choose a background color for your workspace : xws.createworkspace.submit=Create the space xws.createworkspace.spacecreated=The space <a href="{0}">{1}</a> has been successfully created. xws.createworkspace.spacecreationfailed=An error occured while creating the space. @@ -284,19 +284,19 @@ space.blog.article.permalink=permalink space.blog.article.comments=Comments -space.stream.pagetitle=Workstream -space.stream.title=What are you working on ? -space.stream.statusupdated=Your status has been successfully updated. -space.stream.statusempty=You cannot update an empty status ! -space.stream.updatesby=Updates by {0} -space.stream.recentupdates=Recent updates on the workspace -space.stream.newer=<< Newer -space.stream.older=Older >> -space.stream.saidonworkstream=said on the <strong>workstream</strong> -space.stream.statustoolong=Your update message is too long. The limit is 200 chars. -space.stream.charsremaining=chars remaining -space.stream.dashboardsalso=Do also post this update on the workspace dashboard and on members personnal dashboards. - +space.stream.pagetitle=Workstream +space.stream.title=What are you working on ? +space.stream.statusupdated=Your status has been successfully updated. +space.stream.statusempty=You cannot update an empty status ! +space.stream.updatesby=Updates by {0} +space.stream.recentupdates=Recent updates on the workspace +space.stream.newer=<< Newer +space.stream.older=Older >> +space.stream.saidonworkstream=said on the <strong>workstream</strong> +space.stream.statustoolong=Your update message is too long. The limit is 200 chars. +space.stream.charsremaining=chars remaining +space.stream.dashboardsalso=Do also post this update on the workspace dashboard and on members personnal dashboards. + space.files.table.caption=All files for workspace <em>{0}</em> space.files.addfile=Add this attachment space.files.uploadnewfile=Upload a new file @@ -352,7 +352,7 @@ space.prefs.details.title=Space informations space.prefs.details.edit=Edit space informations -space.prefs.apps.title=Space applications +space.prefs.apps.title=Space applications space.prefs.apps.appsmgrnotfound=The application manager could not be found. space.prefs.apps.installedapps=Installed applications space.prefs.apps.availableapps=Available applications @@ -362,11 +362,11 @@ space.prefs.apps.uninstallapp.success=The application *{0}* has been successfully uninstalled from the workspace. space.prefs.apps.uninstallapp.error=An error occurred while uninstalling the application *{0}* from the workspace. space.prefs.apps.noavailableapp=All applications are already installed in the workspace. -space.prefs.apps.confirmuninstall=Uninstalling the application *{0}* will delete all the data it contains. This operation is not reversible. Please confirm you want to uninstall the application *{0}* and its data from the workspace. -space.prefs.apps.uninstall.alt=Uninstall -space.prefs.apps.uninstall.title=Uninstall this application -space.prefs.apps.install.alt=Install -space.prefs.apps.install.title=Install this application +space.prefs.apps.confirmuninstall=Uninstalling the application *{0}* will delete all the data it contains. This operation is not reversible. Please confirm you want to uninstall the application *{0}* and its data from the workspace. +space.prefs.apps.uninstall.alt=Uninstall +space.prefs.apps.uninstall.title=Uninstall this application +space.prefs.apps.install.alt=Install +space.prefs.apps.install.title=Install this application space.prefs.members.title=Space members space.prefs.members.welcomemsg=Manage members roles @@ -461,10 +461,10 @@ commons.actions.edit=Edit commons.actions.choosefile=Choose a file commons.actions.confirm=Confirm -commons.actions.cancel=Cancel -commons.actions.update=Update -commons.actions.previous=Previous -commons.actions.next=Next +commons.actions.cancel=Cancel +commons.actions.update=Update +commons.actions.previous=Previous +commons.actions.next=Next commons.form.cancel=Cancel commons.form.validate=Validate @@ -538,5 +538,42 @@ actionbar.buttons.myspaces=See my spaces actionbar.buttons.myprofile=My Profile actionbar.buttons.exit=Logout + +invitations.title=Invitations to this space +invitations.invite_external=Invite a non-member +invitations.view_invitations=View invitations +invitations.view.title=Opened invitations in this space +invitations.emails=Email address(es). Separate with comma. +invitations.message=Your message: +invitations.default_message=Hi! I want you to join my space! We can share informations, images and many more! +invitations.level=Select the roles of the new member: +invitations.cancel=Cancel +invitations.cancel.confirm=Are you sure you want to cancel this invitation? +invitations.send=Send this invitation +invitations.send.success=Your invitation has been sent successfully! +invitations.send.another=Send another invitation +invitations.send.fail.empty_email=You need to enter at least one email adress! +invitations.send.fail.empty_message=You need to enter a message! +invitations.send.fail.empty_level=You need to select at least one level! +invitations.goto_members=Go to members page +invitations.list.invitee=Invitee +invitations.list.inviter=Inviter +invitations.list.roles=Roles +invitations.list.date=Send Date +invitations.list.status=Status +invitations.list.status_1=CREATED +invitations.list.status_2=SENT +invitations.list.status_3=ACCEPTED +invitations.list.status_4=REFUSED +invitations.list.status_5=CANCELLED +invitations.list.actions=Actions +invitations.list.dateformat=yyyy.MM.dd - HH:mm:ss +invitations.list.accept=Accept +invitations.list.cancel=Cancel +invitations.list.reject=Reject +invitations.roles.admin=Global Admin +invitations.roles.power=Power User +invitations.roles.insider=Insider +invitations.roles.outsider=Outsider {table}