Add addressbook widget on compose page in classic skin

pull/88/head
Aleksander Machniak 12 years ago
parent a8fd895263
commit b3bbb28100

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Add addressbook widget on compose page in classic skin
- Add search box to compose address book widget (#1488381)
- Fix login in case when default_host is an array with one element (#1488928)
- Use LDAP fallback hosts on connect + bind instead of ldap_connect() only.

@ -21,7 +21,7 @@
width: 32px;
height: 32px;
padding: 0;
margin-right: 10px;
margin: 0 5px;
overflow: hidden;
background: url(images/abook_toolbar.png) 0 0 no-repeat transparent;
opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */

@ -355,7 +355,7 @@ spellmenu: function(show)
for (i in rcmail.env.spell_langs) {
li = $('<li>');
link = $('<a href="#">').text(rcmail.env.spell_langs[i])
link = $('<a href="#"></a>').text(rcmail.env.spell_langs[i])
.addClass('active').data('lang', i)
.click(function() {
rcmail.spellcheck_lang_set($(this).data('lang'));
@ -491,17 +491,23 @@ init_compose_form: function()
div.style.top = (parseInt(headers_div.offsetHeight, 10) + 3) + 'px';
$(window).resize();
// contacts search submit
$('#quicksearchbox').keydown(function(e) {
if (rcube_event.get_keycode(e) == 13)
rcmail.command('search');
});
},
resize_compose_body: function()
{
var div = $('#compose-div .boxlistcontent'), w = div.width(), h = div.height();
w -= 8; // 2 x 3px padding + 2 x 1px border
h -= 4;
var div = $('#compose-div .boxlistcontent'),
w = div.width() - 2, h = div.height(),
x = bw.ie ? 4 : 0;
$('#compose-body_tbl').width((w+6)+'px').height('');
$('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px');
$('#compose-body').width(w+'px').height(h+'px');
$('#compose-body_tbl').width((w+3)+'px').height('');
$('#compose-body_ifr').width((w+3)+'px').height((h-54)+'px');
$('#compose-body').width((w-x)+'px').height(h+'px');
$('#googie_edit_layer').height(h+'px');
},

@ -12,7 +12,6 @@
padding: 0 4px;
font-size: 9pt;
font-family: monospace;
border: 1px solid #999;
}
.googie_edit_layer span {

@ -3,6 +3,7 @@
#taskbar
{
background: url(images/taskbar.gif) top right no-repeat;
width: expression((parseInt(document.documentElement.clientWidth)-250)+'px');
}
img
@ -38,11 +39,6 @@ body > #message div.confirmation,
background-image: url(images/icons/folders.gif);
}
#attachment-list
{
height: expression(Math.min(16, parseInt(document.documentElement.clientHeight))+'px');
}
#messagetoolbar a
{
display: block;
@ -124,6 +120,11 @@ ul.toolbarmenu li.separator_below
height: expression((parseInt(this.parentNode.offsetHeight)-23-parseInt(this.style.top?this.style.top:21))+'px');
}
#compose-body-div
{
height: expression(parseInt(this.parentNode.offsetHeight)+'px');
}
#folder-manager
{
height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
@ -176,3 +177,8 @@ body.iframe .boxtitle
{
zoom: 1;
}
#abookactions a
{
background-image: url("images/icons/groupactions.gif");
}

@ -116,6 +116,7 @@ body.iframe div.messageheaderbox
#mailrightcontainer,
#compose-container,
#compose-attachments,
#compose-contacts,
#mailcontframe,
#mailboxlist-container,
#mailrightcontent,
@ -201,11 +202,6 @@ div.message-part div.pre
width: expression((parseInt(document.documentElement.clientWidth)-245)+'px');
}
#contacts-table
{
width: expression(document.getElementById('addresslist').clientWidth);
}
#contacts-box,
#prefs-box,
#folder-box
@ -288,8 +284,8 @@ table.records-table thead tr td
.contactfieldgroup legend
{
padding: 0 0 0.5em 0;
margin-left: -4px;
padding: 0 0 0.5em 0;
margin-left: -4px;
}
/* fix "jumping" login form in IE7 */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 B

After

Width:  |  Height:  |  Size: 496 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 B

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -1392,7 +1392,7 @@ div.hide-headers
{
position: absolute;
top: 0;
left: 185px;
left: 205px;
right: 0;
bottom: 0;
margin: 0;
@ -1402,16 +1402,20 @@ div.hide-headers
{
position: absolute;
top: 85px;
right: 0;
left: 0;
bottom: 0;
margin: 0;
width: 100%;
}
#compose-div .boxfooter
#compose-body-div
{
height: 22px;
background: none;
border-top: 0;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 175px;
border: 1px solid #999;
}
#compose-div .boxlistcontent
@ -1429,15 +1433,12 @@ div.hide-headers
margin: 0;
font-size: 9pt;
font-family: monospace;
border: 1px solid #999;
resize: none;
border: none;
outline: none;
}
#compose-body_tbl
{
border: 1px solid #999;
}
#compose-body_tbl,
#compose-body_tbl td
{
border: none;
@ -1504,9 +1505,10 @@ input.from_address
#compose-editorfooter
{
position: absolute;
right: 0;
right: 5px;
bottom: 0;
text-align: right;
line-height: 20px;
}
#compose-editorfooter label
@ -1519,9 +1521,20 @@ input.from_address
#compose-buttons
{
position: absolute;
left: 5px;
bottom: 1px;
width: auto;
}
#compose-contacts
{
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: auto;
width: 195px;
border: 1px solid #999;
background-color: #F9F9F9;
}
#compose-attachments
@ -1529,8 +1542,8 @@ input.from_address
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 175px;
border: 1px solid #999;
background-color: #F9F9F9;
}
@ -1622,3 +1635,107 @@ input.from_address
right: 6px;
z-index: 101;
}
/* addressbook in compose - copy from addressbook.css */
#directorylist
{
list-style: none;
margin: 0;
padding: 0;
background-color: #FFFFFF;
}
#directorylist li
{
display: block;
font-size: 11px;
background: url(images/icons/folders.png) 5px -108px no-repeat;
border-bottom: 1px solid #EBEBEB;
white-space: nowrap;
}
#directorylist li a
{
cursor: default;
display: block;
padding-left: 25px;
padding-top: 2px;
padding-bottom: 2px;
text-decoration: none;
white-space: nowrap;
height: 15px;
}
#directorylist li.selected
{
background-color: #929292;
border-bottom: 1px solid #898989;
}
#directorylist li.selected a
{
color: #FFF;
font-weight: bold;
}
#contacts-table
{
width: 100%;
table-layout: fixed;
}
#contacts-table tbody td
{
cursor: default;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
}
#abookcountbar
{
margin-top: 4px;
margin-left: 4px;
position: absolute;
margin-right: 5px;
right: 0;
}
#abookactions
{
position: absolute;
text-underline: none;
}
#abookactions a
{
font-weight: bold;
line-height: 22px;
height: 22px;
width: auto;
margin: 0;
padding-left: 5px;
padding-right: 5px;
text-shadow: 1px 1px white;
background: url("images/icons/groupactions.png") no-repeat right -70px;
}
#compose-contacts #quicksearchbar
{
top: 2px;
left: 7px;
}
#compose-contacts #directorylist
{
width: 100%;
top: 23px;
position: absolute;
border-top: 1px solid #eee;
}
#compose-contacts #contacts-table
{
top: 45px;
position: absolute;
}

@ -29,12 +29,12 @@ function rcube_splitter(attrib)
if (this.horizontal) {
var top = this.p1pos.top + this.p1.offsetHeight;
this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10,
width: '100%', vis: 1, parent: this.p1.parentNode});
width: '100%', vis: 1, parent: this.p1.parentNode});
}
else {
var left = this.p1pos.left + this.p1.offsetWidth;
this.layer = new rcube_layer(this.id, {x: left, y: 0, width: 10,
height: '100%', vis: 1, parent: this.p1.parentNode});
height: '100%', vis: 1, parent: this.p1.parentNode});
}
this.elm = this.layer.elm;
@ -147,6 +147,7 @@ function rcube_splitter(attrib)
this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
return false;
};

