From 8d8f7a7b8e7ea8464aa807611b3db320fab12156 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 05 Apr 2012 03:51:20 -0400
Subject: [PATCH] - Larry skin support

---
 plugins/managesieve/skins/larry/templates/filteredit.html  |   33 +++
 plugins/managesieve/Changelog                              |    1 
 plugins/managesieve/skins/default/managesieve_mail.css     |    1 
 plugins/managesieve/managesieve.php                        |    5 
 plugins/managesieve/skins/default/managesieve.css          |    5 
 plugins/managesieve/skins/larry/managesieve_mail.css       |   62 ++++++
 plugins/managesieve/skins/larry/images/del.png             |    0 
 plugins/managesieve/skins/larry/managesieve.css            |  319 +++++++++++++++++++++++++++++++++++
 plugins/managesieve/skins/larry/templates/setedit.html     |   23 ++
 plugins/managesieve/skins/larry/images/up_small.gif        |    0 
 plugins/managesieve/managesieve.js                         |    5 
 plugins/managesieve/skins/larry/images/down_small.gif      |    0 
 plugins/managesieve/skins/larry/images/add.png             |    0 
 plugins/managesieve/skins/larry/templates/managesieve.html |   73 ++++++++
 14 files changed, 517 insertions(+), 10 deletions(-)

diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog
index dc0e195..1e60110 100644
--- a/plugins/managesieve/Changelog
+++ b/plugins/managesieve/Changelog
@@ -1,5 +1,6 @@
 - Fixed filter popup width (for non-english localizations)
 - Fixed tokenizer infinite loop on invalid script content
+- Larry skin support
 
 * version 5.0 [2012-01-05]
 -----------------------------------------------------------
diff --git a/plugins/managesieve/managesieve.js b/plugins/managesieve/managesieve.js
index be65c44..61883f6 100644
--- a/plugins/managesieve/managesieve.js
+++ b/plugins/managesieve/managesieve.js
@@ -674,7 +674,8 @@
         function(e) {
           var offset = $(this).offset(),
             left = offset.left,
-            top = offset.top - 12;
+            top = offset.top - 12,
+            minwidth = $(this).width();
 
           if (framed) {
             offset = $((rcmail.env.task == 'mail'  ? '#sievefilterform > iframe' : '#filter-box'), parent.document).offset();
@@ -685,7 +686,7 @@
           tip.html(e.data.str)
           top -= tip.height();
 
-          tip.css({left: left, top: top}).show();
+          tip.css({left: left, top: top, minWidth: (minwidth-2) + 'px'}).show();
         })
       .bind('mouseleave', function(e) { tip.hide(); });
   }
diff --git a/plugins/managesieve/managesieve.php b/plugins/managesieve/managesieve.php
index 2ef5712..c58dc8c 100644
--- a/plugins/managesieve/managesieve.php
+++ b/plugins/managesieve/managesieve.php
@@ -128,8 +128,9 @@
                 'command'  => 'managesieve-create',
                 'label'    => 'managesieve.filtercreate',
                 'type'     => 'link',
-                'classact' => 'filterlink active',
-                'class'    => 'filterlink',
+                'classact' => 'icon filterlink active',
+                'class'    => 'icon filterlink',
+                'innerclass' => 'icon filterlink',
             ))), 'messagemenu');
 
         // register some labels/messages
diff --git a/plugins/managesieve/skins/default/managesieve.css b/plugins/managesieve/skins/default/managesieve.css
index 60f6325..9527b44 100644
--- a/plugins/managesieve/skins/default/managesieve.css
+++ b/plugins/managesieve/skins/default/managesieve.css
@@ -272,11 +272,6 @@
   color: red;
 }
 
