From 7fe87bba240c8190ffbf9abc52e0b3a0eefd819b Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sun, 27 Sep 2015 06:56:17 -0400
Subject: [PATCH] Mailvelope integration with classic skin

---
 skins/classic/mail.css                |   65 ++++++++++++++++++++++++++++++++
 skins/classic/functions.js            |   24 +++++++++++-
 skins/classic/templates/compose.html  |    3 +
 skins/classic/images/mail_toolbar.png |    0 
 4 files changed, 89 insertions(+), 3 deletions(-)

diff --git a/skins/classic/functions.js b/skins/classic/functions.js
index f179a3d..a23fd37 100644
--- a/skins/classic/functions.js
+++ b/skins/classic/functions.js
@@ -193,6 +193,9 @@
     catch(e){}  // ignore errors
   }
 
+  if (rcmail.mailvelope_editor)
+    return;
+
   this.show_popupmenu('uploadmenu', show);
 
   if (!document.all && this.popups.uploadmenu.obj.is(':visible'))
@@ -1035,9 +1038,16 @@
           setTimeout(function() { rcmail.message_list.resize(); }, 10);
         });
 
-      if (rcmail.env.action == 'compose')
+      if (rcmail.env.action == 'compose') {
         rcmail_ui.init_compose_form();
-      else if (rcmail.env.action == 'show' || rcmail.env.action == 'preview')
+        rcmail.addEventListener('compose-encrypted', function(e) {
+          $("a.button.encrypt")[(e.active ? 'addClass' : 'removeClass')]('selected');
+          $("select[name='editorSelector']").prop('disabled', e.active);
+          $('a.button.attach, a.button.responses, a.button.attach, #uploadmenulink')[(e.active ? 'addClass' : 'removeClass')]('buttonPas disabled');
+          $('#responseslist a.insertresponse')[(e.active ? 'removeClass' : 'addClass')]('active');
+        });
+      }
+      else if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') {
         // add menu link for each attachment
         $('#attachment-list > li[id^="attach"]').each(function() {
           $(this).append($('<a class="drop"></a>').bind('click keypress', function(e) {
@@ -1047,6 +1057,16 @@
             }
           }));
         });
+
+        $(window).resize(function() {
+          var mvlpe = $('#messagebody.mailvelope');
+          if (mvlpe.length) {
+            var content = $('#messageframe'),
+              h = (content.length ? content.height() + content.offset().top - 25 : $(this).height()) - mvlpe.offset().top - 20;
+            mvlpe.height(h);
+          }
+        });
+      }
     }
     else if (rcmail.env.task == 'addressbook') {
       rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); })
diff --git a/skins/classic/images/mail_toolbar.png b/skins/classic/images/mail_toolbar.png
index a550395..1c6747a 100644
--- a/skins/classic/images/mail_toolbar.png
+++ b/skins/classic/images/mail_toolbar.png
Binary files differ
diff --git a/skins/classic/mail.css b/skins/classic/mail.css
index 060503b..75a58a3 100644
--- a/skins/classic/mail.css
+++ b/skins/classic/mail.css
@@ -184,6 +184,14 @@
   background-position: -548px 0;
 }
 
+#messagetoolbar a.encrypt {
+  background-position: -612px 0;
+}
+
+#messagetoolbar a.encryptSel {
+  background-position: -612px -32px;
+}
+
 #messagemenu li a.active:hover,
 #attachmentmenu li a.active:hover,
 #markmessagemenu li a.active:hover
@@ -1029,6 +1037,10 @@
   background-color: #F4F4F4;
 }
 
+#messagebody.mailvelope {
+  padding: 10px 8px;
+}
+
 #messagebody table.headers-table
 {
   margin: 16px 6px 6px 6px;
@@ -1712,3 +1724,56 @@
   top: 45px;
   position: absolute;
 }
+
+.mailvelopekeyimport div.key {
+  position: relative;
+  margin-bottom: 2px;
+  padding: 1em 1em 5px;
+  background-color: #ebebeb;
+}
+
+.mailvelopekeyimport div.key.revoked,
+.mailvelopekeyimport div.key.disabled {
+  color: #a0a0a0;
+}
+
+.mailvelopekeyimport div.key label {
+  display: inline-block;
+  margin-right: 0.5em;
+}
+
+.mailvelopekeyimport div.key label:after {
+  content: ":";
+}
+
+.mailvelopekeyimport div.key label + a,
+.mailvelopekeyimport div.key label + span {
+  display: inline-block;
+  margin-right: 2em;
+  white-space: nowrap;
+}
+
+.mailvelopekeyimport div.key label + a {
+  font-weight: bold;
+}
+
+.mailvelopekeyimport ul.uids {
+  margin: 5px 1em 0 1em;
+  padding: 0;
+}
+
+.mailvelopekeyimport li.uid {
+  border: 0;
+  padding: 2px;
+}
+
+.mailvelopekeyimport div.key input.button.importkey {
+  position: absolute;
+  top: 0.8em;
+  right: 0.8em;
+  padding: 2px 6px;
+}
+
+.mailvelopekeyimport div.key input.button[disabled] {
+  display: none;
+}
diff --git a/skins/classic/templates/compose.html b/skins/classic/templates/compose.html
index 8050325..aef064e 100644
--- a/skins/classic/templates/compose.html
+++ b/skins/classic/templates/compose.html
@@ -39,6 +39,7 @@
     </span>
 <roundcube:endif />
     <a href="#responses" class="button responses" label="responses" title="<roundcube:label name='insertresponse' />" id="responsesmenulink" unselectable="on" onmousedown="return false" onclick="rcmail_ui.show_popup('responsesmenu');return false">&nbsp;</a>
+    <roundcube:button command="compose-encrypted" type="link" class="buttonPas encrypt disabled" classAct="button encrypt" classSel="button encrypt" title="encryptmessagemailvelope" content=" " style="display:none" />
     <roundcube:container name="toolbar" id="compose-toolbar" />
     <roundcube:button name="messageoptions" id="composemenulink" type="link" class="button messagemenu" title="messageoptions" onclick="rcmail_ui.show_popup('composemenu', true);return false" content=" " />
 </div>
@@ -135,7 +136,7 @@
     </div>
     <div id="compose-div">
         <div id="compose-body-div">
-            <div class="boxlistcontent" style="overflow: hidden; top: 0">
+            <div id="compose-body-parent" class="boxlistcontent" style="overflow: hidden; top: 0">
                 <roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex="9" />
             </div>
             <div class="boxfooter">

--
Gitblit v1.9.1