Add files via upload

This commit is contained in:
seb1k 2024-06-19 00:10:06 +02:00 committed by GitHub
parent 0329a1b3b4
commit 5b1812a49f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 132 additions and 58 deletions

View file

@ -347,7 +347,7 @@ pre code{font-size:inherit;color:inherit;word-break:normal}
.offset-xl-11{margin-left:91.666667%} .offset-xl-11{margin-left:91.666667%}
} }
.table{width:100%;margin-bottom:1rem;color:#212529} .table{width:100%;margin-bottom:1rem;color:#212529}
.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6} .table td,.table th{padding:.75rem;vertical-align:top;}
.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6} .table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}
.table tbody+tbody{border-top:2px solid #dee2e6} .table tbody+tbody{border-top:2px solid #dee2e6}
.table-sm td,.table-sm th{padding:.3rem} .table-sm td,.table-sm th{padding:.3rem}
@ -399,20 +399,9 @@ pre code{font-size:inherit;color:inherit;word-break:normal}
.table-dark.table-bordered{border:0} .table-dark.table-bordered{border:0}
.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)} .table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}
.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)} .table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}
@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-responsive-sm>.table-bordered{border:0}
}
@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-responsive-md>.table-bordered{border:0}
}
@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-responsive-lg>.table-bordered{border:0}
}
@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-responsive-xl>.table-bordered{border:0}
}
.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-responsive>.table-bordered{border:0}
.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out} .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}
@media (prefers-reduced-motion:reduce){.form-control{transition:none} @media (prefers-reduced-motion:reduce){.form-control{transition:none}
} }

View file

@ -14,8 +14,7 @@
"additional_logo_types": ["dark", "small", "small-dark"] "additional_logo_types": ["dark", "small", "small-dark"]
}, },
"meta": { "meta": {
"viewport": "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0", "viewport": "width=device-width, initial-scale=1.0, shrink-to-fit=no, maximum-scale=1.0",
"theme-color": "#f4f4f4", "theme-color": "#ffffff"
"msapplication-navbutton-color": "#f4f4f4"
} }
} }

32
styles/styles.min.css vendored
View file

@ -18,6 +18,15 @@ html.dark-mode {
} }
fieldset:nth-of-type(1) legend {
display:none;
}
#pluginlist td{
padding:2px 10px
}
.insummary{ .insummary{
opacity:.5; opacity:.5;
padding:5px; padding:5px;
@ -934,11 +943,18 @@ vertical-align:top;
float:initial !important; float:initial !important;
} }
#mailtoolbar{
margin-top:-25px;
}
#mailtoolbar a{ #mailtoolbar a{
display:inline-block; display:inline-block;
} }
.header-headers td.date{
position:absolute;
right:20px;
}
html.layout-normal #mailtoolbar span, html.layout-normal #mailtoolbar span,
html.layout-small #mailtoolbar span{ html.layout-small #mailtoolbar span{
@ -3669,6 +3685,7 @@ color: var(--font2);
white-space: nowrap; white-space: nowrap;
vertical-align: middle; vertical-align: middle;
color: #2c363a; color: #2c363a;
padding: 0 .5rem;
} }
@ -3770,11 +3787,6 @@ html.layout-small td.selection {
opacity: 0.4; opacity: 0.4;
} }
html:not(.touch) .listing li > a,
html:not(.touch) .listing tbody tr > td:first-child,
html:not(.touch) .listing:not(.withselection) tbody tr > td.selection + td {
}
html:not(.touch) .listing li > a:focus, html:not(.touch) .listing li > a:focus,
html:not(.touch) .listing.focus tbody tr.focused > td:first-child, html:not(.touch) .listing.focus tbody tr.focused > td:first-child,
html:not(.touch) .listing.focus:not(.withselection) tbody tr.focused > td.selection + td { html:not(.touch) .listing.focus:not(.withselection) tbody tr.focused > td.selection + td {
@ -3851,9 +3863,10 @@ ul.listing.simplelist li {
font-weight: 700; font-weight: 700;
} }
html.touch .listing tbody td,
html.touch .listing:not(.toolbar) li { html:not(.layout-large) .listing tbody td,
line-height: 47px; html:not(.layout-large) .listing:not(.toolbar) li {
line-height: 44px;
font-size: 1.2rem; font-size: 1.2rem;
} }
@ -6750,7 +6763,8 @@ body.task-error-login #layout #layout-content > .header{
#message-header .header-content { #message-header .header-content {
min-height: 4rem; min-height: 4rem;
flex: 1; flex: 1;
max-width: 200px; width: calc(100vw - 230px);
white-space: nowrap;
} }

