Add files via upload
140
README.md
|
@ -1,51 +1,119 @@
|
||||||
# Elastic2022
|
Roundcube Webmail Skin "Elastic"
|
||||||
|
================================
|
||||||
|
|
||||||
|
This skin package contains a theme for the Roundcube Webmail
|
||||||
|
software. It can be used, modified and redistributed according to
|
||||||
|
the terms described in the LICENSE section.
|
||||||
|
|
||||||
|
For information about building or modifying Roundcube skins please visit
|
||||||
|
https://github.com/roundcube/roundcubemail/wiki/Skins
|
||||||
|
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
-------
|
||||||
|
|
||||||
Elastic2022 is a Roundcube skin based on Elastic
|
The contents of this folder 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
|
||||||
|
authors in the README.md file.
|
||||||
|
See http://creativecommons.org/licenses/by-sa/3.0/ for details.
|
||||||
|
|
||||||
|
This folder also contains code licensed separately:
|
||||||
|
- Bootstrap Framework 4 from https://github.com/twbs/bootstrap
|
||||||
|
- FontAwesome 5 fonts from https://fontawesome.com/
|
||||||
|
- Roboto font from https://google-webfonts-helper.herokuapp.com/fonts/roboto?subsets=cyrillic,latin-ext,cyrillic-ext,latin,greek,greek-ext
|
||||||
|
|
||||||
|
|
||||||
- Design changed to fit android dark theme.
|
INSTALLATION
|
||||||
- Better user interface
|
------------
|
||||||
- Modern menus
|
|
||||||
- Plugin support
|
All styles are written using LESS syntax. Thus it needs to be compiled
|
||||||
- New Dark / Light mode
|
using the `lessc` (>= 2.5.2) command line tool. This comes with the `nodejs-less`
|
||||||
|
RPM package or using `npm install less` which depend on nodejs.
|
||||||
|
```
|
||||||
|
$ lessc --clean-css="--s1 --advanced" styles/styles.less > styles/styles.min.css
|
||||||
|
$ lessc --clean-css="--s1 --advanced" styles/print.less > styles/print.min.css
|
||||||
|
$ lessc --clean-css="--s1 --advanced" styles/embed.less > styles/embed.min.css
|
||||||
|
```
|
||||||
|
(`--clean-css="--s1 --advanced"` minifies the css, requires the clean-css Less plugin.
|
||||||
|
The plugin can be installed using `npm install less-plugin-clean-css`)
|
||||||
|
|
||||||
|
References to image files from the included CSS files can be appended
|
||||||
|
with cache-buster marks to avoid browser caching issues after updating.
|
||||||
|
|
||||||
|
Run `bin/updatecss.sh --dir skins/elastic` before packaging the skin
|
||||||
|
or after installing it on the destination system.
|
||||||
|
|
||||||
|
|
||||||
## New features
|
FOR DEVELOPERS
|
||||||
### Pull down to refresh email
|
--------------
|
||||||
<img src="https://raw.githubusercontent.com/seb1k/Elastic2022/main/img/pulltorefresh.gif " width="200"/>
|
|
||||||
|
|
||||||
### Email autoresize
|
- Supported browsers: IE11+, Edge, Last 2 versions for Chrome/Firefox/Safari,
|
||||||
<img src="https://raw.githubusercontent.com/seb1k/Elastic2022/main/img/autoresize.jpg" width="100"/>
|
Android Browser 5+, iOS Safari 9+.
|
||||||
|
|
||||||
### Contact thumbail
|
- Skin color palette changes and other css modifications can be done
|
||||||
![screenshot](img/preview-icon.png)
|
via _styles.less and _variables.less files. Where you can overwrite all
|
||||||
|
variables and add custom styles.
|
||||||
|
|
||||||
## Screenshot
|
- Minimum supported screen width is 240px (note that even if the device screen
|
||||||
|
resolution is e.g.320x372 changing the text size in device settings will reduce
|
||||||
|
the resolution)
|
||||||
|
|
||||||
![screenshot](img/2022-2.png)
|
- Every page (which is not a frame) has following required structure:
|
||||||
![screenshot](img/phone2.png)
|
```
|
||||||
|
<body>
|
||||||
|
<div id="layout">
|
||||||
|
<div id="layout-menu"></div>
|
||||||
|
<div id="layout-sidebar"></div>
|
||||||
|
<div id="layout-list"></div>
|
||||||
|
<div id="layout-content"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
```
|
||||||
|
where `#layout-sidebar` and `#layout-list` are optional. Which element of the `#layout` will be displayed
|
||||||
|
as a main view on mobile devices can be defined by adding `selected` class to it.
|
||||||
|
|
||||||
![screenshot](img/phone2.jpg)
|
- The `<html>` element will receive special classes that will be updated on resize
|
||||||
|
or orientation change:
|
||||||
|
- `touch`: A touch device, screen width <= 1024px,
|
||||||
|
- `layout-large`: Screen width > 1200px,
|
||||||
|
- `layout-normal`: Screen width <= 1200px and >= 768px,
|
||||||
|
- `layout-small`: Screen width < 768px and > 480px,
|
||||||
|
- `layout-phone`: Screen width <= 480px.
|
||||||
|
|
||||||
|
Frames will have the same classes applied as their parent windows.
|
||||||
|
|
||||||
|
- Every button, that is not <button> nor <input> should have inner <span class="inner"> element
|
||||||
|
for the button label.
|
||||||
|
|
||||||
|
- Every iframe need to be wrapped by an element with `iframe-wrapper` class. It is
|
||||||
|
required to have proper scrolling on mobile devices.
|
||||||
|
|
||||||
|
- Special attributes:
|
||||||
|
- `data-hidden`: Makes a menu entry/button hidden on specified screen sizes.
|
||||||
|
Can be used for example for functionality not implemented or that has no sense
|
||||||
|
on phones or touch devices. Contains a comma-separated list following values:
|
||||||
|
`large` (width > 1200px), `big` (width > 768px), `small` (width =< 768px),
|
||||||
|
`phone` (width =< 480px), `lbs` (width > 480px).
|
||||||
|
|
||||||
|
- `data-content-button`: Makes the action button with this attribute to be copied
|
||||||
|
to the content frame header on small/phone screens.
|
||||||
|
|
||||||
|
- Special URLs:
|
||||||
|
In phone mode we display Prev/Next navigation buttons below the content preview
|
||||||
|
frame. We do this e.g. for mail preview or contact preview. Plugins should use
|
||||||
|
_action=add* or _action=create* or _nav=hide in the frame URL if the navigation
|
||||||
|
should be hidden, which is the case when you create a content object.
|
||||||
|
|
||||||
|
- Dark mode:
|
||||||
|
In dark mode html element will have `dark-mode` class assigned.
|
||||||
|
It is possible to disable dark mode using less variable `@dark-mode-enabled`.
|
||||||
|
Option `dark_mode_support` in meta.json controls addition of the mode switch in the menu.
|
||||||
|
|
||||||
|
|
||||||
|
KNOWN ISSUES
|
||||||
|
------------
|
||||||
|
|
||||||
|
1. There are known issues with running less in Roundcube devel_mode:
|
||||||
## Install
|
- Dialogs executed on page load are displayed out of screen.
|
||||||
|
- CodeMirror editor (in managesieve raw script editing mode) is broken.
|
||||||
|
|
||||||
Place Elastic2022 folder in the roundcube skins folder (skins)
|
|
||||||
|
|
||||||
|
|
||||||
##
|
|
||||||
|
|
||||||
If you like this skin, please give it a star !
|
|
||||||
|
|
||||||
If you want to help me improve it, consider making a donation : [<img src="https://raw.githubusercontent.com/seb1k/Elastic2022/main/img/button-PayPal-donate.png">](https://www.paypal.com/donate/?hosted_button_id=AQHZNZT5L7JSE)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Topic on the roundcube's forum :
|
|
||||||
https://www.roundcubeforum.net/index.php/topic,29883.0.html
|
|
||||||
|
|
6
deps/bootstrap.bundle.min.js
vendored
Normal file
2117
deps/bootstrap.min.css
vendored
Normal file
BIN
fonts/fa-regular-400.woff
Normal file
BIN
fonts/fa-regular-400.woff2
Normal file
BIN
fonts/fa-solid-900.woff
Normal file
BIN
fonts/fa-solid-900.woff2
Normal file
BIN
fonts/roboto-v19-italic-700.woff
Normal file
BIN
fonts/roboto-v19-italic-700.woff2
Normal file
BIN
fonts/roboto-v19-italic.woff
Normal file
BIN
fonts/roboto-v19-italic.woff2
Normal file
BIN
fonts/roboto-v19-regular-700.woff
Normal file
BIN
fonts/roboto-v19-regular-700.woff2
Normal file
BIN
fonts/roboto-v19-regular.woff
Normal file
BIN
fonts/roboto-v19-regular.woff2
Normal file
3
images/contactgroup.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">
|
||||||
|
<path d="M133.5 273.5c30.3 0 55-24.7 55-55s-24.7-55-55-55-55 24.7-55 55 24.7 55 55 55zm385 0c30.3 0 55-24.7 55-55s-24.7-55-55-55-55 24.7-55 55 24.7 55 55 55zM546 301h-55c-15.1 0-28.8 6.1-38.8 16 34.6 19 59.2 53.3 64.5 94h56.7c15.2 0 27.5-12.3 27.5-27.5V356c.1-30.3-24.6-55-54.9-55zm-220 0c53.2 0 96.2-43.1 96.2-96.2s-43.1-96.2-96.2-96.2-96.2 43.1-96.2 96.2 43 96.2 96.2 96.2zm66 27.5h-7.1c-17.9 8.6-37.7 13.8-58.9 13.8s-40.9-5.2-58.9-13.8H260c-54.7 0-99 44.3-99 99v24.8c0 22.8 18.5 41.2 41.2 41.2h247.5c22.8 0 41.2-18.5 41.2-41.2v-24.8c.1-54.7-44.2-99-98.9-99zM199.8 317c-10-9.9-23.6-16-38.8-16h-55c-30.3 0-55 24.7-55 55v27.5c0 15.2 12.3 27.5 27.5 27.5h56.6c5.4-40.7 30-75 64.7-94z" fill="#ccc"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 769 B |
3
images/contactpic.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||||
|
<path d="M256 246c50.5 0 91.4-40.9 91.4-91.4S306.5 63.1 256 63.1s-91.4 40.9-91.4 91.4S205.5 246 256 246zm64 22.9h-11.9c-15.9 7.3-33.5 11.4-52.1 11.4s-36.1-4.1-52.1-11.4H192c-53 0-96 43-96 96v29.7c0 18.9 15.4 34.3 34.3 34.3h251.4c18.9 0 34.3-15.4 34.3-34.3v-29.7c0-53-43-96-96-96z" fill="#ccc"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 367 B |
3
images/corner-handle.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||||
|
<path fill="#888" d="M6.7 16L16 6.7V5.3L5.3 16zM9.7 16L16 9.7V8.3L8.3 16zM12.7 16l3.3-3.3v-1.4L11.3 16zM15.7 16l.3-.3v-1.4L14.3 16z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 205 B |
3
images/download.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 560">
|
||||||
|
<path fill="#d4dbde" d="M690 245c0 9.2-3.5 17.9-10.1 24.9l-175 175c-6.6 6.6-15.3 10.1-24.9 10.1-9.2 0-18.4-3.5-24.9-10.1l-175-175c-6.6-7-10.1-15.8-10.1-24.9 0-4.4.9-9.2 2.6-13.6C277.9 218.3 291 210 305 210h87.5V35c0-19.2 15.8-35 35-35h105c19.2 0 35 15.8 35 35v175H655c14 0 27.1 8.3 32.4 21.4 1.7 4.4 2.6 9.2 2.6 13.6zm0 245H270V350h-70v140c0 38.5 31.5 70 70 70h420c38.5 0 70-31.5 70-70V350h-70v140z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 472 B |
BIN
images/favicon.ico
Normal file
After Width: | Height: | Size: 17 KiB |
1
images/google-icon.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path fill="#4285F4" d="M45.12 24.5c0-1.56-.14-3.06-.4-4.5H24v8.51h11.84c-.51 2.75-2.06 5.08-4.39 6.64v5.52h7.11c4.16-3.83 6.56-9.47 6.56-16.17z"></path><path fill="#34A853" d="M24 46c5.94 0 10.92-1.97 14.56-5.33l-7.11-5.52c-1.97 1.32-4.49 2.1-7.45 2.1-5.73 0-10.58-3.87-12.31-9.07H4.34v5.7C7.96 41.07 15.4 46 24 46z"></path><path fill="#FBBC05" d="M11.69 28.18C11.25 26.86 11 25.45 11 24s.25-2.86.69-4.18v-5.7H4.34C2.85 17.09 2 20.45 2 24c0 3.55.85 6.91 2.34 9.88l7.35-5.7z"></path><path fill="#EA4335" d="M24 10.75c3.23 0 6.13 1.11 8.41 3.29l6.31-6.31C34.91 4.18 29.93 2 24 2 15.4 2 7.96 6.93 4.34 14.12l7.35 5.7c1.73-5.2 6.58-9.07 12.31-9.07z"></path><path fill="none" d="M2 2h44v44H2z"></path></svg>
|
After Width: | Height: | Size: 764 B |
11
images/logo.svg
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="9.14 141.8 573.65 573.65">
|
||||||
|
<style>
|
||||||
|
.st0,.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#404f54}.st3{fill:#37beff}
|
||||||
|
</style>
|
||||||
|
<path class="st3" d="M582.79 549.77L295.96 384.1V207.27l286.83 165.68z"/>
|
||||||
|
<path class="st0" d="M9.14 549.77L295.96 384.1V207.27L9.14 372.95z"/>
|
||||||
|
<path d="M295.96 141.8c109.56 0 198.41 88.85 198.41 198.41s-88.85 198.41-198.41 198.41S97.55 449.77 97.55 340.21 186.4 141.8 295.96 141.8" fill-rule="evenodd" clip-rule="evenodd" fill="#ccc"/>
|
||||||
|
<path d="M295.96 141.8c109.6 0 198.48 88.85 198.48 198.41s-88.88 198.41-198.48 198.41c-62.91-42.34-88.94-127.64-88.94-198.3s26.03-156.1 88.94-198.52" fill-rule="evenodd" clip-rule="evenodd" fill="#e5e5e5"/>
|
||||||
|
<path class="st3" d="M582.79 372.95L295.96 538.62v176.83l286.83-165.68z"/>
|
||||||
|
<path class="st0" d="M9.14 372.95l286.82 165.67v176.83L9.14 549.77z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 888 B |
8
images/microsoft-icon.svg
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 116 116" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(1,0,0,1,-22.0613,-141.704)"><path d="M26.088,145.515L77.643,145.515L77.639,197.07L26.088,197.07L26.088,145.515Z" style="fill:rgb(246,83,20);"/></g>
|
||||||
|
<g transform="matrix(1,0,0,1,-22.0613,-141.704)"><path d="M82.907,145.515L134.462,145.515C134.462,162.7 134.465,179.885 134.459,197.07C117.277,197.067 100.092,197.07 82.91,197.07C82.904,179.885 82.907,162.7 82.907,145.515Z" style="fill:rgb(127,187,65);"/></g>
|
||||||
|
<g transform="matrix(1,0,0,1,-22.0613,-141.704)"><path d="M26.088,202.331C43.273,202.337 60.458,202.329 77.643,202.337C77.646,219.522 77.643,236.704 77.643,253.889L26.088,253.889L26.088,202.331Z" style="fill:rgb(0,161,241);"/></g>
|
||||||
|
<g transform="matrix(1,0,0,1,-22.0613,-141.704)"><path d="M82.91,202.337C100.092,202.331 117.277,202.334 134.462,202.334L134.462,253.889L82.907,253.889C82.91,236.704 82.904,219.519 82.91,202.337Z" style="fill:rgb(255,187,0);"/></g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
21
meta.json
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "Elastic2022",
|
||||||
|
"author": "Sebastien Mille",
|
||||||
|
"url": "https://github.com/seb1k/Elastic2022",
|
||||||
|
"license": "Creative Commons Attribution-ShareAlike",
|
||||||
|
"license-url": "http://creativecommons.org/licenses/by-sa/3.0/",
|
||||||
|
"config": {
|
||||||
|
"supported_layouts": ["widescreen"],
|
||||||
|
"jquery_ui_colors_theme": "bootstrap",
|
||||||
|
"embed_css_location": "/styles/embed.css",
|
||||||
|
"editor_css_location": "/styles/embed.css",
|
||||||
|
"dark_mode_support": true,
|
||||||
|
"media_browser_css_location": "none",
|
||||||
|
"additional_logo_types": ["dark", "small", "small-dark"]
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"viewport": "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0",
|
||||||
|
"theme-color": "#f4f4f4",
|
||||||
|
"msapplication-navbutton-color": "#f4f4f4"
|
||||||
|
}
|
||||||
|
}
|
402
plugins/calendar/templates/calendar.html
Normal file
|
@ -0,0 +1,402 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="calendar.calendar" /></h1>
|
||||||
|
|
||||||
|
<!-- calendars list -->
|
||||||
|
<div id="layout-sidebar" class="listbox" role="navigation" aria-labelledby="arial-label-calendars">
|
||||||
|
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon back-content-button" href="#back" data-hidden="big"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span id="aria-label-calendars" class="header-title"><roundcube:label name="calendar.calendars" /></span>
|
||||||
|
<roundcube:button name="calendaractionsmenu" id="calendaroptionsmenulink" type="link"
|
||||||
|
title="calendar.calendaractions" class="button icon sidebar-menu" data-popup="calendaractions-menu"
|
||||||
|
innerClass="inner" label="actions" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="datepicker" class="calendar-datepicker" role="presentation"></div>
|
||||||
|
|
||||||
|
<span class="spacer" style="height:30px"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:object name="libkolab.folder_search_form" id="calendarlistsearch" wrapper="searchbar menu"
|
||||||
|
ariatag="h2" label="calsearchform" label-domain="calendar" buttontitle="findcalendars" />
|
||||||
|
|
||||||
|
<div id="calendars-content" class="scroller">
|
||||||
|
<roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist listing iconized" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 id="aria-label-minical" class="voice"><roundcube:label name="calendar.arialabelminical" /></h2>
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer_menu.html" />
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- calendar -->
|
||||||
|
<div id="layout-content" class="selected no-navbar" role="main">
|
||||||
|
<roundcube:include file="includes/top-right_menu.html" />
|
||||||
|
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
|
||||||
|
<div class="only_small_screen">
|
||||||
|
<a class="button icon task-menu-button" href="#menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||||
|
</div>
|
||||||
|
<span class="header-title"></span>
|
||||||
|
<!-- toolbar -->
|
||||||
|
<div id="calendartoolbar" class="toolbar menu">
|
||||||
|
<roundcube:button command="addevent" type="link"
|
||||||
|
class="button create disabled" classAct="button create"
|
||||||
|
label="create" title="calendar.new_event" innerClass="inner" />
|
||||||
|
<roundcube:button command="print" type="link" data-hidden="small"
|
||||||
|
class="button print disabled" classAct="button print"
|
||||||
|
label="calendar.print" title="calendar.printtitle" innerClass="inner" />
|
||||||
|
<span class="spacer"></span>
|
||||||
|
<roundcube:button command="events-import" type="link"
|
||||||
|
class="button import disabled" classAct="button import"
|
||||||
|
label="import" title="calendar.importevents" innerClass="inner" />
|
||||||
|
<roundcube:button command="export" type="link"
|
||||||
|
class="button export disabled" classAct="button export"
|
||||||
|
label="calendar.export" title="calendar.exporttitle" innerClass="inner" />
|
||||||
|
<roundcube:container name="toolbar" id="calendartoolbar" />
|
||||||
|
|
||||||
|
<span class="spacer"></span><span class="spacer"></span>
|
||||||
|
<span class="spacer"></span><span class="spacer"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar menu"
|
||||||
|
label="searchform" buttontitle="calendar.findevents" label-domain="calendar" ariatag="h2" />
|
||||||
|
<h2 id="aria-label-calendarview" class="voice"><roundcube:label name="calendar.arialabelcalendarview" /></h2>
|
||||||
|
<div id="calendar" class="content" role="main" aria-labelledby="aria-label-calendarview" data-elastic-mode="true">
|
||||||
|
<roundcube:object name="plugin.agenda_options" id="agendaoptions" />
|
||||||
|
<div id="searchcontrols" class="search-controls"></div>
|
||||||
|
</div>
|
||||||
|
<div class="footer toolbar menu content-frame-navigation" role="toolbar" data-hidden="big">
|
||||||
|
<a href="#" class="button prev" onclick="$('.fc-prev-button').click()"><span class="inner"><roundcube:label name="previous" /></span></a>
|
||||||
|
<a href="#" class="button today" onclick="$('.fc-today-button').click()"><span class="inner"><roundcube:label name="today" /></span></a>
|
||||||
|
<a href="#" class="button date" onclick="window.calendar_datepicker()"><span class="inner"><roundcube:label name="date" /></span></a>
|
||||||
|
<a href="#" class="button next" onclick="$('.fc-next-button').click()"><span class="inner"><roundcube:label name="next" /></span></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="timezone-display" class="hidden"><roundcube:var name="env:timezone" /></div>
|
||||||
|
|
||||||
|
<div id="eventshow" class="popupmenu formcontent propform text-only">
|
||||||
|
<h1 id="event-title" class="event-title form-group">Event Title</h1>
|
||||||
|
<div id="event-status-badge"><span></span></div>
|
||||||
|
<div class="event-location form-group" id="event-location">Location</div>
|
||||||
|
<div class="event-date form-group" id="event-date">From-To</div>
|
||||||
|
<div class="event-description form-group" id="event-description">
|
||||||
|
<div class="event-text"></div>
|
||||||
|
</div>
|
||||||
|
<div class="event-attendees form-group" id="event-attendees">
|
||||||
|
<div class="event-text"></div>
|
||||||
|
</div>
|
||||||
|
<div id="event-url" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.url" /></label>
|
||||||
|
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-repeat" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.repeat" /></label>
|
||||||
|
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-alarm" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.alarms" /></label>
|
||||||
|
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-partstat" class="form-group row event-partstat">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.mystatus" /></label>
|
||||||
|
<span class="col-sm-8 form-control-plaintext">
|
||||||
|
<span class="event-text rsvp-status"></span>
|
||||||
|
<a class="changersvp button edit" href="#" title="<roundcube:label name='calendar.changepartstat' />"><span class="inner"><roundcube:label name='calendar.changepartstat' /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div id="event-calendar" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.calendar" /></label>
|
||||||
|
<span class="col-sm-8 form-control-plaintext event-text">Default</span>
|
||||||
|
</div>
|
||||||
|
<div id="event-category" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.category" /></label>
|
||||||
|
<span class="col-sm-8 form-control-plaintext event-text"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-status" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.status" /></label>
|
||||||
|
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-free-busy" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.freebusy" /></label>
|
||||||
|
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-priority" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.priority" /></label>
|
||||||
|
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-rsvp-comment" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.rsvpcomment" /></label>
|
||||||
|
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-links" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.links" /></label>
|
||||||
|
<span class="event-text col-sm-8"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-attachments" class="form-group row">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="attachments" /></label>
|
||||||
|
<span class="event-text col-sm-8"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-created" class="form-group row faded">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.created" /></label>
|
||||||
|
<span class="event-text event-created col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<div id="event-changed" class="form-group row faded">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.changed" /></label>
|
||||||
|
<span class="event-text event-changed col-sm-8 form-control-plaintext"></span>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" class="calendar-invitebox invitebox boxinformation" style="display:none" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="/templates/eventedit.html" />
|
||||||
|
|
||||||
|
<div id="calendaractions-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-calendaroptions" class="voice"><roundcube:label name="calendar.calendaractions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-calendaroptions">
|
||||||
|
<roundcube:button type="link-menuitem" command="calendar-create" label="calendar.addcalendar" class="create disabled" classAct="create active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="calendar-edit" label="calendar.editcalendar" class="edit disabled" classAct="edit active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="calendar-delete" label="calendar.deletecalendar" class="delete disabled" classAct="delete active" />
|
||||||
|
<roundcube:if condition="env:calendar_driver == 'kolab'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="calendar-remove" label="calendar.removelist" class="remove disabled" classAct="remove active" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="env:calendar_driver != 'caldav'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="calendar-showurl" label="calendar.showurl" class="showurl disabled" classAct="showurl active" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="!empty(env:calendar_settings['freebusy_url'])" />
|
||||||
|
<roundcube:button type="link-menuitem" command="calendar-showfburl" label="calendar.showfburl" class="showurl disabled" classAct="showurl active" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="env:calendar_driver == 'kolab'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="folders" task="settings" label="managefolders" class="folders disabled" classAct="folders active" />
|
||||||
|
<roundcube:endif />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="eventoptionsmenu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-eventoptions" class="voice"><roundcube:label name="calendar.eventoptions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-eventoptions">
|
||||||
|
<roundcube:button type="link-menuitem" command="event-download" label="download" class="download disabled" classAct="download active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="event-sendbymail" label="send" class="send disabled" classAct="send active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="event-copy" label="copy" class="copy disabled" classAct="copy active" />
|
||||||
|
<roundcube:if condition="env:calendar_driver == 'kolab' && config:kolab_bonnie_api" />
|
||||||
|
<roundcube:button type="link-menuitem" command="event-history" label="calendar.eventhistory" class="history disabled" classAct="history active" />
|
||||||
|
<roundcube:endif />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="eventresourcesdialog" class="popupmenu">
|
||||||
|
<h3 class="voice" id="aria-label-resourceselection"><roundcube:label name="calendar.arialabelresourceselection" /></h3>
|
||||||
|
<div class="resource-selection selection-list" role="navigation" aria-labelledby="aria-label-resourceselection">
|
||||||
|
<div class="header">
|
||||||
|
<span class="header-title"><roundcube:label name="calendar.tabresources" /></span>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="plugin.resources_searchform" id="resourcesearchbox"
|
||||||
|
wrapper="searchbar menu" ariatag="h4" buttontitle="calendar.findresources"
|
||||||
|
label="resourcesearchform" label-domain="calendar" />
|
||||||
|
<div class="scroller">
|
||||||
|
<roundcube:object name="plugin.resources_list" id="resources-list" class="listing treelist" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="resource-content selection-content">
|
||||||
|
<div class="header" data-hidden="normal,big">
|
||||||
|
<a class="button icon back" href="#back" onclick="$('#eventresourcesdialog .resource-content').hide(); $('#eventresourcesdialog .resource-selection').show()">
|
||||||
|
<span class="inner"><roundcube:label name="back" /></span>
|
||||||
|
</a>
|
||||||
|
<span class="header-title"><roundcube:label name="calendar.resourceprops" /></span>
|
||||||
|
</div>
|
||||||
|
<ul class="nav nav-tabs" role="tablist">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link active" href="#resource-availability" data-toggle="tab" role="tab">
|
||||||
|
<roundcube:label name="calendar.resourceavailability" />
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="#resource-info" data-toggle="tab" role="tab">
|
||||||
|
<roundcube:label name="calendar.resourcedetails" />
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div id="resource-availability" class="tab-pane active" role="tabpanel" aria-labelledby="aria-label-resourceavailability">
|
||||||
|
<h3 class="voice" id="aria-label-resourceavailability"><roundcube:label name="calendar.resourceavailability" /></h3>
|
||||||
|
<roundcube:object name="plugin.resource_calendar" id="resource-freebusy-calendar" class="raw-tables" />
|
||||||
|
<div class="slot-nav">
|
||||||
|
<roundcube:button name="resource-cal-prev" id="resource-calendar-prev" type="link"
|
||||||
|
class="icon prevpage" title="calendar.prevslot" label="calendar.prevweek" />
|
||||||
|
<roundcube:button name="resource-cal-next" id="resource-calendar-next" type="link"
|
||||||
|
class="icon nextpage" title="calendar.nextslot" label="calendar.nextweek" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="resource-info" class="tab-pane" role="tabpanel" aria-labelledby="aria-label-resourcedetails">
|
||||||
|
<h3 class="voice" id="aria-label-resourcedetails"><roundcube:label name="calendar.resourcedetails" /></h3>
|
||||||
|
<roundcube:object name="plugin.resource_info" id="resource-details" class="propform text-only"
|
||||||
|
aria-live="polite" aria-relevant="text" aria-atomic="true" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="eventfreebusy" class="popupmenu calendar-scheduler formcontent">
|
||||||
|
<roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table"
|
||||||
|
class="schedule-table" data-h-margin="-1" data-v-margin="1" />
|
||||||
|
<div class="nav">
|
||||||
|
<div class="schedule-buttons">
|
||||||
|
<button type="button" id="schedule-find-prev" class="btn btn-secondary prev-slot"><roundcube:label name="calendar.prevslot" /></button>
|
||||||
|
<button type="button" id="schedule-find-next" class="btn btn-secondary next-slot"><roundcube:label name="calendar.nextslot" /></button>
|
||||||
|
</div>
|
||||||
|
<div class="schedule-options">
|
||||||
|
<label><input type="checkbox" id="schedule-freebusy-workinghours" value="1" class="pretty-checkbox" /><roundcube:label name="calendar.onlyworkinghours" /></label>
|
||||||
|
</div>
|
||||||
|
<div class="schedule-nav">
|
||||||
|
<button type="button" id="schedule-freebusy-prev" title="<roundcube:label name='previouspage' />">◄</button>
|
||||||
|
<button type="button" id="schedule-freebusy-next" title="<roundcube:label name='nextpage' />">►</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="schedule-range">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="schedule-startdate" class="col-form-label col-sm-2"><roundcube:label name="calendar.start" /></label>
|
||||||
|
<span class="col-sm-10 datetime">
|
||||||
|
<input type="text" name="startdate" size="11" id="schedule-startdate" class="form-control" disabled="true" />
|
||||||
|
<input type="text" name="starttime" size="6" id="schedule-starttime" class="form-control" disabled="true" />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="schedule-enddate" class="col-form-label col-sm-2"><roundcube:label name="calendar.end" /></label>
|
||||||
|
<span class="col-sm-10 datetime">
|
||||||
|
<input type="text" name="enddate" size="11" id="schedule-enddate" class="form-control" disabled="true" />
|
||||||
|
<input type="text" name="endtime" size="6" id="schedule-endtime" class="form-control" disabled="true" />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="schedule-legend form-group row">
|
||||||
|
<label class="col-form-label col-sm-2"><roundcube:label name="calendar.legend" /></label>
|
||||||
|
<span class="col-sm-10 form-control-plaintext">
|
||||||
|
<roundcube:include file="/templates/freebusylegend.html" />
|
||||||
|
<span class="attendee organizer"><roundcube:label name="calendar.roleorganizer" /></span>
|
||||||
|
<span class="attendee req-participant"><roundcube:label name="calendar.rolerequired" /></span>
|
||||||
|
<span class="attendee opt-participant"><roundcube:label name="calendar.roleoptional" /></span>
|
||||||
|
<span class="attendee non-participant"><roundcube:label name="calendar.rolenonparticipant" /></span>
|
||||||
|
<span class="attendee chair"><roundcube:label name="calendar.rolechair" /></span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="eventsimport" class="popupmenu formcontent">
|
||||||
|
<roundcube:object name="plugin.events_import_form" id="events-import-form" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="eventsexport" class="popupmenu formcontent">
|
||||||
|
<roundcube:object name="plugin.events_export_form" id="events-export-form" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="calendarurlbox" class="popupmenu">
|
||||||
|
<p><roundcube:label name="calendar.showurldescription" /></p>
|
||||||
|
<textarea id="calfeedurl" rows="2" readonly="readonly"></textarea>
|
||||||
|
<div id="calendarcaldavurl" style="display:none; margin-top:1rem">
|
||||||
|
<p><roundcube:label name="calendar.caldavurldescription" html="yes" /></p>
|
||||||
|
<textarea id="caldavurl" rows="2" readonly="readonly"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="fburlbox" class="popupmenu">
|
||||||
|
<p><roundcube:label name="calendar.fburldescription" /></p>
|
||||||
|
<textarea id="fburl" rows="2" readonly="readonly"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:if condition="config:kolab_bonnie_api" />
|
||||||
|
|
||||||
|
<div id="eventhistory" class="popupmenu" aria-hidden="true">
|
||||||
|
<roundcube:object name="plugin.object_changelog_table" id="event-changelog-table" class="changelog-table" />
|
||||||
|
<div class="compare-button"><input type="button" class="button" value="<roundcube:label name='libkolab.compare' />" /></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="eventdiff" class="popupmenu formcontent text-only">
|
||||||
|
<h1 class="event-title">Event Title</h1>
|
||||||
|
<h1 class="event-title-new event-text-new"></h1>
|
||||||
|
<div class="form-group row event-date"></div>
|
||||||
|
<div class="form-group row event-location">
|
||||||
|
<h5 class="label"><roundcube:label name="calendar.location" /></h5>
|
||||||
|
<div class="event-text-old"></div>
|
||||||
|
<div class="event-text-new"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row event-description">
|
||||||
|
<h5 class="label"><roundcube:label name="calendar.description" /></h5>
|
||||||
|
<div class="event-text-diff" style="white-space:pre-wrap"></div>
|
||||||
|
<div class="event-text-old"></div>
|
||||||
|
<div class="event-text-new"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row event-url">
|
||||||
|
<h5 class="label"><roundcube:label name="calendar.url" /></h5>
|
||||||
|
<div class="event-text-old"></div>
|
||||||
|
<div class="event-text-new"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row event-recurrence">
|
||||||
|
<h5 class="label"><roundcube:label name="calendar.repeat" /></h5>
|
||||||
|
<div class="event-text-old"></div>
|
||||||
|
<div class="event-text-new"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row event-alarms">
|
||||||
|
<h5 class="label"><roundcube:label name="calendar.alarms" /><span class="index"></span></h5>
|
||||||
|
<div class="event-text-old"></div>
|
||||||
|
<div class="event-text-new"></div>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-start">
|
||||||
|
<label><roundcube:label name="calendar.start" /></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-end">
|
||||||
|
<label><roundcube:label name="calendar.end" /></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-attendees">
|
||||||
|
<label><roundcube:label name="calendar.tabattendees" /><span class="index"></span></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-calendar">
|
||||||
|
<label><roundcube:label name="calendar.calendar" /></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-categories">
|
||||||
|
<label><roundcube:label name="calendar.category" /></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-status">
|
||||||
|
<label><roundcube:label name="calendar.status" /></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-free_busy">
|
||||||
|
<label><roundcube:label name="calendar.freebusy" /></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="event-line event-priority">
|
||||||
|
<label><roundcube:label name="calendar.priority" /></label>
|
||||||
|
<span class="event-text-old"></span> ⇢
|
||||||
|
<span class="event-text-new"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row event-attachments">
|
||||||
|
<label><roundcube:label name="attachments" /><span class="index"></span></label>
|
||||||
|
<div class="event-text-old"></div>
|
||||||
|
<div class="event-text-new"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
<roundcube:object name="plugin.calendar_css" folder-class="div.$class a.calname:before" folder-fallback-color="#161b1d" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
7
plugins/calendar/templates/dialog.html
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="calendar.arialabeleventform" /></h1>
|
||||||
|
|
||||||
|
<roundcube:include file="/templates/eventedit.html" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
155
plugins/calendar/templates/eventedit.html
Normal file
|
@ -0,0 +1,155 @@
|
||||||
|
<div id="eventedit" class="<roundcube:exp expression="env:framed ? '' : 'popupmenu '">formcontent" aria-hidden="true" data-notabs="true">
|
||||||
|
<form class="tabbed" action="#" method="post" enctype="multipart/form-data">
|
||||||
|
<!-- basic info -->
|
||||||
|
<fieldset id="event-panel-summary">
|
||||||
|
<legend><roundcube:label name="calendar.tabsummary" /></legend>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="edit-title"><roundcube:label name="calendar.title" /></label>
|
||||||
|
<input type="text" class="form-control" name="title" id="edit-title" size="40" required="true" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="edit-location"><roundcube:label name="calendar.location" /></label>
|
||||||
|
<input type="text" class="form-control" name="location" id="edit-location" size="40" />
|
||||||
|
<roundcube:if condition="config:calendar_nextcloud_url" />
|
||||||
|
<a href="#" onclick="rcmail.command('talk-room-create')" style="float:right; margin-top:0.5em;"><roundcube:label name="calendar.createtalkroom" /></a>
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="edit-description"><roundcube:label name="calendar.description" /></label>
|
||||||
|
<textarea name="description" id="edit-description" class="form-control" rows="5" cols="40"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="edit-startdate" class="col-sm-2 col-form-label"><roundcube:label name="calendar.start" /></label>
|
||||||
|
<div class="col-sm-10 datetime">
|
||||||
|
<input type="text" name="startdate" size="11" id="edit-startdate" class="form-control" required="true" />
|
||||||
|
<input type="text" name="starttime" size="6" id="edit-starttime" class="form-control" aria-label="<roundcube:label name='calendar.starttime' />" />
|
||||||
|
<label><input type="checkbox" name="allday" id="edit-allday" value="1" class="pretty-checkbox" /><roundcube:label name="calendar.all-day" /></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="edit-enddate" class="col-sm-2 col-form-label"><roundcube:label name="calendar.end" /></label>
|
||||||
|
<div class="col-sm-10 datetime">
|
||||||
|
<input type="text" name="enddate" size="11" id="edit-enddate" class="form-control" required="true" />
|
||||||
|
<input type="text" name="endtime" size="6" id="edit-endtime" class="form-control" aria-label="<roundcube:label name='calendar.endtime' />" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row" id="edit-alarms">
|
||||||
|
<label for="edit-alarm-item" class="col-sm-2 col-form-label"><roundcube:label name="calendar.alarms" /></label>
|
||||||
|
<div class="col-sm-10 alarms-input">
|
||||||
|
<div class="edit-alarm-item input-group first">
|
||||||
|
<roundcube:object name="plugin.alarm_select" id="edit-alarm-item" />
|
||||||
|
<span class="edit-alarm-buttons input-group-append">
|
||||||
|
<a href="#add" class="icon button btn add add-alarm input-group-text"><span class="inner"><roundcube:label name="libcalendaring.addalarm" /></span></a>
|
||||||
|
<a href="#delete" class="icon button btn delete delete-alarm input-group-text"><span class="inner"><roundcube:label name="libcalendaring.removealarm" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row" id="calendar-select">
|
||||||
|
<label for="edit-calendar" class="col-sm-2 col-form-label"><roundcube:label name="calendar.calendar" /></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<roundcube:object name="plugin.calendar_select" id="edit-calendar" class="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="edit-categories" class="col-sm-2 col-form-label"><roundcube:label name="calendar.category" /></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<roundcube:object name="plugin.category_select" id="edit-categories" class="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="edit-event-status" class="col-sm-2 col-form-label"><roundcube:label name="calendar.status" /></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<roundcube:object name="plugin.status_select" id="edit-event-status" class="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="edit-free-busy" class="col-sm-2 col-form-label"><roundcube:label name="calendar.freebusy" /></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<roundcube:object name="plugin.freebusy_select" id="edit-free-busy" class="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="edit-priority" class="col-sm-2 col-form-label"><roundcube:label name="calendar.priority" /></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<roundcube:object name="plugin.priority_select" id="edit-priority" class="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="edit-url" class="col-sm-2 col-form-label"><roundcube:label name="calendar.url" /></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" name="vurl" id="edit-url" size="40" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row" id="edit-event-links">
|
||||||
|
<label class="col-sm-2 col-form-label"><roundcube:label name="calendar.links" /></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<div class="event-text"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<!-- recurrence settings -->
|
||||||
|
<fieldset id="event-panel-recurrence">
|
||||||
|
<legend><roundcube:label name="calendar.tabrecurrence" /></legend>
|
||||||
|
<div class="form-group row border-after">
|
||||||
|
<roundcube:object name="plugin.recurrence_form" part="frequency" />
|
||||||
|
</div>
|
||||||
|
<div class="recurrence-form border-after" id="recurrence-form-daily">
|
||||||
|
<roundcube:object name="plugin.recurrence_form" part="daily" class="form-group row" />
|
||||||
|
</div>
|
||||||
|
<div class="recurrence-form border-after" id="recurrence-form-weekly">
|
||||||
|
<roundcube:object name="plugin.recurrence_form" part="weekly" class="form-group row" />
|
||||||
|
</div>
|
||||||
|
<div class="recurrence-form border-after" id="recurrence-form-monthly">
|
||||||
|
<roundcube:object name="plugin.recurrence_form" part="monthly" class="form-group row" />
|
||||||
|
</div>
|
||||||
|
<div class="recurrence-form border-after" id="recurrence-form-yearly">
|
||||||
|
<roundcube:object name="plugin.recurrence_form" part="yearly" class="form-group row" />
|
||||||
|
</div>
|
||||||
|
<div class="recurrence-form" id="recurrence-form-until">
|
||||||
|
<roundcube:object name="plugin.recurrence_form" part="until" class="form-group row" />
|
||||||
|
</div>
|
||||||
|
<div class="recurrence-form" id="recurrence-form-rdate">
|
||||||
|
<roundcube:object name="plugin.recurrence_form" part="rdate" class="form-group row" />
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<!-- attendees list -->
|
||||||
|
<fieldset id="event-panel-attendees" data-navlink-class="nav-icon attendees">
|
||||||
|
<legend><roundcube:label name="calendar.tabattendees" /></legend>
|
||||||
|
<h3 id="aria-label-attendeestable" class="voice"><roundcube:label name="calendar.arialabeleventattendees" /></h3>
|
||||||
|
<roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="edit-attendees-table no-img table table-sm"
|
||||||
|
coltitle="attendee" aria-labelledby="aria-label-attendeestable" />
|
||||||
|
<roundcube:object name="plugin.attendees_form" id="edit-attendees-form" />
|
||||||
|
<roundcube:include file="/templates/freebusylegend.html" />
|
||||||
|
</fieldset>
|
||||||
|
<!-- resources list -->
|
||||||
|
<fieldset id="event-panel-resources" data-navlink-class="nav-icon resources">
|
||||||
|
<legend><roundcube:label name="calendar.tabresources" /></legend>
|
||||||
|
<h3 id="aria-label-resourcestable" class="voice"><roundcube:label name="calendar.arialabeleventresources" /></h3>
|
||||||
|
<roundcube:object name="plugin.attendees_list" id="edit-resources-table" class="edit-attendees-table no-img table table-sm"
|
||||||
|
coltitle="resource" aria-labelledby="aria-label-resourcestable" />
|
||||||
|
<roundcube:object name="plugin.resources_form" id="edit-resources-form" />
|
||||||
|
<roundcube:include file="/templates/freebusylegend.html" />
|
||||||
|
</fieldset>
|
||||||
|
<!-- attachments list (with upload form) -->
|
||||||
|
<fieldset id="event-panel-attachments" data-navlink-class="nav-icon attachments">
|
||||||
|
<legend><roundcube:label name="calendar.tabattachments" /></legend>
|
||||||
|
<div id="edit-attachments-droparea" class="file-upload">
|
||||||
|
<h3 id="aria-label-attachmentuploadform" class="voice"><roundcube:label name="arialabelattachmentuploadform" /></h3>
|
||||||
|
<div id="edit-attachments-form" class="upload-form" role="region" aria-labelledby="aria-label-attachmentuploadform">
|
||||||
|
<roundcube:object name="plugin.attachments_form" mode="hint" />
|
||||||
|
<button type="button" class="btn btn-secondary attach" onclick="rcmail.upload_input('event-attachment-form'); return false"><roundcube:label name="addattachment" /></button>
|
||||||
|
</div>
|
||||||
|
<div id="edit-attachments">
|
||||||
|
<roundcube:object name="plugin.attachments_list" id="attachmentlist" class="attachmentslist" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="plugin.filedroparea" id="edit-attachments-droparea" />
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
<roundcube:object name="plugin.edit_recurrence_sync" id="edit-recurrence-syncstart" class="dialog-message" style="display:none" />
|
||||||
|
<roundcube:object name="plugin.edit_attendees_notify" id="edit-attendees-notify" class="dialog-message" style="display:none" />
|
||||||
|
<roundcube:object name="plugin.edit_recurring_warning" class="dialog-message edit-recurring-warning" style="display:none" />
|
||||||
|
<roundcube:object name="plugin.attachments_form" id="event-attachment-form" mode="smart" />
|
||||||
|
<div id="edit-localchanges-warning" class="dialog-message" style="display:none"><roundcube:label name="calendar.localchangeswarning" /></div>
|
||||||
|
</div>
|
9
plugins/calendar/templates/freebusylegend.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<div id="edit-attendees-legend" class="availability">
|
||||||
|
<span class="legend free"><roundcube:label name="calendar.availfree" /></span>
|
||||||
|
<span class="legend busy"><roundcube:label name="calendar.availbusy" /></span>
|
||||||
|
<span class="legend tentative"><roundcube:label name="calendar.availtentative" /></span>
|
||||||
|
<!--
|
||||||
|
<span class="legend out-of-office"><roundcube:label name="calendar.availoutofoffice" /></span>
|
||||||
|
-->
|
||||||
|
<span class="legend unknown"><roundcube:label name="calendar.availunknown" /></span>
|
||||||
|
</div>
|
11
plugins/calendar/templates/itipattend.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:object name="plugin.event_inviteform" class="standalone-invitebox" />
|
||||||
|
<roundcube:object name="logo" src="/images/logo.svg" data-src-small="0" id="logo" alt="Logo" />
|
||||||
|
<div class="calendar-invitebox invitebox boxinformation">
|
||||||
|
<roundcube:object name="plugin.event_invitebox" />
|
||||||
|
<roundcube:object name="plugin.event_rsvp_buttons" type="submit" iname="rsvp" id="event-rsvp" delegate="false" />
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
19
plugins/calendar/templates/print.html
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<div class="print-config">
|
||||||
|
<button type="button" class="btn btn-primary print" onclick="window.print()"><roundcube:label name='print' /></button>
|
||||||
|
<span class="prop">
|
||||||
|
<input type="checkbox" id="propdescription" checked="checked" class="pretty-checkbox" />
|
||||||
|
<label for="propdescription"><roundcube:label name="calendar.printdescriptions" /></label>
|
||||||
|
</span>
|
||||||
|
<div id="calendar-view-selector" class="btn-group btn-group-toggle" role="group"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="print-content">
|
||||||
|
<div id="calendar" data-view-selector="calendar-view-selector"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:object name="plugin.calendar_list" activeonly="true" id="calendarlist" />
|
||||||
|
<roundcube:object name="plugin.calendar_css" printmode="true" folder-class="div.$class a.calname" folder-fallback-color="#000" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
1
plugins/libkolab/libkolab.min.css
vendored
Normal file
33
plugins/libkolab/templates/acl.html
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<div id="acllist-container" class="table-widget">
|
||||||
|
<div id="acllist-content" class="content">
|
||||||
|
<h2 class="voice" id="aria-label-acltable"><roundcube:label name="libkolab.ariasummaryacltable" /></h2>
|
||||||
|
<roundcube:object name="acltable" id="acltable" class="records-table options-table" aria-labelledby="aria-label-acltable" role="listbox" />
|
||||||
|
</div>
|
||||||
|
<div id="acllist-footer" class="footer toolbar menu">
|
||||||
|
<roundcube:button command="acl-create" type="link" class="create disabled" classAct="create"
|
||||||
|
label="libkolab.add" title="libkolab.newuser" innerClass="inner" />
|
||||||
|
<roundcube:button name="aclmenulink" type="link"
|
||||||
|
label="actions" title="libkolab.actions" href="#acl-actions"
|
||||||
|
class="actions" innerClass="inner" data-popup="acl-menu" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="acl-menu" class="popupmenu" aria-hidden="true" data-align="bottom">
|
||||||
|
<h3 id="aria-label-aclactions" class="voice"><roundcube:label name="libkolab.arialabelaclactions" /></h3>
|
||||||
|
<ul class="menu listing iconized" role="menu" aria-labelledby="aria-label-aclactions">
|
||||||
|
<roundcube:button command="acl-edit" label="edit" type="link-menuitem" class="edit disabled" classAct="edit active" />
|
||||||
|
<roundcube:button command="acl-delete" label="delete" type="link-menuitem" class="delete disabled" classAct="delete active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="aclform" class="popupmenu formcontent" aria-labelledby="aria-label-aclform" role="form">
|
||||||
|
<h3 id="aria-label-aclform" class="voice"><roundcube:label name="libkolab.arialabelaclform" /></h3>
|
||||||
|
<div class="row form-group">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="libkolab.identifier" /></label>
|
||||||
|
<roundcube:object name="acluser" id="acluser" class="proplist col-sm-8" />
|
||||||
|
</div>
|
||||||
|
<div class="row form-group">
|
||||||
|
<label class="col-sm-4 col-form-label"><roundcube:label name="libkolab.myrights" /></label>
|
||||||
|
<roundcube:object name="aclrights" class="proplist col-sm-8" />
|
||||||
|
</div>
|
||||||
|
</div>
|
68
plugins/libkolab/templates/attachment.html
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:var name="env:filename" /></h1>
|
||||||
|
|
||||||
|
<div id="layout-sidebar" class="listbox">
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon back-content-button" href="#content" data-hidden="big"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span class="header-title" id="aria-label-contentinfo"><roundcube:label name="properties" /></span>
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<roundcube:object name="plugin.attachmentcontrols" class="listing props-table" role="contentinfo"
|
||||||
|
aria-labelledby="aria-label-contentinfo" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="layout-content" class="selected">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
<a class="button icon properties" id="properties-button" href="#properties" onclick="UI.show_sidebar()" data-hidden="big">
|
||||||
|
<span class="inner"><roundcube:label name="properties"></span>
|
||||||
|
</a>
|
||||||
|
<span class="header-title constant"><roundcube:var name="env:filename" /></span>
|
||||||
|
<div id="messagetoolbar" class="toolbar menu">
|
||||||
|
<roundcube:button command="download-attachment" type="link" label="download" title="download"
|
||||||
|
class="button download disabled" classAct="button download" innerclass="inner" />
|
||||||
|
<roundcube:button command="print-attachment" type="link" label="print" title="print"
|
||||||
|
class="button print disabled" classAct="button print" innerclass="inner" data-hidden="small" />
|
||||||
|
<roundcube:if condition="stripos(env:mimetype, 'image/') === 0" />
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="+" data-hidden="small"
|
||||||
|
class="button zoomin disabled" classAct="button zoomin"
|
||||||
|
label="zoomin" title="increaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="-" data-hidden="small"
|
||||||
|
class="button zoomout disabled" classAct="button zoomout"
|
||||||
|
label="zoomout" title="decreaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-rotate" type="link"
|
||||||
|
class="button rotate disabled" classAct="button rotate" data-hidden="small"
|
||||||
|
label="rotate" title="rotateimage" innerclass="inner" />
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 id="aria-label-messagepart" class="voice"><roundcube:label name="arialabelattachmentpreview" /></h2>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="plugin.attachmentframe" id="attachmentframe" title="arialabelattachmentpreview"
|
||||||
|
role="main" aria-labelledby="aria-label-messagepart" />
|
||||||
|
</div>
|
||||||
|
<roundcube:if condition="stripos(env:mimetype, 'image/') === 0" />
|
||||||
|
<div id="image-tools" class="image-tools" data-hidden="big">
|
||||||
|
<h3 id="aria-label-imagetools" class="voice"><roundcube:label name="arialabelimagetools" /></h3>
|
||||||
|
<div class="toolbar menu" role="menu" aria-labelledby="aria-label-imagetools">
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="+"
|
||||||
|
class="button zoomin disabled" classAct="button zoomin"
|
||||||
|
label="zoomin" title="increaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="-"
|
||||||
|
class="button zoomout disabled" classAct="button zoomout"
|
||||||
|
label="zoomout" title="decreaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-rotate" type="link"
|
||||||
|
class="button rotate disabled" classAct="button rotate"
|
||||||
|
label="rotate" title="rotateimage" innerclass="inner" />
|
||||||
|
</div>
|
||||||
|
<a href="#" class="button icon tools" onclick="$(this).attr('title', $(this).data('label-' + ($('#image-tools').toggleClass('open').is('.open') ? 'hide' : 'show')))"
|
||||||
|
data-label-show="<roundcube:label name="showtools" />" data-label-hide="<roundcube:label name="hidetools" />" title="<roundcube:label name="showtools" />">
|
||||||
|
<span class="inner"><roundcube:label name="showtools" /></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
9
plugins/libkolab/templates/folderform.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:var name="env:pagetitle" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="folderform" class="tabbed propform" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
25
plugins/swipe/includes/menu.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<div id="swipeoptionsmenu" class="popupmenu propform" role="dialog" aria-labelledby="aria-label-listoptions">
|
||||||
|
<h3 id="aria-label-listoptions" class="voice"><roundcube:label name="swipe.swipeoptions" /></h3>
|
||||||
|
<div class="form-group row swipeoptions-left">
|
||||||
|
<label for="swipeoptions-left" class="col-form-label col-sm-4"><roundcube:label name="swipe.swipeleft" /></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<roundcube:object name="swipeoptionslist" type="select" direction="left" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row swipeoptions-right">
|
||||||
|
<label for="swipeoptions-right" class="col-form-label col-sm-4"><roundcube:label name="swipe.swiperight" /></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<roundcube:object name="swipeoptionslist" type="select" direction="right" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row swipeoptions-down">
|
||||||
|
<label for="swipeoptions-down" class="col-form-label col-sm-4"><roundcube:label name="swipe.swipedown" /></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<roundcube:object name="swipeoptionslist" type="select" direction="down" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
rcmail.swipe.container_class += ' menu';
|
||||||
|
rcmail.swipe.element = $('<ul>').addClass(rcmail.swipe.container_class).append($('<li>').append($('<a>').addClass(rcmail.swipe.button_class).append($('<span>').addClass(rcmail.swipe.label_class))));
|
||||||
|
</script>
|
245
plugins/swipe/swipe.less
Normal file
|
@ -0,0 +1,245 @@
|
||||||
|
/**
|
||||||
|
* Swipe plugin styles
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import (reference) "../../../../skins/elastic/styles/variables";
|
||||||
|
@import (reference) "../../../../skins/elastic/styles/mixins";
|
||||||
|
|
||||||
|
@color-swipe-list-background: contrast(@color-layout-list-background, darken(@color-layout-list-background, 10%), lighten(@color-layout-list-background, 40%));
|
||||||
|
@color-swipe-list: contrast(@color-swipe-list-background, lighten(@color-swipe-list-background, 30%), darken(@color-swipe-list-background, 40%), 57%);
|
||||||
|
@color-swipe-mark: @color-message-text;
|
||||||
|
@color-swipe-mark-background: @color-message-information;
|
||||||
|
@color-swipe-danger: @color-message-error-text;
|
||||||
|
@color-swipe-danger-background: @color-message-error;
|
||||||
|
@color-swipe-move: @color-message-warning-text;
|
||||||
|
@color-swipe-move-background: @color-message-warning;
|
||||||
|
@color-swipe-compose: @color-message-success-text;
|
||||||
|
@color-swipe-compose-background: @color-message-success;
|
||||||
|
@color-swipe-down-border: @color-swipe-list-background;
|
||||||
|
@color-swipe-down-background: @color-layout-list-background;
|
||||||
|
|
||||||
|
@color-dark-swipe-list-background: contrast(@color-dark-background, darken(@color-dark-background, 15%), lighten(@color-dark-background, 10%));
|
||||||
|
@color-dark-swipe-list: contrast(@color-dark-swipe-list-background, lighten(@color-dark-swipe-list-background, 30%), darken(@color-dark-swipe-list-background, 40%), 57%);
|
||||||
|
@color-dark-swipe-mark: @color-dark-font;
|
||||||
|
@color-dark-swipe-mark-background: @color-dark-message-information;
|
||||||
|
@color-dark-swipe-danger: @color-dark-font;
|
||||||
|
@color-dark-swipe-danger-background: @color-dark-message-error;
|
||||||
|
@color-dark-swipe-move: @color-dark-font;
|
||||||
|
@color-dark-swipe-move-background: @color-dark-message-warning;
|
||||||
|
@color-dark-swipe-compose: @color-dark-font;
|
||||||
|
@color-dark-swipe-compose-background: @color-dark-message-success;
|
||||||
|
@color-dark-swipe-down-border: @color-dark-swipe-list-background;
|
||||||
|
@color-dark-swipe-down-background: @color-dark-background;
|
||||||
|
|
||||||
|
#swipe-action {
|
||||||
|
position: absolute;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-collapse: collapse;
|
||||||
|
|
||||||
|
&.horizontal {
|
||||||
|
background-color: @color-swipe-list-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-swipe-list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.vertical {
|
||||||
|
top: 2em;
|
||||||
|
z-index: 1000;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-swipe-list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.horizontal,
|
||||||
|
&.vertical > .swipe-container {
|
||||||
|
&.swipe-checkmail,
|
||||||
|
&.swipe-mark,
|
||||||
|
&.swipe-select {
|
||||||
|
background-color: @color-swipe-mark-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-swipe-mark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.swipe-danger {
|
||||||
|
background-color: @color-swipe-danger-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-swipe-danger;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.swipe-move {
|
||||||
|
background-color: @color-swipe-move-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-swipe-move;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.swipe-success,
|
||||||
|
&.swipe-compose {
|
||||||
|
background-color: @color-swipe-compose-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-swipe-compose;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .swipe-container {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style-type: none;
|
||||||
|
|
||||||
|
.swipe-action {
|
||||||
|
font-size: 1.2em;
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
margin: 0 .5rem;
|
||||||
|
font-size: inherit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
|
.swipe-action::before {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.down {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: .01rem;
|
||||||
|
background-color: @color-swipe-down-background;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 1px solid @color-swipe-down-border;
|
||||||
|
|
||||||
|
.swipe-action {
|
||||||
|
&::before {
|
||||||
|
float: none;
|
||||||
|
margin: .4rem;
|
||||||
|
padding: .25rem;
|
||||||
|
line-height: 1;
|
||||||
|
font-size: 1.2em;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .swipe-label {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.swipe-active:not(#swipe-action),
|
||||||
|
.swipe-active > td {
|
||||||
|
background-color: @color-layout-list-background;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toolbar.menu a.button.swipe {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// no support in IE
|
||||||
|
html.layout-small.touch:not(.ie),
|
||||||
|
html.layout-phone.touch:not(.ie) {
|
||||||
|
.toolbar.menu {
|
||||||
|
a.button {
|
||||||
|
&.swipe {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: @fa-var-hand-pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// hide down option in Edge (see known issues in readme)
|
||||||
|
html.edge #swipeoptionsmenu > .swipeoptions-down {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// dark mode
|
||||||
|
& when (isdefined(@dark-mode-enabled)) {
|
||||||
|
& when (@dark-mode-enabled = true) {
|
||||||
|
html.dark-mode {
|
||||||
|
#swipe-action {
|
||||||
|
&.horizontal {
|
||||||
|
background-color: @color-dark-swipe-list-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-dark-swipe-list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.vertical a {
|
||||||
|
color: @color-dark-swipe-list;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.horizontal,
|
||||||
|
&.vertical > .swipe-container {
|
||||||
|
&.swipe-active,
|
||||||
|
&.swipe-mark {
|
||||||
|
background-color: @color-dark-swipe-mark-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-dark-swipe-mark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.swipe-danger {
|
||||||
|
background-color: @color-dark-swipe-danger-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-dark-swipe-danger;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.swipe-move {
|
||||||
|
background-color: @color-dark-swipe-move-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-dark-swipe-move;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.swipe-success,
|
||||||
|
&.swipe-compose {
|
||||||
|
background-color: @color-dark-swipe-compose-background;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @color-dark-swipe-compose;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .swipe-container {
|
||||||
|
&.down {
|
||||||
|
background-color: @color-dark-swipe-down-background;
|
||||||
|
border-color: @color-dark-swipe-down-border;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.swipe-active:not(#swipe-action),
|
||||||
|
.swipe-active > td {
|
||||||
|
background-color: @color-dark-background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@import (optional) "_custom";
|
1
plugins/swipe/swipe.min.css
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#swipe-action.horizontal a,#swipe-action.vertical a{color:grey}#swipe-action{position:absolute;display:flex;align-items:center;border-collapse:collapse}#swipe-action>.swipe-container.down .swipe-action>.swipe-label,.toolbar.menu a.button.swipe{display:none}#swipe-action.horizontal{background-color:#e6e6e6}#swipe-action.vertical{top:2em;z-index:1000}#swipe-action.horizontal.swipe-checkmail a,#swipe-action.horizontal.swipe-danger a,#swipe-action.horizontal.swipe-mark a,#swipe-action.horizontal.swipe-select a,#swipe-action.vertical>.swipe-container.swipe-checkmail a,#swipe-action.vertical>.swipe-container.swipe-danger a,#swipe-action.vertical>.swipe-container.swipe-mark a,#swipe-action.vertical>.swipe-container.swipe-select a{color:#fff}#swipe-action.horizontal.swipe-checkmail,#swipe-action.horizontal.swipe-mark,#swipe-action.horizontal.swipe-select,#swipe-action.vertical>.swipe-container.swipe-checkmail,#swipe-action.vertical>.swipe-container.swipe-mark,#swipe-action.vertical>.swipe-container.swipe-select{background-color:#37beff}#swipe-action.horizontal.swipe-danger,#swipe-action.vertical>.swipe-container.swipe-danger{background-color:#ff5552}#swipe-action.horizontal.swipe-move,#swipe-action.vertical>.swipe-container.swipe-move{background-color:#ffd452}#swipe-action.horizontal.swipe-move a,#swipe-action.vertical>.swipe-container.swipe-move a{color:#2c363a}#swipe-action.horizontal.swipe-compose,#swipe-action.horizontal.swipe-success,#swipe-action.vertical>.swipe-container.swipe-compose,#swipe-action.vertical>.swipe-container.swipe-success{background-color:#41b849}#swipe-action.horizontal.swipe-compose a,#swipe-action.horizontal.swipe-success a,#swipe-action.vertical>.swipe-container.swipe-compose a,#swipe-action.vertical>.swipe-container.swipe-success a{color:#fff}#swipe-action>.swipe-container{margin:0;padding:0;list-style-type:none}#swipe-action>.swipe-container .swipe-action{font-size:1.2em;opacity:1}#swipe-action>.swipe-container .swipe-action::before{margin:0 .5rem;font-size:inherit}#swipe-action>.swipe-container.left{position:absolute;right:0}#swipe-action>.swipe-container.left .swipe-action::before{float:right}#swipe-action>.swipe-container.down{margin:0 auto;padding:.01rem;background-color:#fff;border-radius:50%;border:1px solid #e6e6e6}#swipe-action>.swipe-container.down .swipe-action::before{float:none;margin:.4rem;padding:.25rem;line-height:1;font-size:1.2em;width:auto;height:auto}.swipe-active:not(#swipe-action),.swipe-active>td{background-color:#fff}html.layout-phone.touch:not(.ie) .toolbar.menu a.button.swipe,html.layout-small.touch:not(.ie) .toolbar.menu a.button.swipe{display:inline-block}html.layout-phone.touch:not(.ie) .toolbar.menu a.button.swipe:before,html.layout-small.touch:not(.ie) .toolbar.menu a.button.swipe:before{content:"\f25a"}html.edge #swipeoptionsmenu>.swipeoptions-down{display:none}html.dark-mode #swipe-action.horizontal{background-color:#374449}html.dark-mode #swipe-action.horizontal a,html.dark-mode #swipe-action.vertical a{color:#7c949d}html.dark-mode #swipe-action.horizontal.swipe-active a,html.dark-mode #swipe-action.horizontal.swipe-compose a,html.dark-mode #swipe-action.horizontal.swipe-danger a,html.dark-mode #swipe-action.horizontal.swipe-mark a,html.dark-mode #swipe-action.horizontal.swipe-move a,html.dark-mode #swipe-action.horizontal.swipe-success a,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-active a,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-compose a,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-danger a,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-mark a,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-move a,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-success a{color:#c5d1d3}html.dark-mode #swipe-action.horizontal.swipe-active,html.dark-mode #swipe-action.horizontal.swipe-mark,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-active,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-mark{background-color:#217299}html.dark-mode #swipe-action.horizontal.swipe-danger,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-danger{background-color:#993331}html.dark-mode #swipe-action.horizontal.swipe-move,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-move{background-color:#997f31}html.dark-mode #swipe-action.horizontal.swipe-compose,html.dark-mode #swipe-action.horizontal.swipe-success,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-compose,html.dark-mode #swipe-action.vertical>.swipe-container.swipe-success{background-color:#276e2c}html.dark-mode #swipe-action>.swipe-container.down{background-color:#21292c;border-color:#374449}html.dark-mode .swipe-active:not(#swipe-action),html.dark-mode .swipe-active>td{background-color:#21292c}
|
1
styles/embed.min.css
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.popover,.rcmail-inline-message,body,button,input,optgroup,select,textarea{font-family:Roboto,sans-serif}@font-face{font-family:Icons;font-style:normal;font-weight:900;src:url(../fonts/fa-solid-900.woff2) format('woff2'),url(../fonts/fa-solid-900.woff) format('woff')}@font-face{font-family:Icons;font-style:normal;font-weight:400;src:url(../fonts/fa-regular-400.woff2) format('woff2'),url(../fonts/fa-regular-400.woff) format('woff')}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local('Roboto'),local('Roboto-Regular'),url(../fonts/roboto-v19-regular.woff2) format('woff2'),url(../fonts/roboto-v19-regular.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:local('Roboto Italic'),local('Roboto-Italic'),url(../fonts/roboto-v19-italic.woff2) format('woff2'),url(../fonts/roboto-v19-italic.woff) format('woff')}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:local('Roboto Bold'),local('Roboto-Bold'),url(../fonts/roboto-v19-regular-700.woff2) format('woff2'),url(../fonts/roboto-v19-regular-700.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:700;src:local('Roboto Bold Italic'),local('Roboto-BoldItalic'),url(../fonts/roboto-v19-italic-700.woff2) format('woff2'),url(../fonts/roboto-v19-italic-700.woff) format('woff')}button,input,select,textarea{line-height:initial}input{vertical-align:middle}a{color:#00acff}a:hover{color:#008acc}a.disabled{pointer-events:none}a.disabled:not(.btn){opacity:.5}.mce-content-body{margin:4px;color:#2c363a}.mce-content-body div.pre{font-family:monospace}.mce-content-body blockquote{border-left:#1010ff 2px solid;margin:0;padding:0 .4em}.rcmail-inline-message{font-size:14px;padding:.5em;margin:0 0 .5em;opacity:.95;color:#2c363a;background-color:rgba(255,212,82,.2);display:flex;align-items:center}.rcmail-inline-message:before{display:block;float:left;margin:0 .3em 0 0;height:1em;font-family:Icons;font-style:normal;font-weight:900;text-decoration:inherit;text-align:center;speak:none;font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1.5em;line-height:1;width:1em;content:"\f071";color:#ffd452}.rcmail-inline-message span{line-height:1.5}.rcmail-inline-message a{color:#00acff}.rcmail-inline-message a:hover{color:#008acc}.rcmail-inline-message button{vertical-align:middle;white-space:nowrap;padding:.375em .75em;margin-left:.5em;font-size:1em;line-height:1.5;border-radius:.25em;border:1px solid transparent;color:#fff;background:#37beff}.rcmail-inline-message button:focus{box-shadow:0 0 0 .2rem rgba(55,190,255,.5)}.rcmail-inline-message button:hover{background:#0eb1ff;border-color:#04adff}.rcmail-inline-message button:not([disabled]):not(.disabled):active{background:#00abfe;border-color:#00a4f4;box-shadow:0 0 0 .2rem rgba(55,190,255,.53)}.rcmail-inline-buttons{margin:0}
|
1
styles/print.min.css
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#print-layout #message-header,#print-layout .image-attachment .image-link{margin-bottom:.5rem}body{overflow:auto;height:auto}#print-layout{margin:1rem}#print-layout #logo{max-height:80px}#print-layout .image-attachment .attachment-links{display:none}#print-layout .attachment-size{padding-left:.1rem}#print-layout blockquote{page-break-inside:auto}#print-layout .formcontent{padding:0}#print-layout .formcontent legend{margin-top:.5rem}#print-layout .formcontent .row .form-control-plaintext{padding:.1rem}#print-layout .formcontent .contactfield{padding:.2rem 0}#print-layout .propform.grouped .row.input-group .input-group-text{padding:0;min-width:12rem;background:#fff;border:0}#print-layout .contact-header{margin-bottom:0}
|
7915
styles/styles.min.css
vendored
Normal file
16
templates/about.html
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="about" /></h1>
|
||||||
|
|
||||||
|
<div class="frame-content">
|
||||||
|
<roundcube:object name="aboutcontent" />
|
||||||
|
<h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2>
|
||||||
|
<p class="copyright"><roundcube:object name="copyright" /></p>
|
||||||
|
<p class="license"><roundcube:object name="license" /></p>
|
||||||
|
<div class="readtext">
|
||||||
|
<h3><roundcube:label name="installedplugins" /></h3>
|
||||||
|
<roundcube:object name="pluginlist" id="pluginlist" class="records-table" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
173
templates/addressbook.html
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="addressbook" /></h1>
|
||||||
|
|
||||||
|
<!-- sources/groups list -->
|
||||||
|
<div id="layout-sidebar" class="listbox" role="navigation" aria-labelledby="directorylist-header">
|
||||||
|
<div class="header">
|
||||||
|
|
||||||
|
<span id="directorylist-header" class="header-title"><roundcube:label name="groups" /></span>
|
||||||
|
<roundcube:button name="groupoptions" type="link" title="arialabelabookgroupoptions" label="actions"
|
||||||
|
class="button icon sidebar-menu" innerClass="inner" data-popup="groupoptions-menu" />
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<roundcube:object name="directorylist" id="directorylist" class="treelist listing iconized" />
|
||||||
|
<h3 class="voice"><roundcube:label name="savedsearches" /></h3>
|
||||||
|
<roundcube:object name="savedsearchlist" id="savedsearchlist" class="treelist listing iconized" />
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer_menu.html" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- contacts list -->
|
||||||
|
<div id="layout-list" class="listbox selected" aria-labelledby="aria-label-contactslist">
|
||||||
|
|
||||||
|
|
||||||
|
<table class="tableheaderseb"><tr>
|
||||||
|
|
||||||
|
<td class="only_small_screen" style="padding:.5rem 0 0 1rem">
|
||||||
|
<a class="button icon task-menu-button" href="#menu" style="font-size: 20px;"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<roundcube:object name="searchform" id="searchform" wrapper="searchbar menu"
|
||||||
|
label="contactsearchform" buttontitle="findcontacts" options="searchmenu" ariatag="h2" />
|
||||||
|
</td>
|
||||||
|
<td class='only_small_screen'></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="searchmenu" class="hidden searchoptions scroller propform formcontainer" aria-labelledby="aria-label-search-menu">
|
||||||
|
<h3 id="aria-label-search-menu" class="voice"><roundcube:label name="searchmod" /></h3>
|
||||||
|
<div class="formcontent">
|
||||||
|
<ul class="proplist">
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="name" /><roundcube:label name="name" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="firstname" /><roundcube:label name="firstname" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="surname" /><roundcube:label name="surname" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="email" /><roundcube:label name="email" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="*" /><roundcube:label name="allfields" /></label></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="formbuttons">
|
||||||
|
<button type="button" class="btn btn-primary icon search" onclick="return rcmail.command('search')"><roundcube:label name="search" /></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<h2 id="aria-label-contactslist" class="voice"><roundcube:label name="contacts" /></h2>
|
||||||
|
<roundcube:object name="addresslist" id="contacts-table" class="listing iconized contactlist"
|
||||||
|
noheader="true" role="listbox" data-list="contact_list"
|
||||||
|
data-label-msg="listempty" data-label-ext="listusebutton" data-create-command="add" />
|
||||||
|
</div>
|
||||||
|
<roundcube:include file="includes/pagenav.html" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- contact details frame -->
|
||||||
|
<div id="layout-content" role="main">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
<roundcube:include file="includes/top-right_menu.html" />
|
||||||
|
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span class="header-title only_small"></span>
|
||||||
|
<!-- toolbar -->
|
||||||
|
<div id="addressbooktoolbar" class="toolbar menu">
|
||||||
|
<roundcube:button command="add" type="link" class="create disabled" classAct="create"
|
||||||
|
label="create" title="newcontact" innerclass="inner" data-fab="true" />
|
||||||
|
<roundcube:button command="print" type="link" data-hidden="small"
|
||||||
|
class="print disabled" classAct="print"
|
||||||
|
label="print" title="printcontact" innerclass="inner" />
|
||||||
|
<roundcube:button command="delete" type="link" class="delete disabled" classAct="delete"
|
||||||
|
label="delete" title="deletecontact" innerClass="inner" />
|
||||||
|
<span class="spacer"></span>
|
||||||
|
<roundcube:button command="advanced-search" type="link" class="search disabled" classAct="search"
|
||||||
|
label="search" title="advsearch" innerclass="inner" />
|
||||||
|
<roundcube:container name="toolbar" id="addressbooktoolbar" />
|
||||||
|
<roundcube:button command="import" type="link" class="import disabled" classAct="import"
|
||||||
|
label="import" title="importcontacts" innerclass="inner" />
|
||||||
|
<span class="dropbutton">
|
||||||
|
<roundcube:button command="export" type="link" class="export disabled" classAct="export"
|
||||||
|
label="export" title="exportvcards" innerclass="inner" />
|
||||||
|
<a href="#export" class="dropdown" data-popup="export-menu">
|
||||||
|
<span class="inner"><roundcube:label name="arialabelcontactexportoptions" /></span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<roundcube:button name="contactmenulink" id="contactmenulink" type="link"
|
||||||
|
class="more" label="more" title="moreactions"
|
||||||
|
data-popup="contact-menu" innerclass="inner" />
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<h2 id="aria-label-contact-frame" class="voice"><roundcube:label name="contactproperties" /></h2>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="contentframe" id="contact-frame" src="env:blankpage" title="contactproperties"
|
||||||
|
aria-labelledby="aria-label-contact-frame" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- popup menus -->
|
||||||
|
<div id="export-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-export-menu" class="voice"><roundcube:label name="arialabelcontactexportoptions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-export-menu">
|
||||||
|
<roundcube:button type="link-menuitem" command="export" label="exportall" prop="sub" class="export all disabled" classAct="export all active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="export-selected" label="exportsel" prop="sub" class="export select disabled" classAct="export select active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="groupoptions-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-groupoptions-menu" class="voice"><roundcube:label name="arialabelabookgroupoptions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-groupoptions-menu">
|
||||||
|
<roundcube:button type="link-menuitem" command="group-create" title="newgroup" label="addgroup" class="create disabled" classAct="create active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="group-rename" label="grouprename" class="group rename disabled" classAct="group rename active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="group-delete" label="groupdelete" class="group delete disabled" classAct="group delete active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="search-create" label="searchsave" class="search disabled" classAct="search active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="search-delete" label="searchdelete" class="search delete disabled" classAct="search delete active" />
|
||||||
|
<roundcube:container name="groupoptions" id="groupoptionsmenu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="listselect-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-listselect-menu" class="voice"><roundcube:label name="arialabellistselectmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-listselect-menu">
|
||||||
|
<roundcube:button type="link-menuitem" label="selection" class="selection" classAct="selection active"
|
||||||
|
name="list-toggle-button" id="list-toggle-button" onclick="UI.toggle_list_selection(this, 'contacts-table')" />
|
||||||
|
<roundcube:button command="select-all" type="link-menuitem" prop="page" label="currpage" class="select page disabled" classAct="select page active" />
|
||||||
|
<roundcube:button command="select-all" type="link-menuitem" prop="invert" label="invert" class="select invert disabled" classAct="select invert active" />
|
||||||
|
<roundcube:button command="select-none" type="link-menuitem" label="none" class="select none disabled" classAct="select none active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="dragcontact-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-dragcontact-menu" class="voice"><roundcube:label name="arialabeldropactionmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-dragcontact-menu">
|
||||||
|
<roundcube:button type="link-menuitem" command="move" onclick="return rcmail.drag_menu_action('move')" label="move" class="disabled" classAct="active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="copy" onclick="return rcmail.drag_menu_action('copy')" label="copy" class="disabled" classAct="active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="contact-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-contact-menu" class="voice"><roundcube:label name="arialabelmorecontactactions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-contact-menu">
|
||||||
|
<roundcube:if condition="env:qrcode" />
|
||||||
|
<roundcube:button type="link-menuitem" command="qrcode" label="qrcode" class="qrcode disabled" classAct="qrcode active" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:button type="link-menuitem" command="group-assign-selected" label="groupassign" class="assigngroup disabled" classAct="assigngroup active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="group-remove-selected" label="groupremove" class="removegroup disabled" classAct="removegroup active" />
|
||||||
|
<roundcube:if condition="env:contact_move_enabled" />
|
||||||
|
<roundcube:button type="link-menuitem" command="move" label="moveto" class="move disabled" classAct="move active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="env:contact_copy_enabled" />
|
||||||
|
<roundcube:button type="link-menuitem" command="copy" label="copyto" class="copy disabled" classAct="copy active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:container name="contactmenu" id="contact-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
74
templates/bounce.html
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="bouncemsg" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="bounceObjects" id="bounce-objects" class="mb-3" />
|
||||||
|
<roundcube:object name="composeFormHead" role="main" />
|
||||||
|
<div id="bounceheaders" role="region" aria-labelledby="aria-label-composeheaders">
|
||||||
|
<h2 id="aria-label-composeheaders" class="voice"><roundcube:label name="arialabelmessageheaders" /></h2>
|
||||||
|
<div class="compose-headers">
|
||||||
|
<div id="compose_from" class="form-group row">
|
||||||
|
<label for="_from" class="col-2 col-form-label"><roundcube:label name="from" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="from" id="_from" form="form" tabindex="1" class="form-control" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#identities" onclick="return rcmail.command('switch-task', 'settings/identities')" class="input-group-text icon edit" title="<roundcube:label name="editidents" />" tabindex="1"><span class="inner"><roundcube:label name="editidents" /></span></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_to" class="form-group row">
|
||||||
|
<label for="_to" class="col-2 col-form-label"><roundcube:label name="to" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="to" id="_to" form="form" tabindex="1" aria-required="true" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#add-header" data-popup="headers-menu" class="input-group-text icon add" title="<roundcube:label name="addheader" />" tabindex="1"><span class="inner"><roundcube:label name="addheader" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_cc" class="hidden form-group row">
|
||||||
|
<label for="_cc" class="col-2 col-form-label"><roundcube:label name="cc" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="cc" id="_cc" form="form" tabindex="1" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#delete" onclick="UI.header_reset('_cc')" class="input-group-text icon delete" title="<roundcube:label name='delete' />" tabindex="1"><span class="inner"><roundcube:label name="delete" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_bcc" class="hidden form-group row">
|
||||||
|
<label for="_bcc" class="col-2 col-form-label"><roundcube:label name="bcc" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="bcc" id="_bcc" form="form" tabindex="1" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#delete" onclick="UI.header_reset('_bcc')" class="input-group-text icon delete" title="<roundcube:label name='delete' />" tabindex="1"><span class="inner"><roundcube:label name="delete" /></span></a>
|
||||||
|
</span>
|
||||||
|
</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="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="headers-menu" class="popupmenu" data-popup-init="headersmenu">
|
||||||
|
<h3 id="aria-label-headersmenu" class="voice"><roundcube:label name="arialabelheadersmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-headersmenu">
|
||||||
|
<li role="menuitem"><a data-target="cc" href="#" role="button" tabindex="-1" class="recipient active"><roundcube:label name="cc" /></a></li>
|
||||||
|
<li role="menuitem"><a data-target="bcc" href="#" role="button" tabindex="-1" class="recipient active"><roundcube:label name="bcc" /></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
294
templates/compose.html
Normal file
|
@ -0,0 +1,294 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:add_label name="recipientsadded" />
|
||||||
|
<roundcube:add_label name="nocontactselected" />
|
||||||
|
<roundcube:add_label name="recipient" />
|
||||||
|
<roundcube:add_label name="insert" />
|
||||||
|
<roundcube:add_label name="insertcontact" />
|
||||||
|
<roundcube:add_label name="recipientedit" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="compose" /></h1>
|
||||||
|
|
||||||
|
<!-- compose options and attachments list -->
|
||||||
|
<div id="layout-sidebar" class="listbox sidebar-right">
|
||||||
|
<div class="header">
|
||||||
|
|
||||||
|
<a style="width:40px;font-size: 1.75rem;height: 58px;text-decoration:none;text-align:center;" class="back-content-button only_small" href="#content"><i class="sebicon backicon"></i></a>
|
||||||
|
|
||||||
|
<span class="header-title all-sizes">
|
||||||
|
|
||||||
|
<roundcube:label name="optionsandattachments" />
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<!-- attachments -->
|
||||||
|
<div id="compose-attachments" class="file-upload" role="region" aria-labelledby="aria-label-compose-attachments">
|
||||||
|
<h2 id="aria-label-compose-attachments" class="voice"><roundcube:label name="attachments" /></h2>
|
||||||
|
<div class="upload-form">
|
||||||
|
<roundcube:object name="composeAttachmentForm" mode="hint" />
|
||||||
|
<button type="button" class="btn btn-secondary attach" tabindex="2" onclick="rcmail.upload_input('uploadform')"><roundcube:label name="addattachment" /></button>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="composeAttachmentList" id="attachment-list" class="attachmentslist" tabindex="2" />
|
||||||
|
<roundcube:object name="fileDropArea" id="compose-attachments" />
|
||||||
|
</div>
|
||||||
|
<!-- compose options -->
|
||||||
|
<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>
|
||||||
|
<roundcube:container name="composeoptions" id="compose-options" />
|
||||||
|
<roundcube:if condition="!in_array('mdn_default', (array)config:dont_override)" />
|
||||||
|
<div class="form-group row form-check">
|
||||||
|
<label for="compose-mdn" class="col-form-label col-6"><roundcube:label name="returnreceipt" /></label>
|
||||||
|
<div class="col-6 form-check">
|
||||||
|
<roundcube:object name="mdnCheckBox" id="compose-mdn" noform="true" tabindex="2" class="form-check-input" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="!in_array('dsn_default', (array)config:dont_override)" />
|
||||||
|
<div class="form-group row form-check">
|
||||||
|
<label for="compose-dsn" class="col-form-label col-6"><roundcube:label name="dsn" /></label>
|
||||||
|
<div class="col-6 form-check">
|
||||||
|
<roundcube:object name="dsnCheckBox" id="compose-dsn" noform="true" tabindex="2" class="form-check-input" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="compose-priority" class="col-form-label col-6"><roundcube:label name="priority" /></label>
|
||||||
|
<div class="col-6">
|
||||||
|
<roundcube:object name="prioritySelector" id="compose-priority" noform="true" tabindex="2" class="custom-select" />
|
||||||
|
</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 id="layout-content" class="listbox selected" role="main">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<span class="header-title"><roundcube:label name="compose" /></span>
|
||||||
|
|
||||||
|
<div class="only_small_screen" style="width: 50px;text-align: center;" onclick="return rcmail.command('send','',this,event)">
|
||||||
|
<i class="sebicon sendicon" style=""></i>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- toolbar -->
|
||||||
|
<div id="messagetoolbar" class="toolbar menu" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
<a class="options" href="#options" onclick="mail_menu_show_attachement()" data-hidden="big">
|
||||||
|
<span class="inner"><roundcube:label name="optionsandattachments"></span>
|
||||||
|
</a>
|
||||||
|
<roundcube:button command="savedraft" type="link" class="save draft disabled" classAct="save draft"
|
||||||
|
label="save" title="savemessage" tabindex="2" innerclass="inner" data-content-button="true" />
|
||||||
|
<span class="spacer"></span>
|
||||||
|
<roundcube:button name="addattachment" type="link" class="attach"
|
||||||
|
label="attach" title="addattachment" data-hidden="small"
|
||||||
|
onclick="if (!$(this).is('.disabled')) rcmail.upload_input('uploadform')"
|
||||||
|
aria-haspopup="true" aria-expanded="false" tabindex="2" innerclass="inner" />
|
||||||
|
<roundcube:button command="insert-sig" type="link" class="signature disabled" classAct="signature"
|
||||||
|
label="signature" title="insertsignature" tabindex="2" innerclass="inner" />
|
||||||
|
<a href="#responses" class="responses" label="responses" title="<roundcube:label name='insertresponse' />" unselectable="on" tabindex="2" data-popup="responses-menu">
|
||||||
|
<span class="inner"><roundcube:label name="responses" /></span>
|
||||||
|
</a>
|
||||||
|
<roundcube:if condition="!empty(env:spell_langs)" />
|
||||||
|
<span class="dropbutton">
|
||||||
|
<roundcube:button command="spellcheck" type="link" class="spellcheck disabled"
|
||||||
|
classAct="spellcheck" classSel="button spellcheck pressed"
|
||||||
|
label="spellcheck" title="checkspelling" tabindex="2" innerclass="inner" />
|
||||||
|
<a href="#languages" class="dropdown" tabindex="2" data-popup="spell-menu">
|
||||||
|
<span class="inner"><roundcube:label name="language" /></span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<roundcube:endif />
|
||||||
|
<span class="dropbutton" style="display:none">
|
||||||
|
<roundcube:button command="compose-encrypted" type="link" class="encrypt disabled"
|
||||||
|
classAct="encrypt" classSel="encrypt selected" innerclass="inner"
|
||||||
|
label="encrypt" title="encryptmessagemailvelope" tabindex="2" />
|
||||||
|
<a href="#encryption" id="encryption-menu-button" class="dropdown" tabindex="2" data-popup="encryption-menu">
|
||||||
|
<span class="inner"><roundcube:label name="encryptmessagemailvelope" /></span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<roundcube:container name="toolbar" id="compose-toolbar" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose-content" class="formcontainer content">
|
||||||
|
<roundcube:object name="composeFormHead" role="main" class="formcontent scroller" />
|
||||||
|
<roundcube:object name="composeObjects" id="compose-objects" class="mb-3" />
|
||||||
|
<!-- message headers -->
|
||||||
|
<div id="compose-headers" role="region" aria-labelledby="aria-label-composeheaders">
|
||||||
|
<h2 id="aria-label-composeheaders" class="voice"><roundcube:label name="arialabelmessageheaders" /></h2>
|
||||||
|
<div class="compose-headers">
|
||||||
|
<div id="compose_from" class="form-group row">
|
||||||
|
<label for="_from" class="col-2 col-form-label"><roundcube:label name="from" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="from" id="_from" form="form" tabindex="1" class="form-control" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#identities" onclick="return rcmail.command('switch-task', 'settings/identities')" class="input-group-text icon edit" title="<roundcube:label name="editidents" />" tabindex="1"><span class="inner"><roundcube:label name="editidents" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_to" class="form-group row">
|
||||||
|
<label for="_to" class="col-2 col-form-label"><roundcube:label name="to" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="to" id="_to" form="form" tabindex="1" aria-required="true" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#add-contact" onclick="UI.recipient_selector('to')" class="input-group-text icon add recipient" title="<roundcube:label name="addcontact" />" tabindex="1"><span class="inner"><roundcube:label name="addcontact" /></span></a>
|
||||||
|
</span>
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#add-header" data-popup="headers-menu" class="input-group-text icon add" title="<roundcube:label name="addheader" />" tabindex="1"><span class="inner"><roundcube:label name="addheader" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_cc" class="hidden form-group row">
|
||||||
|
<label for="_cc" class="col-2 col-form-label"><roundcube:label name="cc" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="cc" id="_cc" form="form" tabindex="1" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#add-contact" onclick="UI.recipient_selector('cc')" class="input-group-text icon add recipient" title="<roundcube:label name="addcontact" />" tabindex="1"><span class="inner"><roundcube:label name="addcontact" /></span></a>
|
||||||
|
</span>
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#delete" onclick="UI.header_reset('_cc')" class="input-group-text icon delete" title="<roundcube:label name='delete' />" tabindex="1"><span class="inner"><roundcube:label name="delete" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_bcc" class="hidden form-group row">
|
||||||
|
<label for="_bcc" class="col-2 col-form-label"><roundcube:label name="bcc" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="bcc" id="_bcc" form="form" tabindex="1" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#add-contact" onclick="UI.recipient_selector('bcc')" class="input-group-text icon add recipient" title="<roundcube:label name="addcontact" />" tabindex="1"><span class="inner"><roundcube:label name="addcontact" /></span></a>
|
||||||
|
</span>
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#delete" onclick="UI.header_reset('_bcc')" class="input-group-text icon delete" title="<roundcube:label name='delete' />" tabindex="1"><span class="inner"><roundcube:label name="delete" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_replyto" class="hidden form-group row">
|
||||||
|
<label for="_replyto" class="col-2 col-form-label"><roundcube:label name="replyto" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="replyto" id="_replyto" form="form" tabindex="1" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#add-contact" onclick="UI.recipient_selector('replyto')" class="input-group-text icon add recipient" title="<roundcube:label name="addcontact" />" tabindex="1"><span class="inner"><roundcube:label name="addcontact" /></span></a>
|
||||||
|
</span>
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#delete" onclick="UI.header_reset('_replyto')" class="input-group-text icon delete" title="<roundcube:label name='delete' />" tabindex="1"><span class="inner"><roundcube:label name="delete" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_followupto" class="hidden form-group row">
|
||||||
|
<label for="_followupto" class="col-2 col-form-label"><roundcube:label name="followupto" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<div class="input-group">
|
||||||
|
<roundcube:object name="composeHeaders" part="followupto" id="_followupto" form="form" tabindex="1" data-recipient-input="true" />
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#add-contact" onclick="UI.recipient_selector('followupto')" class="input-group-text icon add recipient" title="<roundcube:label name="addcontact" />" tabindex="1"><span class="inner"><roundcube:label name="addcontact" /></span></a>
|
||||||
|
</span>
|
||||||
|
<span class="input-group-append">
|
||||||
|
<a href="#delete" onclick="UI.header_reset('_followupto')" class="input-group-text icon delete" title="<roundcube:label name='delete' />" tabindex="1"><span class="inner"><roundcube:label name="delete" /></span></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="compose_subject" class="form-group row">
|
||||||
|
<label for="compose-subject" class="col-2 col-form-label"><roundcube:label name="subject" /></label>
|
||||||
|
<div class="col-10">
|
||||||
|
<roundcube:object name="composeSubject" id="compose-subject" form="form" tabindex="1" class="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- message compose body -->
|
||||||
|
<div id="composebodycontainer">
|
||||||
|
<label for="composebody" class="voice"><roundcube:label name="arialabelmessagebody" /></label>
|
||||||
|
<roundcube:object name="composeBody" id="composebody" form="form" cols="70" rows="20" class="form-control" tabindex="1" />
|
||||||
|
<roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
|
||||||
|
<roundcube:object name="editorSelector" id="editor-selector" editorid="composebody" noform="true" class="hidden" />
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
</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>
|
||||||
|
|
||||||
|
<roundcube:object name="composeAttachmentForm" id="uploadform" mode="smart" />
|
||||||
|
|
||||||
|
<div id="spell-menu" class="popupmenu" data-popup-init="spellmenu"></div>
|
||||||
|
|
||||||
|
<div id="headers-menu" class="popupmenu" data-popup-init="headersmenu">
|
||||||
|
<h3 id="aria-label-headersmenu" class="voice"><roundcube:label name="arialabelheadersmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-headersmenu">
|
||||||
|
<li role="menuitem"><a data-target="cc" href="#" role="button" tabindex="-1" class="recipient active"><roundcube:label name="cc" /></a></li>
|
||||||
|
<li role="menuitem"><a data-target="bcc" href="#" role="button" tabindex="-1" class="recipient active"><roundcube:label name="bcc" /></a></li>
|
||||||
|
<li role="menuitem"><a data-target="replyto" href="#" role="button" tabindex="-1" class="recipient active"><roundcube:label name="replyto" /></a></li>
|
||||||
|
<li role="menuitem"><a data-target="followupto" href="#" role="button" tabindex="-1" class="recipient active"><roundcube:label name="followupto" /></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="responses-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-responsesmenu" class="voice"><roundcube:label name="arialabelresponsesmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-responsesmenu">
|
||||||
|
<li role="separator" class="separator"><label><roundcube:label name="insertresponse" /></label></li>
|
||||||
|
<roundcube:object name="responseslist" id="responseslist" tagname="ul" class="rounded-0" itemclass="active" list-placeholder="noresponsesavailable" />
|
||||||
|
<li role="separator" class="separator"><label><roundcube:label name="manageresponses" /></label></li>
|
||||||
|
<roundcube:button command="save-response" type="link-menuitem" label="newresponse" class="create responses disabled" classAct="create responses active" unselectable="on" />
|
||||||
|
<roundcube:button name="responses" type="link-menuitem" label="editresponses" class="edit responses active" onclick="return rcmail.command('switch-task', 'settings/responses')" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="attachmentmenu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-attachmentmenu" class="voice"><roundcube:label name="arialabelattachmentmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-attachmentmenu">
|
||||||
|
<roundcube:button command="open-attachment" id="attachmenuopen" type="link-menuitem" label="open" class="extwin disabled" classAct="extwin active" />
|
||||||
|
<roundcube:button command="download-attachment" id="attachmenudownload" type="link-menuitem" label="download" class="download disabled" classAct="download active" />
|
||||||
|
<roundcube:button command="rename-attachment" id="attachmenurename" type="link-menuitem" label="rename" class="rename disabled" classAct="rename active" />
|
||||||
|
<roundcube:container name="attachmentmenu" id="attachmentoptionsmenu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="encryption-menu" class="popupmenu">
|
||||||
|
<ul class="menu listing" role="menu">
|
||||||
|
<roundcube:button command="compose-encrypted" type="link-menuitem" label="encryptmessage" class="encrypt disabled" classAct="encrypt active" />
|
||||||
|
<roundcube:button command="compose-encrypted-signed" type="link-menuitem" label="encryptandsign" class="encrypt sign disabled" classAct="encrypt sign active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="recipient-dialog" class="popupmenu" role="region" aria-labelledby="aria-label-composecontacts">
|
||||||
|
<div class="listbox">
|
||||||
|
<roundcube:object name="searchform" id="searchform" wrapper="searchbar menu"
|
||||||
|
label="contactsearchform" buttontitle="findcontacts" ariatag="h2" class="no-bs" />
|
||||||
|
<div class="scroller" tabindex="-1">
|
||||||
|
<roundcube:object name="addressbooks" id="directorylist" class="treelist listing iconized"
|
||||||
|
summary="ariasummarycomposecontacts" />
|
||||||
|
<roundcube:object name="addresslist" id="contacts-table" class="listing iconized contactlist"
|
||||||
|
noheader="true" role="listbox" data-list="contact_list" data-list-select-replace="#recipient-dialog .pagenav-text" />
|
||||||
|
</div>
|
||||||
|
<roundcube:include file="includes/pagenav.html" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
23
templates/contact.html
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="contactproperties" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<div class="contact-header">
|
||||||
|
<div id="contactphoto" class="contact-photo">
|
||||||
|
<roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.svg"
|
||||||
|
placeholderGroup="/images/contactgroup.svg" />
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="contacthead" id="contacthead" class="contact-head readonly" with-source="true" />
|
||||||
|
</div>
|
||||||
|
<div id="contacttabs" class="tabbed">
|
||||||
|
<roundcube:object name="contactdetails" fieldset-class="propform grouped readonly"
|
||||||
|
short-legend-labels="true" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="formbuttons">
|
||||||
|
<roundcube:button command="edit" class="btn btn-primary edit" label="edit" condition="!ENV:readonly" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
29
templates/contactedit.html
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:object name="steptitle" /></h1>
|
||||||
|
|
||||||
|
<roundcube:form name="editform" method="post" id="contact-details" class="formcontent">
|
||||||
|
<div class="contact-header">
|
||||||
|
<fieldset id="contactphoto" class="contact-photo">
|
||||||
|
<legend class="voice"><roundcube:label name="contactphoto" /></legend>
|
||||||
|
<roundcube:object name="contactphoto" id="contactpic" class="image-upload" placeholder="/images/contactpic.svg" />
|
||||||
|
<roundcube:if condition="env:photocol" />
|
||||||
|
<roundcube:object name="fileDropArea" id="contactpic" />
|
||||||
|
<roundcube:endif />
|
||||||
|
</fieldset>
|
||||||
|
<roundcube:object name="contactedithead" id="contacthead" form="editform"
|
||||||
|
class="propform contact-head" use-labels="true" with-source="true" />
|
||||||
|
</div>
|
||||||
|
<div id="contacttabs" class="tabbed">
|
||||||
|
<roundcube:object name="contacteditform" textareacols="60" form="editform"
|
||||||
|
fieldset-class="propform grouped" compact-form="true" short-legend-labels="true" />
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="formbuttons">
|
||||||
|
<roundcube:button command="save" class="btn btn-primary submit" label="save" onclick="LS_remove_contact();return rcmail.command('save','',this,event)"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:object name="photoUploadForm" id="upload-form" mode="smart" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
9
templates/contactimport.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="addressbook" /> : <roundcube:label name="importcontacts" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="importstep" class="propform" table-header-class="form-group row d-none d-sm-flex" table-col-source-class="col-sm-4" table-col-destination-class="col-sm-8" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
19
templates/contactprint.html
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:object name="logo" id="logo" alt="Logo" logo-type="print" logo-match="template" class="float-sm-right" />
|
||||||
|
|
||||||
|
<div class="print-content formcontent" role="main">
|
||||||
|
<div class="contact-header">
|
||||||
|
<div id="contactphoto" class="contact-photo">
|
||||||
|
<roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.svg"
|
||||||
|
placeholderGroup="/images/contactgroup.svg" />
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="contacthead" id="contacthead" class="contact-head readonly" with-source="true" />
|
||||||
|
</div>
|
||||||
|
<div id="contacttabs">
|
||||||
|
<roundcube:object name="contactdetails" fieldset-class="propform grouped readonly"
|
||||||
|
short-legend-labels="true" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
9
templates/contactsearch.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="addressbook" /> : <roundcube:label name="advsearch" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="searchform" id="advsearchform" class="tabbed propform" short-legend-labels="true" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
7
templates/dialog.html
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<div class="frame-content <roundcube:var name="env:dialog_class" />">
|
||||||
|
<roundcube:object name="dialogcontent" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
21
templates/error.html
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:if condition="!env:framed && !env:extwin" />
|
||||||
|
<roundcube:include file="includes/menu.html" />
|
||||||
|
<div id="layout-content" class="selected" role="main">
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon task-menu-button" href="#menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||||
|
<span class="header-title"></span>
|
||||||
|
</div>
|
||||||
|
<div class="frame-content scroller">
|
||||||
|
<roundcube:else />
|
||||||
|
<div id="layout-content" class="selected" role="main">
|
||||||
|
<div class="frame-content scroller">
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
$__page_content
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
13
templates/folderedit.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="folderproperties" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="folderdetails" class="propform" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="formbuttons">
|
||||||
|
<roundcube:button command="save" class="btn btn-primary submit" label="save" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
63
templates/folders.html
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/settings-menu.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="folders" /></h1>
|
||||||
|
|
||||||
|
<!-- folders list -->
|
||||||
|
<div id="layout-list" class="listbox selected" aria-labelledby="aria-label-folderslist">
|
||||||
|
<div class="header">
|
||||||
|
|
||||||
|
<a class="button icon back-list-button_middle" href="?_task=settings"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span id="aria-label-identitieslist" class="header-title"> </span>
|
||||||
|
|
||||||
|
<a class="button icon toolbar-menu-button" href="#list-menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="searchform" id="foldersearch" wrapper="searchbar menu" ariatag="h2"
|
||||||
|
label="foldersearchform" buttontitle="findfolders" options="foldersearchmenu" />
|
||||||
|
<div id="foldersearchmenu" class="hidden searchoptions scroller propform formcontainer" aria-labelledby="aria-label-search-menu" aria-controls="subscription-table">
|
||||||
|
<h3 id="aria-label-search-menu" class="voice"><roundcube:label name="searchmod" /></h3>
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="folderfilter" id="folderlist-filter" noheader="true" noevent="true" />
|
||||||
|
</div>
|
||||||
|
<div class="formbuttons">
|
||||||
|
<button type="button" class="btn btn-primary icon search" onclick="rcmail.folder_filter($('#folderlist-filter').val())"><roundcube:label name="search" /></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="scroller" tabindex="-1">
|
||||||
|
<roundcube:object name="foldersubscription" id="subscription-table"
|
||||||
|
class="treelist listing folderlist iconized" role="listbox" data-list="subscription_list"
|
||||||
|
data-label-msg="listempty" data-label-ext="listusebutton" data-create-command="folder-create" />
|
||||||
|
</div>
|
||||||
|
<div class="footer small">
|
||||||
|
<roundcube:if condition="env:quota" />
|
||||||
|
<div id="quotadisplay" class="quota-widget">
|
||||||
|
<span class="voice"><roundcube:label name="quota"></span>
|
||||||
|
<roundcube:object name="quotaDisplay" class="count" display="text" />
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- folder info frame -->
|
||||||
|
<div id="layout-content" role="main">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span class="header-title"></span>
|
||||||
|
<!-- toolbar -->
|
||||||
|
<div id="folderstoolbar" class="toolbar menu">
|
||||||
|
<roundcube:button command="create-folder" type="link" class="create disabled" classAct="create"
|
||||||
|
label="create" title="createfolder" innerClass="inner" data-fab="true" />
|
||||||
|
<roundcube:button command="delete-folder" type="link" class="delete disabled" classAct="delete"
|
||||||
|
label="delete" title="delete" innerclass="inner" />
|
||||||
|
<roundcube:button command="purge" type="link" class="purge disabled" classAct="purge"
|
||||||
|
label="empty" title="empty" innerclass="inner" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="contentframe" id="preferences-frame" src="env:blankpage" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
43
templates/identities.html
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/settings-menu.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="settings" /> : <roundcube:label name="identities" /></h1>
|
||||||
|
|
||||||
|
<!-- responses list -->
|
||||||
|
<div id="layout-list" class="listbox selected" aria-labelledby="aria-label-identitieslist">
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon back-list-button_middle" href="?_task=settings"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span id="aria-label-identitieslist" class="header-title"><roundcube:label name="identities" /></span>
|
||||||
|
<a class="button icon toolbar-menu-button" href="#list-menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<roundcube:object name="identitieslist" id="identities-table" class="listing"
|
||||||
|
noheader="true" role="listbox" data-list="identity_list"
|
||||||
|
data-label-msg="listempty" data-label-ext="listusebutton" data-create-command="add" />
|
||||||
|
</div>
|
||||||
|
<div class="footer"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- response details frame -->
|
||||||
|
<div id="layout-content" role="main">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span class="header-title"></span>
|
||||||
|
<!-- toolbar -->
|
||||||
|
<div id="identitiestoolbar" class="toolbar menu">
|
||||||
|
<roundcube:button command="add" type="link" class="create disabled" classAct="create"
|
||||||
|
label="create" title="newidentity" innerClass="inner"
|
||||||
|
condition="config:identities_level:0<2" data-fab="true" />
|
||||||
|
<roundcube:button command="delete" type="link" class="delete disabled" classAct="delete"
|
||||||
|
label="delete" title="delete" innerClass="inner"
|
||||||
|
condition="config:identities_level:0<2" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="contentframe" id="preferences-frame" src="env:blankpage" title="arialabelidentityeditfrom" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
13
templates/identityedit.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:object name="steptitle" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="identityform" class="propform" size="40" textareacols="40" textarearows="6" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="formbuttons">
|
||||||
|
<roundcube:button command="save" class="btn btn-primary submit" label="save" condition="!env:readonly" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
14
templates/includes/footer.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<roundcube:if condition="!env:framed || env:extwin" />
|
||||||
|
</div>
|
||||||
|
<roundcube:if condition="config:support_url" />
|
||||||
|
<a href="<roundcube:var name='config:support_url' />" target="_blank" id="supportlink" class="hidden"><roundcube:label name="support" /></a>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
<roundcube:object name="message" id="messagestack" />
|
||||||
|
|
||||||
|
<script src="/deps/bootstrap.bundle.min.js"></script>
|
||||||
|
<script src="/ui.js"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
17
templates/includes/footer_menu.html
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
|
||||||
|
<div class="menu menu_bottom">
|
||||||
|
<roundcube:button command="mail" label="mail" type="link" innerClass="inner" class="mail" classSel="mail selected" />
|
||||||
|
<roundcube:button command="addressbook" label="contacts" type="link" innerClass="inner" class="contacts" classSel="contacts selected" />
|
||||||
|
<roundcube:container name="taskbar" id="taskmenu" />
|
||||||
|
|
||||||
|
<roundcube:if condition="env:quota" />
|
||||||
|
<div id="quotadisplay" class="quota-widget">
|
||||||
|
<span class="voice"><roundcube:label name="quota"></span>
|
||||||
|
<roundcube:object name="quotaDisplay" class="count" display="text" />
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
46
templates/includes/layout.html
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
<roundcube:add_label name="back" />
|
||||||
|
<roundcube:add_label name="errortitle" />
|
||||||
|
<roundcube:add_label name="options" />
|
||||||
|
<roundcube:add_label name="plaintoggle" />
|
||||||
|
<roundcube:add_label name="htmltoggle" />
|
||||||
|
<roundcube:add_label name="previous" />
|
||||||
|
<roundcube:add_label name="next" />
|
||||||
|
<roundcube:add_label name="select" />
|
||||||
|
<roundcube:add_label name="close" />
|
||||||
|
<roundcube:add_label name="browse" />
|
||||||
|
<roundcube:add_label name="choosefile" />
|
||||||
|
<roundcube:add_label name="choosefiles" />
|
||||||
|
<roundcube:object name="doctype" value="html5" />
|
||||||
|
<roundcube:if condition="!env:framed || env:extwin" />
|
||||||
|
<html>
|
||||||
|
<roundcube:else />
|
||||||
|
<html class="iframe">
|
||||||
|
<roundcube:endif />
|
||||||
|
<head>
|
||||||
|
<roundcube:object name="meta" />
|
||||||
|
<roundcube:object name="links" />
|
||||||
|
<link rel="stylesheet" href="/deps/bootstrap.min.css">
|
||||||
|
<roundcube:if condition="config:devel_mode" />
|
||||||
|
<link rel="stylesheet/less" href="/styles/styles.less">
|
||||||
|
<roundcube:link rel="stylesheet/less" href="/styles/print.less" condition="env:action == 'print'" />
|
||||||
|
<script src="/deps/less.min.js" data-env="development"></script>
|
||||||
|
<roundcube:else />
|
||||||
|
<link rel="stylesheet" href="/styles/styles.css">
|
||||||
|
<roundcube:link rel="stylesheet" href="/styles/print.css" condition="env:action == 'print'" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="env:action != 'print' && !config:devel_mode && config:dark_mode_support" />
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
if (document.cookie.indexOf('colorMode=dark') > -1
|
||||||
|
|| (document.cookie.indexOf('colorMode=light') === -1 && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
||||||
|
) {
|
||||||
|
document.documentElement.className += ' dark-mode';
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
<roundcube:endif />
|
||||||
|
</head>
|
||||||
|
<body class="task-<roundcube:exp expression="env:error_task ?: env:task ?: 'error'"> action-<roundcube:exp expression="asciiwords(env:action, true, '-') ?: 'none'">">
|
||||||
|
<roundcube:if condition="!env:framed || env:extwin" />
|
||||||
|
<div id="<roundcube:exp expression="env:action == 'print' ? 'print-' : ''">layout">
|
||||||
|
<roundcube:endif />
|
101
templates/includes/mail-menu.html
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
<roundcube:add_label name="viewsource" />
|
||||||
|
<div id="mailtoolbar" class="toolbar menu" role="toolbar">
|
||||||
|
<roundcube:button command="compose" type="link" class="compose hidden"
|
||||||
|
label="compose" title="writenewmessage" innerclass="inner" />
|
||||||
|
<roundcube:button command="reply" type="link" class="reply disabled" classAct="reply"
|
||||||
|
label="reply" title="replytomessage" innerclass="inner" data-content-button="true" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="more"
|
||||||
|
label="more" title="moreactions" data-popup="message-menu" innerclass="inner" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="message-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-message-menu" class="voice"><roundcube:label name="arialabelmoremessageactions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-message-menu">
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:add_label name="arialabelmessageheaders" />
|
||||||
|
|
||||||
|
<roundcube:if condition="env:optional_format=='text'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="change-format" prop="text" label="plaintoggle" class="changeformattext" classAct="changeformattext active" data-hidden="small"/>
|
||||||
|
<roundcube:elseif condition="env:optional_format=='html'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="change-format" prop="html" label="htmltoggle" class="changeformathtml" classAct="changeformathtml active" data-hidden="small"/>
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="print" label="printmessage" class="print disabled" classAct="print active" data-hidden="small"/>
|
||||||
|
<roundcube:if condition="template:name != 'message'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="import-messages" label="import" class="import disabled" classAct="import active" name="messageimport" onclick="UI.import_dialog()" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:button type="link-menuitem" command="download" label="export" class="download disabled" classAct="download active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="edit" prop="new" label="editasnew" class="edit asnew disabled" classAct="edit asnew active" />
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="headers" label="headers" class="headers-all" classAct="headers-all active" onclick="UI.headers_dialog()"/>
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="viewsource" label="viewsource" class="source disabled" classAct="source active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="move" label="moveto" class="move disabled" classAct="move active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="copy" label="copyto" class="copy disabled" classAct="copy active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="open" label="openinextwin" target="_blank" class="extwin disabled" classAct="extwin active" data-hidden="small" />
|
||||||
|
<roundcube:container name="messagemenu" id="message-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="message-menu-small" class="popupmenu">
|
||||||
|
<h3 id="aria-label-message-menu" class="voice"><roundcube:label name="arialabelmoremessageactions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-message-menu">
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="delete" label="delete" class="delete disabled" classAct="delete" innerclass="inner"/>
|
||||||
|
|
||||||
|
<roundcube:container name="toolbar" id="mailtoolbar" />
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="unread" label="markunread" class="unread disabled" classAct="unread" innerclass="inner"/>
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="flagged" label="markflagged" class="flag disabled" classAct="flag" innerclass="inner"/>
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="print" label="printmessage" class="print disabled" classAct="print active" data-hidden="small"/>
|
||||||
|
<roundcube:if condition="template:name != 'message'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="import-messages" label="import" class="import disabled" classAct="import active"
|
||||||
|
name="messageimport" onclick="UI.import_dialog()" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:button type="link-menuitem" command="download" label="export" class="download disabled" classAct="download active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="edit" prop="new" label="editasnew" class="edit asnew disabled" classAct="edit asnew active" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="viewsource" label="viewsource" class="source disabled" classAct="source active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="move" label="moveto" class="move disabled" classAct="move active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="copy" label="copyto" class="copy disabled" classAct="copy active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="open" label="openinextwin" target="_blank" class="extwin disabled" classAct="extwin active" data-hidden="small" />
|
||||||
|
<roundcube:container name="messagemenu" id="message-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="markmessage-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-markmessage-menu" class="voice"><roundcube:label name="arialabelmarkmessagesas" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-markmessage-menu">
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="read" label="markread" classAct="read active" class="read disabled" />
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="unread" label="markunread" classAct="unread active" class="unread disabled" />
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="flagged" label="markflagged" classAct="flag active" class="flag disabled" />
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="unflagged" label="markunflagged" classAct="unflag active" class="unflag disabled" />
|
||||||
|
<roundcube:container name="markmenu" id="markmessage-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:if condition="template:name != 'message'" />
|
||||||
|
<roundcube:object name="messageimportform" id="uploadform" class="popupmenu formcontent" buttons="no" />
|
||||||
|
<roundcube:endif />
|
42
templates/includes/menu.html
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<div id="layout-menu">
|
||||||
|
<h2 id="aria-label-tasknav" class="voice"><roundcube:label name="arialabeltasknav" /></h2>
|
||||||
|
<div class="popover-header">
|
||||||
|
<roundcube:object name="logo" src="/images/logo.svg" id="logo" alt="Logo" />
|
||||||
|
<a class="button icon cancel"><span class="inner"><roundcube:label name="close" /></span></a>
|
||||||
|
</div>
|
||||||
|
<div id="taskmenu" class="menu toolbar" role="navigation" aria-labelledby="aria-label-tasknav">
|
||||||
|
<span class="action-buttons">
|
||||||
|
<roundcube:if condition="env:action == 'compose' and env:task == 'mail'" />
|
||||||
|
<roundcube:button command="compose" type="link" class="compose selected"
|
||||||
|
label="compose" title="writenewmessage" innerclass="inner" />
|
||||||
|
<roundcube:else />
|
||||||
|
<roundcube:button command="compose" type="link" class="compose"
|
||||||
|
label="compose" title="writenewmessage" innerclass="inner"
|
||||||
|
data-fab="true" data-fab-task="mail" data-fab-action="none" />
|
||||||
|
<roundcube:endif />
|
||||||
|
</span>
|
||||||
|
<roundcube:if condition="env:action == 'compose' and env:task == 'mail'" />
|
||||||
|
<roundcube:button command="mail" label="mail" type="link" innerClass="inner"
|
||||||
|
class="mail" />
|
||||||
|
<roundcube:else />
|
||||||
|
<roundcube:button command="mail" label="mail" type="link" innerClass="inner"
|
||||||
|
class="mail" classSel="mail selected" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:button command="addressbook" label="contacts" type="link" innerClass="inner"
|
||||||
|
class="contacts" classSel="contacts selected" />
|
||||||
|
<roundcube:container name="taskbar" id="taskmenu" />
|
||||||
|
<roundcube:button command="settings" label="settings" type="link" innerClass="inner"
|
||||||
|
class="settings" classSel="settings selected" />
|
||||||
|
<span class="special-buttons">
|
||||||
|
<roundcube:if condition="config:dark_mode_support" />
|
||||||
|
<roundcube:add_label name="darkmode" />
|
||||||
|
<roundcube:add_label name="lightmode" />
|
||||||
|
<roundcube:button name="theme" label="darkmode" type="link" innerClass="inner" class="theme dark" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:button name="about" label="about" type="link"
|
||||||
|
class="about" innerClass="inner" onclick="UI.about_dialog(this)" />
|
||||||
|
<roundcube:button command="logout" label="logout" type="link"
|
||||||
|
class="logout" innerClass="inner" />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
38
templates/includes/message-popmenu.html
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="message-menu-inner" class="popupmenu">
|
||||||
|
<h3 id="aria-label-message-menu" class="voice"><roundcube:label name="arialabelmoremessageactions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-message-menu">
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="reply-all" label="replyall" class="reply-all" classAct="reply-all active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="forward" label="forward" class="forward" classAct="forward active" />
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="unread" label="markunread" classAct="unread active" class="unread disabled" onclick="unread_click()"/>
|
||||||
|
|
||||||
|
<roundcube:if condition="env:optional_format=='text'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="change-format" prop="text" label="plaintoggle" class="changeformattext" classAct="changeformattext active" data-hidden="small"/>
|
||||||
|
<roundcube:elseif condition="env:optional_format=='html'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="change-format" prop="html" label="htmltoggle" class="changeformathtml" classAct="changeformathtml active" data-hidden="small"/>
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="print" label="printmessage" class="print disabled" classAct="print active" data-hidden="small"/>
|
||||||
|
|
||||||
|
<roundcube:if condition="template:name != 'message'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="import-messages" label="import" class="import disabled" classAct="import active" name="messageimport" onclick="UI.import_dialog()" />
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="download" label="export" class="download disabled" classAct="download active" />
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="move" label="moveto" class="move disabled" classAct="move active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="copy" label="copyto" class="copy disabled" classAct="copy active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="headers" label="headers" class="headers-all" classAct="headers-all active" onclick="UI.headers_dialog()"/>
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="viewsource" label="viewsource" class="source disabled" classAct="source active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="open" label="openinextwin" target="_blank" class="extwin disabled" classAct="extwin active" data-hidden="small" />
|
||||||
|
<roundcube:container name="messagemenu" id="message-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
20
templates/includes/pagenav.html
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<div class="pagenav menu footer small" role="toolbar" aria-label="<roundcube:label name="arialabellistnav" />">
|
||||||
|
<roundcube:button command="firstpage" type="link" class="firstpage disabled" classAct="firstpage"
|
||||||
|
title="firstpage" label="first" innerclass="inner" />
|
||||||
|
<roundcube:button command="previouspage" type="link" class="prevpage disabled" classAct="prevpage"
|
||||||
|
title="previouspage" label="previous" innerclass="inner" />
|
||||||
|
<roundcube:if condition="template:name == 'mail'" />
|
||||||
|
<roundcube:object name="messageCountDisplay" class="pagenav-text" aria-live="polite" aria-relevant="text" />
|
||||||
|
<input class="form-control" type="text" size="3" disabled title="<roundcube:label name="currpage" />" />
|
||||||
|
<roundcube:elseif condition="template:name == 'addressbook'" />
|
||||||
|
<span class="pagenav-text" aria-live="polite" aria-relevant="text">
|
||||||
|
<roundcube:object name="recordsCountDisplay" label="fromtoshort" />
|
||||||
|
</span>
|
||||||
|
<roundcube:else />
|
||||||
|
<span class="pagenav-text" aria-live="polite" aria-relevant="text"> </span>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:button command="nextpage" type="link" class="nextpage disabled" classAct="nextpage"
|
||||||
|
title="nextpage" label="next" innerclass="inner" />
|
||||||
|
<roundcube:button command="lastpage" type="link" class="lastpage disabled" classAct="lastpage"
|
||||||
|
title="lastpage" label="last" innerclass="inner" />
|
||||||
|
</div>
|
21
templates/includes/settings-menu.html
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
<div id="layout-sidebar" class="listbox<roundcube:exp expression="!request:_action ? ' selected' : ''"/>" role="navigation" aria-labelledby="aria-label-settingstabs">
|
||||||
|
<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>
|
||||||
|
<span id="aria-label-settingstabs" class="header-title"><roundcube:label name="settings" /></span>
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<ul id="settings-menu" class="listing iconized settings-default-icon<roundcube:exp expression="!request:_action ? ' selection-large-only' : ''"/>">
|
||||||
|
<roundcube:object name="settingstabs" class="listitem" tagname="li" />
|
||||||
|
<roundcube:container name="tabs" id="settings-menu" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="listitem about" onclick="UI.about_dialog()" style="cursor:pointer">
|
||||||
|
<a><roundcube:label name="about" /></a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
16
templates/includes/top-right_menu.html
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<div class=" sebmenu hidden-phone hidden-small">
|
||||||
|
<i class="sebicon usermenu"style='font-size: 2em;'></i>
|
||||||
|
<div class="hovermenu z-depth-2" id="taskmenu">
|
||||||
|
|
||||||
|
<div class="menuopt" onclick="rcmail.command('switch-task', 'settings', false, false)">
|
||||||
|
<i class="sebicon cog" ></i> <roundcube:label name="settings" />
|
||||||
|
</div>
|
||||||
|
<div class="click_change_theme menuopt">
|
||||||
|
<i class="sebicon contrast"></i> <span class="sebicon_contrast_txt"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div onclick="elastic2022_logout()" class='menuopt'>
|
||||||
|
<i class="sebicon logout"></i> <roundcube:label name="logout" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
24
templates/login.html
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:object name="productname" /> <roundcube:label name="login" /></h1>
|
||||||
|
|
||||||
|
<div id="layout-content" class="selected no-navbar" role="main">
|
||||||
|
<roundcube:object name="logo" src="/images/logo.svg" id="logo" alt="Logo" />
|
||||||
|
<roundcube:form id="login-form" name="login-form" method="post" class="propform">
|
||||||
|
<roundcube:object name="loginform" form="login-form" size="40" submit=true class="form-control" />
|
||||||
|
<div id="login-footer" role="contentinfo">
|
||||||
|
<roundcube:object name="productname" condition="config:display_product_info > 0" />
|
||||||
|
<roundcube:object name="version" condition="config:display_product_info == 2" />
|
||||||
|
<roundcube:if condition="config:support_url" />
|
||||||
|
• <a href="<roundcube:var name='config:support_url' />" target="_blank" class="support-link"><roundcube:label name="support" /></a>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:container name="loginfooter" id="login-footer" />
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<p class="noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
292
templates/mail.html
Normal file
|
@ -0,0 +1,292 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:include file="includes/top-right_menu.html" />
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:include file="includes/message-popmenu.html" />
|
||||||
|
|
||||||
|
<div style="display:none">
|
||||||
|
<roundcube:if condition="env:threads" />
|
||||||
|
<roundcube:button command="compose" type="link" class="compose"
|
||||||
|
label="compose" title="writenewmessage" innerclass="inner"
|
||||||
|
data-fab="true" data-fab-task="mail" data-fab-action="none" />
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="mail" /></h1>
|
||||||
|
|
||||||
|
<!-- folders list -->
|
||||||
|
<div id="layout-sidebar" class="listbox" role="navigation" aria-labelledby="aria-label-folderlist">
|
||||||
|
<div class="header" style="border:0;">
|
||||||
|
|
||||||
|
|
||||||
|
<a href="./?_task=mail&_action=compose" class="compose button">
|
||||||
|
<div><i class="sebicon composeicon" style="margin: 1rem;"></i><roundcube:label name="compose" /></div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<h2 id="aria-label-folderlist" class="voice"><roundcube:label name="arialabelfolderlist" /></h2>
|
||||||
|
<div id="folderlist-content" class="scroller">
|
||||||
|
<roundcube:object name="mailboxlist" id="mailboxlist" class="treelist listing folderlist" folder_filter="mail" unreadwrap="%s" />
|
||||||
|
|
||||||
|
<roundcube:button name="folderactions" type="link" title="folderactions" label="actions"
|
||||||
|
class="button icon sidebar-menu" innerclass="inner" data-popup="mailboxoptions-menu" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer_menu.html" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<roundcube:include file="includes/mail-popmenu.html" />
|
||||||
|
<!-- messages list -->
|
||||||
|
<div id="layout-list" class="listbox selected">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="messagelist-header" class="header" style="height:36px;min-height:36px;">
|
||||||
|
|
||||||
|
<a class="button icon task-menu-button" href="#menu" style="width:44px;height:44px;line-height: 38px;font-size: 16px;text-indent: 8px;"></a>
|
||||||
|
|
||||||
|
<div class="toolbar menu" role="toolbar">
|
||||||
|
<a href="#select" class="select disabled" data-popup="listselect-menu" data-toggle-button="list-toggle-button" title="<roundcube:label name="select" />"><span class="inner"><roundcube:label name="select" /></span></a>
|
||||||
|
<roundcube:if condition="env:threads" />
|
||||||
|
<a href="#threads" class="threads disabled" data-popup="threadselect-menu" title="<roundcube:label name="threads" />"><span class="inner"><roundcube:label name="threads" /></span></a>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:object name="listmenulink" class="options active" label="options" innerclass="inner" />
|
||||||
|
<roundcube:container name="listcontrols" id="listcontrols" />
|
||||||
|
|
||||||
|
<roundcube:button command="checkmail" type="link" class="button icon toolbar-button refresh"
|
||||||
|
label="refresh" title="checkmail" innerclass="inner" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="tableheaderseb"><tr>
|
||||||
|
|
||||||
|
<td class="only_small_screen" style="padding: .2rem 0 0 1rem;vertical-align: baseline;">
|
||||||
|
<a class="button icon task-menu-button" href="#menu" style="font-size: 20px;"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<roundcube:add_label name="showunread" />
|
||||||
|
<roundcube:object name="searchform" id="mailsearchform" wrapper="searchbar menu"
|
||||||
|
label="mailquicksearchbox" buttontitle="findmail" options="searchmenu" ariatag="h2" />
|
||||||
|
</td>
|
||||||
|
<td class='only_small_screen' style='width:0px;'></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
|
<div id="searchmenu" class="hidden searchoptions scroller propform formcontainer" aria-labelledby="aria-label-search-menu" aria-controls="messagelist">
|
||||||
|
<h3 id="aria-label-search-menu" class="voice"><roundcube:label name="searchmod" /></h3>
|
||||||
|
<div class="formcontent">
|
||||||
|
<ul class="proplist">
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="subject" /><roundcube:label name="subject" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="from" /><roundcube:label name="from" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="to" /><roundcube:label name="to" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="cc" /><roundcube:label name="cc" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="bcc" /><roundcube:label name="bcc" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="body" /><roundcube:label name="body" /></label></li>
|
||||||
|
<li><label><input type="checkbox" name="s_mods[]" value="text" /><roundcube:label name="msgtext" /></label></li>
|
||||||
|
</ul>
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<label for="searchfilter" class="input-group-text"><roundcube:label name="type" /></label>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="searchfilter" id="searchfilter" noevent="true" class="custom-select" />
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<label for="s_interval" class="input-group-text"><roundcube:label name="date" /></label>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="searchinterval" id="s_interval" class="custom-select" />
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<label for="s_scope" class="input-group-text"><roundcube:label name="searchscope" /></label>
|
||||||
|
</div>
|
||||||
|
<select name="s_scope" id="s_scope" class="custom-select">
|
||||||
|
<option value="base"><roundcube:label name="currentfolder" /></option>
|
||||||
|
<option value="sub"><roundcube:label name="subfolders" /></option>
|
||||||
|
<option value="all"><roundcube:label name="allfolders" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="formbuttons">
|
||||||
|
<button type="button" class="btn btn-primary icon search" onclick="return rcmail.command('search')"><roundcube:label name="search" /></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="messagelist-content" class="scroller" tabindex="-1">
|
||||||
|
<h2 id="aria-label-messagelist" class="voice"><roundcube:label name="arialabelmessagelist" /></h2>
|
||||||
|
<roundcube:object name="messages" id="messagelist" class="listing messagelist sortheader fixedheader"
|
||||||
|
aria-labelledby="aria-label-messagelist" data-list="message_list" data-label-msg="listempty"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<roundcube:include file="includes/pagenav.html" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- message preview -->
|
||||||
|
<div id="layout-content">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
|
||||||
|
<div class="header_back">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="header_topmenu menu">
|
||||||
|
<div class="header_back_back" style="width:58px;height:58px;float: left;" onclick="UI.show_list();">
|
||||||
|
<a class="button icon back" href="#sidebar" style="font-size: 1.5em"></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a onclick="return rcmail.command('plugin.archive','',this,event)" id="header_topmenu_archive" style="display:none"class="sebicon archive"></a>
|
||||||
|
|
||||||
|
<roundcube:button command="delete" type="link" class="delete disabled" classAct="delete" label="delete" title="delete" innerclass="inner" data-content-button="true" />
|
||||||
|
|
||||||
|
<roundcube:button name="messagemenulinkaaa" id="messagemenulinkaaa" type="link" class="more" label="more" title="moreactions" data-popup="message-menu-inner" innerclass="inner" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2 id="aria-label-mailpreviewframe" class="voice"><roundcube:label name="arialabelmailpreviewframe" /></h2>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="contentframe"
|
||||||
|
id="messagecontframe"
|
||||||
|
aria-labelledby="aria-label-mailpreviewframe"
|
||||||
|
src="env:blankpage"
|
||||||
|
title="arialabelmailpreviewframe"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- popup menus -->
|
||||||
|
|
||||||
|
|
||||||
|
<div id="message-menu-topmenu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-dragmessage-menu" class="voice"><roundcube:label name="arialabeldropactionmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-dragmessage-menu">
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="unread" label="markunread" class="unread disabled" classAct="unread" innerclass="inner"/>
|
||||||
|
<roundcube:button type="link-menuitem" command="mark" prop="flagged" label="markflagged" class="flag disabled" classAct="flag" innerclass="inner"/>
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="move" label="moveto" class="move disabled" classAct="move active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="copy" label="copyto" class="copy disabled" classAct="copy active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="dragmessage-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-dragmessage-menu" class="voice"><roundcube:label name="arialabeldropactionmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-dragmessage-menu">
|
||||||
|
<roundcube:button command="move" type="link-menuitem" onclick="return rcmail.drag_menu_action('move')" label="move" class="disabled" classAct="active" />
|
||||||
|
<roundcube:button command="copy" type="link-menuitem" onclick="return rcmail.drag_menu_action('copy')" label="copy" class="disabled" classAct="active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="mailboxoptions-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-mailboxoptions-menu" class="voice"><roundcube:label name="arialabelmailboxmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-mailboxoptions-menu">
|
||||||
|
<roundcube:button command="expunge" type="link-menuitem" label="compact" class="expunge disabled" classAct="expunge active" />
|
||||||
|
<roundcube:button command="purge" type="link-menuitem" label="empty" class="purge disabled" classAct="purge active" />
|
||||||
|
<roundcube:button command="mark-all-read" type="link-menuitem" label="markallread" class="read disabled" classAct="read active" />
|
||||||
|
<roundcube:button command="folders" task="settings" type="link-menuitem" label="managefolders" class="folders disabled" classAct="folders active" />
|
||||||
|
<roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="listselect-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-listselect-menu" class="voice"><roundcube:label name="arialabellistselectmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-listselect-menu">
|
||||||
|
|
||||||
|
<roundcube:button command="select-all" type="link-menuitem" label="all" class="select all disabled" classAct="select all active" />
|
||||||
|
<roundcube:button command="select-all" type="link-menuitem" prop="page" label="currpage" class="select page disabled" classAct="select page active" />
|
||||||
|
<roundcube:button command="select-all" type="link-menuitem" prop="unread" label="unread" class="select unread disabled" classAct="select unread active" />
|
||||||
|
<roundcube:button command="select-all" type="link-menuitem" prop="flagged" label="flagged" class="select flagged disabled" classAct="select flagged active" />
|
||||||
|
<roundcube:button command="select-all" type="link-menuitem" prop="invert" label="invert" class="select invert disabled" classAct="select invert active" />
|
||||||
|
<roundcube:button command="select-none" type="link-menuitem" label="none" class="select none disabled" classAct="select none active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="threadselect-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-threadselectmenu" class="voice"><roundcube:label name="arialabelthreadselectmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-threadselectmenu">
|
||||||
|
<roundcube:button command="expand-unread" type="link-menuitem" label="expand-unread" class="expand unread disabled" classAct="expand unread active" />
|
||||||
|
<roundcube:button command="expand-all" type="link-menuitem" label="expand-all" class="expand all disabled" classAct="expand all active" />
|
||||||
|
<roundcube:button command="collapse-all" type="link-menuitem" label="collapse-all" class="expand none disabled" classAct="expand none active" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="listoptions-menu" class="popupmenu propform" role="dialog" aria-labelledby="aria-label-listoptions">
|
||||||
|
<h3 id="aria-label-listoptions" class="voice"><roundcube:label name="arialabelmessagelistoptions" /></h3>
|
||||||
|
<roundcube:if condition="!in_array('message_sort_col', (array)config:dont_override)" />
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="listoptions-sortcol" class="col-form-label col-sm-4"><roundcube:label name="listsorting" /></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<select id="listoptions-sortcol" name="sort_col">
|
||||||
|
<option value=""><roundcube:label name="nonesort" /></option>
|
||||||
|
<option value="arrival"><roundcube:label name="arrival" /></option>
|
||||||
|
<option value="date"><roundcube:label name="sentdate" /></option>
|
||||||
|
<option value="subject"><roundcube:label name="subject" /></option>
|
||||||
|
<option value="fromto"><roundcube:label name="fromto" /></option>
|
||||||
|
<option value="from"><roundcube:label name="from" /></option>
|
||||||
|
<option value="to"><roundcube:label name="to" /></option>
|
||||||
|
<option value="cc"><roundcube:label name="cc" /></option>
|
||||||
|
<option value="size"><roundcube:label name="size" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="!in_array('message_sort_order', (array)config:dont_override)" />
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="listoptions-sortord" class="col-form-label col-sm-4"><roundcube:label name="listorder" /></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<select id="listoptions-sortord" name="sort_ord">
|
||||||
|
<option value="ASC"><roundcube:label name="asc" /></option>
|
||||||
|
<option value="DESC"><roundcube:label name="desc" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="env:threads" />
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="listoptions-threads" class="col-form-label col-sm-4"><roundcube:label name="lmode" /></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<select id="listoptions-threads" name="mode">
|
||||||
|
<option value="list"><roundcube:label name="list" /></option>
|
||||||
|
<option value="threads"><roundcube:label name="threads" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:container name="listoptions" id="listoptionsmenu" />
|
||||||
|
<roundcube:add_label name="listoptionstitle" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="message-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-message-menu" class="voice"><roundcube:label name="arialabelmoremessageactions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-message-menu">
|
||||||
|
<roundcube:button type="link-menuitem" command="print" label="printmessage" class="print disabled" classAct="print active" data-hidden="small"/>
|
||||||
|
<roundcube:if condition="template:name != 'message'" />
|
||||||
|
<roundcube:button type="link-menuitem" command="import-messages" label="import" class="import disabled" classAct="import active"
|
||||||
|
name="messageimport" onclick="UI.import_dialog()" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:button type="link-menuitem" command="download" label="export" class="download disabled" classAct="download active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="edit" prop="new" label="editasnew" class="edit asnew disabled" classAct="edit asnew active" />
|
||||||
|
|
||||||
|
<roundcube:button type="link-menuitem" command="headers" label="headers" class="source disabled" classAct="source active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="viewsource" label="viewsource" class="source disabled" classAct="source active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="move" label="moveto" class="move disabled" classAct="move active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="copy" label="copyto" class="copy disabled" classAct="copy active" innerclass="folder-selector-link" aria-haspopup="true" />
|
||||||
|
<roundcube:button type="link-menuitem" command="open" label="openinextwin" target="_blank" class="extwin disabled" classAct="extwin active" data-hidden="small" />
|
||||||
|
<roundcube:container name="messagemenu" id="message-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
142
templates/message.html
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:object name="mailboxlist" folder_filter="mail" type="js" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/message-popmenu.html" />
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="arialabelmailpreviewframe" /></h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="layout-content" class="selected">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:if condition="!env:framed" />
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
|
||||||
|
<roundcube:include file="includes/top-right_menu.html" />
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="content frame-content" role="main">
|
||||||
|
<div id="message-header">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2 class="subject">
|
||||||
|
<div style="display:inline-block;float:right;width:40px;height:30px"></div>
|
||||||
|
|
||||||
|
<span class="voice"><roundcube:label name="subject" />: </span>
|
||||||
|
<roundcube:object name="messageHeaders" valueOf="subject" />
|
||||||
|
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
<div class="header">
|
||||||
|
<table style="width:100%">
|
||||||
|
<tr><td style="width:40px;vertical-align: top;">
|
||||||
|
<roundcube:object name="contactphoto" class="contactphoto" placeholder="/images/contactpic.svg" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="header-content">
|
||||||
|
<roundcube:object name="messageSummary" class="header-summary" addicon="virtual" />
|
||||||
|
<roundcube:object name="messageHeaders" class="header-headers" addicon="virtual" exclude="subject" max="10" />
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
<div id="mailtoolbar" class="tdmenuleft toolbar menu">
|
||||||
|
|
||||||
|
|
||||||
|
<a class="message_iconflag" onclick="flag_click()"></a>
|
||||||
|
<roundcube:button command="reply" type="link" class="reply disabled" classAct="reply"
|
||||||
|
label="reply" title="replytomessage" innerclass="inner" data-content-button="true" />
|
||||||
|
<roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="more"
|
||||||
|
label="more" title="moreactions" data-popup="message-menu-inner" innerclass="inner" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="message-content">
|
||||||
|
<div class="leftcol" role="region" aria-labelledby="aria-label-messageattachments">
|
||||||
|
<h2 id="aria-label-messageattachments" class="voice"><roundcube:label name="attachments" /></h2>
|
||||||
|
<roundcube:object name="messageAttachments" id="attachment-list" class="attachmentslist" />
|
||||||
|
</div>
|
||||||
|
<div class="rightcol" role="region" aria-labelledby="aria-label-messagebody">
|
||||||
|
<h2 id="aria-label-messagebody" class="voice"><roundcube:label name="arialabelmessagebody" /></h2>
|
||||||
|
<roundcube:object name="messageObjects" id="message-objects" />
|
||||||
|
<roundcube:object name="messageBody" id="messagebody" headertableclass="headers-table" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="footer-mail-small">
|
||||||
|
<div class="toolbar menu" role="toolbar" style="display:flex;justify-content: space-between;max-width: 280px;width:100%">
|
||||||
|
<roundcube:button command="reply" type="link" class="reply disabled" classAct="reply"
|
||||||
|
label="reply" title="replytomessage" innerclass="inner" data-content-button="true" />
|
||||||
|
<roundcube:button command="reply-all" type="link" class="reply-all disabled" classAct="reply-all"
|
||||||
|
label="replyall" title="replytoallmessage" innerclass="inner" />
|
||||||
|
<roundcube:button command="forward" type="link" class="forward disabled" classAct="forward"
|
||||||
|
label="forward" title="forwardmessage" innerclass="inner" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- popup menus -->
|
||||||
|
<div id="attachmentmenu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-attachmentmenu" class="voice"><roundcube:label name="arialabelattachmentmenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-attachmentmenu">
|
||||||
|
<roundcube:button command="open-attachment" type="link-menuitem" id="attachmenuopen" label="open" class="extwin disabled" classAct="extwin active" />
|
||||||
|
<roundcube:button command="download-attachment" type="link-menuitem" id="attachmenudownload" label="download" class="download disabled" classAct="download active" />
|
||||||
|
<roundcube:container name="attachmentmenu" id="attachmentmenu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="mailto-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-mailtomenu" class="voice"><roundcube:label name="arialabelmailtomenu" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-mailtomenu">
|
||||||
|
<roundcube:button name="addtoaddressbook" type="link-menuitem" label="addtoaddressbook" class="addressbook" classAct="addressbook active" />
|
||||||
|
<roundcube:button name="composeto" type="link-menuitem" label="composeto" class="compose" classAct="compose active" />
|
||||||
|
<roundcube:container name="mailtomenu" id="mailto-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
119
templates/messagepart.html
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:var name="env:filename" /></h1>
|
||||||
|
|
||||||
|
<div id="layout-content" class="selected">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
<span class="header-title constant"><roundcube:var name="env:filename" /></span>
|
||||||
|
<div id="messagetoolbar" class="toolbar menu">
|
||||||
|
<roundcube:button type="link" name="info" label="properties" title="properties"
|
||||||
|
class="info" innerclass="inner" onclick="UI.props_dialog()" />
|
||||||
|
<roundcube:button command="download" type="link" label="download" title="download"
|
||||||
|
class="download disabled" classAct="download" innerclass="inner" />
|
||||||
|
<roundcube:button command="print" type="link" label="print" title="print"
|
||||||
|
class="print disabled" classAct="print" innerclass="inner" data-hidden="small" />
|
||||||
|
<roundcube:container name="toolbar" id="messagetoolbar" />
|
||||||
|
<roundcube:if condition="env:is_message" />
|
||||||
|
<span class="spacer"></span>
|
||||||
|
<roundcube:button command="reply" type="link" class="reply disabled" classAct="reply"
|
||||||
|
label="reply" title="replytomessage" innerclass="inner" />
|
||||||
|
<span class="dropbutton">
|
||||||
|
<roundcube:button command="reply-all" type="link" class="reply-all disabled" classAct="reply-all"
|
||||||
|
label="replyall" title="replytoallmessage" innerclass="inner" />
|
||||||
|
<a href="#reply-all" id="replyallmenulink" class="dropdown" data-popup="replyall-menu" tabindex="0">
|
||||||
|
<span class="inner"><roundcube:label name="arialabelreplyalloptions" /></span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<span class="dropbutton">
|
||||||
|
<roundcube:button command="forward" type="link" class="forward disabled" classAct="forward"
|
||||||
|
label="forward" title="forwardmessage" innerclass="inner" />
|
||||||
|
<a href="#forward" id="forwardmenulink" class="dropdown" data-popup="forward-menu" tabindex="0">
|
||||||
|
<span class="inner"><roundcube:label name="arialabelforwardingoptions" /></span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<span class="spacer"></span>
|
||||||
|
<roundcube:button name="messagemenulink" id="messagemenulink" type="link"
|
||||||
|
class="more" label="more" title="moreactions" data-popup="message-menu"
|
||||||
|
innerclass="inner" data-hidden="small" />
|
||||||
|
<roundcube:endif />
|
||||||
|
<roundcube:if condition="stripos(env:mimetype, 'image/') === 0" />
|
||||||
|
<span class="spacer"></span>
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="+" data-hidden="small"
|
||||||
|
class="zoomin disabled" classAct="zoomin"
|
||||||
|
label="zoomin" title="increaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="-" data-hidden="small"
|
||||||
|
class="zoomout disabled" classAct="zoomout"
|
||||||
|
label="zoomout" title="decreaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-rotate" type="link" data-hidden="small"
|
||||||
|
class="rotate disabled" classAct="rotate"
|
||||||
|
label="rotate" title="rotateimage" innerclass="inner" />
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 id="aria-label-messagepart" class="voice"><roundcube:label name="arialabelattachmentpreview" /></h2>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="messagePartFrame" id="messagepartframe" title="arialabelattachmentpreview"
|
||||||
|
role="main" aria-labelledby="aria-label-messagepart" />
|
||||||
|
</div>
|
||||||
|
<roundcube:if condition="stripos(env:mimetype, 'image/') === 0" />
|
||||||
|
<div id="image-tools" class="image-tools" data-hidden="big">
|
||||||
|
<h3 id="aria-label-imagetools" class="voice"><roundcube:label name="arialabelimagetools" /></h3>
|
||||||
|
<div class="toolbar menu" role="menu" aria-labelledby="aria-label-imagetools">
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="+"
|
||||||
|
class="zoomin disabled" classAct="zoomin"
|
||||||
|
label="zoomin" title="increaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-scale" type="link" prop="-"
|
||||||
|
class="zoomout disabled" classAct="zoomout"
|
||||||
|
label="zoomout" title="decreaseimage" innerclass="inner" />
|
||||||
|
<roundcube:button command="image-rotate" type="link"
|
||||||
|
class="rotate disabled" classAct="rotate"
|
||||||
|
label="rotate" title="rotateimage" innerclass="inner" />
|
||||||
|
</div>
|
||||||
|
<a href="#" class="button icon tools" onclick="$(this).attr('title', $(this).data('label-' + ($('#image-tools').toggleClass('open').is('.open') ? 'hide' : 'show')))"
|
||||||
|
data-label-show="<roundcube:label name="showtools" />" data-label-hide="<roundcube:label name="hidetools" />" title="<roundcube:label name="showtools" />">
|
||||||
|
<span class="inner"><roundcube:label name="showtools" /></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:if condition="env:is_message" />
|
||||||
|
<div id="forward-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-forwardmenu" class="voice"><roundcube:label name="arialabelforwardingoptions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-forwardmenu">
|
||||||
|
<roundcube:button type="link-menuitem" command="forward-inline" label="forwardinline" prop="sub" classAct="forward inline active" class="forward disabled" />
|
||||||
|
<roundcube:button type="link-menuitem" command="forward-attachment" label="forwardattachment" prop="sub" classAct="forward attachment active" class="forward attachment disabled" />
|
||||||
|
<roundcube:container name="forwardmenu" id="forward-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="replyall-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-replyallmenu" class="voice"><roundcube:label name="arialabelreplyalloptions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-replyallmenu">
|
||||||
|
<roundcube:button type="link-menuitem" command="reply-all" label="replyall" prop="sub" class="reply all disabled" classAct="reply all active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="reply-list" label="replylist" prop="sub" class="reply list disabled" classAct="reply list active" />
|
||||||
|
<roundcube:container name="replyallmenu" id="replyall-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="message-menu" class="popupmenu">
|
||||||
|
<h3 id="aria-label-messagemenu" class="voice"><roundcube:label name="arialabelmoremessageactions" /></h3>
|
||||||
|
<ul class="menu listing" role="menu" aria-labelledby="aria-label-messagemenu">
|
||||||
|
<roundcube:button type="link-menuitem" command="edit" prop="new" label="editasnew" class="edit asnew disabled" classAct="edit asnew active" />
|
||||||
|
<roundcube:button type="link-menuitem" command="viewsource" label="viewsource" class="source disabled" classAct="source active" />
|
||||||
|
<roundcube:container name="messagemenu" id="message-menu" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<roundcube:endif />
|
||||||
|
|
||||||
|
<roundcube:add_label name="properties" />
|
||||||
|
<div id="properties-menu" class="popupmenu" role="dialog" aria-labelledby="aria-label-contentinfo">
|
||||||
|
<h3 id="aria-label-contentinfo" class="voice"><roundcube:label name="properties" /></h3>
|
||||||
|
<div class="scroller">
|
||||||
|
<roundcube:object name="messagePartControls" class="listing props-table" role="contentinfo"
|
||||||
|
aria-labelledby="aria-label-contentinfo" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
27
templates/messageprint.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:object name="logo" id="logo" alt="Logo" logo-type="print" logo-match="template" class="float-sm-right" />
|
||||||
|
|
||||||
|
<div class="print-content" role="main">
|
||||||
|
<div id="message-header">
|
||||||
|
<h2 class="subject">
|
||||||
|
<roundcube:object name="messageHeaders" valueOf="subject" />
|
||||||
|
</h2>
|
||||||
|
<div class="header">
|
||||||
|
<roundcube:object name="contactphoto" class="contactphoto" placeholder="/images/contactpic.svg" />
|
||||||
|
<div class="header-content details-view">
|
||||||
|
<roundcube:object name="messageHeaders" class="header-headers" addicon="virtual" exclude="subject" max="10" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="message-content">
|
||||||
|
<div role="region">
|
||||||
|
<roundcube:object name="messageAttachments" id="attachment-list" class="attachmentslist" />
|
||||||
|
</div>
|
||||||
|
<div role="region">
|
||||||
|
<roundcube:object name="messageBody" id="messagebody" headertableclass="headers-table" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
15
templates/plugin.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
<roundcube:include file="includes/menu.html" />
|
||||||
|
<roundcube:include file="includes/settings-menu.html" condition="env:task == 'settings'" />
|
||||||
|
|
||||||
|
<div id="layout-content" class="selected" role="main">
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span class="header-title"></span>
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="plugin.body" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:object name="plugin.footer" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
13
templates/responseedit.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:object name="steptitle" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="responseform" class="propform" size="60" textareacols="60" textarearows="18" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="formbuttons">
|
||||||
|
<roundcube:button command="save" class="btn btn-primary submit" label="save" condition="!env:readonly" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
42
templates/responses.html
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/settings-menu.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="responses" /></h1>
|
||||||
|
|
||||||
|
<!-- responses list -->
|
||||||
|
<div id="layout-list" class="listbox selected" aria-labelledby="aria-label-responseslist">
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon back-list-button_middle" href="?_task=settings"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span id="aria-label-responseslist" class="header-title"><roundcube:label name="responses" /></span>
|
||||||
|
<a class="button icon toolbar-menu-button" href="#list-menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<roundcube:object name="responseslist" id="responses-table" class="listing"
|
||||||
|
noheader="true" role="listbox" data-list="responses_list"
|
||||||
|
data-label-msg="listempty" data-label-ext="listusebutton" data-create-command="add" />
|
||||||
|
</div>
|
||||||
|
<div class="footer"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- response details frame -->
|
||||||
|
<div id="layout-content" role="main">
|
||||||
|
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||||
|
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||||
|
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span class="header-title"></span>
|
||||||
|
<!-- toolbar -->
|
||||||
|
<div id="responsestoolbar" class="toolbar menu">
|
||||||
|
<roundcube:button command="add" type="link" class="create disabled" classAct="create"
|
||||||
|
label="create" title="newresponse" innerClass="inner" data-fab="true" />
|
||||||
|
<roundcube:button command="delete" type="link" class="delete disabled" classAct="delete"
|
||||||
|
label="delete" title="delete" innerClass="inner" />
|
||||||
|
</div>
|
||||||
|
<roundcube:include file="includes/top-right_menu.html" />
|
||||||
|
</div>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="contentframe" id="preferences-frame" src="env:blankpage" title="arialabelresponseeditfrom" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
28
templates/settings.html
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<roundcube:include file="includes/settings-menu.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:label name="preferences" /></h1>
|
||||||
|
|
||||||
|
<div id="layout-list" class="listbox<roundcube:exp expression="!request:_action ? '' : ' selected'"/>" aria-labelledby="aria-label-prefsection">
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon back-sidebar-button" href="./?_task=settings"><span class="inner"><roundcube:label name="settings" /></span></a>
|
||||||
|
<span id="aria-label-prefsection" class="header-title"><roundcube:label name="preferences" /></span>
|
||||||
|
</div>
|
||||||
|
<div class="scroller">
|
||||||
|
<roundcube:object name="sectionslist" id="sections-table" class="listing iconized settings-default-icon"
|
||||||
|
noheader="true" role="listbox" data-list="sections_list" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="layout-content" role="main">
|
||||||
|
<div class="header">
|
||||||
|
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||||
|
<span class="header-title"></span>
|
||||||
|
</div>
|
||||||
|
<div class="iframe-wrapper">
|
||||||
|
<roundcube:object name="contentframe" id="preferences-frame" src="env:blankpage" title="arialabelpreferencesform" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
13
templates/settingsedit.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<roundcube:include file="includes/layout.html" />
|
||||||
|
|
||||||
|
<h1 class="voice"><roundcube:object name="sectionname" /></h1>
|
||||||
|
|
||||||
|
<div class="formcontent">
|
||||||
|
<roundcube:object name="userprefs" form="form" class="propform cols-sm-6-6" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="formbuttons">
|
||||||
|
<roundcube:button command="save" class="btn btn-primary submit" label="save" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<roundcube:include file="includes/footer.html" />
|
BIN
thumbnail.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
38
watermark.html
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title></title>
|
||||||
|
<style type="text/css">
|
||||||
|
html, body { height: 100%; overflow: hidden; }
|
||||||
|
body {
|
||||||
|
background: url(images/logo.svg) center no-repeat #fff;
|
||||||
|
background-size: 30%;
|
||||||
|
background-blend-mode: luminosity;
|
||||||
|
}
|
||||||
|
html:not(.dark-mode) body:before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
background: rgba(255, 255, 255, .85);
|
||||||
|
}
|
||||||
|
html.dark-mode > body {
|
||||||
|
background-color: #21292c;
|
||||||
|
background-blend-mode: soft-light;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
if (document.cookie.indexOf('colorMode=dark') > -1
|
||||||
|
|| (document.cookie.indexOf('colorMode=light') === -1 && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
||||||
|
) {
|
||||||
|
document.documentElement.className += ' dark-mode';
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body></body>
|
||||||
|
</html>
|