diff options
-rw-r--r-- | Zotlabs/Module/Mail.php | 33 | ||||
-rw-r--r-- | view/js/main.js | 19 | ||||
-rwxr-xr-x | view/tpl/prv_message.tpl | 11 |
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}} |