View file

@ -36,6 +36,22 @@
<div id="compose-options" class="formcontent" role="region" aria-labelledby="aria-label-composeoptions"> <div id="compose-options" class="formcontent" role="region" aria-labelledby="aria-label-composeoptions">
<h2 id="aria-label-composeoptions" class="voice"><roundcube:label name="arialabelcomposeoptions" /></h2> <h2 id="aria-label-composeoptions" class="voice"><roundcube:label name="arialabelcomposeoptions" /></h2>
<roundcube:container name="composeoptions" id="compose-options" /> <roundcube:container name="composeoptions" id="compose-options" />
<div class="form-group row form-check">
<label for="fromButton" class="col-form-label col-6"><roundcube:label name="from" /></label>
<div class="col-6 form-check">
<input name="fromButton" id="fromButton" tabindex="2" class="form-check-input" value="1" type="checkbox" onchange="click_from_button(this)" disabled>
</div>
</div>
<div class="form-group row form-check">
<label for="compose-priority2022" class="col-form-label col-6"><span style="color:#f88;font-weight:bold;font-size:16px;">! </span> High Importance</label>
<div class="col-6 form-check">
<input name="_dsn" id="compose-priority2022" tabindex="2" class="form-check-input" value="1" type="checkbox" onchange="define_priority(this)">
</div>
</div>
<roundcube:if condition="!in_array('mdn_default', (array)config:dont_override)" /> <roundcube:if condition="!in_array('mdn_default', (array)config:dont_override)" />
<div class="form-group row form-check"> <div class="form-group row form-check">
<label for="compose-mdn" class="col-form-label col-6"><roundcube:label name="returnreceipt" /></label> <label for="compose-mdn" class="col-form-label col-6"><roundcube:label name="returnreceipt" /></label>
@ -52,25 +68,20 @@
</div> </div>
</div> </div>
<roundcube:endif /> <roundcube:endif />
<div class="form-group row"> <div class="form-group row" style="display:none">
<label for="compose-priority" class="col-form-label col-6"><roundcube:label name="priority" /></label> <label for="compose-priority" class="col-form-label col-6"><roundcube:label name="priority" /></label>
<div class="col-6"> <div class="col-6">
<roundcube:object name="prioritySelector" id="compose-priority" noform="true" tabindex="2" class="custom-select" /> <roundcube:object name="prioritySelector" id="compose-priority" noform="true" tabindex="2" class="custom-select" />
</div> </div>
</div> </div>
<roundcube:if condition="!config:no_save_sent_messages" />
<div class="form-group row">
<label for="compose-store-target" class="col-form-label col-6"><roundcube:label name="savesentmessagein" /></label>
<div class="col-6">
<roundcube:object name="storetarget" id="compose-store-target" noform="true" tabindex="2" class="custom-select" />
</div>
</div>
<roundcube:endif />
</div> </div>
</div> </div>
</div> </div>
<div id="layout-content" class="listbox selected" role="main"> <div id="layout-content" class="listbox selected" role="main" ondrag="log('a')" dragover="log('b')" dragenter="log('c')" drop="log('d')">
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2> <h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
<div class="header"> <div class="header">
@ -127,6 +138,11 @@
<!-- message headers --> <!-- message headers -->
<div id="compose-headers" role="region" aria-labelledby="aria-label-composeheaders"> <div id="compose-headers" role="region" aria-labelledby="aria-label-composeheaders">
<h2 id="aria-label-composeheaders" class="voice"><roundcube:label name="arialabelmessageheaders" /></h2> <h2 id="aria-label-composeheaders" class="voice"><roundcube:label name="arialabelmessageheaders" /></h2>
<table style="width:100%"><tr><td class="hide_small" style=" width: 1%;vertical-align:middle">
<roundcube:button command="send" class="btn btn-primary send" label="send" tabindex="1" data-content-button="true" style="height: 50px; padding-right: 12px;"/>
</td>
<td>
<div class="compose-headers"> <div class="compose-headers">
<div id="compose_from" class="form-group row"> <div id="compose_from" class="form-group row">
<label for="_from" class="col-2 col-form-label"><roundcube:label name="from" /></label> <label for="_from" class="col-2 col-form-label"><roundcube:label name="from" /></label>
@ -216,6 +232,7 @@
</div> </div>
</div> </div>
</div> </div>
</td></tr></table>
</div> </div>
<!-- message compose body --> <!-- message compose body -->
<div id="composebodycontainer"> <div id="composebodycontainer">
@ -226,12 +243,6 @@
<roundcube:endif /> <roundcube:endif />
</div> </div>
</form> </form>
<div class="formbuttons">
<roundcube:button command="send" class="btn btn-primary send" label="send" tabindex="1" data-content-button="true" />
<div class="float-right">
<roundcube:button command="extwin" type="link" label="openinextwin" data-hidden="small" class="button icon btn btn-link extwin" data-tabindex="1" condition="!env:extwin" />
</div>
</div>
</div> </div>
</div> </div>

