aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Mail.php33
-rw-r--r--view/js/main.js19
-rwxr-xr-xview/tpl/prv_message.tpl11
3 files changed, 62 insertions, 1 deletions
diff --git a/Zotlabs/Module/Mail.php b/Zotlabs/Module/Mail.php
index c767c8e56..24ab2017c 100644
--- a/Zotlabs/Module/Mail.php
+++ b/Zotlabs/Module/Mail.php
@@ -24,6 +24,39 @@ class Mail extends \Zotlabs\Web\Controller {
$preview = ((x($_REQUEST,'preview')) ? intval($_REQUEST['preview']) : 0);
$expires = ((x($_REQUEST,'expires')) ? datetime_convert(date_default_timezone_get(),'UTC', $_REQUEST['expires']) : NULL_DATE);
+
+
+ if($preview) {
+ if(preg_match_all('/(\[attachment\](.*?)\[\/attachment\])/',$body,$match)) {
+ $attachments = array();
+ foreach($match[2] as $mtch) {
+ $hash = substr($mtch,0,strpos($mtch,','));
+ $rev = intval(substr($mtch,strpos($mtch,',')));
+ $r = attach_by_hash_nodata($hash,get_observer_hash(),$rev);
+ if($r['success']) {
+ $attachments[] = array(
+ 'href' => z_root() . '/attach/' . $r['data']['hash'],
+ 'length' => $r['data']['filesize'],
+ 'type' => $r['data']['filetype'],
+ 'title' => urlencode($r['data']['filename']),
+ 'revision' => $r['data']['revision']
+ );
+ }
+ $body = trim(str_replace($match[1],'',$body));
+ }
+ }
+logger('previewing');
+ echo json_encode(['preview' => smilies(bbcode($body))]);
+ killme();
+ }
+
+
+
+
+
+
+
+
// If we have a raw string for a recipient which hasn't been auto-filled,
// it means they probably aren't in our address book, hence we don't know
// if we have permission to send them private messages.
diff --git a/view/js/main.js b/view/js/main.js
index 3981d4266..1d6eca91d 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -1146,6 +1146,25 @@ function preview_post() {
return true;
}
+function preview_mail() {
+ $("#mail-preview").val("1");
+ $("#mail-preview-content").show();
+ $.post(
+ "mail",
+ $("#prvmail-form").serialize(),
+ function(data) {
+ if(data.preview) {
+ $("#mail-preview-content").html(data.preview);
+ $("#mail-preview-content" + " a").click(function() { return false; });
+ }
+ },
+ "json"
+ );
+ $("#mail-preview").val("0");
+ return true;
+}
+
+
function unpause() {
// unpause auto reloads if they are currently stopped
totStopped = false;
diff --git a/view/tpl/prv_message.tpl b/view/tpl/prv_message.tpl
index 0c9b9ba1d..67588f717 100755
--- a/view/tpl/prv_message.tpl
+++ b/view/tpl/prv_message.tpl
@@ -10,6 +10,7 @@
<input type="hidden" id="inp-prvmail-expires" name="expires" value="{{$defexpire}}" />
<input type="hidden" name="media_str" id="jot-media" value="" />
+ <input type="hidden" name="preview" id="mail-preview" value="0" />
{{if $new}}
<div class="form-group">
@@ -35,9 +36,16 @@
</div>
<div id="prvmail-submit-wrapper" class="form-group">
- <div id="prvmail-submit" class="pull-right">
+ <div id="prvmail-submit-div" class="pull-right">
<button class="btn btn-primary btn-sm" type="submit" id="prvmail-submit" name="submit" value="{{$submit}}">{{$submit}}</button>
</div>
+
+ <div id="prvmail-preview-div" class="pull-right">
+ <button class="btn btn-default btn-sm" id="prvmail-preview" title="{{$preview}}" onclick="preview_mail(); return false;"><i class="fa fa-eye"></i></button>
+ </div>
+
+
+
<div id="prvmail-tools" class="btn-toolbar pull-left">
<div class="btn-group">
<button id="main-editor-bold" class="btn btn-default btn-sm" title="{{$bold}}" onclick="inserteditortag('b', 'prvmail-text'); return false;">
@@ -101,6 +109,7 @@
</div>
<div class="clear"></div>
</div>
+ <div id="mail-preview-content" style="display: none;"></div>
</form>
</div>
{{if $new}}