Re: [xwiki-devs] [xwiki-notifications] r32739 - platform/web/trunk/standard/src/main/webapp/templates
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. Thanks -Vincent 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 <noreply@$!{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
Property changes on: platform/web/trunk/standard/src/main/webapp/templates/shareinline.vm ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native
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<noreply@$!{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/
participants (2)
-
Sergiu Dumitriu -
Vincent Massol