-#managesieve-tip
-{
-  width: 200px;
-}
-
 a.button.add
 {
   background: url(images/add.png) no-repeat;
diff --git a/plugins/managesieve/skins/default/managesieve_mail.css b/plugins/managesieve/skins/default/managesieve_mail.css
index 7fefaed..87a11cc 100644
--- a/plugins/managesieve/skins/default/managesieve_mail.css
+++ b/plugins/managesieve/skins/default/managesieve_mail.css
@@ -53,7 +53,6 @@
 
 #managesieve-tip
 {
-  width: 200px;
   z-index: 100000;
 }
 
diff --git a/plugins/managesieve/skins/larry/images/add.png b/plugins/managesieve/skins/larry/images/add.png
new file mode 100644
index 0000000..97a6422
--- /dev/null
+++ b/plugins/managesieve/skins/larry/images/add.png
Binary files differ
diff --git a/plugins/managesieve/skins/larry/images/del.png b/plugins/managesieve/skins/larry/images/del.png
new file mode 100644
index 0000000..518905b
--- /dev/null
+++ b/plugins/managesieve/skins/larry/images/del.png
Binary files differ
diff --git a/plugins/managesieve/skins/larry/images/down_small.gif b/plugins/managesieve/skins/larry/images/down_small.gif
new file mode 100644
index 0000000..f865893
--- /dev/null
+++ b/plugins/managesieve/skins/larry/images/down_small.gif
Binary files differ
diff --git a/plugins/managesieve/skins/larry/images/up_small.gif b/plugins/managesieve/skins/larry/images/up_small.gif
new file mode 100644
index 0000000..40deb89
--- /dev/null
+++ b/plugins/managesieve/skins/larry/images/up_small.gif
Binary files differ
diff --git a/plugins/managesieve/skins/larry/managesieve.css b/plugins/managesieve/skins/larry/managesieve.css
new file mode 100644
index 0000000..f252bd7
--- /dev/null
+++ b/plugins/managesieve/skins/larry/managesieve.css
@@ -0,0 +1,319 @@
+#filtersetslistbox
+{
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 150px;
+}
+
+#filtersscreen
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 162px;
+}
+
+#filterslistbox
+{
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  width: 180px;
+}
+
+#filter-box
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 192px;
+}
+
+#filter-frame
+{
+  border-radius: 4px;
+}
+
+#filterslist,
+#filtersetslist
+{
+  width: 100%;
+  table-layout: fixed; 
+}
+
+#filterslist tbody td,
+#filtersetslist tbody td
+{
+  width: 100%;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+#filterslist tbody tr.disabled td,
+#filtersetslist tbody tr.disabled td
+{
+  color: #87A3AA;
+}
+
+#filtersetslist tbody td
+{
+  font-weight: bold;
+}
+
+#filterslist tbody tr.filtermoveup td
+{
+  border-top: 2px dotted #555;
+  padding-top: 5px;
+}
+
+#filterslist tbody tr.filtermovedown td
+{
+  border-bottom: 2px dotted #555;
+  padding-bottom: 4px;
+}
+
+body.iframe
+{
+  min-width: 620px;
+}
+
+#filter-form
+{
+  min-width: 550px;
+  white-space: nowrap;
+  padding: 20px 10px 10px 10px;
+}
+
+legend, label
+{
+  color: #666666;
+}
+
+#rules, #actions
+{
+  margin-top: 5px;
+  padding: 0;
+  border-collapse: collapse;
+}
+
+div.rulerow, div.actionrow
+{
+  width: auto;
+  padding: 2px;
+  white-space: nowrap;
+  border: 1px solid white;
+}
+
+div.rulerow:hover, div.actionrow:hover
+{
+  padding: 2px;
+  white-space: nowrap;
+  background-color: #D9ECF4;
+  border: 1px solid #BBD3DA;
+  border-radius: 4px;
+}
+
+div.rulerow table, div.actionrow table
+{
+  padding: 0px;
+  min-width: 600px;
+}
+
+td
+{
+  vertical-align: top;
+}
+
+td.advbutton
+{
+  width: 1%;
+}
+
+td.advbutton a
+{
+  display: block;
+  padding-top: 14px;
+  height: 6px;
+  width: 12px;
+  text-decoration: none;
+}
+
+td.advbutton a.show
+{
+  background: url(images/down_small.gif) center no-repeat;
+}
+
+td.advbutton a.hide
+{
+  background: url(images/up_small.gif) center no-repeat;
+}
+
+td.rowbuttons
+{
+  text-align: right;
+  white-space: nowrap;
+  width: 1%;
+}
+
+td.rowactions
+{
+  white-space: nowrap;
+  width: 1%;
+  padding-top: 2px;
+}
+
+td.rowtargets
+{
+  white-space: nowrap;
+  width: 98%;
+  padding-left: 3px;
+  padding-top: 2px;
+}
+
+td.rowtargets div.adv
+{
+  padding-top: 3px;
+}
+
+input.disabled, input.disabled:hover
+{
+  color: #999999;
+}
+
+input.error, textarea.error
+{
+  background-color: #FFFFC4;
+}
+
+input.box,
+input.radio
+{
+  border: 0;
+  margin-top: 0;
+}
+
+select.operator_selector
+{
+  width: 200px;
+}
+
+td.rowtargets span,
+span.label
+{
+  color: #666666;
+  font-size: 10px;
+  white-space: nowrap;
+}
+
+#footer
+{
+  padding-top: 5px;
+  width: 100%;
+}
+
+#footer .footerleft
+{
+  padding-left: 2px;
+  white-space: nowrap;
+  float: left;
+}
+
+#footer .footerright
+{
+  padding-right: 2px;
+  white-space: nowrap;
+  text-align: right;
+  float: right;
+}
+
+.itemlist
+{
+  line-height: 25px;
+}
+
+.itemlist input
+{
+  vertical-align: middle;
+}
+
+span.sieve.error
+{
+  color: red;
+  white-space: nowrap;
+}
+
+#managesieve-tip
+{
+  padding: 3px;
+  background-color: #eee;
+}
+
+a.button
+{
+  margin: 0;
+  padding: 0;
+}
+
+a.button.add
+{
+  background: url(images/add.png) no-repeat;
+  width: 30px;
+  height: 20px;
+  margin-right: 4px;
+  display: inline-block;
+}
+
+a.button.del
+{
+  background: url(images/del.png) no-repeat;
+  width: 30px;
+  height: 20px;
+  display: inline-block;
+}
+
+a.button.disabled
+{
+  opacity: 0.35;
+  filter: alpha(opacity=35);
+  cursor: default;
+}
+
+#filter-form select,
+#filter-form input,
+#filter-form textarea
+{
+  font-size: 11px;
+  padding: 1px;
+}
+
+/* revert larry style button */
+#filter-form input.button
+{
+  padding-bottom: 2px;
+  padding-left: 5px;
+  padding-right: 5px;
+  padding-top: 2px;
+}
+
+fieldset
+{
+  border-radius: 4px;
+}
+
+/* fixes for popup window */
+
+body.iframe.mail
+{
+  margin: 0;
+  padding: 0;
+}
+
+body.iframe.mail #filter-form
+{
+  padding: 10px 5px 5px 5px;
+}
diff --git a/plugins/managesieve/skins/larry/managesieve_mail.css b/plugins/managesieve/skins/larry/managesieve_mail.css
new file mode 100644
index 0000000..ea417bd
--- /dev/null
+++ b/plugins/managesieve/skins/larry/managesieve_mail.css
@@ -0,0 +1,62 @@
+ul.toolbarmenu li span.filterlink {
+  background-position: 0 -1924px;
+}
+
+#sievefilterform {
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  padding: 0;
+  overflow: hidden;
+}
+
+#sievefilterform iframe {
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  width: 100%;
+  min-height: 100%; /* Chrome 14 bug */
+  border: 0;
+  padding: 0;
+  margin: 0;
+}
+
+#sievefilterform ul {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+  margin-top: 5px;
+}
+
+#sievefilterform fieldset {
+  margin: 5px;
+  border-radius: 4px;
+}
+
+#sievefilterform ul li {
+  margin-bottom: 5px;
+  white-space: nowrap;
+}
+
+#sievefilterform ul li input {
+  margin-right: 5px;
+}
+
+#sievefilterform label {
+  font-weight: bold;
+}
+
+#managesieve-tip
+{
+  z-index: 100000;
+  padding: 3px;
+  background-color: #eee;
+}
+
+span.sieve.error
+{
+  color: red;
+  white-space: nowrap;
+}
diff --git a/plugins/managesieve/skins/larry/templates/filteredit.html b/plugins/managesieve/skins/larry/templates/filteredit.html
new file mode 100644
index 0000000..424bdbc
--- /dev/null
+++ b/plugins/managesieve/skins/larry/templates/filteredit.html
@@ -0,0 +1,33 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="iframe<roundcube:exp expression="env:task != 'mail' ? '' : ' mail'" />">
+
+<roundcube:if condition="env:task != 'mail'" />
+<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.filterdef" /></div>
+<roundcube:endif />
+
+<div id="filter-form" class="boxcontent">
+<roundcube:object name="filterform" />
+
+<roundcube:if condition="env:task != 'mail'" />
+<div id="footer">
+<div class="footerleft">
+<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
+</div>
+<div class="footerright">
+<label for="disabled"><roundcube:label name="managesieve.filterdisabled" /></label>
+<input type="checkbox" id="disabled" name="_disabled" value="1" />
+</div>
+</div>
+<roundcube:endif />
+
+</form>
+</div>
+
+</body>
+</html>
diff --git a/plugins/managesieve/skins/larry/templates/managesieve.html b/plugins/managesieve/skins/larry/templates/managesieve.html
new file mode 100644
index 0000000..740b416
--- /dev/null
+++ b/plugins/managesieve/skins/larry/templates/managesieve.html
@@ -0,0 +1,73 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen" class="offset">
+
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="settings-right">
+
+<div id="filtersetslistbox" class="uibox listbox">
+<h2 class="boxtitle"><roundcube:label name="managesieve.filtersets" /></h2>
+<div class="scroller withfooter">
+  <roundcube:object name="filtersetslist" id="filtersetslist" class="listing" cellspacing="0" summary="Filters list" type="list" noheader="true" />
+</div>
+<div class="boxfooter">
+  <roundcube:button command="plugin.managesieve-setadd" type="link" title="managesieve.filtersetadd" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="filtersetmenulink" id="filtersetmenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('filtersetmenu');return false" innerClass="inner" content="&#9881" />
+</div>
+</div>
+
+<div id="filtersscreen">
+<div id="filterslistbox" class="uibox listbox">
+<h2 class="boxtitle"><roundcube:label name="managesieve.filters" /></h2>
+<div class="scroller withfooter">
+  <roundcube:object name="filterslist" id="filterslist" class="listing" cellspacing="0" summary="Filters list" noheader="true" />
+</div>
+<div class="boxfooter">
+  <roundcube:button command="plugin.managesieve-add" type="link" title="managesieve.filteradd" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="filtermenulink" id="filtermenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('filtermenu');return false" innerClass="inner" content="&#9881" />
+</div>
+</div>
+
+<div id="filter-box" class="uibox">
+  <roundcube:object name="filterframe" id="filter-frame" style="width:100%; height:96%" frameborder="0" src="/watermark.html" />
+  <roundcube:object name="message" id="message" class="statusbar" />
+</div>
+
+</div>
+
+<div id="filtersetmenu" class="popupmenu">
+  <ul class="toolbarmenu">
+    <li><roundcube:button command="plugin.managesieve-setact" label="managesieve.enable" classAct="active" /></li>
+    <li><roundcube:button command="plugin.managesieve-setdel" label="delete" classAct="active" /></li>
+    <li class="separator_above"><roundcube:button command="plugin.managesieve-setget" label="download" classAct="active" /></li>
+    <roundcube:container name="filtersetoptions" id="filtersetmenu" />
+  </ul>
+</div>
+
+<div id="filtermenu" class="popupmenu">
+  <ul class="toolbarmenu">
+    <li><roundcube:button command="plugin.managesieve-act" label="managesieve.enable" classAct="active" /></li>
+    <li><roundcube:button command="plugin.managesieve-del" label="delete" classAct="active" /></li>
+    <roundcube:container name="filteroptions" id="filtermenu" />
+  </ul>
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+<script type="text/javascript">
+  new rcube_splitter({ id:'managesievesplitter1', p1:'#filtersetslistbox', p2:'#filtersscreen',
+          orientation:'v', relative:true, start:156, min:120, size:12 }).init();
+  new rcube_splitter({ id:'managesievesplitter2', p1:'#filterslistbox', p2:'#filter-box',
+          orientation:'v', relative:true, start:186, min:120, size:12 }).init();
+</script>
+
+</body>
+</html>
diff --git a/plugins/managesieve/skins/larry/templates/setedit.html b/plugins/managesieve/skins/larry/templates/setedit.html
new file mode 100644
index 0000000..71de8dd
--- /dev/null
+++ b/plugins/managesieve/skins/larry/templates/setedit.html
@@ -0,0 +1,23 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="iframe">
+
+<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.newfilterset" /></div>
+
+<div id="filter-form" class="boxcontent">
+<roundcube:object name="filtersetform" />
+
+<p>
+<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
+</p>
+
+</form>
+</div>
+
+</body>
+</html>

--
Gitblit v1.9.1