More from Larry...
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.6 KiB |
@ -0,0 +1,10 @@
|
||||
<script type="text/javascript">
|
||||
|
||||
// UI startup
|
||||
var UI = new rcube_mail_ui();
|
||||
$(document).ready(function(){
|
||||
UI.init();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
@ -0,0 +1,126 @@
|
||||
/**
|
||||
* Roundcube webmail styles for message printing
|
||||
*
|
||||
* Copyright (c) 2011, The Roundcube Dev Team
|
||||
*
|
||||
* The contents are subject to the Creative Commons Attribution-ShareAlike
|
||||
* License. It is allowed to copy, distribute, transmit and to adapt the work
|
||||
* by keeping credits to the original autors in the README file.
|
||||
* See http://creativecommons.org/licenses/by-sa/3.0/ for details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
body {
|
||||
font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
margin: 2mm;
|
||||
}
|
||||
|
||||
body, td, th, span, div, p {
|
||||
font-size: 9pt;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
a, a:active, a:visited {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#header {
|
||||
float: right;
|
||||
margin: 0 5mm 3mm 5mm;
|
||||
}
|
||||
|
||||
table.headers-table {
|
||||
table-layout: fixed;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
table.headers-table tr td {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
table.headers-table td.header-title {
|
||||
color: #666;
|
||||
font-size: 85%;
|
||||
padding-right: 4mm;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.headers-table tr td.subject {
|
||||
width: 90%;
|
||||
font-weight: bold;
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
#attachment-list {
|
||||
margin-top: 3mm;
|
||||
padding-top: 3mm;
|
||||
border-top: 1pt solid #ccc;
|
||||
}
|
||||
|
||||
#attachment-list li {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
#attachment-list li a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#attachment-list li a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#messagebody {
|
||||
margin-top: 5mm;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.message-part {
|
||||
padding: 2mm;
|
||||
margin-top: 5mm;
|
||||
margin-bottom: 5mm;
|
||||
border-top: 1pt solid #ccc;
|
||||
}
|
||||
|
||||
div.message-part a {
|
||||
color: #00c;
|
||||
}
|
||||
|
||||
div.message-part pre,
|
||||
div.message-htmlpart pre,
|
||||
div.message-part div.pre {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: monospace;
|
||||
white-space: -moz-pre-wrap !important;
|
||||
white-space: pre-wrap !important;
|
||||
white-space: pre;
|
||||
word-wrap: break-word; /* IE (and Safari) */
|
||||
}
|
||||
|
||||
div.message-part blockquote {
|
||||
color: blue;
|
||||
border-left: 2px solid blue;
|
||||
border-right: 2px solid blue;
|
||||
background-color: #F6F6F6;
|
||||
margin: 0.5em 0em 0.5em 0em;
|
||||
padding: 0.25em 1em 0.25em 1em;
|
||||
}
|
||||
|
||||
div.message-part blockquote blockquote {
|
||||
color: green;
|
||||
border-left: 2px solid green;
|
||||
border-right: 2px solid green;
|
||||
}
|
||||
|
||||
div.message-part blockquote blockquote blockquote {
|
||||
color: #900;
|
||||
border-left: 2px solid #b00;
|
||||
border-right: 2px solid #b00;
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
<roundcube:object name="doctype" value="html5" />
|
||||
<html>
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<roundcube:include file="/includes/header.html" />
|
||||
|
||||
<div id="mainscreen">
|
||||
|
||||
<div id="mailview-left">
|
||||
<roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('moveto', this.options[this.selectedIndex].value)" class="mailboxlist" folder_filter="mail" />
|
||||
|
||||
<!-- folders list -->
|
||||
<div id="mailboxcontainer" class="uibox listbox">
|
||||
<div class="scroller">
|
||||
<roundcube:object name="mailboxlist" id="mailboxlist"class="listing" folder_filter="mail" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="mailview-right">
|
||||
|
||||
<!-- toolbar -->
|
||||
<div id="messagetoolbar" class="fullwidth">
|
||||
<roundcube:include file="/includes/mailtoolbar.html" />
|
||||
</div>
|
||||
|
||||
<div id="mailview-top">
|
||||
<div id="messageheader" class="uibox">
|
||||
<roundcube:object name="messageHeaders" class="headers-table" addicon="/images/addcontact.png" />
|
||||
<roundcube:object name="messageFullHeaders" id="full-headers" />
|
||||
</div>
|
||||
|
||||
<div id="messagecontent" class="uibox">
|
||||
<div class="rightcol">
|
||||
<roundcube:object name="messageAttachments" id="attachment-list" />
|
||||
</div>
|
||||
<div class="leftcol">
|
||||
<roundcube:object name="messageObjects" id="message-objects" />
|
||||
<roundcube:object name="messageBody" id="messagebody" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- list footer -->
|
||||
<div id="messagelistfooter" class="rightalign">
|
||||
<div id="countcontrols" class="pagenav">
|
||||
<roundcube:object name="messageCountDisplay" class="countdisplay" />
|
||||
<roundcube:button command="firstmessage" type="link" class="button firstpage disabled" classAct="button firstpage" classSel="button firstpage pressed" innerClass="inner" title="firstmessage" content="|&lt;" />
|
||||
<roundcube:button command="previousmessage" type="link" class="button prevpage disabled" classAct="button prevpage" classSel="button prevpage pressed" innerClass="inner" title="previousmessage" content="&lt;" />
|
||||
<roundcube:button command="nextmessage" type="link" class="button nextpage disabled" classAct="button nextpage" classSel="button nextpage pressed" innerClass="inner" title="nextmessage" content="&gt;" />
|
||||
<roundcube:button command="lastmessage" type="link" class="button lastpage disabled" classAct="button lastpage" classSel="button lastpage pressed" innerClass="inner" title="lastmessage" content="&gt;|" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- end mailview-top -->
|
||||
|
||||
<div id="mailview-bottom" class="uibox">
|
||||
<roundcube:object name="message" id="message" class="statusbar" />
|
||||
</div>
|
||||
|
||||
</div><!-- end mailview-right -->
|
||||
|
||||
</div><!-- end mainscreen -->
|
||||
|
||||
<roundcube:include file="/includes/footer.html" />
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,36 @@
|
||||
<roundcube:object name="doctype" value="html5" />
|
||||
<html>
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
</head>
|
||||
<body class="extwin">
|
||||
|
||||
<div id="header">
|
||||
<div id="topline">
|
||||
<div class="topright">
|
||||
<a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="topnav">
|
||||
<roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" />
|
||||
</div>
|
||||
|
||||
<br style="clear:both" />
|
||||
</div>
|
||||
|
||||
<div id="mainscreen">
|
||||
|
||||
<div id="partheader" class="uibox">
|
||||
<roundcube:object name="messagePartControls" class="headers-table" />
|
||||
</div>
|
||||
|
||||
<div id="messagepartcontainer" class="uibox">
|
||||
<roundcube:object name="messagePartFrame" id="messagepartframe" style="width:100%; height:100%" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,19 @@
|
||||
<roundcube:object name="doctype" value="html5" />
|
||||
<html>
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<link rel="shortcut icon" href="/images/favicon.ico"/>
|
||||
<link rel="stylesheet" type="text/css" href="/print.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="header"><roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" /></div>
|
||||
|
||||
<div id="printmessageframe">
|
||||
<roundcube:object name="messageHeaders" class="headers-table" />
|
||||
<roundcube:object name="messageAttachments" id="attachment-list" />
|
||||
<roundcube:object name="messageBody" id="messagebody" showImages="false" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,271 @@
|
||||
/**
|
||||
* Roundcube functions for default skin interface
|
||||
*/
|
||||
|
||||
|
||||
function rcube_mail_ui()
|
||||
{
|
||||
var popups = {};
|
||||
var popupconfig = {
|
||||
forwardmenu: { editable:1 },
|
||||
searchmenu: { editable:1, callback:searchmenu },
|
||||
listoptions: { editable:1 },
|
||||
dragmessagemenu: { sticky:1 },
|
||||
groupmenu: { above:1 },
|
||||
mailboxmenu: { above:1 },
|
||||
composeoptionsmenu: { editable:1, overlap:1 },
|
||||
// toggle: #1486823, #1486930
|
||||
'attachment-form': { editable:1, above:1, toggle:!bw.ie&&!bw.linux },
|
||||
'upload-form': { editable:1, toggle:!bw.ie&&!bw.linux }
|
||||
};
|
||||
|
||||
var me = this;
|
||||
|
||||
// export public methods
|
||||
this.init = init;
|
||||
this.show_popup = show_popup;
|
||||
this.set_searchmod = set_searchmod;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function init()
|
||||
{
|
||||
if (rcmail.env.task == 'mail') {
|
||||
rcmail.addEventListener('menu-open', function(){ show_popup('listoptions'); });
|
||||
rcmail.addEventListener('menu-save', save_listoptions);
|
||||
// rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui);
|
||||
// rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui);
|
||||
rcmail.gui_object('message_dragmenu', 'dragmessagemenu');
|
||||
$('#mailpreviewtoggle').click(function(e){ toggle_preview_pane(e); return false });
|
||||
|
||||
if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') {
|
||||
init_messageview();
|
||||
}
|
||||
}
|
||||
|
||||
$(document.body).bind('mouseup', function(e){
|
||||
var config, obj, target = e.target;
|
||||
for (var id in popups) {
|
||||
obj = popups[id];
|
||||
config = popupconfig[id];
|
||||
if (obj.is(':visible')
|
||||
&& target.id != id+'link'
|
||||
&& !config.toggle
|
||||
&& (!config.editable || !target_overlaps(target, obj.get(0)))
|
||||
&& (!config.sticky || !rcube_mouse_is_over(e, obj.get(0)))
|
||||
) {
|
||||
var myid = id+'';
|
||||
window.setTimeout(function(){ show_popupmenu(myid, false) }, 10);
|
||||
}
|
||||
}
|
||||
})
|
||||
.bind('keyup', function(e){
|
||||
if (e.keyCode == 27) {
|
||||
for (var id in popups) {
|
||||
if (popups[id].is(':visible'))
|
||||
show_popup(id, false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust UI objects of the mail view screen
|
||||
*/
|
||||
function init_messageview()
|
||||
{
|
||||
$('#messagecontent').css('top', ($('#messageheader').outerHeight() + 10) + 'px');
|
||||
$('#message-objects div a').addClass('button');
|
||||
|
||||
if (!$('#attachment-list li').length) {
|
||||
$('#messagecontent div.rightcol').hide();
|
||||
$('#messagecontent .leftcol').css('margin-right', '0');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger for popup menus
|
||||
*/
|
||||
function show_popup(popup, show, config)
|
||||
{
|
||||
// auto-register menu object
|
||||
if (config || !popupconfig[popup])
|
||||
popupconfig[popup] = $.extend(popupconfig[popup] || {}, config);
|
||||
|
||||
var visible = show_popupmenu(popup, show),
|
||||
config = popupconfig[popup];
|
||||
if (typeof config.callback == 'function')
|
||||
config.callback(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show/hide a specific popup menu
|
||||
*/
|
||||
function show_popupmenu(popup, show)
|
||||
{
|
||||
var obj = popups[popup],
|
||||
config = popupconfig[popup],
|
||||
ref = $('#'+popup+'link'),
|
||||
above = config.above;
|
||||
|
||||
if (!obj) {
|
||||
obj = popups[popup] = $('#'+popup);
|
||||
obj.appendTo(document.body); // move them to top for proper absolute positioning
|
||||
}
|
||||
|
||||
if (!obj || !obj.length)
|
||||
return false;
|
||||
|
||||
if (typeof show == 'undefined')
|
||||
show = obj.is(':visible') ? false : true;
|
||||
else if (config.toggle && show && obj.is(':visible'))
|
||||
show = false;
|
||||
|
||||
if (show && ref) {
|
||||
var parent = ref.parent(),
|
||||
win = $(window),
|
||||
pos;
|
||||
|
||||
if (parent.hasClass('dropbutton'))
|
||||
ref = parent;
|
||||
|
||||
pos = ref.offset();
|
||||
ref.offsetHeight = ref.outerHeight();
|
||||
if (!above && pos.top + ref.offsetHeight + obj.height() > win.height())
|
||||
above = true;
|
||||
if (pos.left + obj.width() > win.width())
|
||||
pos.left = win.width() - obj.width() - 12;
|
||||
|
||||
obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.offsetHeight)) });
|
||||
}
|
||||
|
||||
obj[show?'show':'hide']();
|
||||
|
||||
// hide drop-down elements on buggy browsers
|
||||
if (bw.ie6 && config.overlap) {
|
||||
$('select').css('visibility', show?'hidden':'inherit');
|
||||
$('select', obj).css('visibility', 'inherit');
|
||||
}
|
||||
|
||||
return show;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function target_overlaps(target, elem)
|
||||
{
|
||||
while (target.parentNode) {
|
||||
if (target.parentNode == elem)
|
||||
return true;
|
||||
target = target.parentNode;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function toggle_preview_pane(e)
|
||||
{
|
||||
var button = $(e.target);
|
||||
var visible = !button.hasClass('enabled');
|
||||
|
||||
button.removeClass().addClass(visible ? 'enabled' : 'closed');
|
||||
|
||||
// rcmail.command('save-pref', { name:'preview_pane', value:(visible?1:0) });
|
||||
}
|
||||
|
||||
|
||||
/**** popup callbacks ****/
|
||||
|
||||
function searchmenu(show)
|
||||
{
|
||||
if (show && rcmail.env.search_mods) {
|
||||
var n, all,
|
||||
obj = popups['searchmenu'],
|
||||
list = $('input:checkbox[name="s_mods[]"]', obj),
|
||||
mbox = rcmail.env.mailbox,
|
||||
mods = rcmail.env.search_mods;
|
||||
|
||||
if (rcmail.env.task == 'mail') {
|
||||
mods = mods[mbox] ? mods[mbox] : mods['*'];
|
||||
all = 'text';
|
||||
}
|
||||
else {
|
||||
all = '*';
|
||||
}
|
||||
|
||||
if (mods[all])
|
||||
list.map(function() {
|
||||
this.checked = true;
|
||||
this.disabled = this.value != all;
|
||||
});
|
||||
else {
|
||||
list.prop('disabled', false).prop('checked', false);
|
||||
for (n in mods)
|
||||
$('#s_mod_' + n).prop('checked', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function save_listoptions()
|
||||
{
|
||||
show_popupmenu('listoptions', false);
|
||||
|
||||
var sort = $('input[name="sort_col"]:checked').val(),
|
||||
ord = $('input[name="sort_ord"]:checked').val(),
|
||||
thread = $('input[name="view"]:checked').val(),
|
||||
cols = $('input[name="list_col[]"]:checked')
|
||||
.map(function(){ return this.value; }).get();
|
||||
|
||||
rcmail.set_list_options(cols, sort, ord, thread == 'thread' ? 1 : 0);
|
||||
}
|
||||
|
||||
|
||||
function set_searchmod(elem)
|
||||
{
|
||||
var all, m, task = rcmail.env.task,
|
||||
mods = rcmail.env.search_mods,
|
||||
mbox = rcmail.env.mailbox;
|
||||
|
||||
if (!mods)
|
||||
mods = {};
|
||||
|
||||
if (task == 'mail') {
|
||||
if (!mods[mbox])
|
||||
mods[mbox] = rcube_clone_object(mods['*']);
|
||||
m = mods[mbox];
|
||||
all = 'text';
|
||||
}
|
||||
else { //addressbook
|
||||
m = mods;
|
||||
all = '*';
|
||||
}
|
||||
|
||||
if (!elem.checked)
|
||||
delete(m[elem.value]);
|
||||
else
|
||||
m[elem.value] = 1;
|
||||
|
||||
// mark all fields
|
||||
if (elem.value != all)
|
||||
return;
|
||||
|
||||
$('input:checkbox[name="s_mods[]"]').map(function() {
|
||||
if (this == elem)
|
||||
return;
|
||||
|
||||
this.checked = true;
|
||||
if (elem.checked) {
|
||||
this.disabled = true;
|
||||
delete m[this.value];
|
||||
}
|
||||
else {
|
||||
this.disabled = false;
|
||||
m[this.value] = 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|