View file

@ -12,7 +12,7 @@
<roundcube:add_label name="choosefiles" /> <roundcube:add_label name="choosefiles" />
<roundcube:object name="doctype" value="html5" /> <roundcube:object name="doctype" value="html5" />
<roundcube:if condition="!env:framed || env:extwin" /> <roundcube:if condition="!env:framed || env:extwin" />
<html> <html class="layout-small">
<roundcube:else /> <roundcube:else />
<html class="iframe"> <html class="iframe">
<roundcube:endif /> <roundcube:endif />

View file

@ -1 +0,0 @@

View file

@ -1,7 +1,7 @@
<div id="layout-sidebar" class="listbox<roundcube:exp expression="!request:_action ? ' selected' : ''"/>" role="navigation" aria-labelledby="aria-label-settingstabs"> <div id="layout-sidebar" class="listbox<roundcube:exp expression="!request:_action ? ' selected' : ''"/>" role="navigation" aria-labelledby="aria-label-settingstabs">
<div class="header"> <div class="header">
<a style="width:40px;font-size: 1.75rem;height: 58px;text-decoration:none;text-align:center;" href="./?_task=mail"><i class="sebicon backicon"></i></a> <a style="width:40px;font-size: 1.75rem;height: 58px;text-decoration:none;text-align:center;" href="./?_task=mail"><i class="sebicon backicon" style="font-size:1.75rem"></i></a>
<span id="aria-label-settingstabs" class="header-title"><roundcube:label name="settings" /></span> <span id="aria-label-settingstabs" class="header-title"><roundcube:label name="settings" /></span>
</div> </div>
<div class="scroller"> <div class="scroller">

View file

@ -18,7 +18,7 @@
<h1 class="voice"><roundcube:label name="mail" /></h1> <h1 class="voice"><roundcube:label name="mail" /></h1>
<!-- folders list --> <!-- folders list -->
<div id="layout-sidebar" class="listbox" role="navigation" aria-labelledby="aria-label-folderlist"> <div id="layout-sidebar" class="listbox hidden" role="navigation" aria-labelledby="aria-label-folderlist">
<span class="header-title username" style="padding: 0 10px;"></span> <span class="header-title username" style="padding: 0 10px;"></span>
@ -135,7 +135,7 @@
</div> </div>
<!-- message preview --> <!-- message preview -->
<div id="layout-content"> <div id="layout-content" class="hidden">
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2> <h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
<div class="header_back"> <div class="header_back">

82
ui.min.js vendored
View file

