On 11/12/2010 10:39 AM, Vincent Massol wrote:
> Hi Sergiu,
>
> Why is the feature done as template (just wondering)?
> IMO the share this page feature should be an extension of the platform, not 
> part of the platform.
>

Because it would be a bit harder to have a consistent behavior. 
Consistent with the other viewers, that is.

Note that the feature is developed so that it works fine without 
javascript, in which case it is displayed as ?viewer=share, similar to 
the non-tabbed view mode for attachments, comments, history. If it were 
a document used like view/XWiki/SharePage?doc=Sandbox.WebHome, the menus 
would have been wrong (edit opens SharePage, not Sandbox). Plus, it 
would have been harder to write the code, given that $doc would point to 
SharePage.

What we need is template extensions, which would be used like 
view/Sandbox/WebHome?xtemplate=XWiki.SharePage. Something for the future.

>
> On Nov 12, 2010, at 2:14 AM, sdumitriu (SVN) wrote:
>
>> Author: sdumitriu
>> Date: 2010-11-12 02:14:03 +0100 (Fri, 12 Nov 2010)
>> New Revision: 32739
>>
>> Added:
>>    platform/web/trunk/standard/src/main/webapp/templates/share.vm
>>    platform/web/trunk/standard/src/main/webapp/templates/shareinline.vm
>> Log:
>> XE-750: Ability to send a link to a page by email
>> Done (templates)
>>
>> Added: platform/web/trunk/standard/src/main/webapp/templates/share.vm
>> ===================================================================
>> --- platform/web/trunk/standard/src/main/webapp/templates/share.vm           
>>                 (rev 0)
>> +++ platform/web/trunk/standard/src/main/webapp/templates/share.vm   
>> 2010-11-12 01:14:03 UTC (rev 32739)
>> @@ -0,0 +1,6 @@
>> +###
>> +### Share page by email
>> +###
>> +###
>> +<div id="document-title"><h1>$msg.get('core.viewers.share.title', 
>> [$escapetool.xml($doc.displayTitle), $doc.getURL()])</h1></div>
>> +#template("shareinline.vm")
>> \ No newline at end of file
>>
>>
>> Property changes on: 
>> platform/web/trunk/standard/src/main/webapp/templates/share.vm
>> ___________________________________________________________________
>> Added: svn:keywords
>>    + Id
>> Added: svn:eol-style
>>    + native
>>
>> Added: platform/web/trunk/standard/src/main/webapp/templates/shareinline.vm
>> ===================================================================
>> --- platform/web/trunk/standard/src/main/webapp/templates/shareinline.vm     
>>                         (rev 0)
>> +++ platform/web/trunk/standard/src/main/webapp/templates/shareinline.vm     
>> 2010-11-12 01:14:03 UTC (rev 32739)
>> @@ -0,0 +1,96 @@
>> +#template('xwikivars.vm')
>> +#if ($isGuest)
>> +##  $response.setStatus(401)
>> +  #error ($msg.get('core.viewers.share.error.mustLogin'))
>> +#elseif ("$!{request.send}" != '')
>> +  #set ($message = "$!{request.message.trim()}")
>> +  #set ($sender = $xwiki.getUserName($context.user, false))
>> +  #set ($display = "$!{request.includeDocument}")
>> +##  #if ("$!{xwiki.getXWikiPreference('admin_email')}" != '')
>> +##    #set ($sender = 
>> "$sender<$!{xwiki.getXWikiPreference('admin_email')}>")
>> +##  #else
>> +    #set ($sender = "$sender<nore...@$!{request.localname}>")
>> +##  #end
>> +
>> +  #set ($recipients = [])
>> +  #set ($errors = {})
>> +  #set ($successes = [])
>> +
>> +  #foreach ($recipientValue in $request.getParameterValues('target'))
>> +    #foreach ($recipient in $recipientValue.split(','))
>> +      #set ($recipient = $recipient.trim())
>> +      #if ($recipient != '')
>> +        #if ($recipient.indexOf('@')>  0)
>> +          #if ($recipient.indexOf('<')>  0)
>> +            #set ($recipientName = $recipient.substring(0, 
>> $recipient.indexOf('<')).trim())
>> +          #else
>> +            #set ($recipientName = $recipient.substring(0, 
>> $recipient.indexOf('@')).trim())
>> +          #end
>> +          #set ($fullRecipientName = $recipientName)
>> +        #else ## No @
>> +          #set ($recipientName = 
>> $xwiki.getDocument($recipient).getObject('XWiki.XWikiUsers').getProperty('first_name').value)
>> +          #set ($fullRecipientName = $xwiki.getUserName($recipient, false))
>> +          #set ($recipient = 
>> $xwiki.getDocument($recipient).getObject('XWiki.XWikiUsers').getProperty('email').value)
>> +        #end ## @
>> +        #if (!$recipients.contains($recipient)&&  "$!recipient" != '')
>> +          #set ($discard = $recipients.add($recipient))
>> +          #set ($result = 
>> $xwiki.mailsender.sendMessageFromTemplate($sender, $recipient, ${util.null}, 
>> ${util.null}, $context.language, 'XWiki.SharePage', $context.vcontext))
>> +          #if ($result != 0)
>> +            #set ($discard = $errors.put($fullRecipientName, 
>> $msg.get('core.viewers.share.error.serverError')))
>> +          #else
>> +            #set ($discard = $successes.add($fullRecipientName))
>> +          #end
>> +        #elseif ("$!recipient" == '')
>> +          #set($discard = $errors.put($fullRecipientName, 
>> $msg.get('core.viewers.share.error.unknownEmail')))
>> +        #end ## Non empty/handled recipient
>> +      #end ## Non empty recipient
>> +    #end ## Foreach recipient
>> +  #end ## Foreach parameter value
>> +  #if ($successes.size()>  0)
>> +    #info($msg.get('core.viewers.share.send.success', 
>> [$successes.toString().replaceAll('^\[', '').replaceAll('\]$', '')]))
>> +  #end
>> +  #if ($errors.size()>  0)
>> +    #foreach ($recipient in $errors.keySet())
>> +      #error($msg.get('core.viewers.share.send.error', [${recipient}, 
>> ${errors.get($recipient)}]))
>> +    #end
>> +  #end
>> +<a href='$doc.getURL()' 
>> class='share-backlink'>$msg.get('core.viewers.share.send.back', 
>> ["<em>${doc.displayTitle}</em>"])</a>
>> +#else ## Form not sent, display the UI
>> +$xwiki.jsx.use('XWiki.SharePage')
>> +<form class="xform" action="$doc.getURL('view', 'viewer=share')" 
>> method="post">
>> +<div class="hidden">
>> +<input type="hidden" name="form_token" value="$services.csrf.token" />
>> +<input type="hidden" name="send" value="1" />
>> +</div>
>> +<dl>
>> +<dt>
>> +<label for="target">$msg.get('core.viewers.share.target')</label>
>> +<span class="xHint">$msg.get('core.viewers.share.target.hint')</span>
>> +</dt>
>> +<dd><input type="text" name="target" id="target" value="" 
>> class="suggestUsers"/></dd>
>> +    #set ($ownEmail = 
>> "$!{xwiki.getDocument($context.user).getObject('XWiki.XWikiUsers').getProperty('email').value}")
>> +    #if ($ownEmail != '')
>> +<dd><label for="includeSender"><input type="checkbox" id="includeSender" 
>> name="target" value="${xwiki.getUserName($context.user, false)} 
>> $escapetool.xml("<${ownEmail}>")" />  
>> $msg.get('core.viewers.share.target.ccMe')</label></dd>
>> +    #end
>> +<dt><label>$msg.get('core.viewers.share.includeMethod')</label></dt>
>> +<dd><label><input type="radio" name="includeDocument" value="link" 
>> checked="checked"/>  
>> $msg.get('core.viewers.share.includeMethod.link')</label></dd>
>> +<dd><label><input type="radio" name="includeDocument" value="inline"/>  
>> $msg.get('core.viewers.share.includeMethod.inline')</label></dd>
>> +    ##<dd><label><input type="radio" name="includeDocument" 
>> value="attachment"/>  
>> $msg.get('core.viewers.share.includeMethod.attachment')</label></dd>
>> +    ##<dd><label><input type="checkbox" name="includeComments"/>  
>> $msg.get('core.viewers.share.includeComments')</label></dd>
>> +
>> +    #set ($message = "<textarea name='message' rows='3' 
>> cols='80'>${msg.get('core.viewers.share.defaultMessage')}</textarea>")
>> +    #set ($fullMessage = 
>> $xwiki.getDocument('XWiki.SharePage').getObject('XWiki.Mail', 'language', 
>> $context.language, true).getProperty('html').value)
>> +    #set ($fullMessage = $fullMessage.replace('${recipientName}', 
>> $msg.get('core.viewers.share.recipientPlaceholder')))
>> +    #set ($fullMessage = $fullMessage.replaceAll('<pre[^>]*+>[^<]*+</pre>', 
>> $message))
>> +    #set ($fullMessage = $xwiki.parseContent($fullMessage))
>> +
>> +<dt><label 
>> for="message">$msg.get('core.viewers.share.messagePreviewLabel')</label></dt>
>> +<dd class='mail-preview'>$fullMessage</dd>
>> +
>> +</dl>
>> +<div class="buttons">
>> +<span class="buttonwrapper"><input type="submit" class="button" 
>> value="$msg.get('core.viewers.share.submit')" /></span>
>> +<span class="buttonwrapper"><a class="secondary button" 
>> href="$doc.getURL()">$msg.get('core.viewers.share.cancel')</a></span>
>> +</div>
>> +</form>
>> +#end
>> \ No newline at end of file


-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to