@ -9,9 +9,9 @@
<script type="text/javascript" src="/functions.js"></script>
<script type="text/javascript" src="/splitter.js"></script>
<style type="text/css">
#compose-attachments { width: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv-5 : 175" />px; }
#compose-container { left: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 185" />px;
<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 180).')+\\'px\\');') : ''" />
#compose-contacts { width: <roundcube:exp expression="!empty(cookie:composesplitterv1) ? cookie:composesplitterv1-5 : 195" />px; }
#compose-container { left: <roundcube:exp expression="!empty(cookie:composesplitterv1) ? cookie:composesplitterv1+5 : 205" />px;
<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:composesplitterv1) ? cookie:composesplitterv1+5 : 200).')+\\'px\\');') : ''" />
}
</style>
</head>
@ -24,8 +24,6 @@
<roundcube:include file="/includes/header.html" />
<roundcube:endif />
<form name="form" action="./" method="post">
<div id="messagetoolbar">
<roundcube:if condition="env:extwin" />
<roundcube:button command="close" type="link" class="button back" classAct="button back" classSel="button backSel" title="close" content=" " />
@ -46,22 +44,40 @@
<roundcube:button name="messageoptions" id="composemenulink" type="link" class="button messagemenu" title="messageoptions" onclick="rcmail_ui.show_popup('composemenu', true);return false" content=" " />
</div>
<form name="form" action="./" method="post">
<div id="mainscreen">
<div id="compose-attachments">
<div class="boxtitle"><roundcube:label name="attachments" /></div>
<div id="compose-contacts">
<div class="boxtitle"><roundcube:label name="contacts" /></div>
<div class="boxlistcontent">
<roundcube:object name="composeAttachmentList" id="attachmentslist" loadingIcon="/images/display/loading_blue.gif" />
<div id="quicksearchbar">
<img id="searchmenulink" src="/images/icons/glass.png" width="16" height="16" />
<roundcube:object name="searchform" id="quicksearchbox" form="true" tabindex="13" />
<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
</div>
<roundcube:object name="addressbooks" id="directorylist" />
<roundcube:object name="addresslist" id="contacts-table" class="records-table" cellspacing="0" noheader="true" />
</div>
<div class="boxfooter">
<roundcube:button name="uploadmenulink" id="uploadmenulink" type="link" title="addattachment" class="button addgroup" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
<div id="abookactions" class="pagenav">
<roundcube:button command="add-recipient" prop="to" type="link" title="to" class="button disabled" classAct="button" content="To &amp;raquo;" />
<roundcube:button command="add-recipient" prop="cc" type="link" title="cc" class="button disabled" classAct="button" content="Cc &amp;raquo;" />
<roundcube:button command="add-recipient" prop="bcc" type="link" title="bcc" class="button disabled" classAct="button" content="Bcc &amp;raquo;" />
</div>
<div id="abookcountbar" class="pagenav">
<roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
<roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
<span style="float:left">&nbsp;</span>
<roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
<roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
</div>
</div>
</div>
<roundcube:object name="fileDropArea" id="compose-attachments" />
<script type="text/javascript">
var composesplitv = new rcube_splitter({id:'composesplitterv', p1: 'compose-attachments', p2: 'compose-container', orientation: 'v', relative: true, start: 175});
rcmail.add_onload('composesplitv.init()');
var composesplitv1 = new rcube_splitter({id:'composesplitterv1', p1: 'compose-contacts', p2: 'compose-container', orientation: 'v', relative: true, start: 200});
rcmail.add_onload('composesplitv1.init()');
</script>
<div id="compose-container">
@ -119,23 +135,39 @@
</table>
</div>
<div id="compose-div">
<div class="boxlistcontent" style="overflow: hidden; top: 0">
<roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex="9" />
<div id="compose-body-div">
<div 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">
<div id="compose-buttons">
<roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="10" />
<roundcube:button type="input" command="list" class="button" label="cancel" tabindex="11" />
</div>
<div id="compose-editorfooter" class="pagenav">
<roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
<span>
<label><roundcube:label name="editortype" /></label>
<roundcube:object name="editorSelector" editorid="compose-body" tabindex="12" />
</span>
<roundcube:endif />
</div>
</div>
</div>
<div class="boxfooter">
<div id="compose-buttons">
<roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="10" />
<roundcube:button type="input" command="list" class="button" label="cancel" tabindex="11" />
<script type="text/javascript">
var composesplitv2 = new rcube_splitter({id:'composesplitterv2', p1: 'compose-body-div', p2: 'compose-attachments', orientation: 'v', relative: true, start: $('#compose-headers-div').width() - 175});
rcmail.add_onload('composesplitv2.init()');
</script>
<div id="compose-attachments">
<div class="boxtitle"><roundcube:label name="attachments" /></div>
<div class="boxlistcontent">
<roundcube:object name="composeAttachmentList" id="attachmentslist" loadingIcon="/images/display/loading_blue.gif" />
</div>
<div id="compose-editorfooter">
<roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
<span>
<label><roundcube:label name="editortype" /></label>
<roundcube:object name="editorSelector" editorid="compose-body" tabindex="12" />
</span>
<roundcube:endif />
<div class="boxfooter">
<roundcube:button name="uploadmenulink" id="uploadmenulink" type="link" title="addattachment" class="button addgroup" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
</div>
</div>
<roundcube:object name="fileDropArea" id="compose-attachments" />
</div>
</div>

Loading…
Cancel
Save