@ -19,7 +19,6 @@ warn = function() { return Function.prototype.bind.call(console.warn, console
error = function() { return Function.prototype.bind.call(console.error, console);}(); error = function() { return Function.prototype.bind.call(console.error, console);}();
"use strict"; "use strict";
function rcube_elastic_ui() function rcube_elastic_ui()
@ -102,6 +101,8 @@ function rcube_elastic_ui()
// Detect screen size/mode // Detect screen size/mode
screen_mode(); screen_mode();
screen_resize_html() //prevent ugly blinking on phone
// Initialize layout // Initialize layout
layout_init(); layout_init();
@ -749,7 +750,24 @@ if(rcmail.env.action=="preview")
$('#compose-options').prepend(this) $('#compose-options').prepend(this)
}); });
} }
//From button
var fromButton = rcmail.get_cookie('fromButton');
if(fromButton==null) // if no pref in cookie
{
fromButton=true;
if(_from.options.length==1) //by default, show nothing if there is only 1 address
fromButton = "false";
} }
if(fromButton=="false")
$('#compose_from').hide();
else
$('#fromButton').prop( "checked", true );
}
$('#fromButton').prop( "disabled", false );
// In compose/preview window we do not provide "Back" button, instead // In compose/preview window we do not provide "Back" button, instead
// we modify the "Mail" button in the task menu to act like it (i.e. calls 'list' command) // we modify the "Mail" button in the task menu to act like it (i.e. calls 'list' command)
@ -768,6 +786,7 @@ if(rcmail.env.action=="preview")
// restore headers view to last state // restore headers view to last state
//headers_show(); //headers_show();
elastic2022_change_mailheader()
} }
} }
else if (rcmail.task == 'settings') { else if (rcmail.task == 'settings') {
@ -869,14 +888,17 @@ if(rcmail.env.action=="preview")
$('.click_change_theme').removeClass('dark').addClass('light').find('span') $('.click_change_theme').removeClass('dark').addClass('light').find('span')
$('.sebicon_contrast_txt').text(rcmail.gettext('lightmode')); $('.sebicon_contrast_txt').text(rcmail.gettext('lightmode'));
$('html').addClass('dark-mode'); $('html').addClass('dark-mode');
$('meta[name="theme-color"]').attr('content', '#1A1C1E')
} }
else { else {
$('#taskmenu a.theme').removeClass('light').addClass('dark').find('span').text(rcmail.gettext('darkmode')); $('#taskmenu a.theme').removeClass('light').addClass('dark').find('span').text(rcmail.gettext('darkmode'));
$('.click_change_theme').removeClass('light').addClass('dark').find('span') $('.click_change_theme').removeClass('light').addClass('dark').find('span')
$('.sebicon_contrast_txt').text(rcmail.gettext('darkmode')); $('.sebicon_contrast_txt').text(rcmail.gettext('darkmode'));
$('html').removeClass('dark-mode'); $('html').removeClass('dark-mode');
$('meta[name="theme-color"]').attr('content', '#ffffff')
} }
screen_logo(mode); screen_logo(mode);
$('iframe').each(switch_iframe_color_mode); $('iframe').each(switch_iframe_color_mode);
}; };
@ -4650,9 +4672,9 @@ function scroll_mailbymail(e)
var scrollTop=mlc.scrollTop var scrollTop=mlc.scrollTop
//find first shown tr //find first shown tr
var trs=messagelist.querySelectorAll('tr') var trs=messagelist.querySelectorAll('tr:not([style*="display:none"])')
for(var i=1;i<trs.length;i++) for(var i=1;i<trs.length;i++)
if(scrollTop<=trs[i].offsetTop) if(trs[i].style.display!="none" && scrollTop<=trs[i].offsetTop)
break; break;
if(trs[i].offsetTop-scrollTop>15 && e.deltaY>0) i--; if(trs[i].offsetTop-scrollTop>15 && e.deltaY>0) i--;
@ -4728,9 +4750,7 @@ if(parent.rcmail.env.archive_folder) // Archive plugin
li_prev.parentElement.insertBefore(li,li_prev); li_prev.parentElement.insertBefore(li,li_prev);
//small //small
log('show')
parent.document.getElementById("header_topmenu_archive").style.display="inline-block" parent.document.getElementById("header_topmenu_archive").style.display="inline-block"
log(parent.document.getElementById("header_topmenu_archive"))
} }
} }
@ -5239,13 +5259,9 @@ function go_PWA()
var href = window.location.href var href = window.location.href
var url = href.substring(0, href.lastIndexOf('/')) + "/"; var url = href.substring(0, href.lastIndexOf('/')) + "/";
var theme_color = "#ffffff"
if($('HTML')[0].classList.contains('dark-mode'))
theme_color = "#000000"
var myDynamicManifest = { var myDynamicManifest = {
"name": "Rouncube", "name": "Rouncube",
theme_color: theme_color, "theme_color": $('meta[name="theme-color"]').attr('content'),
"start_url": url, "start_url": url,
"icons": [{ "icons": [{
"src": url+"/skins/elastic2022/images/rc192x192.png", "src": url+"/skins/elastic2022/images/rc192x192.png",
@ -5309,3 +5325,49 @@ function plugin_switchIdent_addCbElastic2022($sw) {
return false; return false;
} }
function elastic2022_change_mailheader()
{
var trdate = $('.header-headers .date')[0].closest('tr')
trdate.querySelector('.header-title').style.visibility="hidden"
trdate.parentElement.appendChild(trdate); // move date to last line
var fromhref = $('.header-headers .from .adr a')[0].href
var replyto = $('.header-headers .replyto')
if(replyto.length) // delete replyTo if same as "from"
{
var replytohref = replyto[0].querySelector('a').href
if(replytohref==fromhref)
{
replyto.parent().hide()
}
}
var sender = $('.header-headers .sender')
if(sender.length) // delete sender if same as "from"
{
var senderhrefhref = replyto[0].querySelector('a').href
if(senderhrefhref==fromhref)
{
sender.parent().hide()
}
}
}
function click_from_button(e)
{
if(e.disabled) return;
var ischecked = e.checked
rcmail.set_cookie('fromButton', ischecked, false);
if(ischecked) $('#compose_from').show();
else $('#compose_from').hide();
}