Merge branch 'master' of github.com:roundcube/roundcubemail
2 files added
26 files modified
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Larry skin: Improved status message display for better visibility (#1488974) |
| | | - Fix Internet Explorer 11 detection (#1489434) |
| | | - Fix date column width to fit the widest possible date format (#1489368) |
| | | - Move certain user preference options to a collapsed "advanced" block (#1488829) |
| | |
| | | <div class="iframebox help_<roundcube:var name='env:action' />"> |
| | | <roundcube:object name="helpcontent" id="helpcontentframe" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <div class="iframebox"> |
| | | <roundcube:object name="filterframe" id="filter-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | |
| | | // webmail client settings |
| | | this.dblclick_time = 500; |
| | | this.message_time = 4000; |
| | | this.message_time = 5000; |
| | | this.identifier_expr = new RegExp('[^0-9a-z\-_]', 'gi'); |
| | | |
| | | // environment defaults |
| | |
| | | this.triggerEvent('message', { message:msg, type:type, timeout:timeout, object:obj }); |
| | | |
| | | if (timeout > 0) |
| | | setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout); |
| | | setTimeout(function() { ref.hide_message(id, type != 'loading'); }, timeout); |
| | | return id; |
| | | }; |
| | | |
| | |
| | | -o-text-overflow: ellipsis; |
| | | } |
| | | |
| | | /* This padding-left should be equal to the focused border-left + the focused padding-left */ |
| | | #contacts-table thead tr td:first-child, |
| | | #contacts-table tbody tr td:first-child { |
| | | border-left: 0; |
| | | padding-left: 8px; |
| | | } |
| | | |
| | | /* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */ |
| | | #contacts-table tbody tr.focused > td:first-child { |
| | | border-left: 4px solid #EBEBEB; |
| | | padding-left: 4px; |
| | | } |
| | | |
| | | #contacts-table .contact.readonly td |
| | | { |
| | | font-style: italic; |
| | |
| | | color: #CC0000; |
| | | } |
| | | |
| | | /* This padding-left minus the focused padding left should be half of the focused border-left */ |
| | | .messagelist thead tr td:first-child, |
| | | .messagelist tbody tr td:first-child { |
| | | border-left: 0; |
| | | padding-left: 6px; |
| | | } |
| | | |
| | | |
| | | /* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */ |
| | | .messagelist tbody tr.focused > td:first-child { |
| | | border-left: 8px solid #EBEBEB; |
| | | padding-left: 2px; |
| | | } |
| | | |
| | | .messagelist tr.selected td |
| | | { |
| | | color: #FFFFFF; |
| | |
| | | font-weight: bold; |
| | | } |
| | | |
| | | /* This padding-left should be equal to the focused border-left + the focused padding-left */ |
| | | #contacts-table thead tr td:first-child, |
| | | #contacts-table tbody tr td:first-child { |
| | | border-left: 0; |
| | | } |
| | | |
| | | /* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */ |
| | | #contacts-table tbody tr.focused > td:first-child { |
| | | border-left: 2px ridge #ffffff; |
| | | padding-left: 34px; |
| | | background-position-x: 4px !important; /* important to override selected class */ |
| | | } |
| | | |
| | | #contacts-table .group td.name { |
| | | background-position: 6px -1555px; |
| | | } |
| | |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 28px; |
| | | bottom: 0px; |
| | | border: 0; |
| | | border-radius: 4px; |
| | | } |
| | |
| | | |
| | | #import-box { |
| | | position: absolute; |
| | | bottom: 28px; |
| | | bottom: 0px; |
| | | top: 34px; |
| | | left: 0; |
| | | right: 0; |
| | |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eaeaea', endColorstr='#c8c8c8', GradientType=0); |
| | | } |
| | | |
| | | #messagestack div { |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e0404040', endColorstr='#e0303030', GradientType=0); |
| | | } |
| | | |
| | | .ui-dialog.popupmessage .ui-dialog-titlebar { |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e3e3e3', endColorstr='#cfcfcf', GradientType=0); |
| | | } |
| | |
| | | <roundcube:object name="message" id="messagestack" condition="env:task != 'login'" /> |
| | | |
| | | <script type="text/javascript"> |
| | | |
| | | // UI startup |
| | |
| | | top: 42px; |
| | | left: 0; |
| | | width: 100%; |
| | | bottom: 28px; |
| | | } |
| | | |
| | | #mailview-top.fullheight { |
| | | border-radius: 4px 4px 0 0; |
| | | bottom: 0px; |
| | | } |
| | | |
| | | #mailview-bottom { |
| | | display: none; |
| | | position: absolute; |
| | | left: 0; |
| | | bottom: 0; |
| | | width: 100%; |
| | | height: 27px; |
| | | height: 0; |
| | | border-radius: 4px; |
| | | border-top: none; |
| | | } |
| | |
| | | background: -ms-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); |
| | | background: linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); |
| | | border-radius: 0 0 4px 4px; |
| | | } |
| | | |
| | | #mailview-top.fullheight #messagelistfooter { |
| | | border-radius: 0; |
| | | } |
| | | |
| | | #messagelistfooter.rightalign { |
| | |
| | | |
| | | /*** message list ***/ |
| | | |
| | | /* this is necessary to make FF3 display borders */ |
| | | body:-moz-last-node #messagelist { |
| | | border-collapse: separate; |
| | | } |
| | | |
| | | table.messagelist { |
| | | z-index: 1; |
| | | } |
| | |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | bottom: 28px; |
| | | bottom: 0px; |
| | | } |
| | | |
| | | #messagecontframe { |
| | |
| | | top: 110px; |
| | | left: 0; |
| | | width: 100%; |
| | | bottom: 27px; |
| | | bottom: 1px; |
| | | overflow: auto; |
| | | -webkit-overflow-scrolling: touch; |
| | | } |
| | |
| | | top: 42px; |
| | | left: 0; |
| | | width: 100%; |
| | | bottom: 28px; |
| | | border-radius: 4px 4px 0 0; |
| | | border-bottom: none; |
| | | bottom: 0px; |
| | | overflow: hidden; |
| | | } |
| | | |
| | |
| | | left: 0; |
| | | right: 260px; |
| | | bottom: 0; |
| | | border-radius: 0 0 0 4px; |
| | | } |
| | | |
| | | #composebodycontainer.buttons { |
| | |
| | | bottom: 0; |
| | | width: 99%; |
| | | border: 0; |
| | | border-radius: 0; |
| | | border-radius: 0 0 0 4px; |
| | | padding: 8px 0 8px 8px; |
| | | resize: none; |
| | | font-family: monospace; |
| | |
| | | } |
| | | |
| | | #message.statusbar { |
| | | display: none; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | #messagestack { |
| | | position: absolute; |
| | | bottom: 14px; |
| | | right: 5px; |
| | | z-index: 50000; |
| | | width: auto; |
| | | height: auto; |
| | | max-height: 85%; |
| | | overflow-y: auto; |
| | | padding: 2px; |
| | | } |
| | | |
| | | #messagestack div { |
| | | display: block; |
| | | position: relative; |
| | | width: 280px; |
| | | height: auto; |
| | | min-height: 16px; |
| | | margin: 3px 2px 5px 2px; |
| | | padding: 8px 10px 7px 30px; |
| | | cursor: default; |
| | | font-size: 12px; |
| | | font-weight: bold; |
| | | border-radius: 4px; |
| | | border: 1px solid #444; |
| | | color: #ebebeb; |
| | | text-shadow: 0 1px 1px #000; |
| | | |
| | | background: rgba(64,64,64,0.9); |
| | | background: -moz-linear-gradient(top, rgba(64,64,64,0.9) 0%, rgba(48,48,48,0.9) 100%); |
| | | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(64,64,64,0.9)), color-stop(100%,rgba(48,48,48,0.9))); |
| | | background: -webkit-linear-gradient(top, rgba(64,64,64,0.9) 0%, rgba(48,48,48,0.9) 100%); |
| | | background: -o-linear-gradient(top, rgba(64,64,64,0.9) 0%, rgba(48,48,48,0.9) 100%); |
| | | background: -ms-linear-gradient(top, rgba(64,64,64,0.9) 0%, rgba(48,48,48,0.9) 100%); |
| | | background: linear-gradient(to bottom, rgba(64,64,64,0.9) 0%, rgba(48,48,48,0.9) 100%); |
| | | |
| | | -moz-box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888; |
| | | -webkit-box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888; |
| | | -o-box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888; |
| | | box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888; |
| | | } |
| | | |
| | | #messagestack div:after { |
| | | content: ""; |
| | | position: absolute; |
| | | display: block; |
| | | top: 0; |
| | | left: 4px; |
| | | width: 20px; |
| | | height: 24px; |
| | | background: url(images/messages_dark.png) 0 6px no-repeat; |
| | | } |
| | | |
| | | #messagestack div.error { |
| | | color: #ff615d; |
| | | } |
| | | |
| | | #messagestack div.error:after { |
| | | background-position: 0 -55px; |
| | | } |
| | | |
| | | #messagestack div.warning { |
| | | color: #f4bf0e; |
| | | } |
| | | |
| | | #messagestack div.warning:after { |
| | | background-position: 0 -84px; |
| | | } |
| | | |
| | | #messagestack div.confirmation { |
| | | color: #00e05a; |
| | | } |
| | | |
| | | #messagestack div.confirmation:after { |
| | | background-position: 0 -25px; |
| | | } |
| | | |
| | | #messagestack div.loading { |
| | | color: #ddd; |
| | | } |
| | | |
| | | #messagestack div.loading:after { |
| | | top: 4px; |
| | | left: 6px; |
| | | background: url(images/ajaxloader_dark.gif) 0 4px no-repeat; |
| | | } |
| | | |
| | | .ui-dialog.error .ui-dialog-title, |
| | |
| | | background-color: #fff; |
| | | } |
| | | |
| | | /* This padding-left minus the focused padding left should be half of the focused border-left */ |
| | | .records-table thead tr td:first-child, |
| | | .records-table tbody tr td:first-child { |
| | | border-left: 0; |
| | | padding-left: 6px; |
| | | } |
| | | |
| | | |
| | | /* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */ |
| | | .records-table tbody tr.focused > td:first-child { |
| | | border-left: 8px solid #DDDDDD; |
| | | padding-left: 2px; |
| | | } |
| | | |
| | | .records-table tr.selected td { |
| | |
| | | .records-table tr.deleted td a { |
| | | color: #ccc !important; |
| | | } |
| | | |
| | | |
| | | /*** iFrames ***/ |
| | | |
| | |
| | | top: 34px; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 28px; |
| | | bottom: 0px; |
| | | overflow: auto; |
| | | } |
| | | |
| | |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 28px; |
| | | bottom: 0px; |
| | | } |
| | | |
| | | .footerleft { |
| | |
| | | min-height: 40px; |
| | | padding: 5px 25px; |
| | | text-align: center; |
| | | font-size: 1.1em; |
| | | } |
| | | |
| | | #login-form #message div { |
| | | display: inline-block; |
| | | padding-right: 0; |
| | | font-size: 12px; |
| | | } |
| | | |
| | | #bottomline { |
| | |
| | | background-image: url(svggradient.php?c=eaeaea;c8c8c8); |
| | | } |
| | | |
| | | #messagestack div { |
| | | background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzQwNDA0MCIgc3RvcC1vcGFjaXR5PSIwLjg4Ii8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMzMDMwMzAiIHN0b3Atb3BhY2l0eT0iMC44OCIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); |
| | | } |
| | | |
| | | .ui-dialog.popupmessage .ui-dialog-titlebar { |
| | | background-image: url(svggradient.php?c=e3e3e3;cfcfcf); |
| | | } |
| | |
| | | <div class="iframebox"> |
| | | <roundcube:object name="addressframe" id="contact-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | |
| | |
| | | |
| | | </form> |
| | | |
| | | <div id="mailview-bottom" class="uibox"> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div><!-- end mailview-right --> |
| | | |
| | | </div><!-- end mainscreen --> |
| | |
| | | <div class="iframebox"> |
| | | <roundcube:object name="folderframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <div class="iframebox"> |
| | | <roundcube:object name="identityframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <roundcube:object name="importnav" class="button" /> |
| | | </p> |
| | | </div> |
| | | |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | |
| | | </div> |
| | | |
| | | <roundcube:include file="/includes/footer.html" /> |
| | |
| | | |
| | | <roundcube:object name="preloader" images=" |
| | | /images/ajaxloader.gif |
| | | /images/ajaxloader_dark.gif |
| | | /images/buttons.png |
| | | /images/addcontact.png |
| | | /images/filetypes.png |
| | | /images/listicons.png |
| | | /images/messages.png |
| | | /images/messages_dark.png |
| | | /images/quota.png |
| | | /images/selector.png |
| | | /images/splitter.png |
| | |
| | | <style type="text/css"> |
| | | <roundcube:if condition="config:preview_pane == true" /> |
| | | #mailview-top { height: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter-48 : 276" />px; } |
| | | #mailview-bottom { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+6 : 330" />px; height: auto; } |
| | | #mailview-bottom { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+6 : 330" />px; height: auto; display: block; } |
| | | #mailpreviewframe { display: block; } |
| | | <roundcube:endif /> |
| | | </style> |
| | |
| | | <div id="mailpreviewframe" class="iframebox"> |
| | | <roundcube:object name="messagecontentframe" id="messagecontframe" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | |
| | | </div><!-- end mailview-bottom --> |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | |
| | | </div><!-- end mailview-right --> |
| | | |
| | | </div><!-- end mainscreen --> |
| | |
| | | |
| | | <div id="messagecontent" class="watermark"></div> |
| | | |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | |
| | | </div><!-- end mailview-right --> |
| | | |
| | | </div><!-- end mainscreen --> |
| | |
| | | <div class="iframebox"> |
| | | <roundcube:object name="messagePartFrame" id="messagepartframe" frameborder="0" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | |
| | | <div id="pluginbody" class="uibox contentbox"> |
| | | <roundcube:object name="plugin.body" /> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <div class="iframebox"> |
| | | <roundcube:object name="responseframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <div class="iframebox"> |
| | | <roundcube:object name="prefsframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" /> |
| | | </div> |
| | | <roundcube:object name="message" id="message" class="statusbar" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | */ |
| | | function message_displayed(p) |
| | | { |
| | | var siblings = $(p.object).siblings('div'); |
| | | if (siblings.length) |
| | | $(p.object).insertBefore(siblings.first()); |
| | | |
| | | // show a popup dialog on errors |
| | | if (p.type == 'error' && rcmail.env.task != 'login') { |
| | | if (me.message_timer) { |
| | |
| | | me.messagedialog.dialog('destroy').hide(); |
| | | }, |
| | | position: ['center', pos.top], |
| | | hide: { effect:'drop', direction:'down' }, |
| | | hide: { effect:'drop', direction:'right' }, |
| | | width: 420, |
| | | minHeight: 90 |
| | | }).show(); |
| | | |
| | | me.message_timer = window.setTimeout(function(){ me.messagedialog.dialog('close'); }, Math.max(2000, p.timeout / 2)); |
| | | me.message_timer = window.setTimeout(function(){ me.messagedialog.dialog('close'); }, Math.max(3000, p.timeout / 2)); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | if (visible) { |
| | | $('#mailview-top').removeClass('fullheight').css({ bottom:'auto' }); |
| | | $('#mailview-bottom').css({ height:'auto' }); |
| | | $('#mailview-bottom').css({ height:'auto' }).show(); |
| | | |
| | | rcmail.env.contentframe = 'messagecontframe'; |
| | | if (uid = rcmail.message_list.get_single_selection()) |
| | |
| | | rcmail.env.contentframe = null; |
| | | rcmail.show_contentframe(false); |
| | | |
| | | $('#mailview-top').addClass('fullheight').css({ height:'auto', bottom:'28px' }); |
| | | $('#mailview-bottom').css({ top:'auto', height:'26px' }); |
| | | $('#mailview-top').addClass('fullheight').css({ height:'auto', bottom:'0px' }); |
| | | $('#mailview-bottom').css({ top:'auto', height:'0px' }).hide(); |
| | | |
| | | if (mailviewsplit.handle) |
| | | mailviewsplit.handle.hide(); |