summaryrefslogtreecommitdiff
path: root/skins/larry
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2012-03-09 13:23:24 +0000
committeralecpl <alec@alec.pl>2012-03-09 13:23:24 +0000
commit4be86f3a3779ef86be30e8451750130569d2cacd (patch)
tree9dc44ebaf3f064609bd92b5a1a7e0118c0cbdedc /skins/larry
parent84d6e279e339cacaea4d3eb61290d54af1c1009b (diff)
- Unified (single) spellchecker button
Diffstat (limited to 'skins/larry')
-rw-r--r--skins/larry/mail.css8
-rw-r--r--skins/larry/styles.css10
-rw-r--r--skins/larry/templates/compose.html12
-rw-r--r--skins/larry/ui.js47
4 files changed, 62 insertions, 15 deletions
diff --git a/skins/larry/mail.css b/skins/larry/mail.css
index a9deea6e1..f96827b27 100644
--- a/skins/larry/mail.css
+++ b/skins/larry/mail.css
@@ -1166,11 +1166,12 @@ div.message-part blockquote blockquote blockquote {
#composebody {
position: absolute;
- top: 24px;
+ top: 1px;
left: 0;
bottom: 0;
width: 99%;
border: 0;
+ border-radius: 0;
padding: 8px 0 8px 8px;
box-shadow: none;
resize: none;
@@ -1195,11 +1196,6 @@ div.message-part blockquote blockquote blockquote {
overflow: auto;
}
-#spellcheck-control {
- margin: 6px 8px;
- text-align: right;
-}
-
.defaultSkin table.mceLayout,
.defaultSkin table.mceLayout tr.mceLast td {
border: 0 !important;
diff --git a/skins/larry/styles.css b/skins/larry/styles.css
index 4c242f56b..c9a4b0f67 100644
--- a/skins/larry/styles.css
+++ b/skins/larry/styles.css
@@ -1390,7 +1390,8 @@ ul.proplist li {
}
.toolbar a.button.spellcheck {
- background-position: center -930px;
+ min-width: 64px;
+ background-position: left -930px;
}
.toolbar a.button.insertsig {
@@ -1574,10 +1575,15 @@ select.decorated option[selected='selected'] {
background: linear-gradient(top, #00aad6 0%, #008fc9 100%);
}
-ul.toolbarmenu.iconized li a {
+ul.toolbarmenu.iconized li a,
+ul.toolbarmenu.selectable li a {
padding-left: 30px;
}
+ul.toolbarmenu.selectable li a.selected {
+ background: url(images/messages.png) 4px -27px no-repeat;
+}
+
ul.toolbarmenu li label {
display: block;
color: #fff;
diff --git a/skins/larry/templates/compose.html b/skins/larry/templates/compose.html
index 20bead41c..0c1b81759 100644
--- a/skins/larry/templates/compose.html
+++ b/skins/larry/templates/compose.html
@@ -3,7 +3,9 @@
<head>
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
+<roundcube:if condition="config:enable_spellcheck" />
<link rel="stylesheet" type="text/css" href="/googiespell.css" />
+<roundcube:endif />
</head>
<body class="noscroll">
@@ -38,7 +40,12 @@
<!-- toolbar -->
<div id="messagetoolbar" class="fullwidth">
<div id="mailtoolbar" class="toolbar">
- <roundcube:button command="spellcheck" type="link" class="button spellcheck disabled" classAct="button spellcheck" classSel="button spellcheck pressed" label="spellcheck" title="checkspelling" />
+ <roundcube:if condition="config:enable_spellcheck" />
+ <span class="dropbutton">
+ <roundcube:button command="spellcheck" type="link" class="button spellcheck disabled" classAct="button spellcheck" classSel="button spellcheck pressed" label="spellcheck" title="checkspelling" />
+ <span class="dropbuttontip" id="spellmenulink" onclick="UI.show_popup('spellmenu');return false"></span>
+ </span>
+ <roundcube:endif />
<roundcube:button name="addattachment" type="link" class="button attach" classAct="button attach" classSel="button attach pressed" label="attach" title="addattachment" onclick="UI.show_uploadform();return false" />
<roundcube:button command="insert-sig" type="link" class="button insertsig disabled" classAct="button insertsig" classSel="button insertsig pressed" label="signature" title="insertsignature" />
<roundcube:container name="toolbar" id="compose-toolbar" />
@@ -142,7 +149,6 @@
<!-- message compose body -->
<div id="composeview-bottom">
<div id="composebodycontainer">
- <div id="spellcheck-control"></div>
<roundcube:object name="composeBody" id="composebody" form="form" cols="70" rows="20" tabindex="9" />
</div>
<div id="compose-attachments" class="rightcol">
@@ -171,6 +177,8 @@
</div>
</div>
+<div id="spellmenu" class="popupmenu"></div>
+
<roundcube:include file="/includes/footer.html" />
</body>
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index d6f945a6c..7f14c5ea9 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -24,6 +24,7 @@ function rcube_mail_ui()
groupmenu: { above:1 },
mailboxmenu: { above:1 },
composeoptionsmenu: { editable:1, overlap:1 },
+ spellmenu: { callback: spellmenu },
// toggle: #1486823, #1486930
'attachment-form': { editable:1, above:1, toggle:!bw.ie&&!bw.linux },
'upload-form': { editable:1, toggle:!bw.ie&&!bw.linux }
@@ -338,13 +339,13 @@ function rcube_mail_ui()
bottom.css('height', (form.height() - bottom.position().top) + 'px');
- w = body.parent().width() - 6;
- h = body.parent().height() - 36;
+ w = body.parent().width() - 5;
+ h = body.parent().height() - 16;
body.width(w).height(h);
if (window.tinyMCE && tinyMCE.get('composebody')) {
- $('#composebody_tbl').width((w+10)+'px').height('').css('margin-top', '1px');
- $('#composebody_ifr').width((w+10)+'px').height((h-22)+'px');
+ $('#composebody_tbl').width((w+8)+'px').height('').css('margin-top', '1px');
+ $('#composebody_ifr').width((w+8)+'px').height((h-40)+'px');
}
else {
$('#googie_edit_layer').height(h+'px');
@@ -425,7 +426,7 @@ function rcube_mail_ui()
$('select').css('visibility', show?'hidden':'inherit');
$('select', obj).css('visibility', 'inherit');
}
-
+
return show;
}
@@ -554,6 +555,42 @@ function rcube_mail_ui()
}
+ function spellmenu(show)
+ {
+ var link, li,
+ lang = rcmail.spellcheck_lang(),
+ menu = popups.spellmenu,
+ ul = $('ul', menu);
+
+ if (!ul.length) {
+ ul = $('<ul class="toolbarmenu selectable">');
+
+ for (i in rcmail.env.spell_langs) {
+ li = $('<li>');
+ link = $('<a href="#">').text(rcmail.env.spell_langs[i])
+ .addClass('active').data('lang', i)
+ .click(function() {
+ rcmail.spellcheck_lang_set($(this).data('lang'));
+ });
+
+ link.appendTo(li);
+ li.appendTo(ul);
+ }
+
+ ul.appendTo(menu);
+ }
+
+ // select current language
+ $('li', ul).each(function() {
+ var el = $('a', this);
+ if (el.data('lang') == lang)
+ el.addClass('selected');
+ else if (el.hasClass('selected'))
+ el.removeClass('selected');
+ });
+ }
+
+
/**
*
*/