mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-08 22:18:28 +03:00
Remove bootstrap Modal feature for improved transition effects (in future might use <dialog>)
This commit is contained in:
parent
0309879d6b
commit
7135cc38fe
82 changed files with 1767 additions and 3990 deletions
26
README.md
26
README.md
|
|
@ -84,23 +84,23 @@ Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill
|
|||
|
||||
|js/* |1.14.0 |native |
|
||||
|----------- |--------: |--------: |
|
||||
|admin.js |2.130.942 | 963.418 |
|
||||
|app.js |4.184.455 |2.626.441 |
|
||||
|boot.js | 671.522 | 43.824 |
|
||||
|libs.js | 647.614 | 313.017 |
|
||||
|admin.js |2.130.942 | 963.108 |
|
||||
|app.js |4.184.455 |2.626.387 |
|
||||
|boot.js | 671.522 | 43.742 |
|
||||
|libs.js | 647.614 | 312.276 |
|
||||
|polyfills.js | 325.834 | 0 |
|
||||
|TOTAL |7.960.367 |3.946.700 |
|
||||
|TOTAL |7.960.367 |3.945.513 |
|
||||
|
||||
|js/min/* |1.14.0 |native |gzip 1.14 |gzip |brotli |
|
||||
|--------------- |--------: |--------: |--------: |--------: |--------: |
|
||||
|admin.min.js | 252.147 | 130.790 | 73.657 | 37.900 | 32.527 |
|
||||
|app.min.js | 511.202 | 354.459 |140.462 | 93.370 | 74.823 |
|
||||
|boot.min.js | 66.007 | 5.564 | 22.567 | 2.327 | 1.989 |
|
||||
|libs.min.js | 572.545 | 296.508 |176.720 | 91.754 | 81.012 |
|
||||
|admin.min.js | 252.147 | 130.575 | 73.657 | 37.877 | 32.469 |
|
||||
|app.min.js | 511.202 | 354.284 |140.462 | 93.363 | 74.888 |
|
||||
|boot.min.js | 66.007 | 5.534 | 22.567 | 2.319 | 1.988 |
|
||||
|libs.min.js | 572.545 | 295.771 |176.720 | 91.520 | 80.851 |
|
||||
|polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 |
|
||||
|TOTAL |1.434.353 | 788.018 |424.718 |225.351 |190.351 |
|
||||
|TOTAL |1.434.353 | 786.164 |424.718 |225.079 |190.196 |
|
||||
|
||||
646.335 bytes (199.367 gzip) is not much, but it feels faster.
|
||||
648.189 bytes (199.639 gzip) is not much, but it feels faster.
|
||||
|
||||
### CSS changes
|
||||
|
||||
|
|
@ -125,8 +125,8 @@ Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill
|
|||
|
||||
|css/* |1.14.0 |native |
|
||||
|-------------- |--------: |--------: |
|
||||
|app.css | 340.334 | 265.090 |
|
||||
|app.min.css | 274.791 | 210.876 |
|
||||
|app.css | 340.334 | 263.469 |
|
||||
|app.min.css | 274.791 | 209.640 |
|
||||
|
||||
|
||||
### PHP73 branch
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ class HtmlEditor {
|
|||
return (this.isHtml() ? ':HTML:' : '') + this.getData(wrapIsHtml);
|
||||
}
|
||||
|
||||
modeToggle(plain, resize) {
|
||||
modeToggle(plain) {
|
||||
if (this.editor) {
|
||||
try {
|
||||
if (plain) {
|
||||
|
|
@ -222,10 +222,6 @@ class HtmlEditor {
|
|||
this.editor.setMode('plain');
|
||||
}
|
||||
} catch (e) {} // eslint-disable-line no-empty
|
||||
|
||||
if (resize) {
|
||||
this.resize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
15
dev/External/ko.js
vendored
15
dev/External/ko.js
vendored
|
|
@ -173,26 +173,13 @@ ko.bindingHandlers.modal = {
|
|||
const Globals = require('Common/Globals');
|
||||
|
||||
element.classList.toggle('fade', !Globals.bMobileDevice);
|
||||
new BSN.Modal(element, {
|
||||
'keyboard': false,
|
||||
'show': ko.unwrap(fValueAccessor())
|
||||
});
|
||||
|
||||
const close = element.querySelector('.close'), click = () => fValueAccessor()(false);
|
||||
close && close.addEventListener('click.koModal', click);
|
||||
|
||||
ko.utils.domNodeDisposal.addDisposeCallback(element, () =>
|
||||
close.removeEventListener('click.koModal', click)
|
||||
);
|
||||
},
|
||||
update: (element, fValueAccessor) => {
|
||||
const htmlCL = doc.documentElement.classList;
|
||||
|
||||
element.Modal[ko.unwrap(fValueAccessor()) ? 'show' : 'hide']();
|
||||
|
||||
if (htmlCL.contains('no-mobile')) {
|
||||
htmlCL.add('rl-modal-animation');
|
||||
setTimeout(() => htmlCL.remove('rl-modal-animation'), 500);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -11,14 +11,16 @@ const SCREENS = {},
|
|||
qs = s => document.querySelector(s),
|
||||
isNonEmptyArray = values => Array.isArray(values) && values.length,
|
||||
|
||||
popupVisibilityNames = ko.observableArray([]);
|
||||
popupVisibilityNames = ko.observableArray([]),
|
||||
|
||||
autofocus = dom => {
|
||||
// if (!bMobileDevice) {
|
||||
const af = dom.querySelector('[autofocus]');
|
||||
af && af.focus();
|
||||
};
|
||||
|
||||
export const popupVisibility = ko.computed(() => 0 < popupVisibilityNames().length);
|
||||
|
||||
popupVisibility.subscribe((bValue) => {
|
||||
$htmlCL.toggle('rl-modal', bValue);
|
||||
});
|
||||
|
||||
export const ViewType = {
|
||||
Popup: 'Popups',
|
||||
Left: 'Left',
|
||||
|
|
@ -161,27 +163,43 @@ function buildViewModel(ViewModelClass, vmScreen) {
|
|||
hideScreenPopup(ViewModelClass);
|
||||
});
|
||||
|
||||
vm.modalVisibility.subscribe((value) => {
|
||||
// show/hide popup/modal
|
||||
const endShowHide = e => {
|
||||
if (e.target === vmDom && 'background-color' === e.propertyName) {
|
||||
if (vmDom.classList.contains('show')) {
|
||||
autofocus(vmDom);
|
||||
vm.onShowWithDelay && vm.onShowWithDelay();
|
||||
} else {
|
||||
vmDom.hidden = true;
|
||||
vm.onHideWithDelay && vm.onHideWithDelay();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
vm.modalVisibility.subscribe(value => {
|
||||
if (value) {
|
||||
vm.viewModelDom.hidden = false;
|
||||
vmDom.style.zIndex = 3000 + popupVisibilityNames().length + 10;
|
||||
vmDom.hidden = false;
|
||||
vm.storeAndSetKeyScope();
|
||||
|
||||
popupVisibilityNames.push(vm.viewModelName);
|
||||
vm.viewModelDom.style.zIndex = 3000 + popupVisibilityNames().length + 10;
|
||||
|
||||
vm.onShowWithDelay && setTimeout(()=>vm.onShowWithDelay, 500);
|
||||
requestAnimationFrame(() => { // wait just before the next paint
|
||||
document.body.offsetHeight; // force a reflow
|
||||
vmDom.classList.add('show'); // trigger the transitions
|
||||
});
|
||||
} else {
|
||||
vm.onHide && vm.onHide();
|
||||
vm.onHideWithDelay && setTimeout(()=>vm.onHideWithDelay, 500);
|
||||
|
||||
vmDom.classList.remove('show');
|
||||
vm.restoreKeyScope();
|
||||
|
||||
popupVisibilityNames.remove(vm.viewModelName);
|
||||
vm.viewModelDom.style.zIndex = 2000;
|
||||
|
||||
setTimeout(() => vm.viewModelDom.hidden = true, 300);
|
||||
}
|
||||
vmDom.setAttribute('aria-hidden', !value);
|
||||
});
|
||||
if ('ontransitionend' in vmDom) {
|
||||
vmDom.addEventListener('transitionend', endShowHide);
|
||||
} else {
|
||||
// For Edge < 79 and mobile browsers
|
||||
vm.modalVisibility.subscribe(() => ()=>setTimeout(endShowHide({target:vmDom}), 500));
|
||||
}
|
||||
}
|
||||
|
||||
ko.applyBindingAccessorsToNode(
|
||||
|
|
@ -223,10 +241,6 @@ export function showScreenPopup(ViewModelClassToShow, params = []) {
|
|||
ModalView.__vm.modalVisibility(true);
|
||||
|
||||
ModalView.__vm.onShow && ModalView.__vm.onShow(...params);
|
||||
|
||||
// if (!bMobileDevice) {
|
||||
const af = ModalView.__dom.querySelector('[autofocus]');
|
||||
af && af.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -338,9 +352,7 @@ function screenOnRoute(screenName, subPart) {
|
|||
|
||||
ViewModelClass.__vm.onShow && ViewModelClass.__vm.onShow();
|
||||
|
||||
// if (!bMobileDevice) {
|
||||
const af = ViewModelClass.__dom.querySelector('[autofocus]');
|
||||
af && af.focus();
|
||||
autofocus(ViewModelClass.__dom);
|
||||
|
||||
ViewModelClass.__vm.onShowWithDelay && setTimeout(()=>ViewModelClass.__vm.onShowWithDelay, 200);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,6 @@ class AbstractSettingsScreen extends AbstractScreen {
|
|||
o.oCurrentSubScreen.onBeforeShow && o.oCurrentSubScreen.onBeforeShow();
|
||||
o.oCurrentSubScreen.viewModelDom.hidden = false;
|
||||
o.oCurrentSubScreen.onShow && o.oCurrentSubScreen.onShow();
|
||||
o.oCurrentSubScreen.onShowWithDelay && setTimeout(() => o.oCurrentSubScreen.onShowWithDelay(), 200);
|
||||
|
||||
o.menu().forEach(item => {
|
||||
item.selected(
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@
|
|||
@import "Components.less";
|
||||
@import "SystemDropDown.less";
|
||||
@import "Login.less";
|
||||
@import "WelcomPage.less";
|
||||
@import "Ask.less";
|
||||
@import "Shortcuts.less";
|
||||
@import "FolderList.less";
|
||||
|
|
@ -70,7 +69,6 @@
|
|||
@import "AdminPlugins.less";
|
||||
@import "AdminPlugin.less";
|
||||
@import "AdminAbout.less";
|
||||
@import "Activate.less";
|
||||
|
||||
@import "Settings.less";
|
||||
@import "SettingsGeneral.less";
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-account-add-content {
|
||||
.modal-header {
|
||||
background-color: #fff;
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
.popups {
|
||||
.b-activate-content {
|
||||
|
||||
width: 700px;
|
||||
|
||||
.modal-header {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.help-inline {
|
||||
padding-left: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-advanced-search-content {
|
||||
&.modal {
|
||||
width: 750px;
|
||||
|
|
|
|||
|
|
@ -142,19 +142,17 @@ html.no-mobile {
|
|||
}
|
||||
}
|
||||
|
||||
&.rl-modal.rl-modal-animation .popups {
|
||||
overflow: hidden;
|
||||
#rl-popups > .rl-view-model .modal {
|
||||
transition: all .2s ease-out;
|
||||
}
|
||||
|
||||
& .modal.fade {
|
||||
|
||||
.transition(all 200ms ease-out);
|
||||
/*transform: scale(0.95);*/
|
||||
transform: translateY(-20px);
|
||||
|
||||
&.show {
|
||||
transform: none;
|
||||
}
|
||||
#rl-popups > .rl-view-model:not(.show) .modal {
|
||||
top: -25%;
|
||||
}
|
||||
#rl-popups > .rl-view-model .modal.fade {
|
||||
opacity: 1;
|
||||
}
|
||||
#rl-popups > .rl-view-model:not(.show) .modal.fade {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
& .b-compose.loading .b-header-toolbar {
|
||||
|
|
@ -164,6 +162,13 @@ html.no-mobile {
|
|||
}
|
||||
}
|
||||
|
||||
#rl-popups > .rl-view-model {
|
||||
transition: background-color 0.2s linear;
|
||||
}
|
||||
#rl-popups > .rl-view-model:not(.show) {
|
||||
background-color: rgba(0,0,0,0);
|
||||
}
|
||||
|
||||
.textLoadingAnimationD1, .textLoadingAnimationD2, .textLoadingAnimationD3 {
|
||||
animation: textLoadingAnimationKeyFrame 1s linear infinite 0s;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-ask-content {
|
||||
|
||||
.modal-header {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
width: 900px;
|
||||
min-height: 300px;
|
||||
max-height: 700px;
|
||||
margin: auto;
|
||||
|
||||
.modal-body {
|
||||
overflow: auto;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-filter-content {
|
||||
|
||||
width: 750px;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-folder-clear-content {
|
||||
.modal-header {
|
||||
background-color: #fff;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-folder-create-content {
|
||||
.modal-header {
|
||||
background-color: #fff;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-folder-system-content {
|
||||
.modal-header {
|
||||
background-color: #fff;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-identity-content {
|
||||
|
||||
&.modal {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-languages-content {
|
||||
|
||||
&.modal {
|
||||
|
|
@ -43,4 +43,4 @@ html.rl-mobile {
|
|||
.b-languages-content .lang-item {
|
||||
width: calc(~'100% - 40px');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,6 +168,26 @@ html:not(.rl-left-panel-disabled) #rl-left.resizable > .resizer,
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
#rl-popups > dialog {
|
||||
top: 0;
|
||||
margin: 10px auto;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
*/
|
||||
#rl-popups > .rl-view-model {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 1100;
|
||||
overflow: auto;
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
// -webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
html.ssm-state-desktop-large {
|
||||
|
||||
#rl-left {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-open-pgp-key-view-content, .b-open-pgp-key-generate-content, .b-open-pgp-key-add-content, .b-compose-open-pgp-content, .b-message-open-pgp-content {
|
||||
|
||||
.modal-header {
|
||||
|
|
@ -137,9 +137,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.popups {
|
||||
.b-open-pgp-key-add-content {
|
||||
&.modal {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
.rl-view-model {
|
||||
.b-shortcuts-content {
|
||||
&.modal {
|
||||
width: 700px;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
.b-template-add-content {
|
||||
|
||||
&.modal {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.popups {
|
||||
#rl-popups {
|
||||
|
||||
.b-two-factor-content {
|
||||
|
||||
|
|
|
|||
|
|
@ -6,17 +6,6 @@
|
|||
// touch-callout: none;
|
||||
}
|
||||
|
||||
.g-ui-user-select-allow {
|
||||
webkit-touch-callout: inherit;
|
||||
user-select: inherit;
|
||||
standard-user-select: inherit;
|
||||
touch-callout: inherit;
|
||||
}
|
||||
|
||||
.g-ui-clearfix {
|
||||
.clearfix();
|
||||
}
|
||||
|
||||
.g-ui-link {
|
||||
color: #336699;
|
||||
text-decoration: underline;
|
||||
|
|
@ -33,10 +22,6 @@
|
|||
min-height: 300px;
|
||||
}
|
||||
|
||||
.g-ui-100-proc-height {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.g-ui-absolute-reset {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
|
|
@ -99,10 +84,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.g-ui-height-100proc {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.e-pagenator {
|
||||
|
||||
.e-page {
|
||||
|
|
@ -171,15 +152,11 @@
|
|||
}
|
||||
}
|
||||
|
||||
.display-none {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.e-spinner {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.e-powered, .e-mobile-switcher {
|
||||
.e-mobile-switcher {
|
||||
margin-top: 8px;
|
||||
color: #333;
|
||||
a {
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
.popups {
|
||||
.b-welcom-page-content {
|
||||
|
||||
.modal-header {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -287,47 +287,6 @@ html.no-rgba .modal {
|
|||
border-width: 0px !important;
|
||||
}
|
||||
|
||||
.modal-backdrop, .modal-backdrop.fade.show {
|
||||
.opacity(20);
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.popups {
|
||||
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 1100;
|
||||
overflow: auto;
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
// -webkit-overflow-scrolling: touch;
|
||||
|
||||
.modal {
|
||||
position: static;
|
||||
z-index: 1101;
|
||||
margin: 5% auto;
|
||||
background-color: transparent;
|
||||
overflow: hidden;
|
||||
|
||||
.modal-body {
|
||||
background-color: #fff;
|
||||
max-height: none;
|
||||
}
|
||||
|
||||
box-shadow: 0 5px 80px rgba(0,0,0,0.3);
|
||||
}
|
||||
}
|
||||
|
||||
.modal.fade {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.modal-backdrop {
|
||||
.g-ui-user-select-none();
|
||||
}
|
||||
|
||||
.modal.loginContent .modal-body, .modal.loginAdminContent .modal-body {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
|
@ -355,7 +314,7 @@ html.no-rgba .modal {
|
|||
|
||||
html.rl-mobile {
|
||||
|
||||
.popups .modal {
|
||||
#rl-popups .modal {
|
||||
width: 100% !important;
|
||||
width: calc(~'100% - 20px') !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,7 +219,6 @@ if (app) {
|
|||
<div id="rl-top"></div>\
|
||||
<div id="rl-left"></div>\
|
||||
<div id="rl-right"></div>\
|
||||
<div id="rl-bottom"></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div id="rl-templates"></div>\
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="controls controls-submit-wrp" data-bind="css: {'display-none': hideSubmitButton}">
|
||||
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||
<span data-i18n="LOGIN/BUTTON_LOGIN"></span>
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -1,271 +1,269 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-domain-content g-ui-user-select-none"
|
||||
data-bind="modal: modalVisibility, css: {'domain-edit': edit, 'domain-second-page': 'main' !== page()}">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3 data-bind="text: headerText"></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal domain-form" action="#/" onsubmit="return false;">
|
||||
<div class="row" data-bind="visible: !edit()" style="margin-bottom: 20px;">
|
||||
<div class="span5">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_NAME"></span>
|
||||
|
||||
<span style="color: #aaa">(<span data-i18n="POPUPS_DOMAIN/NAME_HELPER"></span>)</span>
|
||||
<br />
|
||||
<input type="text" class="span4" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: name" />
|
||||
<div data-bind="visible: '' !== savingError()">
|
||||
<span class="error-desc" data-bind="text: savingError"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span5 domain-desc" data-bind="visible: '' !== domainDesc()">
|
||||
<div data-bind="html: domainDesc"></div>
|
||||
<div class="modal b-domain-content g-ui-user-select-none"
|
||||
data-bind="modal: modalVisibility, css: {'domain-edit': edit, 'domain-second-page': 'main' !== page()}">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3 data-bind="text: headerText"></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal domain-form" action="#/" onsubmit="return false;">
|
||||
<div class="row" data-bind="visible: !edit()" style="margin-bottom: 20px;">
|
||||
<div class="span5">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_NAME"></span>
|
||||
|
||||
<span style="color: #aaa">(<span data-i18n="POPUPS_DOMAIN/NAME_HELPER"></span>)</span>
|
||||
<br />
|
||||
<input type="text" class="span4" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: name" />
|
||||
<div data-bind="visible: '' !== savingError()">
|
||||
<span class="error-desc" data-bind="text: savingError"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div class="legend imap-header" data-bind="visible: !sieveSettings(), css: { 'testing-done': testingDone, 'testing-error': testingImapError }">
|
||||
<span data-placement="bottom" data-bind="tooltipErrorTip: testingImapErrorDesc">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_IMAP"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="legend sieve-header" data-bind="visible: sieveSettings(), css: { 'testing-done': testingDone, 'testing-error': testingSieveError }">
|
||||
<span data-placement="bottom" data-bind="tooltipErrorTip: testingSieveErrorDesc">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SIEVE"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div data-bind="visible: !sieveSettings()">
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SERVER"></span>
|
||||
<br />
|
||||
<input type="text" class="span3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: imapServer, hasfocus: imapServerFocus" />
|
||||
</div>
|
||||
<div class="span1">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_PORT"></span>
|
||||
<br />
|
||||
<input type="text" class="span1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: imapPort" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SECURE"></span>
|
||||
<br />
|
||||
<select class="span2" data-bind="value: imapSecure">
|
||||
<option value="0" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_NONE"></option>
|
||||
<option value="1" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_SSL"></option>
|
||||
<option value="2" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_STARTTLS"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_SHORT_LOGIN',
|
||||
value: imapShortLogin,
|
||||
inline: true
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<span style="color: #aaa">(user@domain.com → user)</span>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div class="row" data-bind="visible: allowSieve">
|
||||
<div class="span5">
|
||||
<span data-bind="command: sieveCommand">
|
||||
<i class="icon-filter"></i>
|
||||
|
||||
<a href="#" class="g-ui-link" data-i18n="POPUPS_DOMAIN/BUTTON_SIEVE_CONFIGURATION"></a>
|
||||
|
||||
<span style="color:red">(<span data-i18n="HINTS/BETA"></span>)</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-bind="visible: sieveSettings">
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_ALLOW_SIEVE_SCRIPTS',
|
||||
value: useSieve
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-bind="visible: useSieve">
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_ALLOW_USER_SCRIPT',
|
||||
value: sieveAllowRaw
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SERVER"></span>
|
||||
<br />
|
||||
<input type="text" class="span3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: sieveServer, hasfocus: sieveServerFocus" />
|
||||
</div>
|
||||
<div class="span1">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_PORT"></span>
|
||||
<br />
|
||||
<input type="text" class="span1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: sievePort" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SECURE"></span>
|
||||
<br />
|
||||
<select class="span2" data-bind="value: sieveSecure">
|
||||
<option value="0" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_NONE"></option>
|
||||
<option value="1" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_SSL"></option>
|
||||
<option value="2" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_STARTTLS"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<span data-bind="command: sieveCommand">
|
||||
<i class="icon-left"></i>
|
||||
|
||||
<a href="#" class="g-ui-link" data-i18n="POPUPS_DOMAIN/BUTTON_BACK_TO_IMAP"></a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span5 domain-desc" data-bind="visible: '' !== domainDesc()">
|
||||
<div data-bind="html: domainDesc"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div class="legend imap-header" data-bind="visible: !sieveSettings(), css: { 'testing-done': testingDone, 'testing-error': testingImapError }">
|
||||
<span data-placement="bottom" data-bind="tooltipErrorTip: testingImapErrorDesc">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_IMAP"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="span5">
|
||||
<div class="legend smtp-header" data-bind="css: { 'testing-done': testingDone, 'testing-error': testingSmtpError }">
|
||||
<span data-placement="bottom" data-bind="tooltipErrorTip: testingSmtpErrorDesc">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SMTP"></span>
|
||||
</span>
|
||||
<div class="legend sieve-header" data-bind="visible: sieveSettings(), css: { 'testing-done': testingDone, 'testing-error': testingSieveError }">
|
||||
<span data-placement="bottom" data-bind="tooltipErrorTip: testingSieveErrorDesc">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SIEVE"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div data-bind="visible: !sieveSettings()">
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SERVER"></span>
|
||||
<br />
|
||||
<input type="text" class="span3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: imapServer, hasfocus: imapServerFocus" />
|
||||
</div>
|
||||
<div class="span1">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_PORT"></span>
|
||||
<br />
|
||||
<input type="text" class="span1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: imapPort" />
|
||||
</div>
|
||||
</div>
|
||||
<div data-bind="visible: !smtpPhpMail()">
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SERVER"></span>
|
||||
<br />
|
||||
<input type="text" class="span3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: smtpServer, hasfocus: smtpServerFocus" />
|
||||
</div>
|
||||
<div class="span1">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_PORT"></span>
|
||||
<br />
|
||||
<input type="text" class="span1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: smtpPort" />
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SECURE"></span>
|
||||
<br />
|
||||
<select class="span2" data-bind="value: imapSecure">
|
||||
<option value="0" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_NONE"></option>
|
||||
<option value="1" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_SSL"></option>
|
||||
<option value="2" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_STARTTLS"></option>
|
||||
</select>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SECURE"></span>
|
||||
<br />
|
||||
<select class="span2" data-bind="value: smtpSecure">
|
||||
<option value="0" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_NONE"></option>
|
||||
<option value="1" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_SSL"></option>
|
||||
<option value="2" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_STARTTLS"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_SHORT_LOGIN',
|
||||
value: smtpShortLogin,
|
||||
inline: true
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<span style="color: #aaa">(user@domain.com → user)</span>
|
||||
<br />
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_AUTH',
|
||||
value: smtpAuth
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_PHP_MAIL',
|
||||
value: smtpPhpMail,
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_SHORT_LOGIN',
|
||||
value: imapShortLogin,
|
||||
inline: true
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<span style="color:red">(<span data-i18n="HINTS/BETA"></span>)</span>
|
||||
<span style="color: #aaa">(user@domain.com → user)</span>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div class="row" data-bind="visible: allowSieve">
|
||||
<div class="span5">
|
||||
<span data-bind="command: sieveCommand">
|
||||
<i class="icon-filter"></i>
|
||||
|
||||
<a href="#" class="g-ui-link" data-i18n="POPUPS_DOMAIN/BUTTON_SIEVE_CONFIGURATION"></a>
|
||||
|
||||
<span style="color:red">(<span data-i18n="HINTS/BETA"></span>)</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span10" data-bind="visible: 'white-list' === page()">
|
||||
<div class="legend white-list-header" data-i18n="POPUPS_DOMAIN/LABEL_WHITE_LIST"></div>
|
||||
<div class="alert alert-block span6 alert-null-left-margin" style="width: 562px;" data-i18n="POPUPS_DOMAIN/WHITE_LIST_ALERT"></div>
|
||||
<textarea class="input-xxlarge" style="width: 600px" rows="8" data-bind="value: whiteList" tabindex="-1"></textarea>
|
||||
<div data-bind="visible: sieveSettings">
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_ALLOW_SIEVE_SCRIPTS',
|
||||
value: useSieve
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-bind="visible: useSieve">
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_ALLOW_USER_SCRIPT',
|
||||
value: sieveAllowRaw
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SERVER"></span>
|
||||
<br />
|
||||
<input type="text" class="span3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: sieveServer, hasfocus: sieveServerFocus" />
|
||||
</div>
|
||||
<div class="span1">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_PORT"></span>
|
||||
<br />
|
||||
<input type="text" class="span1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: sievePort" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SECURE"></span>
|
||||
<br />
|
||||
<select class="span2" data-bind="value: sieveSecure">
|
||||
<option value="0" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_NONE"></option>
|
||||
<option value="1" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_SSL"></option>
|
||||
<option value="2" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_STARTTLS"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<span data-bind="command: sieveCommand">
|
||||
<i class="icon-left"></i>
|
||||
|
||||
<a href="#" class="g-ui-link" data-i18n="POPUPS_DOMAIN/BUTTON_BACK_TO_IMAP"></a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn button-test-connection pull-left" data-bind="visible: 'main' === page(), command: testConnectionCommand, css: {
|
||||
'btn-success': testingDone() && !testingImapError() && !testingSmtpError(),
|
||||
'btn-danger': testingDone() && (testingImapError() || testingSmtpError()) }">
|
||||
<i data-bind="css: {'icon-info': !testing(), 'icon-spinner animated': testing(), 'icon-white': testingDone()}"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_TEST"></span>
|
||||
</a>
|
||||
<a class="btn button-white-list pull-left" data-bind="command: whiteListCommand, visible: 'main' === page()">
|
||||
<i class="icon-users"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_WHITE_LIST"></span>
|
||||
</a>
|
||||
<a class="btn button-white-list pull-left" data-bind="command: backCommand, visible: 'main' !== page()">
|
||||
<i class="icon-left"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_BACK"></span>
|
||||
</a>
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClear" data-bind="command: createOrAddCommand">
|
||||
<i data-bind="css: edit() ? 'icon-ok' : 'icon-plus', visible: !saving()"></i>
|
||||
<i class="icon-spinner animated" data-bind="visible: saving"></i>
|
||||
|
||||
<span data-bind="visible: !edit()" data-i18n="POPUPS_DOMAIN/BUTTON_ADD"></span>
|
||||
<span data-bind="visible: edit()" data-i18n="POPUPS_DOMAIN/BUTTON_UPDATE"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="span5">
|
||||
<div class="legend smtp-header" data-bind="css: { 'testing-done': testingDone, 'testing-error': testingSmtpError }">
|
||||
<span data-placement="bottom" data-bind="tooltipErrorTip: testingSmtpErrorDesc">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SMTP"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div data-bind="visible: !smtpPhpMail()">
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SERVER"></span>
|
||||
<br />
|
||||
<input type="text" class="span3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: smtpServer, hasfocus: smtpServerFocus" />
|
||||
</div>
|
||||
<div class="span1">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_PORT"></span>
|
||||
<br />
|
||||
<input type="text" class="span1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: smtpPort" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<span data-i18n="POPUPS_DOMAIN/LABEL_SECURE"></span>
|
||||
<br />
|
||||
<select class="span2" data-bind="value: smtpSecure">
|
||||
<option value="0" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_NONE"></option>
|
||||
<option value="1" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_SSL"></option>
|
||||
<option value="2" data-i18n="POPUPS_DOMAIN/SECURE_OPTION_STARTTLS"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_SHORT_LOGIN',
|
||||
value: smtpShortLogin,
|
||||
inline: true
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<span style="color: #aaa">(user@domain.com → user)</span>
|
||||
<br />
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_AUTH',
|
||||
value: smtpAuth
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span5">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_DOMAIN/LABEL_USE_PHP_MAIL',
|
||||
value: smtpPhpMail,
|
||||
inline: true
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<span style="color:red">(<span data-i18n="HINTS/BETA"></span>)</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span10" data-bind="visible: 'white-list' === page()">
|
||||
<div class="legend white-list-header" data-i18n="POPUPS_DOMAIN/LABEL_WHITE_LIST"></div>
|
||||
<div class="alert alert-block span6 alert-null-left-margin" style="width: 562px;" data-i18n="POPUPS_DOMAIN/WHITE_LIST_ALERT"></div>
|
||||
<textarea class="input-xxlarge" style="width: 600px" rows="8" data-bind="value: whiteList" tabindex="-1"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn button-test-connection pull-left" data-bind="visible: 'main' === page(), command: testConnectionCommand, css: {
|
||||
'btn-success': testingDone() && !testingImapError() && !testingSmtpError(),
|
||||
'btn-danger': testingDone() && (testingImapError() || testingSmtpError()) }">
|
||||
<i data-bind="css: {'icon-info': !testing(), 'icon-spinner animated': testing(), 'icon-white': testingDone()}"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_TEST"></span>
|
||||
</a>
|
||||
<a class="btn button-white-list pull-left" data-bind="command: whiteListCommand, visible: 'main' === page()">
|
||||
<i class="icon-users"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_WHITE_LIST"></span>
|
||||
</a>
|
||||
<a class="btn button-white-list pull-left" data-bind="command: backCommand, visible: 'main' !== page()">
|
||||
<i class="icon-left"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_BACK"></span>
|
||||
</a>
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClear" data-bind="command: createOrAddCommand">
|
||||
<i data-bind="css: edit() ? 'icon-ok' : 'icon-plus', visible: !saving()"></i>
|
||||
<i class="icon-spinner animated" data-bind="visible: saving"></i>
|
||||
|
||||
<span data-bind="visible: !edit()" data-i18n="POPUPS_DOMAIN/BUTTON_ADD"></span>
|
||||
<span data-bind="visible: edit()" data-i18n="POPUPS_DOMAIN/BUTTON_UPDATE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,53 +1,51 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-domain-alias-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3 data-i18n="POPUPS_DOMAIN_ALIAS/TITLE_ADD_DOMAIN_ALIAS"></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="control-group" data-bind="css: {error: '' !== savingError()}">
|
||||
<label class="control-label" data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_ALIAS"></label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Input',
|
||||
params: {
|
||||
value: name,
|
||||
size: 4
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="visible: '' !== savingError()">
|
||||
<span class="error-desc" data-bind="text: savingError"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_DOMAIN"></label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Select',
|
||||
params: {
|
||||
options: domainsOptions,
|
||||
value: alias,
|
||||
optionsText: 'optText',
|
||||
optionsValue: 'optValue',
|
||||
size: 4
|
||||
}
|
||||
}"></div>
|
||||
<div class="modal b-domain-alias-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3 data-i18n="POPUPS_DOMAIN_ALIAS/TITLE_ADD_DOMAIN_ALIAS"></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="control-group" data-bind="css: {error: '' !== savingError()}">
|
||||
<label class="control-label" data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_ALIAS"></label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Input',
|
||||
params: {
|
||||
value: name,
|
||||
size: 4
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="visible: '' !== savingError()">
|
||||
<span class="error-desc" data-bind="text: savingError"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN_ALIAS/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClear" data-bind="command: createCommand">
|
||||
<i class="icon-plus" data-bind="visible: !saving()"></i>
|
||||
<i class="icon-spinner animated" data-bind="visible: saving"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN_ALIAS/BUTTON_ADD"></span>
|
||||
</a>
|
||||
<div class="control-group">
|
||||
<label class="control-label" data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_DOMAIN"></label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Select',
|
||||
params: {
|
||||
options: domainsOptions,
|
||||
value: alias,
|
||||
optionsText: 'optText',
|
||||
optionsValue: 'optValue',
|
||||
size: 4
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN_ALIAS/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClear" data-bind="command: createCommand">
|
||||
<i class="icon-plus" data-bind="visible: !saving()"></i>
|
||||
<i class="icon-spinner animated" data-bind="visible: saving"></i>
|
||||
|
||||
<span data-i18n="POPUPS_DOMAIN_ALIAS/BUTTON_ADD"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,39 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-plugin-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h4>
|
||||
<span data-i18n="POPUPS_PLUGIN/TITLE_PLUGIN"></span>
|
||||
|
||||
"<span data-bind="text: name"></span>"
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal plugin-form" action="#/" onsubmit="return false;">
|
||||
<div class="well" data-bind="visible: !hasConfiguration()">
|
||||
<span data-i18n="POPUPS_PLUGIN/DESC_NOTHING_TO_CONFIGURE"></span>
|
||||
</div>
|
||||
<div class="alert" data-bind="visible: '' !== saveError()">
|
||||
<button type="button" class="close" data-bind="click: function () { saveError('') }">×</button>
|
||||
<span data-bind="text: saveError"></span>
|
||||
</div>
|
||||
<div data-bind="foreach: configures, visible: hasConfiguration">
|
||||
<div data-bind="template: { name: 'AdminSettingsPluginProperty' }"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<span class="information pull-left" data-bind="visible: hasReadme, popover: readmePopoverConf">
|
||||
<i class="icon-info"></i>
|
||||
</span>
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span data-i18n="POPUPS_PLUGIN/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClear" data-bind="command: saveCommand, visible: hasConfiguration">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
<span data-i18n="POPUPS_PLUGIN/BUTTON_SAVE"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="modal b-plugin-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h4>
|
||||
<span data-i18n="POPUPS_PLUGIN/TITLE_PLUGIN"></span>
|
||||
|
||||
"<span data-bind="text: name"></span>"
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal plugin-form" action="#/" onsubmit="return false;">
|
||||
<div class="well" data-bind="visible: !hasConfiguration()">
|
||||
<span data-i18n="POPUPS_PLUGIN/DESC_NOTHING_TO_CONFIGURE"></span>
|
||||
</div>
|
||||
<div class="alert" data-bind="visible: '' !== saveError()">
|
||||
<button type="button" class="close" data-bind="click: function () { saveError('') }">×</button>
|
||||
<span data-bind="text: saveError"></span>
|
||||
</div>
|
||||
<div data-bind="foreach: configures, visible: hasConfiguration">
|
||||
<div data-bind="template: { name: 'AdminSettingsPluginProperty' }"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<span class="information pull-left" data-bind="visible: hasReadme, popover: readmePopoverConf">
|
||||
<i class="icon-info"></i>
|
||||
</span>
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span data-i18n="POPUPS_PLUGIN/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClear" data-bind="command: saveCommand, visible: hasConfiguration">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
<span data-i18n="POPUPS_PLUGIN/BUTTON_SAVE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,26 +1,24 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-ask-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-body">
|
||||
<br />
|
||||
<br />
|
||||
<span class="desc-place" data-bind="html: askDesc"></span>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn buttonYes" data-bind="click: yesClick">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
<span data-bind="text: yesButton"></span>
|
||||
</button>
|
||||
<button class="btn buttonNo" data-bind="click: noClick">
|
||||
<i class=" icon-remove"></i>
|
||||
|
||||
<span data-bind="text: noButton"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal b-ask-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-body">
|
||||
<br />
|
||||
<br />
|
||||
<span class="desc-place" data-bind="html: askDesc"></span>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn buttonYes" data-bind="click: yesClick">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
<span data-bind="text: yesButton"></span>
|
||||
</button>
|
||||
<button class="btn buttonNo" data-bind="click: noClick">
|
||||
<i class=" icon-remove"></i>
|
||||
|
||||
<span data-bind="text: noButton"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,89 +1,87 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-shortcuts-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3 class="i18n" data-i18n="SHORTCUTS_HELP/LEGEND_SHORTCUTS_HELP"></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active">
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_MAILBOX" href="#mailbox-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_LIST" href="#message-list-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_VIEW" href="#message-view-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_COMPOSE" href="#compose-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
</ul>
|
||||
<br />
|
||||
<div class="tab-content span8">
|
||||
<div class="tab-pane active" id="mailbox-shortcuts-id">
|
||||
<div class="modal b-shortcuts-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3 class="i18n" data-i18n="SHORTCUTS_HELP/LEGEND_SHORTCUTS_HELP"></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active">
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_MAILBOX" href="#mailbox-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_LIST" href="#message-list-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_VIEW" href="#message-view-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="i18n" data-i18n="SHORTCUTS_HELP/TAB_COMPOSE" href="#compose-shortcuts-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
</ul>
|
||||
<br />
|
||||
<div class="tab-content span8">
|
||||
<div class="tab-pane active" id="mailbox-shortcuts-id">
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_USER_DROPDOWN"></td><td>` (tilde)</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY"></td><td>R</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY_ALL"></td><td>A</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD"></td><td>F</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD_MULTIPLY"></td><td>Shift + F</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_HELP"></td><td>?, Shift + /</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_USER_DROPDOWN"></td><td>` (tilde)</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY"></td><td>R</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY_ALL"></td><td>A</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD"></td><td>F</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD_MULTIPLY"></td><td>Shift + F</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_HELP"></td><td>?, Shift + /</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="message-list-shortcuts-id">
|
||||
</div>
|
||||
<div class="tab-pane" id="message-list-shortcuts-id">
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CHECK_ALL"></td><td>Ctrl + A, ⌘ + A</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_ARCHIVE"></td><td>Z</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_DELETE"></td><td>Delete, Shift + Delete, #</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_THREAD"></td><td>T</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_MOVE"></td><td>M</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_READ"></td><td>Q</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_UNREAD"></td><td>U</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_IMPORTANT"></td><td>I</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SEARCH"></td><td>/</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_ENTER"></td><td>Enter</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_VIEW_MESSAGE_ENTER"></td><td>Enter</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_MESSAGE"></td><td>→, Tab</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_FOLDER_LIST"></td><td>←, Shift + Tab</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CHECK_ALL"></td><td>Ctrl + A, ⌘ + A</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_ARCHIVE"></td><td>Z</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_DELETE"></td><td>Delete, Shift + Delete, #</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_THREAD"></td><td>T</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_MOVE"></td><td>M</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_READ"></td><td>Q</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_UNREAD"></td><td>U</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_IMPORTANT"></td><td>I</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SEARCH"></td><td>/</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_ENTER"></td><td>Enter</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_VIEW_MESSAGE_ENTER"></td><td>Enter</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_MESSAGE"></td><td>→, Tab</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_FOLDER_LIST"></td><td>←, Shift + Tab</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="message-view-shortcuts-id">
|
||||
</div>
|
||||
<div class="tab-pane" id="message-view-shortcuts-id">
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_TOGGLE"></td><td>Enter</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_BLOCKQUOTES_TOGGLE"></td><td>B</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_PRINT"></td><td>Ctrl + P, ⌘ + P</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_EXIT_FULLSCREEN"></td><td>Esc</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_MESSAGE"></td><td>Esc</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_LIST"></td><td>Tab, Shift + Tab, Esc</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_TOGGLE"></td><td>Enter</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_BLOCKQUOTES_TOGGLE"></td><td>B</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_PRINT"></td><td>Ctrl + P, ⌘ + P</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_EXIT_FULLSCREEN"></td><td>Esc</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_MESSAGE"></td><td>Esc</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_LIST"></td><td>Tab, Shift + Tab, Esc</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="compose-shortcuts-id">
|
||||
</div>
|
||||
<div class="tab-pane" id="compose-shortcuts-id">
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_COMPOSE_POPUP"></td><td>W, C</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_IDENTITIES_DROPDOWN"></td><td>` (tilde), Ctrl + `, ⌘ + `</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SAVE_MESSAGE"></td><td>Ctrl + S, ⌘ + S</td></tr>
|
||||
<!--<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SEND_MESSAGE"></td><td>Ctrl + Enter, ⌘ + Enter</td></tr>-->
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_MINIMIZE_COMPOSE_POPUP"></td><td>Esc</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_COMPOSE"></td><td>Shift + Esc</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_COMPOSE_POPUP"></td><td>W, C</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_IDENTITIES_DROPDOWN"></td><td>` (tilde), Ctrl + `, ⌘ + `</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SAVE_MESSAGE"></td><td>Ctrl + S, ⌘ + S</td></tr>
|
||||
<!--<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SEND_MESSAGE"></td><td>Ctrl + Enter, ⌘ + Enter</td></tr>-->
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_MINIMIZE_COMPOSE_POPUP"></td><td>Esc</td></tr>
|
||||
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_COMPOSE"></td><td>Shift + Esc</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,22 +1,20 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-languages-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_LANGUAGES/TITLE_LANGUAGES"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 150px;">
|
||||
<div data-bind="foreach: languages">
|
||||
<label class="lang-item" data-tooltip-i18n="off" data-tooltip-join="right" data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected, 'user': user},
|
||||
tooltip: function () { return $root.languageTooltipName(key); }">
|
||||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + key.toLowerCase()" style=""></span>
|
||||
</span>
|
||||
<span class="lang-name" data-bind="text: fullName"></span>
|
||||
<i class="icon-ok pull-right" style="color: green; margin-top: 3px;" data-bind="visible: selected"></i>
|
||||
</label>
|
||||
</div>
|
||||
<div class="modal b-languages-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_LANGUAGES/TITLE_LANGUAGES"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 150px;">
|
||||
<div data-bind="foreach: languages">
|
||||
<label class="lang-item" data-tooltip-i18n="off" data-tooltip-join="right" data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected, 'user': user},
|
||||
tooltip: function () { return $root.languageTooltipName(key); }">
|
||||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + key.toLowerCase()" style=""></span>
|
||||
</span>
|
||||
<span class="lang-name" data-bind="text: fullName"></span>
|
||||
<i class="icon-ok pull-right" style="color: green; margin-top: 3px;" data-bind="visible: selected"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
}"></div>
|
||||
</div>
|
||||
{{INCLUDE/BottomControlGroup/PLACE}}
|
||||
<div class="controls controls-submit-wrp" data-bind="css: {'display-none': hideSubmitButton}">
|
||||
<div class="controls controls-submit-wrp" data-bind="hidden: hideSubmitButton">
|
||||
<button type="submit" class="btn btn-large btn-block buttonLogin" data-bind="command: submitCommand">
|
||||
<span class="i18n i18n-animation" data-i18n="LOGIN/BUTTON_SIGN_IN"></span>
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -1,50 +1,48 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-account-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="visible: isNew" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_ADD_ACCOUNT"></span>
|
||||
<span data-bind="visible: !isNew()" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_UPDATE_ACCOUNT"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close-custom" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
<div data-bind="visible: submitErrorAdditional">
|
||||
<br />
|
||||
<span data-bind="text: submitErrorAdditional"></span>
|
||||
</div>
|
||||
<div class="modal b-account-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="visible: isNew" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_ADD_ACCOUNT"></span>
|
||||
<span data-bind="visible: !isNew()" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_UPDATE_ACCOUNT"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close-custom" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
<div data-bind="visible: submitErrorAdditional">
|
||||
<br />
|
||||
<span data-bind="text: submitErrorAdditional"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="css: {'error': emailError}">
|
||||
<label class="i18n control-label" data-i18n="LOGIN/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<label style="margin-top: 5px;" data-bind="visible: !isNew()"><strong data-bind="text: email"></strong></label>
|
||||
<input type="email" class="inputEmail input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="visible: isNew, textInput: email, onEnter: addAccountCommand, hasfocus: emailFocus" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="css: {'error': emailError}">
|
||||
<label class="i18n control-label" data-i18n="LOGIN/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<label style="margin-top: 5px;" data-bind="visible: !isNew()"><strong data-bind="text: email"></strong></label>
|
||||
<input type="email" class="inputEmail input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="visible: isNew, textInput: email, onEnter: addAccountCommand, hasfocus: emailFocus" />
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': passwordError}">
|
||||
<label class="i18n control-label" data-i18n="LOGIN/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input type="password" class="inputPassword input-xlarge" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: password, onEnter: addAccountCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': passwordError}">
|
||||
<label class="i18n control-label" data-i18n="LOGIN/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input type="password" class="inputPassword input-xlarge" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: password, onEnter: addAccountCommand" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addAccountCommand">
|
||||
<i data-bind="visible: isNew, css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
<i data-bind="visible: !isNew(), css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span data-bind="visible: isNew" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/BUTTON_ADD_ACCOUNT"></span>
|
||||
<span data-bind="visible: !isNew()" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/BUTTON_UPDATE_ACCOUNT"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addAccountCommand">
|
||||
<i data-bind="visible: isNew, css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
<i data-bind="visible: !isNew(), css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span data-bind="visible: isNew" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/BUTTON_ADD_ACCOUNT"></span>
|
||||
<span data-bind="visible: !isNew()" class="i18n" data-i18n="POPUPS_ADD_ACCOUNT/BUTTON_UPDATE_ACCOUNT"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,25 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-open-pgp-key-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_IMPORT_OPEN_PGP_KEY/TITLE_IMPORT_OPEN_PGP_KEY"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert" data-bind="visible: key.error() && key.errorMessage(), text: key.errorMessage"></div>
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group" data-bind="css: {'error': key.error}">
|
||||
<textarea class="inputKey input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: key"></textarea>
|
||||
</div>
|
||||
<div class="modal b-open-pgp-key-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_IMPORT_OPEN_PGP_KEY/TITLE_IMPORT_OPEN_PGP_KEY"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert" data-bind="visible: key.error() && key.errorMessage(), text: key.errorMessage"></div>
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group" data-bind="css: {'error': key.error}">
|
||||
<textarea class="inputKey input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: key"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addOpenPgpKeyCommand">
|
||||
<i class="icon-list-add"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_IMPORT_OPEN_PGP_KEY/BUTTON_IMPORT_OPEN_PGP_KEY"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addOpenPgpKeyCommand">
|
||||
<i class="icon-list-add"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_IMPORT_OPEN_PGP_KEY/BUTTON_IMPORT_OPEN_PGP_KEY"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,107 +1,105 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-advanced-search-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="SEARCH/TITLE_ADV"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<br />
|
||||
<form class="form-horizontal" action="#/" autocomplete="off" onsubmit="return false;" data-bind="command: searchCommand">
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_FROM"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: from, onEnter: searchCommand, hasfocus: fromFocus, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_TO"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: to, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_SUBJECT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: subject, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_TEXT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: text, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
<div class="modal b-advanced-search-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="SEARCH/TITLE_ADV"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<br />
|
||||
<form class="form-horizontal" action="#/" autocomplete="off" onsubmit="return false;" data-bind="command: searchCommand">
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_FROM"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: from, onEnter: searchCommand, hasfocus: fromFocus, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_DATE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Select',
|
||||
params: {
|
||||
options: selectedDates,
|
||||
value: selectedDateValue,
|
||||
optionsText: 'name',
|
||||
optionsValue: 'id'
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_TO"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: to, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'SEARCH/LABEL_ADV_UNSEEN',
|
||||
value: unseen
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'SEARCH/LABEL_ADV_FLAGGED',
|
||||
value: starred
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'SEARCH/LABEL_ADV_HAS_ATTACHMENT',
|
||||
value: hasAttachment
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_SUBJECT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: subject, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_TEXT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: text, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn buttonAdvSearch" data-bind="command: searchCommand">
|
||||
<i class="icon-search"></i>
|
||||
|
||||
<span class="i18n" data-i18n="SEARCH/BUTTON_ADV_SEARCH"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="span4">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="SEARCH/LABEL_ADV_DATE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Select',
|
||||
params: {
|
||||
options: selectedDates,
|
||||
value: selectedDateValue,
|
||||
optionsText: 'name',
|
||||
optionsValue: 'id'
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'SEARCH/LABEL_ADV_UNSEEN',
|
||||
value: unseen
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'SEARCH/LABEL_ADV_FLAGGED',
|
||||
value: starred
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'SEARCH/LABEL_ADV_HAS_ATTACHMENT',
|
||||
value: hasAttachment
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn buttonAdvSearch" data-bind="command: searchCommand">
|
||||
<i class="icon-search"></i>
|
||||
|
||||
<span class="i18n" data-i18n="SEARCH/BUTTON_ADV_SEARCH"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,206 +1,204 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-compose" data-backdrop="static" data-bind="modal: modalVisibility, css: {'loading': saving() || sending()}">
|
||||
<div class="modal-header b-header-toolbar g-ui-user-select-none">
|
||||
<a class="btn btn-large button-send" data-bind="command: sendCommand, tooltipErrorTip: sendErrorDesc, css: {'btn-success': sendButtonSuccess, 'btn-danger': sendError, 'btn-warning': sendSuccessButSaveError }">
|
||||
<i class="icon-white" data-bind="css: {'icon-paper-plane': !sending(), 'icon-spinner animated big': sending()}"></i>
|
||||
<span class="i18n btn-text hide-on-mobile" data-i18n="COMPOSE/BUTTON_SEND"></span>
|
||||
</a>
|
||||
<a class="btn button-save" data-bind="visible: allowFolders, command: saveCommand, tooltipErrorTip: savedErrorDesc, css: {'btn-danger': savedError }">
|
||||
<i data-bind="css: {'icon-floppy': !saving(), 'icon-spinner animated': saving(), 'icon-white': savedError()}"></i>
|
||||
<span class="i18n btn-text hide-on-mobile" data-i18n="COMPOSE/BUTTON_SAVE"></span>
|
||||
</a>
|
||||
<div class="modal b-compose" data-bind="modal: modalVisibility, css: {'loading': saving() || sending()}">
|
||||
<div class="modal-header b-header-toolbar g-ui-user-select-none">
|
||||
<a class="btn btn-large button-send" data-bind="command: sendCommand, tooltipErrorTip: sendErrorDesc, css: {'btn-success': sendButtonSuccess, 'btn-danger': sendError, 'btn-warning': sendSuccessButSaveError }">
|
||||
<i class="icon-white" data-bind="css: {'icon-paper-plane': !sending(), 'icon-spinner animated big': sending()}"></i>
|
||||
<span class="i18n btn-text hide-on-mobile" data-i18n="COMPOSE/BUTTON_SEND"></span>
|
||||
</a>
|
||||
<a class="btn button-save" data-bind="visible: allowFolders, command: saveCommand, tooltipErrorTip: savedErrorDesc, css: {'btn-danger': savedError }">
|
||||
<i data-bind="css: {'icon-floppy': !saving(), 'icon-spinner animated': saving(), 'icon-white': savedError()}"></i>
|
||||
<span class="i18n btn-text hide-on-mobile" data-i18n="COMPOSE/BUTTON_SAVE"></span>
|
||||
</a>
|
||||
|
||||
<a class="close-custom" data-tooltip-join="top" data-bind="click: tryToClosePopup, tooltip: 'COMPOSE/BUTTON_CANCEL'">×</a>
|
||||
<a class="minimize-custom" data-tooltip-join="top" data-bind="click: skipCommand, tooltip: 'COMPOSE/BUTTON_MINIMIZE'"></a>
|
||||
<a class="close-custom" data-tooltip-join="top" data-bind="click: tryToClosePopup, tooltip: 'COMPOSE/BUTTON_CANCEL'">×</a>
|
||||
<a class="minimize-custom" data-tooltip-join="top" data-bind="click: skipCommand, tooltip: 'COMPOSE/BUTTON_MINIMIZE'"></a>
|
||||
|
||||
<a class="btn btn-danger button-delete button-delete-transitions" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash icon-white"></i>
|
||||
</a>
|
||||
<span class="saved-text hide-on-mobile" data-bind="text: savedTimeText"></span>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div>
|
||||
<div class="b-header g-ui-user-select-none">
|
||||
<div class="g-ui-table">
|
||||
<div class="e-row" style="height: 40px;">
|
||||
<div class="e-cell e-label">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_FROM"></span>
|
||||
</label>
|
||||
<a class="btn btn-danger button-delete button-delete-transitions" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash icon-white"></i>
|
||||
</a>
|
||||
<span class="saved-text hide-on-mobile" data-bind="text: savedTimeText"></span>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div>
|
||||
<div class="b-header g-ui-user-select-none">
|
||||
<div class="g-ui-table">
|
||||
<div class="e-row" style="height: 40px;">
|
||||
<div class="e-cell e-label">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_FROM"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<div class="dropdown pull-left" data-bind="registrateBootstrapDropdown: true, openDropdownTrigger: identitiesDropdownTrigger">
|
||||
<a class="dropdown-toggle e-identity" href="#" tabindex="-1"
|
||||
id="identity-label-id" role="button" data-toggle="dropdown"
|
||||
data-bind="text: currentIdentityView, dropdownCloser: true, css: {'multiply': 1 < identitiesOptions().length }">
|
||||
</a>
|
||||
<!-- ko if: 1 < identitiesOptions().length -->
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="identity-label-id">
|
||||
<!-- ko foreach: identitiesOptions -->
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" tabindex="-1" href="javascript:void(0);" data-bind="click: function (oIdentity) { $root.selectIdentity(oIdentity); return true; }">
|
||||
<span data-bind="text: optText"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
</ul>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<div class="dropdown pull-left" data-bind="registrateBootstrapDropdown: true, openDropdownTrigger: identitiesDropdownTrigger">
|
||||
<a class="dropdown-toggle g-ui-dropdown e-identity" href="#" tabindex="-1"
|
||||
id="identity-label-id" role="button" data-toggle="dropdown"
|
||||
data-bind="text: currentIdentityView, dropdownCloser: true, css: {'multiply': 1 < identitiesOptions().length }">
|
||||
<div class="pull-right">
|
||||
<div class="btn-group dropdown colored-toggle pull-right" style="margin-right: 4px;">
|
||||
<a class="btn single dropdown-toggle buttonMore" data-toggle="dropdown">
|
||||
<i class="icon-list"></i>
|
||||
</a>
|
||||
<!-- ko if: 1 < identitiesOptions().length -->
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="identity-label-id">
|
||||
<!-- ko foreach: identitiesOptions -->
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" tabindex="-1" href="javascript:void(0);" data-bind="click: function (oIdentity) { $root.selectIdentity(oIdentity); return true; }">
|
||||
<span data-bind="text: optText"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
</ul>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<div class="btn-group dropdown colored-toggle pull-right" style="margin-right: 4px;">
|
||||
<a class="btn single dropdown-toggle buttonMore" data-toggle="dropdown">
|
||||
<i class="icon-list"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||||
<li class="e-item" data-bind="click: function () { requestReadReceipt(!requestReadReceipt()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': requestReadReceipt(), 'icon-checkbox-unchecked': !requestReadReceipt() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_REQUEST_READ_RECEIPT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: function () { requestDsn(!requestDsn()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': requestDsn(), 'icon-checkbox-unchecked': !requestDsn() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_REQUEST_DSN"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: function () { markAsImportant(!markAsImportant()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': markAsImportant(), 'icon-checkbox-unchecked': !markAsImportant() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_MARK_AS_IMPORTANT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" data-bind="visible: capaOpenPGP"></li>
|
||||
<li class="e-item" data-bind="visible: capaOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
|
||||
<a class="e-link">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_OPEN_PGP"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn single" data-tooltip-join="top" data-bind="visible: allowContacts, command: contactsCommand, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
|
||||
<i class="icon-address-book"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
</div>
|
||||
<span class="pull-right">
|
||||
<span class="i18n g-ui-link" data-i18n="COMPOSE/TITLE_CC"
|
||||
data-bind="visible: !showCc(), click: function () { showCc(true); }"></span>
|
||||
|
||||
<span data-bind="visible: !showBcc()">
|
||||
<span class="i18n g-ui-link" data-i18n="COMPOSE/TITLE_BCC"
|
||||
data-bind="click: function () { showBcc(true); }"></span>
|
||||
|
||||
</span>
|
||||
<span class="i18n g-ui-link" data-i18n="COMPOSE/TITLE_REPLY_TO"
|
||||
data-bind="visible: !showReplyTo(), click: function () { showReplyTo(true); }"></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label">
|
||||
<label class="control-label" data-bind="css: {'error-to': emptyToError}">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_TO" data-tooltip-join="top"
|
||||
data-bind="tooltipErrorTip: emptyToErrorTooltip"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: to, emailsTagsFocus: to.focused, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row cc-row" data-bind="visible: showCc">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_CC"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: cc, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row bcc-row" data-bind="visible: showBcc">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_BCC"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: bcc, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row reply-to-row" data-bind="visible: showReplyTo">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_REPLY_TO"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: replyTo, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_SUBJECT"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" size="70" autocomplete="off" data-bind="textInput: subject, hasFocus: subject.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label"></div>
|
||||
<div class="e-cell e-value">
|
||||
<div>
|
||||
<div class="pull-left">
|
||||
<div class="btn-group" data-toggle="buttons-radio">
|
||||
<button type="button" class="btn first" data-bind="click: function () { attachmentsPlace(false); },
|
||||
css: { 'active': !attachmentsPlace() }">
|
||||
<i class="icon-file-text"></i>
|
||||
</button>
|
||||
<button type="button" class="btn last" data-tooltip-join="left" data-bind="click: function () { attachmentsPlace(true); },
|
||||
css: { 'btn-danger': 0 < attachmentsInErrorCount(), 'active': attachmentsPlace() },
|
||||
tooltipErrorTip: attachmentsErrorTooltip">
|
||||
<span data-bind="visible: 0 < attachmentsCount()">
|
||||
<b data-bind="text: attachmentsCount"></b>
|
||||
|
||||
</span>
|
||||
<i data-bind="css: { 'icon-attachment': 0 === attachmentsInProcessCount(), 'icon-spinner animated': 0 < attachmentsInProcessCount(), 'icon-white': 0 < attachmentsInErrorCount() }"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right" style="margin-right: 4px;">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn first" data-tooltip-join="bottom"
|
||||
style="padding-left: 10px; padding-right: 10px;"
|
||||
data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
||||
<sup style="font-weight: bold; font-size: 100%; top: -0.3em;">+</sup><i class="icon-attachment"></i>
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||||
<li class="e-item" data-bind="click: function () { requestReadReceipt(!requestReadReceipt()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': requestReadReceipt(), 'icon-checkbox-unchecked': !requestReadReceipt() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_REQUEST_READ_RECEIPT"></span>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: function () { requestDsn(!requestDsn()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': requestDsn(), 'icon-checkbox-unchecked': !requestDsn() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_REQUEST_DSN"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: function () { markAsImportant(!markAsImportant()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': markAsImportant(), 'icon-checkbox-unchecked': !markAsImportant() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_MARK_AS_IMPORTANT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" data-bind="visible: capaOpenPGP"></li>
|
||||
<li class="e-item" data-bind="visible: capaOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
|
||||
<a class="e-link">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span class="i18n" data-i18n="COMPOSE/BUTTON_OPEN_PGP"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn single" data-tooltip-join="top" data-bind="visible: allowContacts, command: contactsCommand, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
|
||||
<i class="icon-address-book"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
</div>
|
||||
<span class="pull-right">
|
||||
<span class="i18n g-ui-link" data-i18n="COMPOSE/TITLE_CC"
|
||||
data-bind="visible: !showCc(), click: function () { showCc(true); }"></span>
|
||||
|
||||
<span data-bind="visible: !showBcc()">
|
||||
<span class="i18n g-ui-link" data-i18n="COMPOSE/TITLE_BCC"
|
||||
data-bind="click: function () { showBcc(true); }"></span>
|
||||
|
||||
</span>
|
||||
<span class="i18n g-ui-link" data-i18n="COMPOSE/TITLE_REPLY_TO"
|
||||
data-bind="visible: !showReplyTo(), click: function () { showReplyTo(true); }"></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label">
|
||||
<label class="control-label" data-bind="css: {'error-to': emptyToError}">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_TO" data-tooltip-join="top"
|
||||
data-bind="tooltipErrorTip: emptyToErrorTooltip"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: to, emailsTagsFocus: to.focused, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row cc-row" data-bind="visible: showCc">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_CC"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: cc, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row bcc-row" data-bind="visible: showBcc">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_BCC"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: bcc, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row reply-to-row" data-bind="visible: showReplyTo">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_REPLY_TO"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: replyTo, autoCompleteSource: emailsSource" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n="COMPOSE/TITLE_SUBJECT"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" size="70" autocomplete="off" data-bind="textInput: subject, hasFocus: subject.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label"></div>
|
||||
<div class="e-cell e-value">
|
||||
<div>
|
||||
<div class="pull-left">
|
||||
<div class="btn-group" data-toggle="buttons-radio">
|
||||
<button type="button" class="btn first" data-bind="click: function () { attachmentsPlace(false); },
|
||||
css: { 'active': !attachmentsPlace() }">
|
||||
<i class="icon-file-text"></i>
|
||||
</button>
|
||||
<button type="button" class="btn last" data-tooltip-join="left" data-bind="click: function () { attachmentsPlace(true); },
|
||||
css: { 'btn-danger': 0 < attachmentsInErrorCount(), 'active': attachmentsPlace() },
|
||||
tooltipErrorTip: attachmentsErrorTooltip">
|
||||
<span data-bind="visible: 0 < attachmentsCount()">
|
||||
<b data-bind="text: attachmentsCount"></b>
|
||||
|
||||
</span>
|
||||
<i data-bind="css: { 'icon-attachment': 0 === attachmentsInProcessCount(), 'icon-spinner animated': 0 < attachmentsInProcessCount(), 'icon-white': 0 < attachmentsInErrorCount() }"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right" style="margin-right: 4px;">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn first" data-tooltip-join="bottom"
|
||||
style="padding-left: 10px; padding-right: 10px;"
|
||||
data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
||||
<sup style="font-weight: bold; font-size: 100%; top: -0.3em;">+</sup><i class="icon-attachment"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="attachmentAreaParent b-content" data-bind="visible: attachmentsPlace">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="b-attachment-place" data-bind="visible: addAttachmentEnabled() && dragAndDropEnabled() && dragAndDropVisible(), initDom: composeUploaderDropPlace, css: {'dragAndDropOver': dragAndDropOver}">
|
||||
<span class="i18n" data-i18n="COMPOSE/ATTACH_DROP_FILES_DESC"></span>
|
||||
</div>
|
||||
<ul class="attachmentList" data-bind="template: { name: 'ComposeAttachment', foreach: attachments }"></ul>
|
||||
<div class="no-attachments-desc" data-bind="visible: 0 === attachments().length">
|
||||
<span class="i18n" data-i18n="COMPOSE/NO_ATTACHMENTS_HERE_DESC"></span>
|
||||
</div>
|
||||
<div class="attachmentAreaParent b-content" data-bind="visible: attachmentsPlace">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="b-attachment-place" data-bind="visible: addAttachmentEnabled() && dragAndDropEnabled() && dragAndDropVisible(), initDom: composeUploaderDropPlace, css: {'dragAndDropOver': dragAndDropOver}">
|
||||
<span class="i18n" data-i18n="COMPOSE/ATTACH_DROP_FILES_DESC"></span>
|
||||
</div>
|
||||
<ul class="attachmentList" data-bind="template: { name: 'ComposeAttachment', foreach: attachments }"></ul>
|
||||
<div class="no-attachments-desc" data-bind="visible: 0 === attachments().length">
|
||||
<span class="i18n" data-i18n="COMPOSE/NO_ATTACHMENTS_HERE_DESC"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="textAreaParent" data-bind="visible: !attachmentsPlace(), initDom: composeEditorArea"></div>
|
||||
</div>
|
||||
|
||||
<div class="textAreaParent" data-bind="visible: !attachmentsPlace(), initDom: composeEditorArea"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,119 +1,117 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-compose-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_COMPOSE_OPEN_PGP/TITLE_COMPOSE_OPEN_PGP"></span>
|
||||
</h3>
|
||||
<div class="modal b-compose-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_COMPOSE_OPEN_PGP/TITLE_COMPOSE_OPEN_PGP"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert" data-bind="visible: '' !== notification()">
|
||||
<span data-bind="text: notification"></span>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert" data-bind="visible: '' !== notification()">
|
||||
<span data-bind="text: notification"></span>
|
||||
</div>
|
||||
<div class="row-fluid">
|
||||
<div class="span6">
|
||||
<div class="row-fluid">
|
||||
<div class="span6">
|
||||
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_COMPOSE_OPEN_PGP/LABEL_SIGN',
|
||||
value: sign
|
||||
}
|
||||
}, click: updateCommand"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_COMPOSE_OPEN_PGP/LABEL_SIGN',
|
||||
value: sign
|
||||
}
|
||||
}, click: updateCommand"></div>
|
||||
|
||||
<div class="key-list" data-bind="visible: sign">
|
||||
<div class="key-list-wrp empty" data-bind="visible: !signKey()">
|
||||
No private key found
|
||||
</div>
|
||||
<div class="key-list-wrp" data-bind="visible: signKey()">
|
||||
<div class="key-list__item row-fluid">
|
||||
<div class="key-list__item-hash span4">
|
||||
(<span data-bind="text: signKey() ? signKey().hash : ''"></span>)
|
||||
</div>
|
||||
<div class="key-list__item-names span8">
|
||||
<!-- ko if: signKey() -->
|
||||
<!-- ko foreach: signKey().users -->
|
||||
<div class="key-list__item-name" data-bind="text: $data"></div>
|
||||
<!-- /ko -->
|
||||
<div class="key-list" data-bind="visible: sign">
|
||||
<div class="key-list-wrp empty" data-bind="visible: !signKey()">
|
||||
No private key found
|
||||
</div>
|
||||
<div class="key-list-wrp" data-bind="visible: signKey()">
|
||||
<div class="key-list__item row-fluid">
|
||||
<div class="key-list__item-hash span4">
|
||||
(<span data-bind="text: signKey() ? signKey().hash : ''"></span>)
|
||||
</div>
|
||||
<div class="key-list__item-names span8">
|
||||
<!-- ko if: signKey() -->
|
||||
<!-- ko foreach: signKey().users -->
|
||||
<div class="key-list__item-name" data-bind="text: $data"></div>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span6">
|
||||
</div>
|
||||
<div class="span6">
|
||||
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_COMPOSE_OPEN_PGP/LABEL_ENCRYPT',
|
||||
value: encrypt
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_COMPOSE_OPEN_PGP/LABEL_ENCRYPT',
|
||||
value: encrypt
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<div class="key-list" data-bind="visible: encrypt">
|
||||
<div class="key-list-wrp empty" data-bind="visible: !encryptKeys() || encryptKeys().length === 0">
|
||||
No public keys selected
|
||||
</div>
|
||||
<div class="key-list-wrp" data-bind="visible: encryptKeys() && encryptKeys().length > 0">
|
||||
<!-- ko foreach: encryptKeys -->
|
||||
<div class="key-list__item row-fluid">
|
||||
<div class="key-list__item-delete span1" data-bind="click: removable() ? $parent.deletePublickKey : null, css: {'disabled': !removable()}">
|
||||
<i class="icon-trash"></i>
|
||||
</div>
|
||||
<div class="key-list__item-hash span3" data-bind="visible: !empty">
|
||||
(<span data-bind="text: hash"></span>)
|
||||
</div>
|
||||
<div class="span8">
|
||||
<span class="key-list__item-names" data-bind="css: {'empty': empty}">
|
||||
<!-- ko foreach: users -->
|
||||
<div class="key-list__item-name" data-bind="text: $data"></div>
|
||||
<!-- /ko -->
|
||||
</span>
|
||||
<span class="key-list__item-error" data-bind="visible: empty">
|
||||
(Public key not found)
|
||||
</span>
|
||||
</div>
|
||||
<div class="key-list" data-bind="visible: encrypt">
|
||||
<div class="key-list-wrp empty" data-bind="visible: !encryptKeys() || encryptKeys().length === 0">
|
||||
No public keys selected
|
||||
</div>
|
||||
<div class="key-list-wrp" data-bind="visible: encryptKeys() && encryptKeys().length > 0">
|
||||
<!-- ko foreach: encryptKeys -->
|
||||
<div class="key-list__item row-fluid">
|
||||
<div class="key-list__item-delete span1" data-bind="click: removable() ? $parent.deletePublickKey : null, css: {'disabled': !removable()}">
|
||||
<i class="icon-trash"></i>
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<div class="key-list__item-hash span3" data-bind="visible: !empty">
|
||||
(<span data-bind="text: hash"></span>)
|
||||
</div>
|
||||
<div class="span8">
|
||||
<span class="key-list__item-names" data-bind="css: {'empty': empty}">
|
||||
<!-- ko foreach: users -->
|
||||
<div class="key-list__item-name" data-bind="text: $data"></div>
|
||||
<!-- /ko -->
|
||||
</span>
|
||||
<span class="key-list__item-error" data-bind="visible: empty">
|
||||
(Public key not found)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-fluid key-actions">
|
||||
<div class="span6">
|
||||
<div data-bind="visible: sign()">
|
||||
<input type="password" class="inputPassword input-block-level i18n"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-i18n="[placeholder]POPUPS_COMPOSE_OPEN_PGP/LABEL_PASSWORD"
|
||||
data-bind="textInput: password, onEnter: doCommand" />
|
||||
<div class="form-inline" data-bind="visible: 0 < privateKeysOptions().length">
|
||||
<select class="input-block-level" data-bind="options: privateKeysOptions, value: selectedPrivateKey,
|
||||
optionsCaption: privateKeysOptionsCaption, optionsText: 'name', optionsValue: 'id',
|
||||
optionsAfterRender: addOptionClass"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span6">
|
||||
<div class="form-inline" data-bind="visible: encrypt() && 0 < publicKeysOptions().length">
|
||||
<select class="input-block-level" data-bind="options: publicKeysOptions, value: selectedPublicKey,
|
||||
optionsCaption: publicKeysOptionsCaption, optionsText: 'name', optionsValue: 'id',
|
||||
</div>
|
||||
<div class="row-fluid key-actions">
|
||||
<div class="span6">
|
||||
<div data-bind="visible: sign()">
|
||||
<input type="password" class="inputPassword input-block-level i18n"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-i18n="[placeholder]POPUPS_COMPOSE_OPEN_PGP/LABEL_PASSWORD"
|
||||
data-bind="textInput: password, onEnter: doCommand" />
|
||||
<div class="form-inline" data-bind="visible: 0 < privateKeysOptions().length">
|
||||
<select class="input-block-level" data-bind="options: privateKeysOptions, value: selectedPrivateKey,
|
||||
optionsCaption: privateKeysOptionsCaption, optionsText: 'name', optionsValue: 'id',
|
||||
optionsAfterRender: addOptionClass"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span6">
|
||||
<div class="form-inline" data-bind="visible: encrypt() && 0 < publicKeysOptions().length">
|
||||
<select class="input-block-level" data-bind="options: publicKeysOptions, value: selectedPublicKey,
|
||||
optionsCaption: publicKeysOptionsCaption, optionsText: 'name', optionsValue: 'id',
|
||||
optionsAfterRender: addOptionClass"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn buttonDo" data-bind="command: doCommand,
|
||||
enable: (sign() || encrypt()) && (!encrypt() || encrypt() && encryptKeys().length > 0)">
|
||||
<i data-bind="css: {'icon-key': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-bind="visible: sign() && !encrypt()" data-i18n="POPUPS_COMPOSE_OPEN_PGP/BUTTON_SIGN"></span>
|
||||
<span class="i18n" data-bind="visible: !sign() && encrypt()" data-i18n="POPUPS_COMPOSE_OPEN_PGP/BUTTON_ENCRYPT"></span>
|
||||
<span class="i18n" data-bind="visible: (sign() && encrypt()) || (!sign() && !encrypt())" data-i18n="POPUPS_COMPOSE_OPEN_PGP/BUTTON_SIGN_AND_ENCRYPT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn buttonDo" data-bind="command: doCommand,
|
||||
enable: (sign() || encrypt()) && (!encrypt() || encrypt() && encryptKeys().length > 0)">
|
||||
<i data-bind="css: {'icon-key': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-bind="visible: sign() && !encrypt()" data-i18n="POPUPS_COMPOSE_OPEN_PGP/BUTTON_SIGN"></span>
|
||||
<span class="i18n" data-bind="visible: !sign() && encrypt()" data-i18n="POPUPS_COMPOSE_OPEN_PGP/BUTTON_ENCRYPT"></span>
|
||||
<span class="i18n" data-bind="visible: (sign() && encrypt()) || (!sign() && !encrypt())" data-i18n="POPUPS_COMPOSE_OPEN_PGP/BUTTON_SIGN_AND_ENCRYPT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,271 +1,269 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-contacts-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header b-header-toolbar g-ui-user-select-none">
|
||||
<div class="modal b-contacts-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header b-header-toolbar g-ui-user-select-none">
|
||||
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
|
||||
<div class="btn-toolbar">
|
||||
|
||||
<div class="btn-group">
|
||||
<a class="btn single button-create-contact" data-bind="command: newCommand">
|
||||
<i class="icon-plus"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_ADD_CONTACT"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a class="btn single btn-success button-new-message" data-bind="command: newMessageCommand">
|
||||
<i class="icon-mail icon-white"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a class="btn single button-delete" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="btn-group dropdown colored-toggle" data-bind="registrateBootstrapDropdown: true">
|
||||
<a id="contacts-more-dropdown-id" class="btn single dropdown-toggle buttonMore" href="#" tabindex="-1" data-toggle="dropdown">
|
||||
<i data-bind="css: {'icon-list': !contacts.importing() && !contacts.syncing(),
|
||||
'icon-spinner animated': contacts.importing() || contacts.syncing()}"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu pull-right" role="menu" aria-labelledby="contacts-more-dropdown-id">
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="initDom: importUploaderButton">
|
||||
<i data-bind="css: {'icon-import': !contacts.importing(), 'icon-spinner animated': contacts.importing}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_IMPORT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: allowExport"></li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: allowExport">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: exportCsv">
|
||||
<i data-bind="css: {'icon-export': !contacts.exportingCsv(), 'icon-spinner animated': contacts.exportingCsv}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_EXPORT_CSV"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: allowExport" >
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: exportVcf">
|
||||
<i data-bind="css: {'icon-export': !contacts.exportingVcf(), 'icon-spinner animated': contacts.exportingVcf}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_EXPORT_VCARD"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: enableContactsSync() && allowContactsSync()"></li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: enableContactsSync() && allowContactsSync()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: syncCommand">
|
||||
<i data-bind="css: {'icon-sync': !contacts.syncing(), 'icon-spinner animated': contacts.syncing}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_SYNC"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-toolbar">
|
||||
|
||||
<div class="btn-group">
|
||||
<a class="btn single button-create-contact" data-bind="command: newCommand">
|
||||
<i class="icon-plus"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_ADD_CONTACT"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a class="btn single btn-success button-new-message" data-bind="command: newMessageCommand">
|
||||
<i class="icon-mail icon-white"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a class="btn single button-delete" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="btn-group dropdown colored-toggle" data-bind="registrateBootstrapDropdown: true">
|
||||
<a id="contacts-more-dropdown-id" class="btn single dropdown-toggle buttonMore" href="#" tabindex="-1" data-toggle="dropdown">
|
||||
<i data-bind="css: {'icon-list': !contacts.importing() && !contacts.syncing(),
|
||||
'icon-spinner animated': contacts.importing() || contacts.syncing()}"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu pull-right" role="menu" aria-labelledby="contacts-more-dropdown-id">
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="initDom: importUploaderButton">
|
||||
<i data-bind="css: {'icon-import': !contacts.importing(), 'icon-spinner animated': contacts.importing}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_IMPORT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: allowExport"></li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: allowExport">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: exportCsv">
|
||||
<i data-bind="css: {'icon-export': !contacts.exportingCsv(), 'icon-spinner animated': contacts.exportingCsv}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_EXPORT_CSV"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: allowExport" >
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: exportVcf">
|
||||
<i data-bind="css: {'icon-export': !contacts.exportingVcf(), 'icon-spinner animated': contacts.exportingVcf}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_EXPORT_VCARD"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: enableContactsSync() && allowContactsSync()"></li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: enableContactsSync() && allowContactsSync()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: syncCommand">
|
||||
<i data-bind="css: {'icon-sync': !contacts.syncing(), 'icon-spinner animated': contacts.syncing}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_SYNC"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-body" style="position: relative;">
|
||||
<div class="b-list-toolbar">
|
||||
<input type="text" class="i18n span3 e-search" placeholder="Search" autocorrect="off" autocapitalize="off" data-i18n="[placeholder]CONTACTS/SEARCH_INPUT_PLACEHOLDER" data-bind="value: search" />
|
||||
</div>
|
||||
<div class="b-list-content g-ui-user-select-none" data-bind="css: {'hideContactListCheckbox': !useCheckboxesInList()}">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="listClear" data-bind="visible: viewClearSearch() && '' !== search()">
|
||||
<span class="g-ui-link i18n" data-i18n="CONTACTS/CLEAR_SEARCH" data-bind="command: clearCommand"></span>
|
||||
</div>
|
||||
<div class="listEmptyList" data-bind="visible: 0 === contacts().length && '' === search() && !contacts.loading()">
|
||||
<span class="i18n" data-i18n="CONTACTS/EMPTY_LIST"></span>
|
||||
</div>
|
||||
<div class="listEmptyListLoading" data-bind="visible: 0 === contacts().length && '' === search() && contacts.loading()">
|
||||
<span class="i18n" data-i18n="CONTACTS/LIST_LOADING"></span><span class="textLoadingAnimationD1">.</span><span class="textLoadingAnimationD2">.</span><span class="textLoadingAnimationD3">.</span>
|
||||
</div>
|
||||
<div class="listEmptySearchList" data-bind="visible: 0 === contacts().length && '' !== search() && !contacts.loading()">
|
||||
<span class="i18n" data-i18n="CONTACTS/EMPTY_SEARCH"></span>
|
||||
</div>
|
||||
<div class="e-contact-foreach g-ui-user-select-none" data-bind="foreach: contacts, visible: 0 < contacts().length">
|
||||
<div class="e-contact-item g-ui-user-select-none" data-bind="css: lineAsCss()">
|
||||
<div class="sidebarParent">
|
||||
|
||||
</div>
|
||||
<div class="modal-body" style="position: relative;">
|
||||
<div class="b-list-toolbar">
|
||||
<input type="text" class="i18n span3 e-search" placeholder="Search" autocorrect="off" autocapitalize="off" data-i18n="[placeholder]CONTACTS/SEARCH_INPUT_PLACEHOLDER" data-bind="value: search" />
|
||||
</div>
|
||||
<div class="b-list-content g-ui-user-select-none" data-bind="css: {'hideContactListCheckbox': !useCheckboxesInList()}">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="listClear" data-bind="visible: viewClearSearch() && '' !== search()">
|
||||
<span class="g-ui-link i18n" data-i18n="CONTACTS/CLEAR_SEARCH" data-bind="command: clearCommand"></span>
|
||||
</div>
|
||||
<div class="listEmptyList" data-bind="visible: 0 === contacts().length && '' === search() && !contacts.loading()">
|
||||
<span class="i18n" data-i18n="CONTACTS/EMPTY_LIST"></span>
|
||||
</div>
|
||||
<div class="listEmptyListLoading" data-bind="visible: 0 === contacts().length && '' === search() && contacts.loading()">
|
||||
<span class="i18n" data-i18n="CONTACTS/LIST_LOADING"></span><span class="textLoadingAnimationD1">.</span><span class="textLoadingAnimationD2">.</span><span class="textLoadingAnimationD3">.</span>
|
||||
</div>
|
||||
<div class="listEmptySearchList" data-bind="visible: 0 === contacts().length && '' !== search() && !contacts.loading()">
|
||||
<span class="i18n" data-i18n="CONTACTS/EMPTY_SEARCH"></span>
|
||||
</div>
|
||||
<div class="e-contact-foreach g-ui-user-select-none" data-bind="foreach: contacts, visible: 0 < contacts().length">
|
||||
<div class="e-contact-item g-ui-user-select-none" data-bind="css: lineAsCss()">
|
||||
<div class="sidebarParent">
|
||||
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="checkedParent">
|
||||
<i class="checkboxItem" data-bind="css: checked() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="checkedParent">
|
||||
<i class="checkboxItem" data-bind="css: checked() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||
</div>
|
||||
<div class="shareParent actionHandle">
|
||||
<i class="icon-share"></i>
|
||||
</div>
|
||||
<div class="nameParent actionHandle">
|
||||
<span class="listName" data-bind="text: display"></span>
|
||||
|
||||
</div>
|
||||
<div class="shareParent actionHandle">
|
||||
<i class="icon-share"></i>
|
||||
</div>
|
||||
<div class="nameParent actionHandle">
|
||||
<span class="listName" data-bind="text: display"></span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-list-footer-toolbar">
|
||||
<div class="pull-right footer-pager">
|
||||
<!-- ko template: { name: 'Pagenator', data: contactsPagenator } --><!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-list-footer-toolbar">
|
||||
<div class="pull-right footer-pager">
|
||||
<!-- ko template: { name: 'Pagenator', data: contactsPagenator } --><!-- /ko -->
|
||||
</div>
|
||||
<div class="b-view-content-toolbar btn-toolbar" data-bind="css: {'read-only': viewReadOnly}">
|
||||
<div class="btn-group pull-right dropdown colored-toggle button-add-prop" data-bind="visible: !emptySelection(), registrateBootstrapDropdown: true">
|
||||
<a id="button-add-prop-dropdown-id" href="#" tabindex="-1" class="btn single dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_LABEL"></span>
|
||||
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" style="text-align: left" tabindex="-1" role="menu" aria-labelledby="button-add-prop-dropdown-id">
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewEmail">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_EMAIL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewPhone">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_PHONE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewWeb">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_URL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation"></li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewNickname">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_NICKNAME"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- <li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewAddress">
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_ADDRESS"></span>
|
||||
</a>
|
||||
</li>-->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn single button-save-contact" data-bind="visible: !emptySelection(), command: saveCommand, css: {'dirty': watchDirty}">
|
||||
<i data-bind="css: {'icon-ok': !viewSaving(), 'icon-spinner animated': viewSaving()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_CREATE_CONTACT" data-bind="visible: '' === viewID()"></span>
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_UPDATE_CONTACT" data-bind="visible: '' !== viewID()"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-view-content-toolbar btn-toolbar" data-bind="css: {'read-only': viewReadOnly}">
|
||||
<div class="btn-group pull-right dropdown colored-toggle button-add-prop" data-bind="visible: !emptySelection(), registrateBootstrapDropdown: true">
|
||||
<a id="button-add-prop-dropdown-id" href="#" tabindex="-1" class="btn single dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_LABEL"></span>
|
||||
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" style="text-align: left" tabindex="-1" role="menu" aria-labelledby="button-add-prop-dropdown-id">
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewEmail">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_EMAIL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewPhone">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_PHONE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewWeb">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_URL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation"></li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewNickname">
|
||||
<i class="icon-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_NICKNAME"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- <li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addNewAddress">
|
||||
<span class="i18n" data-i18n="CONTACTS/ADD_MENU_ADDRESS"></span>
|
||||
</a>
|
||||
</li>-->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="b-view-content" data-bind="css: {'read-only': viewReadOnly}">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="b-contact-view-desc" data-bind="visible: emptySelection">
|
||||
<span class="i18n" data-i18n="CONTACTS/CONTACT_VIEW_DESC"></span>
|
||||
</div>
|
||||
<div data-bind="visible: !emptySelection()">
|
||||
<div class="form-horizontal top-part">
|
||||
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmailsNonEmpty().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-user iconsize24"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesNames">
|
||||
<div class="property-line">
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
||||
</div>
|
||||
</div>
|
||||
<div data-bind="visible: 0 < viewPropertiesOther().length, foreach: viewPropertiesOther">
|
||||
<div class="property-line">
|
||||
<!-- ko if: !largeValue() -->
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
||||
<!-- /ko -->
|
||||
<!-- ko if: largeValue -->
|
||||
<span class="contactValueTextAreaStatic" data-bind="text: value"></span>
|
||||
<textarea class="contactValueTextArea"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}"></textarea>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn single button-save-contact" data-bind="visible: !emptySelection(), command: saveCommand, css: {'dirty': watchDirty}">
|
||||
<i data-bind="css: {'icon-ok': !viewSaving(), 'icon-spinner animated': viewSaving()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_CREATE_CONTACT" data-bind="visible: '' === viewID()"></span>
|
||||
<span class="i18n" data-i18n="CONTACTS/BUTTON_UPDATE_CONTACT" data-bind="visible: '' !== viewID()"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-view-content" data-bind="css: {'read-only': viewReadOnly}">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="b-contact-view-desc" data-bind="visible: emptySelection">
|
||||
<span class="i18n" data-i18n="CONTACTS/CONTACT_VIEW_DESC"></span>
|
||||
</div>
|
||||
<div data-bind="visible: !emptySelection()">
|
||||
<div class="form-horizontal top-part">
|
||||
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmailsNonEmpty().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-user iconsize24"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesNames">
|
||||
<div class="property-line">
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmails().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-at iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_EMAIL'"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesEmails">
|
||||
<div class="property-line">
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||
</div>
|
||||
<div data-bind="visible: 0 < viewPropertiesOther().length, foreach: viewPropertiesOther">
|
||||
<div class="property-line">
|
||||
<!-- ko if: !largeValue() -->
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
|
||||
<!-- /ko -->
|
||||
<!-- ko if: largeValue -->
|
||||
<span class="contactValueTextAreaStatic" data-bind="text: value"></span>
|
||||
<textarea class="contactValueTextArea"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}"></textarea>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<a href="javascript:void(0);" class="g-ui-link add-link i18n" data-bind="visible: !viewReadOnly(), click: addNewEmail" data-i18n="CONTACTS/LINK_ADD_EMAIL"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: 0 < viewPropertiesPhones().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-telephone iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_PHONE'"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesPhones">
|
||||
<div class="property-line">
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: 0 < viewPropertiesWeb().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-earth iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_WEB'"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesWeb">
|
||||
<div class="property-line">
|
||||
<span class="contactValueLargeStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInputLarge" placeholder="https://"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls fix-width">
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="e-read-only-sign">
|
||||
<i class="icon-lock iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_READ_ONLY'"></i>
|
||||
</div>-->
|
||||
|
||||
|
||||
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmails().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-at iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_EMAIL'"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesEmails">
|
||||
<div class="property-line">
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||
</div>
|
||||
</div>
|
||||
<a href="javascript:void(0);" class="g-ui-link add-link i18n" data-bind="visible: !viewReadOnly(), click: addNewEmail" data-i18n="CONTACTS/LINK_ADD_EMAIL"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: 0 < viewPropertiesPhones().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-telephone iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_PHONE'"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesPhones">
|
||||
<div class="property-line">
|
||||
<span class="contactValueStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInput"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: 0 < viewPropertiesWeb().length">
|
||||
<label class="control-label remove-padding-top fix-width">
|
||||
<i class="icon-earth iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_WEB'"></i>
|
||||
</label>
|
||||
<div class="controls fix-width">
|
||||
<div data-bind="foreach: viewPropertiesWeb">
|
||||
<div class="property-line">
|
||||
<span class="contactValueLargeStatic" data-bind="text: value"></span>
|
||||
<input type="text" class="contactValueInputLarge" placeholder="https://"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls fix-width">
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="e-read-only-sign">
|
||||
<i class="icon-lock iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_READ_ONLY'"></i>
|
||||
</div>-->
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,64 +1,62 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-filter-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/TITLE_CREATE_FILTER" data-bind="visible: isNew"></span>
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/TITLE_EDIT_FILTER" data-bind="visible: !isNew()"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row filter" data-bind="with: filter, i18nInit: filter">
|
||||
<div class="span9" data-bind="i18nInit: true">
|
||||
<div class="modal b-filter-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/TITLE_CREATE_FILTER" data-bind="visible: isNew"></span>
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/TITLE_EDIT_FILTER" data-bind="visible: !isNew()"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row filter" data-bind="with: filter, i18nInit: filter">
|
||||
<div class="span9" data-bind="i18nInit: true">
|
||||
|
||||
<div class="control-group" data-bind="css: {'error': name.error}">
|
||||
<div class="controls">
|
||||
<input type="text" class="i18n span5"
|
||||
data-bind="value: name, hasFocus: name.focused"
|
||||
autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-i18n="[placeholder]POPUPS_FILTER/FILTER_NAME"
|
||||
/>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': name.error}">
|
||||
<div class="controls">
|
||||
<input type="text" class="i18n span5"
|
||||
data-bind="value: name, hasFocus: name.focused"
|
||||
autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-i18n="[placeholder]POPUPS_FILTER/FILTER_NAME"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="legend i18n" data-i18n="POPUPS_FILTER/LEGEND_CONDITIONS"></div>
|
||||
<div>
|
||||
<div data-bind="visible: 1 < conditions().length">
|
||||
<select class="span4" data-bind="value: conditionsType">
|
||||
<option value="Any" class="i18n"
|
||||
data-i18n="POPUPS_FILTER/SELECT_MATCH_ANY"></option>
|
||||
<option value="All" class="i18n"
|
||||
data-i18n="POPUPS_FILTER/SELECT_MATCH_ALL"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div data-bind="visible: 0 < conditions().length, foreach: conditions">
|
||||
<div data-bind="template: {'name': template(), 'data': $data}"></div>
|
||||
</div>
|
||||
<div data-bind="visible: 0 === conditions().length">
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/ALL_INCOMING_MESSAGES_DESC"></span>
|
||||
</div>
|
||||
<br />
|
||||
<a class="btn" data-bind="click: addCondition, i18nInit: true">
|
||||
<i class="icon-plus"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/BUTTON_ADD_CONDITION"></span>
|
||||
</a>
|
||||
<div class="legend i18n" data-i18n="POPUPS_FILTER/LEGEND_CONDITIONS"></div>
|
||||
<div>
|
||||
<div data-bind="visible: 1 < conditions().length">
|
||||
<select class="span4" data-bind="value: conditionsType">
|
||||
<option value="Any" class="i18n"
|
||||
data-i18n="POPUPS_FILTER/SELECT_MATCH_ANY"></option>
|
||||
<option value="All" class="i18n"
|
||||
data-i18n="POPUPS_FILTER/SELECT_MATCH_ALL"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div data-bind="visible: 0 < conditions().length, foreach: conditions">
|
||||
<div data-bind="template: {'name': template(), 'data': $data}"></div>
|
||||
</div>
|
||||
<div data-bind="visible: 0 === conditions().length">
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/ALL_INCOMING_MESSAGES_DESC"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="legend i18n" data-i18n="POPUPS_FILTER/LEGEND_ACTIONS"></div>
|
||||
<select class="span3" data-bind="options: $root.actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
<div data-bind="template: {'name': actionTemplate()}, i18nUpdate: actionTemplate"></div>
|
||||
<a class="btn" data-bind="click: addCondition, i18nInit: true">
|
||||
<i class="icon-plus"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/BUTTON_ADD_CONDITION"></span>
|
||||
</a>
|
||||
</div>
|
||||
<br />
|
||||
<div class="legend i18n" data-i18n="POPUPS_FILTER/LEGEND_ACTIONS"></div>
|
||||
<select class="span3" data-bind="options: $root.actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
<div data-bind="template: {'name': actionTemplate()}, i18nUpdate: actionTemplate"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonSave" data-bind="command: saveFilterCommand">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/BUTTON_DONE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonSave" data-bind="command: saveFilterCommand">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_FILTER/BUTTON_DONE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,34 +1,32 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-folder-clear-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEAR_FOLDER" data-bind="visible: !clearingProcess()"></span>
|
||||
<span class="i18n" data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEARING_PROCESS" data-bind="visible: clearingProcess"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div>
|
||||
<i class="icon-warning" style="color:red"></i>
|
||||
|
||||
<strong>
|
||||
<span class="i18n" data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_WARNING"></span>
|
||||
</strong>
|
||||
<br />
|
||||
<br />
|
||||
<span data-bind="html: dangerDescHtml"></span>
|
||||
<br />
|
||||
<span class="i18n" data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_HTML_2"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn btn-danger buttonClear" data-bind="command: clearCommand">
|
||||
<i class="icon-fire" data-bind="css: {'icon-fire': !clearingProcess(), 'icon-spinner animated white': clearingProcess()}" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_CLEAR_FOLDER/BUTTON_CLEAR"></span>
|
||||
</a>
|
||||
<div class="modal b-folder-clear-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEAR_FOLDER" data-bind="visible: !clearingProcess()"></span>
|
||||
<span class="i18n" data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEARING_PROCESS" data-bind="visible: clearingProcess"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div>
|
||||
<i class="icon-warning" style="color:red"></i>
|
||||
|
||||
<strong>
|
||||
<span class="i18n" data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_WARNING"></span>
|
||||
</strong>
|
||||
<br />
|
||||
<br />
|
||||
<span data-bind="html: dangerDescHtml"></span>
|
||||
<br />
|
||||
<span class="i18n" data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_HTML_2"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn btn-danger buttonClear" data-bind="command: clearCommand">
|
||||
<i class="icon-fire" data-bind="css: {'icon-fire': !clearingProcess(), 'icon-spinner animated white': clearingProcess()}" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_CLEAR_FOLDER/BUTTON_CLEAR"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,42 +1,40 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-folder-create-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/TITLE_CREATE_FOLDER"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/LABEL_NAME"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputName" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: folderName, hasfocus: folderName.focused, onEnter: createFolderCommand" />
|
||||
</div>
|
||||
<div class="modal b-folder-create-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/TITLE_CREATE_FOLDER"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/LABEL_NAME"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputName" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: folderName, hasfocus: folderName.focused, onEnter: createFolderCommand" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/LABEL_PARENT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: parentFolderSelectList, value: selectedParentValue,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/LABEL_PARENT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: parentFolderSelectList, value: selectedParentValue,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonCreate" data-bind="command: createFolderCommand">
|
||||
<i class="icon-folder-add"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/BUTTON_CREATE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonCreate" data-bind="command: createFolderCommand">
|
||||
<i class="icon-folder-add"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_CREATE_FOLDER/BUTTON_CREATE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,61 +1,59 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-folder-system-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/TITLE_SYSTEM_FOLDERS"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== notification()">
|
||||
<span data-bind="text: notification"></span>
|
||||
<div class="modal b-folder-system-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/TITLE_SYSTEM_FOLDERS"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== notification()">
|
||||
<span data-bind="text: notification"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_SENT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: sentFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_SENT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: sentFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_DRAFTS"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: draftFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_DRAFTS"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: draftFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_SPAM"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: spamFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_SPAM"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: spamFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_TRASH"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: trashFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_TRASH"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: trashFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_ARCHIVE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: archiveFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_SYSTEM_FOLDERS/LABEL_ARCHIVE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: folderSelectList, value: archiveFolder,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,99 +1,97 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-identity-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header g-ui-user-select-none">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="visible: !edit()" class="i18n" data-i18n="POPUPS_IDENTITY/TITLE_ADD_IDENTITY"></span>
|
||||
<span data-bind="visible: edit" class="i18n" data-i18n="POPUPS_IDENTITY/TITLE_UPDATE_IDENTITY"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal g-ui-user-select-none">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="visible: !owner(), css: {'error': email.hasError}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<input type="email" class="inputEmail input-xlarge" autofocus=""
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: email, onEnter: addOrEditIdentityCommand, hasfocus: email.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: owner">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<div class="textEmail" data-bind="text: email"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_NAME"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputName input-xlarge"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: name, onEnter: addOrEditIdentityCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: showReplyTo, css: {'error': replyTo.hasError}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_REPLY_TO"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputReplyTo input-xlarge"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: replyTo, onEnter: addOrEditIdentityCommand, hasfocus: replyTo.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: showBcc, css: {'error': bcc.hasError}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_BCC"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputBcc input-xlarge"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: bcc, onEnter: addOrEditIdentityCommand, hasfocus: bcc.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: !showReplyTo() || !showBcc()">
|
||||
<div class="controls">
|
||||
<span data-bind="visible: !showReplyTo()">
|
||||
<span class="i18n g-ui-link" data-i18n="POPUPS_IDENTITY/LABEL_REPLY_TO"
|
||||
data-bind="click: function () { showReplyTo(true); }"></span>
|
||||
|
||||
</span>
|
||||
<span data-bind="visible: !showBcc()">
|
||||
<span class="i18n g-ui-link" data-i18n="POPUPS_IDENTITY/LABEL_BCC"
|
||||
data-bind="click: function () { showBcc(true); }"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="modal b-identity-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header g-ui-user-select-none">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="visible: !edit()" class="i18n" data-i18n="POPUPS_IDENTITY/TITLE_ADD_IDENTITY"></span>
|
||||
<span data-bind="visible: edit" class="i18n" data-i18n="POPUPS_IDENTITY/TITLE_UPDATE_IDENTITY"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal g-ui-user-select-none">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="visible: !owner(), css: {'error': email.hasError}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<input type="email" class="inputEmail input-xlarge" autofocus=""
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: email, onEnter: addOrEditIdentityCommand, hasfocus: email.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group g-ui-user-select-none">
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_IDENTITY/LABEL_SIGNATURE_INSERT_BEFORE',
|
||||
value: signatureInsertBefore
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: owner">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<div class="textEmail" data-bind="text: email"></div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="e-signature-place" data-bind="editor: signature"></div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_NAME"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputName input-xlarge"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: name, onEnter: addOrEditIdentityCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: showReplyTo, css: {'error': replyTo.hasError}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_REPLY_TO"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputReplyTo input-xlarge"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: replyTo, onEnter: addOrEditIdentityCommand, hasfocus: replyTo.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: showBcc, css: {'error': bcc.hasError}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_IDENTITY/LABEL_BCC"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputBcc input-xlarge"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: bcc, onEnter: addOrEditIdentityCommand, hasfocus: bcc.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: !showReplyTo() || !showBcc()">
|
||||
<div class="controls">
|
||||
<span data-bind="visible: !showReplyTo()">
|
||||
<span class="i18n g-ui-link" data-i18n="POPUPS_IDENTITY/LABEL_REPLY_TO"
|
||||
data-bind="click: function () { showReplyTo(true); }"></span>
|
||||
|
||||
</span>
|
||||
<span data-bind="visible: !showBcc()">
|
||||
<span class="i18n g-ui-link" data-i18n="POPUPS_IDENTITY/LABEL_BCC"
|
||||
data-bind="click: function () { showBcc(true); }"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddIdentity" data-bind="command: addOrEditIdentityCommand">
|
||||
<i data-bind="visible: !edit(), css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
<i data-bind="visible: edit, css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span data-bind="visible: !edit()" class="i18n" data-i18n="POPUPS_IDENTITY/BUTTON_ADD_IDENTITY"></span>
|
||||
<span data-bind="visible: edit" class="i18n" data-i18n="POPUPS_IDENTITY/BUTTON_UPDATE_IDENTITY"></span>
|
||||
</a>
|
||||
<hr />
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group g-ui-user-select-none">
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_IDENTITY/LABEL_SIGNATURE_INSERT_BEFORE',
|
||||
value: signatureInsertBefore
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="e-signature-place" data-bind="editor: signature"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddIdentity" data-bind="command: addOrEditIdentityCommand">
|
||||
<i data-bind="visible: !edit(), css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
<i data-bind="visible: edit, css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span data-bind="visible: !edit()" class="i18n" data-i18n="POPUPS_IDENTITY/BUTTON_ADD_IDENTITY"></span>
|
||||
<span data-bind="visible: edit" class="i18n" data-i18n="POPUPS_IDENTITY/BUTTON_UPDATE_IDENTITY"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,53 +1,51 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-message-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_MESSAGE_OPEN_PGP/TITLE_MESSAGE_OPEN_PGP"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== notification()">
|
||||
<span data-bind="text: notification"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_KEY"></label>
|
||||
<div class="controls key-list" data-bind="foreach: privateKeys" style="margin-top: 5px">
|
||||
<div class="key-list__item">
|
||||
<i class="key-list__item__radio icon-radio-unchecked"></i>
|
||||
<div class="key-list__item__names">
|
||||
<span data-bind="foreach: users">
|
||||
<div>
|
||||
<span class="key-list__item__name">
|
||||
<span data-bind="text: $data"></span>
|
||||
|
||||
<span>[<span data-bind="text: $parent.id"></span>]</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="modal b-message-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_MESSAGE_OPEN_PGP/TITLE_MESSAGE_OPEN_PGP"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== notification()">
|
||||
<span data-bind="text: notification"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_KEY"></label>
|
||||
<div class="controls key-list" data-bind="foreach: privateKeys" style="margin-top: 5px">
|
||||
<div class="key-list__item">
|
||||
<i class="key-list__item__radio icon-radio-unchecked"></i>
|
||||
<div class="key-list__item__names">
|
||||
<span data-bind="foreach: users">
|
||||
<div>
|
||||
<span class="key-list__item__name">
|
||||
<span data-bind="text: $data"></span>
|
||||
|
||||
<span>[<span data-bind="text: $parent.id"></span>]</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input type="password" class="inputPassword input-xlarge" autofocus="" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: password, onEnter: doCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input type="password" class="inputPassword input-xlarge" autofocus="" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: password, onEnter: doCommand" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn buttonDo" data-bind="command: doCommand">
|
||||
<i data-bind="css: {'icon-key': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_MESSAGE_OPEN_PGP/BUTTON_DECRYPT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn buttonDo" data-bind="command: doCommand">
|
||||
<i data-bind="css: {'icon-key': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_MESSAGE_OPEN_PGP/BUTTON_DECRYPT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,58 +1,56 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-open-pgp-key-generate-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/TITLE_GENERATE_OPEN_PGP_KEYS"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
<div class="modal b-open-pgp-key-generate-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/TITLE_GENERATE_OPEN_PGP_KEYS"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="css: {'error': email.error}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<input type="email" class="inputEmail input-large"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: email, hasfocus: email.focus" />
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="css: {'error': email.error}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<input type="email" class="inputEmail input-large"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: email, hasfocus: email.focus" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_NAME"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputName input-large"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: name" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_NAME"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputName input-large"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: name" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input type="password" class="inputPassword input-large"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: password" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input type="password" class="inputPassword input-large"
|
||||
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: password" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_KEY_BIT_LENGTH"></label>
|
||||
<div class="controls">
|
||||
<select data-bind="value: keyBitLength, options: [2048, 4096]"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_KEY_BIT_LENGTH"></label>
|
||||
<div class="controls">
|
||||
<select data-bind="value: keyBitLength, options: [2048, 4096]"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonHenerateOpenPgpKey" data-bind="command: generateOpenPgpKeyCommand">
|
||||
<i data-bind="css: {'icon-key': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/BUTTON_GENERATE_OPEN_PGP_KEYS"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonHenerateOpenPgpKey" data-bind="command: generateOpenPgpKeyCommand">
|
||||
<i data-bind="css: {'icon-key': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/BUTTON_GENERATE_OPEN_PGP_KEYS"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,44 +1,42 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-template-add-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header g-ui-user-select-none">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="visible: '' === id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/TITLE_ADD_TEMPLATE"></span>
|
||||
<span data-bind="visible: '' !== id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/TITLE_UPDATE_TEMPLATE"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal g-ui-user-select-none">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="css: {'error': name.error}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_ADD_TEMPLATE/LABEL_NAME"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputName input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: name, onEnter: addTemplateCommand, hasfocus: name.focus" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal b-template-add-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header g-ui-user-select-none">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="visible: '' === id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/TITLE_ADD_TEMPLATE"></span>
|
||||
<span data-bind="visible: '' !== id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/TITLE_UPDATE_TEMPLATE"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal g-ui-user-select-none">
|
||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||
<span data-bind="text: submitError"></span>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group" data-bind="css: {'error': body.error}">
|
||||
<div class="e-template-place" data-bind="initDom: signatureDom"></div>
|
||||
<br />
|
||||
<div class="control-group" data-bind="css: {'error': name.error}">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_ADD_TEMPLATE/LABEL_NAME"></label>
|
||||
<div class="controls">
|
||||
<input type="text" class="inputName input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: name, onEnter: addTemplateCommand, hasfocus: name.focus" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addTemplateCommand">
|
||||
<i data-bind="visible: '' == id(), css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
<i data-bind="visible: '' !== id(), css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span data-bind="visible: '' == id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/BUTTON_ADD_TEMPLATE"></span>
|
||||
<span data-bind="visible: '' !== id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/BUTTON_UPDATE_TEMPLATE"></span>
|
||||
</a>
|
||||
<hr />
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group" data-bind="css: {'error': body.error}">
|
||||
<div class="e-template-place" data-bind="initDom: signatureDom"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addTemplateCommand">
|
||||
<i data-bind="visible: '' == id(), css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
<i data-bind="visible: '' !== id(), css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span data-bind="visible: '' == id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/BUTTON_ADD_TEMPLATE"></span>
|
||||
<span data-bind="visible: '' !== id()" class="i18n" data-i18n="POPUPS_ADD_TEMPLATE/BUTTON_UPDATE_TEMPLATE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,106 +1,104 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-two-factor-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="visible: viewEnable() || !lock(), command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LEGEND_TWO_FACTOR_AUTH"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal" data-bind="visible: capaTwoFactor" style="margin-top: 10px;">
|
||||
<div class="control-group" data-bind="visible: twoFactorStatus">
|
||||
<div class="controls">
|
||||
<div style="display: inline-block" data-tooltip-join="top" data-bind="tooltip: viewTwoFactorEnableTooltip">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_TWO_FACTOR_CFG/LABEL_ENABLE_TWO_FACTOR',
|
||||
enable: twoFactorAllowedEnable,
|
||||
value: viewEnable,
|
||||
inline: true
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
||||
<span class="i18n g-ui-link" data-bind="click: testTwoFactor, visible: twoFactorStatus"
|
||||
data-i18n="POPUPS_TWO_FACTOR_CFG/LINK_TEST"></span>
|
||||
<div class="modal b-two-factor-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="visible: viewEnable() || !lock(), command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LEGEND_TWO_FACTOR_AUTH"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal" data-bind="visible: capaTwoFactor" style="margin-top: 10px;">
|
||||
<div class="control-group" data-bind="visible: twoFactorStatus">
|
||||
<div class="controls">
|
||||
<div style="display: inline-block" data-tooltip-join="top" data-bind="tooltip: viewTwoFactorEnableTooltip">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'POPUPS_TWO_FACTOR_CFG/LABEL_ENABLE_TWO_FACTOR',
|
||||
enable: twoFactorAllowedEnable,
|
||||
value: viewEnable,
|
||||
inline: true
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
||||
<span class="i18n g-ui-link" data-bind="click: testTwoFactor, visible: twoFactorStatus"
|
||||
data-i18n="POPUPS_TWO_FACTOR_CFG/LINK_TEST"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LABEL_TWO_FACTOR_USER"></span>
|
||||
</label>
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<strong><span data-bind="text: viewUser"></span></strong>
|
||||
<div style="padding-top: 15px;" data-bind="visible: lock">
|
||||
<blockquote>
|
||||
<p class="muted i18n width100-on-mobile" style="width: 550px" data-i18n="POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_REQUIRE_DESC"></p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: '' === viewSecret() && twoFactorStatus() && !clearing()">
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<strong data-bind="visible: secreting">...</strong>
|
||||
<span class="g-ui-link i18n" data-bind="click: showSecret, visible: !secreting()"
|
||||
data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_SHOW_SECRET"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: '' !== viewSecret()">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LABEL_TWO_FACTOR_SECRET"></span>
|
||||
</label>
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<strong data-bind="text: viewSecret"></strong>
|
||||
|
||||
<span class="g-ui-link i18n" data-bind="click: hideSecret" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_HIDE_SECRET"></span>
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LABEL_TWO_FACTOR_USER"></span>
|
||||
</label>
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<strong><span data-bind="text: viewUser"></span></strong>
|
||||
<div style="padding-top: 15px;" data-bind="visible: lock">
|
||||
<blockquote>
|
||||
<p class="muted i18n width100-on-mobile" style="width: 550px" data-i18n="POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_SECRET_DESC"></p>
|
||||
</blockquote>
|
||||
<!-- ko if: '' !== viewUrl() -->
|
||||
<img style="margin-left: -7px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2P8DwQACgAD/il4QJ8AAAAASUVORK5CYII=" data-bind="attr: {'src': viewUrl}" />
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: '' !== viewBackupCodes()">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LABEL_TWO_FACTOR_BACKUP_CODES"></span>
|
||||
</label>
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<pre data-bind="text: viewBackupCodes" style="width: 230px; word-break: break-word;"></pre>
|
||||
<br />
|
||||
<blockquote>
|
||||
<p class="muted i18n width100-on-mobile" style="width: 550px" data-i18n="POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_BACKUP_CODES_DESC"></p>
|
||||
<p class="muted i18n width100-on-mobile" style="width: 550px" data-i18n="POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_REQUIRE_DESC"></p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: '' === viewSecret() && twoFactorStatus() && !clearing()">
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<strong data-bind="visible: secreting">...</strong>
|
||||
<span class="g-ui-link i18n" data-bind="click: showSecret, visible: !secreting()"
|
||||
data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_SHOW_SECRET"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: '' !== viewSecret()">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LABEL_TWO_FACTOR_SECRET"></span>
|
||||
</label>
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<strong data-bind="text: viewSecret"></strong>
|
||||
|
||||
<span class="g-ui-link i18n" data-bind="click: hideSecret" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_HIDE_SECRET"></span>
|
||||
<br />
|
||||
<br />
|
||||
<blockquote>
|
||||
<p class="muted i18n width100-on-mobile" style="width: 550px" data-i18n="POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_SECRET_DESC"></p>
|
||||
</blockquote>
|
||||
<!-- ko if: '' !== viewUrl() -->
|
||||
<img style="margin-left: -7px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2P8DwQACgAD/il4QJ8AAAAASUVORK5CYII=" data-bind="attr: {'src': viewUrl}" />
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: '' !== viewBackupCodes()">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/LABEL_TWO_FACTOR_BACKUP_CODES"></span>
|
||||
</label>
|
||||
<div class="controls" style="padding-top: 5px;">
|
||||
<pre data-bind="text: viewBackupCodes" style="width: 230px; word-break: break-word;"></pre>
|
||||
<br />
|
||||
<blockquote>
|
||||
<p class="muted i18n width100-on-mobile" style="width: 550px" data-i18n="POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_BACKUP_CODES_DESC"></p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn pull-left" data-bind="visible: lock, click: logout">
|
||||
<i class="icon-power"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_LOGOUT"></span>
|
||||
</a>
|
||||
<a class="btn btn-danger" data-bind="click: clearTwoFactor, visible: twoFactorStatus">
|
||||
<i class="icon-remove" data-bind="css: {'icon-remove': !clearing(), 'icon-spinner animated': clearing()}" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_CLEAR"></span>
|
||||
</a>
|
||||
<a class="btn" data-bind="click: createTwoFactor, visible: !twoFactorStatus()">
|
||||
<i class="icon-play" data-bind="css: {'icon-play': !processing(), 'icon-spinner animated': processing()}" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_ACTIVATE"></span>
|
||||
</a>
|
||||
<a class="btn" data-bind="command: cancelCommand, visible: viewEnable() || !lock()">
|
||||
<i class="icon-ok" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_DONE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn pull-left" data-bind="visible: lock, click: logout">
|
||||
<i class="icon-power"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_LOGOUT"></span>
|
||||
</a>
|
||||
<a class="btn btn-danger" data-bind="click: clearTwoFactor, visible: twoFactorStatus">
|
||||
<i class="icon-remove" data-bind="css: {'icon-remove': !clearing(), 'icon-spinner animated': clearing()}" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_CLEAR"></span>
|
||||
</a>
|
||||
<a class="btn" data-bind="click: createTwoFactor, visible: !twoFactorStatus()">
|
||||
<i class="icon-play" data-bind="css: {'icon-play': !processing(), 'icon-spinner animated': processing()}" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_ACTIVATE"></span>
|
||||
</a>
|
||||
<a class="btn" data-bind="command: cancelCommand, visible: viewEnable() || !lock()">
|
||||
<i class="icon-ok" ></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_CFG/BUTTON_DONE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,34 +1,32 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-two-factor-test-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_TEST/TITLE_TEST_CODE"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_TEST/LABEL_CODE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputName"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: code, hasfocus: code.focused, onEnter: testCodeCommand" />
|
||||
</div>
|
||||
<div class="modal b-two-factor-test-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_TEST/TITLE_TEST_CODE"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_TEST/LABEL_CODE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="uiInput inputName"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="textInput: code, hasfocus: code.focused, onEnter: testCodeCommand" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn" data-bind="command: testCodeCommand, css: { 'btn-success': true === code.status(), 'btn-danger': false === code.status() }">
|
||||
<i data-bind="css: {'icon-ok': !testing(), 'icon-spinner animated': testing(), 'icon-white': true === code.status() || false === code.status() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_TEST/BUTTON_TEST"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn" data-bind="command: testCodeCommand, css: { 'btn-success': true === code.status(), 'btn-danger': false === code.status() }">
|
||||
<i data-bind="css: {'icon-ok': !testing(), 'icon-spinner animated': testing(), 'icon-white': true === code.status() || false === code.status() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_TWO_FACTOR_TEST/BUTTON_TEST"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,31 +1,29 @@
|
|||
<div class="popups">
|
||||
<div class="modal b-open-pgp-key-view-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header g-ui-user-select-none">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_VIEW_OPEN_PGP_KEY/TITLE_VIEW_OPEN_PGP_KEY"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<pre class="key-viewer" data-bind="initDom: keyDom, text: key"></pre>
|
||||
</div>
|
||||
<div class="modal b-open-pgp-key-view-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header g-ui-user-select-none">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_VIEW_OPEN_PGP_KEY/TITLE_VIEW_OPEN_PGP_KEY"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<pre class="key-viewer" data-bind="initDom: keyDom, text: key"></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_VIEW_OPEN_PGP_KEY/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClose" data-bind="click: selectKey">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_VIEW_OPEN_PGP_KEY/BUTTON_SELECT"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_VIEW_OPEN_PGP_KEY/BUTTON_CLOSE"></span>
|
||||
</a>
|
||||
<a class="btn buttonClose" data-bind="click: selectKey">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_VIEW_OPEN_PGP_KEY/BUTTON_SELECT"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
46
vendors/bootstrap/js/bootstrap.native.js
vendored
46
vendors/bootstrap/js/bootstrap.native.js
vendored
|
|
@ -8,7 +8,6 @@ window.BSN = (() => {
|
|||
'use strict';
|
||||
|
||||
const doc = document,
|
||||
body = doc.body,
|
||||
setFocus = element => element.focus ? element.focus() : element.setActive();
|
||||
|
||||
return {
|
||||
|
|
@ -98,51 +97,6 @@ window.BSN = (() => {
|
|||
element.Dropdown = self;
|
||||
},
|
||||
|
||||
Modal: function(modal) {
|
||||
let isAnimating = false;
|
||||
const mcl = modal.classList,
|
||||
emulateTransitionEnd = (element,handler) => {
|
||||
let transitionEndEvent = 'transitionend',
|
||||
duration = parseFloat(getComputedStyle(element).transitionDuration),
|
||||
transitionEndWrapper = e => {
|
||||
handler && handler(e), handler = 0;
|
||||
element.removeEventListener( transitionEndEvent, transitionEndWrapper);
|
||||
};
|
||||
(isFinite(duration) && duration)
|
||||
? element.addEventListener( transitionEndEvent, transitionEndWrapper )
|
||||
: setTimeout(() => { handler && handler(), handler = 0; }, 17);
|
||||
},
|
||||
beforeShow = () => {
|
||||
!doc.getElementsByClassName('modal show')[0] && body.classList.add('modal-open');
|
||||
mcl.add('show');
|
||||
modal.setAttribute('aria-hidden', false);
|
||||
mcl.contains('fade') ? emulateTransitionEnd(modal, triggerShow) : triggerShow();
|
||||
},
|
||||
triggerShow = () => {
|
||||
setFocus(modal);
|
||||
isAnimating = false;
|
||||
},
|
||||
triggerHide = () => {
|
||||
body.classList.remove('modal-open');
|
||||
isAnimating = false;
|
||||
};
|
||||
this.show = () => {
|
||||
if (!mcl.contains('show') || !isAnimating) {
|
||||
isAnimating = true;
|
||||
doc.getElementsByClassName('modal show')[0] ? beforeShow() : setTimeout( beforeShow, 0 );
|
||||
}
|
||||
};
|
||||
this.hide = () => {
|
||||
if (mcl.contains('show') ) {
|
||||
isAnimating = true;
|
||||
mcl.remove('show');
|
||||
modal.setAttribute('aria-hidden', true);
|
||||
mcl.contains('fade') ? emulateTransitionEnd(modal, triggerHide) : triggerHide();
|
||||
}
|
||||
};
|
||||
modal.Modal = this;
|
||||
},
|
||||
|
||||
Tab: class {
|
||||
constructor(element) {
|
||||
this.element = element
|
||||
|
|
|
|||
2
vendors/bootstrap/js/bootstrap.native.min.js
vendored
2
vendors/bootstrap/js/bootstrap.native.min.js
vendored
|
|
@ -4,4 +4,4 @@
|
|||
* Licensed under MIT (https://github.com/thednp/bootstrap.native/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
window.BSN=(()=>{"use strict";const e=document,t=e.body,s=e=>e.focus?e.focus():e.setActive();return{Dropdown:function(t){let o,n=[];const a=this,i=t.parentNode,r=e=>{const t=e.target,s=t.href||t.parentNode&&t.parentNode.href;s&&"#"===s.slice(-1)&&e.preventDefault()},d=()=>{let s=t.open?"addEventListener":"removeEventListener";e[s]("click",c,!1),e[s]("keydown",h,!1),e[s]("keyup",u,!1),e[s]("focus",c,!1)},c=e=>{let s=e.target,n=o.contains(s),i=s&&(s.getAttribute("data-toggle")||s.parentNode&&s.parentNode.getAttribute("data-toggle"));"focus"===e.type&&(s===t||n)||i&&n||(a.hide(),r(e))},l=e=>{a.show(),r(e)},h=e=>("ArrowUp"===e.code||"ArrowDown"===e.code)&&e.preventDefault(),u=i=>{let r=e.activeElement,d=r===t,c=o.contains(r),l=r.parentNode===o||r.parentNode.parentNode===o,h=n.indexOf(r);l&&(h=d?0:"ArrowUp"===i.code?h>1?h-1:0:"ArrowDown"===i.code&&h<n.length-1?h+1:h,n[h]&&s(n[h])),(n.length&&l||!n.length&&(c||d)||!c)&&t.open&&"Escape"===i.code&&a.toggle()};a.show=(()=>{o=i.querySelector(".dropdown-menu"),n=[],Array.from(o.children).forEach(e=>{e.children.length&&"A"===e.children[0].tagName&&n.push(e.children[0]),"A"===e.tagName&&n.push(e)}),!("tabindex"in o)&&o.setAttribute("tabindex","0"),o.classList.add("show"),i.classList.add("show"),t.setAttribute("aria-expanded",!0),t.open=!0,t.removeEventListener("click",l,!1),setTimeout(()=>{s(o.getElementsByTagName("INPUT")[0]||t),d()},1)}),a.hide=(()=>{o.classList.remove("show"),i.classList.remove("show"),t.setAttribute("aria-expanded",!1),t.open=!1,d(),s(t),setTimeout(()=>t.Dropdown&&t.addEventListener("click",l,!1),1)}),a.toggle=(()=>i.classList.contains("show")&&t.open?a.hide():a.show()),t.addEventListener("click",l,!1),t.open=!1,t.Dropdown=a},Modal:function(o){let n=!1;const a=o.classList,i=(e,t)=>{let s=parseFloat(getComputedStyle(e).transitionDuration),o=s=>{t&&t(s),t=0,e.removeEventListener("transitionend",o)};isFinite(s)&&s?e.addEventListener("transitionend",o):setTimeout(()=>{t&&t(),t=0},17)},r=()=>{!e.getElementsByClassName("modal show")[0]&&t.classList.add("modal-open"),a.add("show"),o.setAttribute("aria-hidden",!1),a.contains("fade")?i(o,d):d()},d=()=>{s(o),n=!1},c=()=>{t.classList.remove("modal-open"),n=!1};this.show=(()=>{a.contains("show")&&n||(n=!0,e.getElementsByClassName("modal show")[0]?r():setTimeout(r,0))}),this.hide=(()=>{a.contains("show")&&(n=!0,a.remove("show"),o.setAttribute("aria-hidden",!0),a.contains("fade")?i(o,c):c())}),o.Modal=this},Tab:class{constructor(e){this.element=e,e.Tab=this,e.addEventListener("click",e=>{e.preventDefault(),this.show()})}show(){const t=this.element,s=t.closest("li");if(!s.classList.contains("active")){const o=t.closest("ul").querySelector(".active a");o.closest("li").classList.remove("active"),e.querySelector(o.getAttribute("href")).classList.remove("active"),s.classList.add("active"),e.querySelector(t.getAttribute("href")).classList.add("active")}}}}})();
|
||||
window.BSN=(()=>{"use strict";const e=document,t=e=>e.focus?e.focus():e.setActive();return{Dropdown:function(s){let o,n=[];const r=this,a=s.parentNode,i=e=>{const t=e.target,s=t.href||t.parentNode&&t.parentNode.href;s&&"#"===s.slice(-1)&&e.preventDefault()},c=()=>{let t=s.open?"addEventListener":"removeEventListener";e[t]("click",d,!1),e[t]("keydown",h,!1),e[t]("keyup",p,!1),e[t]("focus",d,!1)},d=e=>{let t=e.target,n=o.contains(t),a=t&&(t.getAttribute("data-toggle")||t.parentNode&&t.parentNode.getAttribute("data-toggle"));"focus"===e.type&&(t===s||n)||a&&n||(r.hide(),i(e))},l=e=>{r.show(),i(e)},h=e=>("ArrowUp"===e.code||"ArrowDown"===e.code)&&e.preventDefault(),p=a=>{let i=e.activeElement,c=i===s,d=o.contains(i),l=i.parentNode===o||i.parentNode.parentNode===o,h=n.indexOf(i);l&&(h=c?0:"ArrowUp"===a.code?h>1?h-1:0:"ArrowDown"===a.code&&h<n.length-1?h+1:h,n[h]&&t(n[h])),(n.length&&l||!n.length&&(d||c)||!d)&&s.open&&"Escape"===a.code&&r.toggle()};r.show=(()=>{o=a.querySelector(".dropdown-menu"),n=[],Array.from(o.children).forEach(e=>{e.children.length&&"A"===e.children[0].tagName&&n.push(e.children[0]),"A"===e.tagName&&n.push(e)}),!("tabindex"in o)&&o.setAttribute("tabindex","0"),o.classList.add("show"),a.classList.add("show"),s.setAttribute("aria-expanded",!0),s.open=!0,s.removeEventListener("click",l,!1),setTimeout(()=>{t(o.getElementsByTagName("INPUT")[0]||s),c()},1)}),r.hide=(()=>{o.classList.remove("show"),a.classList.remove("show"),s.setAttribute("aria-expanded",!1),s.open=!1,c(),t(s),setTimeout(()=>s.Dropdown&&s.addEventListener("click",l,!1),1)}),r.toggle=(()=>a.classList.contains("show")&&s.open?r.hide():r.show()),s.addEventListener("click",l,!1),s.open=!1,s.Dropdown=r},Tab:class{constructor(e){this.element=e,e.Tab=this,e.addEventListener("click",e=>{e.preventDefault(),this.show()})}show(){const t=this.element,s=t.closest("li");if(!s.classList.contains("active")){const o=t.closest("ul").querySelector(".active a");o.closest("li").classList.remove("active"),e.querySelector(o.getAttribute("href")).classList.remove("active"),s.classList.add("active"),e.querySelector(t.getAttribute("href")).classList.add("active")}}}}})();
|
||||
|
|
|
|||
34
vendors/bootstrap/less/accordion.less
vendored
34
vendors/bootstrap/less/accordion.less
vendored
|
|
@ -1,34 +0,0 @@
|
|||
//
|
||||
// Accordion
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Parent container
|
||||
.accordion {
|
||||
margin-bottom: @baseLineHeight;
|
||||
}
|
||||
|
||||
// Group == heading + body
|
||||
.accordion-group {
|
||||
margin-bottom: 2px;
|
||||
border: 1px solid #e5e5e5;
|
||||
.border-radius(4px);
|
||||
}
|
||||
.accordion-heading {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.accordion-heading .accordion-toggle {
|
||||
display: block;
|
||||
padding: 8px 15px;
|
||||
}
|
||||
|
||||
// General toggle styles
|
||||
.accordion-toggle {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
// Inner needs the styles because you can't animate properly with any styles on the element
|
||||
.accordion-inner {
|
||||
padding: 9px 15px;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
}
|
||||
62
vendors/bootstrap/less/bootstrap.less
vendored
62
vendors/bootstrap/less/bootstrap.less
vendored
|
|
@ -1,62 +0,0 @@
|
|||
/*!
|
||||
* Bootstrap v2.1.0
|
||||
*
|
||||
* Copyright 2012 Twitter, Inc
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||
*/
|
||||
|
||||
// CSS Reset
|
||||
@import "reset.less";
|
||||
|
||||
// Core variables and mixins
|
||||
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
|
||||
@import "mixins.less";
|
||||
|
||||
// Grid system and page structure
|
||||
@import "scaffolding.less";
|
||||
@import "grid.less";
|
||||
@import "layouts.less";
|
||||
|
||||
// Base CSS
|
||||
@import "type.less";
|
||||
@import "code.less";
|
||||
@import "forms.less";
|
||||
@import "tables.less";
|
||||
|
||||
// Components: common
|
||||
@import "sprites.less";
|
||||
@import "dropdowns.less";
|
||||
@import "wells.less";
|
||||
@import "component-animations.less";
|
||||
@import "close.less";
|
||||
|
||||
// Components: Buttons & Alerts
|
||||
@import "buttons.less";
|
||||
@import "button-groups.less";
|
||||
@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
|
||||
|
||||
// Components: Nav
|
||||
@import "navs.less";
|
||||
@import "navbar.less";
|
||||
@import "breadcrumbs.less";
|
||||
@import "pagination.less";
|
||||
@import "pager.less";
|
||||
|
||||
// Components: Popovers
|
||||
@import "modals.less";
|
||||
@import "tooltip.less";
|
||||
@import "popovers.less";
|
||||
|
||||
// Components: Misc
|
||||
@import "thumbnails.less";
|
||||
@import "labels-badges.less";
|
||||
@import "progress-bars.less";
|
||||
@import "accordion.less";
|
||||
@import "carousel.less";
|
||||
@import "hero-unit.less";
|
||||
|
||||
// Utility classes
|
||||
@import "utilities.less"; // Has to be last to override when necessary
|
||||
24
vendors/bootstrap/less/breadcrumbs.less
vendored
24
vendors/bootstrap/less/breadcrumbs.less
vendored
|
|
@ -1,24 +0,0 @@
|
|||
//
|
||||
// Breadcrumbs
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.breadcrumb {
|
||||
padding: 8px 15px;
|
||||
margin: 0 0 @baseLineHeight;
|
||||
list-style: none;
|
||||
background-color: #f5f5f5;
|
||||
.border-radius(4px);
|
||||
li {
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
text-shadow: 0 1px 0 @white;
|
||||
}
|
||||
.divider {
|
||||
padding: 0 5px;
|
||||
color: #ccc;
|
||||
}
|
||||
.active {
|
||||
color: @grayLight;
|
||||
}
|
||||
}
|
||||
5
vendors/bootstrap/less/button-groups.less
vendored
5
vendors/bootstrap/less/button-groups.less
vendored
|
|
@ -190,11 +190,6 @@
|
|||
border-right-width: 5px;
|
||||
border-top-width: 5px;
|
||||
}
|
||||
// Upside down carets for .dropup
|
||||
.dropup .btn-large .caret {
|
||||
border-bottom: 5px solid @black;
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
131
vendors/bootstrap/less/carousel.less
vendored
131
vendors/bootstrap/less/carousel.less
vendored
|
|
@ -1,131 +0,0 @@
|
|||
//
|
||||
// Carousel
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.carousel {
|
||||
position: relative;
|
||||
margin-bottom: @baseLineHeight;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.carousel-inner {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.carousel {
|
||||
|
||||
.item {
|
||||
display: none;
|
||||
position: relative;
|
||||
.transition(.6s ease-in-out left);
|
||||
}
|
||||
|
||||
// Account for jankitude on images
|
||||
.item > img {
|
||||
display: block;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.active,
|
||||
.next,
|
||||
.prev { display: block; }
|
||||
|
||||
.active {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.next,
|
||||
.prev {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.next {
|
||||
left: 100%;
|
||||
}
|
||||
.prev {
|
||||
left: -100%;
|
||||
}
|
||||
.next.left,
|
||||
.prev.right {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.active.left {
|
||||
left: -100%;
|
||||
}
|
||||
.active.right {
|
||||
left: 100%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Left/right controls for nav
|
||||
// ---------------------------
|
||||
|
||||
.carousel-control {
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 15px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-top: -20px;
|
||||
font-size: 60px;
|
||||
font-weight: 100;
|
||||
line-height: 30px;
|
||||
color: @white;
|
||||
text-align: center;
|
||||
background: @grayDarker;
|
||||
border: 3px solid @white;
|
||||
.border-radius(23px);
|
||||
.opacity(50);
|
||||
|
||||
// we can't have this transition here
|
||||
// because webkit cancels the carousel
|
||||
// animation if you trip this while
|
||||
// in the middle of another animation
|
||||
// ;_;
|
||||
// .transition(opacity .2s linear);
|
||||
|
||||
// Reposition the right one
|
||||
&.right {
|
||||
left: auto;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
// Hover state
|
||||
&:hover {
|
||||
color: @white;
|
||||
text-decoration: none;
|
||||
.opacity(90);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Caption for text below images
|
||||
// -----------------------------
|
||||
|
||||
.carousel-caption {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
padding: 15px;
|
||||
background: @grayDark;
|
||||
background: rgba(0,0,0,.75);
|
||||
}
|
||||
.carousel-caption h4,
|
||||
.carousel-caption p {
|
||||
color: @white;
|
||||
line-height: @baseLineHeight;
|
||||
}
|
||||
.carousel-caption h4 {
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
.carousel-caption p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
|
@ -3,14 +3,6 @@
|
|||
// --------------------------------------------------
|
||||
|
||||
|
||||
.fade {
|
||||
opacity: 0;
|
||||
.transition(opacity .15s linear);
|
||||
&.show {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.collapse {
|
||||
position: relative;
|
||||
height: 0;
|
||||
|
|
|
|||
21
vendors/bootstrap/less/dropdowns.less
vendored
21
vendors/bootstrap/less/dropdowns.less
vendored
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
|
||||
// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
|
||||
.dropup,
|
||||
.dropdown {
|
||||
position: relative;
|
||||
}
|
||||
|
|
@ -138,26 +137,6 @@
|
|||
left: auto;
|
||||
}
|
||||
|
||||
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
||||
// ------------------------------------------------------
|
||||
// Just add .dropup after the standard .dropdown class and you're set, bro.
|
||||
// TODO: abstract this so that the navbar fixed styles are not placed here?
|
||||
.dropup,
|
||||
.navbar-fixed-bottom .dropdown {
|
||||
// Reverse the caret
|
||||
.caret {
|
||||
border-top: 0;
|
||||
border-bottom: 4px solid @black;
|
||||
content: "\2191";
|
||||
}
|
||||
// Different positioning for bottom up menu
|
||||
.dropdown-menu {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
// Sub menus
|
||||
// ---------------------------
|
||||
.dropdown-submenu {
|
||||
|
|
|
|||
24
vendors/bootstrap/less/hero-unit.less
vendored
24
vendors/bootstrap/less/hero-unit.less
vendored
|
|
@ -1,24 +0,0 @@
|
|||
//
|
||||
// Hero unit
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.hero-unit {
|
||||
padding: 60px;
|
||||
margin-bottom: 30px;
|
||||
background-color: @heroUnitBackground;
|
||||
.border-radius(6px);
|
||||
h1 {
|
||||
margin-bottom: 0;
|
||||
font-size: 60px;
|
||||
line-height: 1;
|
||||
color: @heroUnitHeadingColor;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
p {
|
||||
font-size: 18px;
|
||||
font-weight: 200;
|
||||
line-height: @baseLineHeight * 1.5;
|
||||
color: @heroUnitLeadColor;
|
||||
}
|
||||
}
|
||||
17
vendors/bootstrap/less/mixins.less
vendored
17
vendors/bootstrap/less/mixins.less
vendored
|
|
@ -504,16 +504,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
// Navbar vertical align
|
||||
// -------------------------
|
||||
// Vertically center elements in the navbar.
|
||||
// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
|
||||
.navbarVerticalAlign(@elementHeight) {
|
||||
margin-top: (@navbarHeight - @elementHeight) / 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Grid System
|
||||
// -----------
|
||||
|
||||
|
|
@ -580,11 +570,8 @@
|
|||
margin-left: @gridGutterWidth;
|
||||
}
|
||||
|
||||
// Set the container width, and override it for fixed navbars in media queries
|
||||
.container,
|
||||
.navbar-static-top .container,
|
||||
.navbar-fixed-top .container,
|
||||
.navbar-fixed-bottom .container { .span(@gridColumns); }
|
||||
// Set the container width
|
||||
.container { .span(@gridColumns); }
|
||||
|
||||
// generate .spanX and .offsetX
|
||||
.spanX (@gridColumns);
|
||||
|
|
|
|||
49
vendors/bootstrap/less/modals.less
vendored
49
vendors/bootstrap/less/modals.less
vendored
|
|
@ -3,52 +3,21 @@
|
|||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Recalculate z-index where appropriate
|
||||
.modal-open {
|
||||
.dropdown-menu { z-index: @zindexDropdown + @zindexModal; }
|
||||
.dropdown.open { *z-index: @zindexDropdown + @zindexModal; }
|
||||
}
|
||||
|
||||
// Background
|
||||
.modal-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: @zindexModalBackdrop;
|
||||
background-color: @black;
|
||||
// Fade for backdrop
|
||||
&.fade { opacity: 0; }
|
||||
}
|
||||
|
||||
.modal-backdrop,
|
||||
.modal-backdrop.fade.show {
|
||||
.opacity(80);
|
||||
}
|
||||
|
||||
// Base modal
|
||||
.modal {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
position: relative;
|
||||
z-index: @zindexModal;
|
||||
overflow: auto;
|
||||
overflow: hidden;
|
||||
width: 560px;
|
||||
margin: -250px 0 0 -280px;
|
||||
margin: 10px auto;
|
||||
background-color: @white;
|
||||
border: 1px solid #999;
|
||||
border: 1px solid rgba(0,0,0,.3);
|
||||
*border: 1px solid #999; /* IE6-7 */
|
||||
.border-radius(6px);
|
||||
.box-shadow(0 3px 7px rgba(0,0,0,0.3));
|
||||
.background-clip(padding-box);
|
||||
&.fade {
|
||||
.transition(e('opacity .3s linear, top .3s ease-out'));
|
||||
top: -25%;
|
||||
}
|
||||
&.fade.show { top: 0; }
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 5px 80px rgba(0,0,0,0.3);
|
||||
background-clip: padding-box;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
padding: 9px 15px;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
|
@ -64,8 +33,8 @@
|
|||
// Body (where all modal content resides)
|
||||
.modal-body {
|
||||
overflow-y: auto;
|
||||
max-height: 400px;
|
||||
padding: 15px;
|
||||
background-color: #fff;
|
||||
}
|
||||
// Remove bottom margin if need be
|
||||
.modal-form {
|
||||
|
|
|
|||
470
vendors/bootstrap/less/navbar.less
vendored
470
vendors/bootstrap/less/navbar.less
vendored
|
|
@ -1,470 +0,0 @@
|
|||
//
|
||||
// Navbars (Redux)
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// COMMON STYLES
|
||||
// -------------
|
||||
|
||||
// Base class and wrapper
|
||||
.navbar {
|
||||
overflow: visible;
|
||||
margin-bottom: @baseLineHeight;
|
||||
color: @navbarText;
|
||||
|
||||
// Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
|
||||
*position: relative;
|
||||
*z-index: 2;
|
||||
}
|
||||
|
||||
// Inner for background effects
|
||||
// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
|
||||
.navbar-inner {
|
||||
min-height: @navbarHeight;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
#gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
|
||||
border: 1px solid @navbarBorder;
|
||||
.border-radius(4px);
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.065));
|
||||
}
|
||||
|
||||
// Set width to auto for default container
|
||||
// We then reset it for fixed navbars in the #gridSystem mixin
|
||||
.navbar .container {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
// Override the default collapsed state
|
||||
.nav-collapse.collapse {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
|
||||
// Brand: website or project name
|
||||
// -------------------------
|
||||
.navbar .brand {
|
||||
float: left;
|
||||
display: block;
|
||||
// Vertically center the text given @navbarHeight
|
||||
padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2);
|
||||
margin-left: -20px; // negative indent to left-align the text down the page
|
||||
font-size: 20px;
|
||||
font-weight: 200;
|
||||
color: @navbarBrandColor;
|
||||
text-shadow: 0 1px 0 @navbarBackgroundHighlight;
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Plain text in topbar
|
||||
// -------------------------
|
||||
.navbar-text {
|
||||
margin-bottom: 0;
|
||||
line-height: @navbarHeight;
|
||||
}
|
||||
|
||||
// Janky solution for now to account for links outside the .nav
|
||||
// -------------------------
|
||||
.navbar-link {
|
||||
color: @navbarLinkColor;
|
||||
&:hover {
|
||||
color: @navbarLinkColorHover;
|
||||
}
|
||||
}
|
||||
|
||||
// Dividers in navbar
|
||||
// -------------------------
|
||||
.navbar .divider-vertical {
|
||||
height: @navbarHeight;
|
||||
margin: 0 9px;
|
||||
border-left: 1px solid @navbarBackground;
|
||||
border-right: 1px solid @navbarBackgroundHighlight;
|
||||
}
|
||||
|
||||
// Buttons in navbar
|
||||
// -------------------------
|
||||
.navbar .btn,
|
||||
.navbar .btn-group {
|
||||
.navbarVerticalAlign(28px); // Vertically center in navbar
|
||||
}
|
||||
.navbar .btn-group .btn {
|
||||
margin: 0; // then undo the margin here so we don't accidentally double it
|
||||
}
|
||||
|
||||
// Navbar forms
|
||||
.navbar-form {
|
||||
margin-bottom: 0; // remove default bottom margin
|
||||
.clearfix();
|
||||
input,
|
||||
select,
|
||||
.radio,
|
||||
.checkbox {
|
||||
.navbarVerticalAlign(30px); // Vertically center in navbar
|
||||
}
|
||||
input,
|
||||
select,
|
||||
.btn {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
input[type="image"],
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
margin-top: 3px;
|
||||
}
|
||||
.input-append,
|
||||
.input-prepend {
|
||||
margin-top: 6px;
|
||||
white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left
|
||||
input {
|
||||
margin-top: 0; // remove the margin on top since it's on the parent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Navbar search
|
||||
.navbar-search {
|
||||
position: relative;
|
||||
float: left;
|
||||
.navbarVerticalAlign(30px); // Vertically center in navbar
|
||||
margin-bottom: 0;
|
||||
.search-query {
|
||||
margin-bottom: 0;
|
||||
padding: 4px 14px;
|
||||
#font > .sans-serif(13px, normal, 1);
|
||||
.border-radius(15px); // redeclare because of specificity of the type attribute
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Static navbar
|
||||
// -------------------------
|
||||
|
||||
.navbar-static-top {
|
||||
position: static;
|
||||
width: 100%;
|
||||
margin-bottom: 0; // remove 18px margin for default navbar
|
||||
.navbar-inner {
|
||||
.border-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Fixed navbar
|
||||
// -------------------------
|
||||
|
||||
// Shared (top/bottom) styles
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: @zindexFixedNavbar;
|
||||
margin-bottom: 0; // remove 18px margin for default navbar
|
||||
}
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom,
|
||||
.navbar-static-top {
|
||||
.navbar-inner {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
.navbar-fixed-top .navbar-inner,
|
||||
.navbar-fixed-bottom .navbar-inner {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
.border-radius(0);
|
||||
}
|
||||
|
||||
// Reset container width
|
||||
// Required here as we reset the width earlier on and the grid mixins don't override early enough
|
||||
.navbar-static-top .container,
|
||||
.navbar-fixed-top .container,
|
||||
.navbar-fixed-bottom .container {
|
||||
// #grid > .core > .span(@gridColumns); // (less 1.3.6 > 3.1.0)
|
||||
width: (@gridColumnWidth * @gridColumns) + (@gridGutterWidth * (@gridColumns - 1));
|
||||
}
|
||||
|
||||
// Fixed to top
|
||||
.navbar-fixed-top {
|
||||
top: 0;
|
||||
}
|
||||
.navbar-fixed-top,
|
||||
.navbar-static-top {
|
||||
.navbar-inner {
|
||||
.box-shadow(~"inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1)");
|
||||
}
|
||||
}
|
||||
|
||||
// Fixed to bottom
|
||||
.navbar-fixed-bottom {
|
||||
bottom: 0;
|
||||
.navbar-inner {
|
||||
.box-shadow(~"inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// NAVIGATION
|
||||
// ----------
|
||||
|
||||
.navbar .nav {
|
||||
position: relative;
|
||||
left: 0;
|
||||
display: block;
|
||||
float: left;
|
||||
margin: 0 10px 0 0;
|
||||
}
|
||||
.navbar .nav.pull-right {
|
||||
float: right; // redeclare due to specificity
|
||||
}
|
||||
.navbar .nav > li {
|
||||
float: left;
|
||||
}
|
||||
|
||||
// Links
|
||||
.navbar .nav > li > a {
|
||||
float: none;
|
||||
// Vertically center the text given @navbarHeight
|
||||
padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2);
|
||||
color: @navbarLinkColor;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 @navbarBackgroundHighlight;
|
||||
}
|
||||
.navbar .nav .dropdown-toggle .caret {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
// Hover
|
||||
.navbar .nav > li > a:focus,
|
||||
.navbar .nav > li > a:hover {
|
||||
background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active
|
||||
color: @navbarLinkColorHover;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
// Active nav items
|
||||
.navbar .nav > .active > a,
|
||||
.navbar .nav > .active > a:hover,
|
||||
.navbar .nav > .active > a:focus {
|
||||
color: @navbarLinkColorActive;
|
||||
text-decoration: none;
|
||||
background-color: @navbarLinkBackgroundActive;
|
||||
-webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
|
||||
-moz-box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
|
||||
box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
|
||||
}
|
||||
|
||||
// Navbar button for toggling navbar items in responsive layouts
|
||||
// These definitions need to come after '.navbar .btn'
|
||||
.navbar .btn-navbar {
|
||||
display: none;
|
||||
float: right;
|
||||
padding: 7px 10px;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
.buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%));
|
||||
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
|
||||
}
|
||||
.navbar .btn-navbar .icon-bar {
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 2px;
|
||||
background-color: #f5f5f5;
|
||||
.border-radius(1px);
|
||||
.box-shadow(0 1px 0 rgba(0,0,0,.25));
|
||||
}
|
||||
.btn-navbar .icon-bar + .icon-bar {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Dropdown menus
|
||||
// --------------
|
||||
|
||||
// Menu position and menu carets
|
||||
.navbar .nav > li > .dropdown-menu {
|
||||
&:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: @dropdownBorder;
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: 9px;
|
||||
}
|
||||
&:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid @dropdownBackground;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 10px;
|
||||
}
|
||||
}
|
||||
// Menu position and menu caret support for dropups via extra dropup class
|
||||
.navbar-fixed-bottom .nav > li > .dropdown-menu {
|
||||
&:before {
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: @dropdownBorder;
|
||||
border-bottom: 0;
|
||||
bottom: -7px;
|
||||
top: auto;
|
||||
}
|
||||
&:after {
|
||||
border-top: 6px solid @dropdownBackground;
|
||||
border-bottom: 0;
|
||||
bottom: -6px;
|
||||
top: auto;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove background color from open dropdown
|
||||
.navbar .nav li.dropdown.open > .dropdown-toggle,
|
||||
.navbar .nav li.dropdown.active > .dropdown-toggle,
|
||||
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
|
||||
background-color: @navbarLinkBackgroundActive;
|
||||
color: @navbarLinkColorActive;
|
||||
}
|
||||
.navbar .nav li.dropdown > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarLinkColor;
|
||||
border-bottom-color: @navbarLinkColor;
|
||||
}
|
||||
.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
|
||||
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
|
||||
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarLinkColorActive;
|
||||
border-bottom-color: @navbarLinkColorActive;
|
||||
}
|
||||
|
||||
// Right aligned menus need alt position
|
||||
.navbar .pull-right > li > .dropdown-menu,
|
||||
.navbar .nav > li > .dropdown-menu.pull-right {
|
||||
left: auto;
|
||||
right: 0;
|
||||
&:before {
|
||||
left: auto;
|
||||
right: 12px;
|
||||
}
|
||||
&:after {
|
||||
left: auto;
|
||||
right: 13px;
|
||||
}
|
||||
.dropdown-menu {
|
||||
left: auto;
|
||||
right: 100%;
|
||||
margin-left: 0;
|
||||
margin-right: -1px;
|
||||
.border-radius(6px 0 6px 6px);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Inverted navbar
|
||||
// -------------------------
|
||||
|
||||
.navbar-inverse {
|
||||
color: @navbarInverseText;
|
||||
|
||||
.navbar-inner {
|
||||
#gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
|
||||
border-color: @navbarInverseBorder;
|
||||
}
|
||||
|
||||
.brand,
|
||||
.nav > li > a {
|
||||
color: @navbarInverseLinkColor;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
&:hover {
|
||||
color: @navbarInverseLinkColorHover;
|
||||
}
|
||||
}
|
||||
|
||||
.nav > li > a:focus,
|
||||
.nav > li > a:hover {
|
||||
background-color: @navbarInverseLinkBackgroundHover;
|
||||
color: @navbarInverseLinkColorHover;
|
||||
}
|
||||
|
||||
.nav .active > a,
|
||||
.nav .active > a:hover,
|
||||
.nav .active > a:focus {
|
||||
color: @navbarInverseLinkColorActive;
|
||||
background-color: @navbarInverseLinkBackgroundActive;
|
||||
}
|
||||
|
||||
// Inline text links
|
||||
.navbar-link {
|
||||
color: @navbarInverseLinkColor;
|
||||
&:hover {
|
||||
color: @navbarInverseLinkColorHover;
|
||||
}
|
||||
}
|
||||
|
||||
// Dividers in navbar
|
||||
.divider-vertical {
|
||||
border-left-color: @navbarInverseBackground;
|
||||
border-right-color: @navbarInverseBackgroundHighlight;
|
||||
}
|
||||
|
||||
// Dropdowns
|
||||
.nav li.dropdown.open > .dropdown-toggle,
|
||||
.nav li.dropdown.active > .dropdown-toggle,
|
||||
.nav li.dropdown.open.active > .dropdown-toggle {
|
||||
background-color: @navbarInverseLinkBackgroundActive;
|
||||
color: @navbarInverseLinkColorActive;
|
||||
}
|
||||
.nav li.dropdown > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarInverseLinkColor;
|
||||
border-bottom-color: @navbarInverseLinkColor;
|
||||
}
|
||||
.nav li.dropdown.open > .dropdown-toggle .caret,
|
||||
.nav li.dropdown.active > .dropdown-toggle .caret,
|
||||
.nav li.dropdown.open.active > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarInverseLinkColorActive;
|
||||
border-bottom-color: @navbarInverseLinkColorActive;
|
||||
}
|
||||
|
||||
// Navbar search
|
||||
.navbar-search {
|
||||
.search-query {
|
||||
color: @white;
|
||||
background-color: @navbarInverseSearchBackground;
|
||||
border-color: @navbarInverseSearchBorder;
|
||||
.box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
|
||||
.transition(none);
|
||||
.placeholder(@navbarInverseSearchPlaceholderColor);
|
||||
|
||||
// Focus states (we use .focused since IE7-8 and down doesn't support :focus)
|
||||
&:focus,
|
||||
&.focused {
|
||||
padding: 5px 15px;
|
||||
color: @grayDark;
|
||||
text-shadow: 0 1px 0 @white;
|
||||
background-color: @navbarInverseSearchBackgroundFocus;
|
||||
border: 0;
|
||||
.box-shadow(0 0 3px rgba(0,0,0,.15));
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Navbar collapse button
|
||||
.btn-navbar {
|
||||
.buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
37
vendors/bootstrap/less/pager.less
vendored
37
vendors/bootstrap/less/pager.less
vendored
|
|
@ -1,37 +0,0 @@
|
|||
//
|
||||
// Pager pagination
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.pager {
|
||||
margin: @baseLineHeight 0;
|
||||
list-style: none;
|
||||
text-align: center;
|
||||
.clearfix();
|
||||
}
|
||||
.pager li {
|
||||
display: inline;
|
||||
}
|
||||
.pager a {
|
||||
display: inline-block;
|
||||
padding: 5px 14px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ddd;
|
||||
.border-radius(15px);
|
||||
}
|
||||
.pager a:hover {
|
||||
text-decoration: none;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.pager .next a {
|
||||
float: right;
|
||||
}
|
||||
.pager .previous a {
|
||||
float: left;
|
||||
}
|
||||
.pager .disabled a,
|
||||
.pager .disabled a:hover {
|
||||
color: @grayLight;
|
||||
background-color: #fff;
|
||||
cursor: default;
|
||||
}
|
||||
64
vendors/bootstrap/less/pagination.less
vendored
64
vendors/bootstrap/less/pagination.less
vendored
|
|
@ -1,64 +0,0 @@
|
|||
//
|
||||
// Pagination (multiple pages)
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.pagination {
|
||||
height: @baseLineHeight * 2;
|
||||
margin: @baseLineHeight 0;
|
||||
}
|
||||
.pagination ul {
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
margin-left: 0;
|
||||
margin-bottom: 0;
|
||||
.border-radius(3px);
|
||||
.box-shadow(0 1px 2px rgba(0,0,0,.05));
|
||||
}
|
||||
.pagination li {
|
||||
display: inline;
|
||||
}
|
||||
.pagination a,
|
||||
.pagination span {
|
||||
float: left;
|
||||
padding: 0 14px;
|
||||
line-height: (@baseLineHeight * 2) - 2;
|
||||
text-decoration: none;
|
||||
background-color: @paginationBackground;
|
||||
border: 1px solid @paginationBorder;
|
||||
border-left-width: 0;
|
||||
}
|
||||
.pagination a:hover,
|
||||
.pagination .active a,
|
||||
.pagination .active span {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.pagination .active a,
|
||||
.pagination .active span {
|
||||
color: @grayLight;
|
||||
cursor: default;
|
||||
}
|
||||
.pagination .disabled span,
|
||||
.pagination .disabled a,
|
||||
.pagination .disabled a:hover {
|
||||
color: @grayLight;
|
||||
background-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
.pagination li:first-child a,
|
||||
.pagination li:first-child span {
|
||||
border-left-width: 1px;
|
||||
.border-radius(3px 0 0 3px);
|
||||
}
|
||||
.pagination li:last-child a,
|
||||
.pagination li:last-child span {
|
||||
.border-radius(0 3px 3px 0);
|
||||
}
|
||||
|
||||
// Centered
|
||||
.pagination-centered {
|
||||
text-align: center;
|
||||
}
|
||||
.pagination-right {
|
||||
text-align: right;
|
||||
}
|
||||
117
vendors/bootstrap/less/popovers.less
vendored
117
vendors/bootstrap/less/popovers.less
vendored
|
|
@ -1,117 +0,0 @@
|
|||
//
|
||||
// Popovers
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.popover {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: @zindexPopover;
|
||||
display: none;
|
||||
width: 236px;
|
||||
padding: 1px;
|
||||
background-color: @popoverBackground;
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
.border-radius(6px);
|
||||
.box-shadow(0 5px 10px rgba(0,0,0,.2));
|
||||
|
||||
// Offset the popover to account for the popover arrow
|
||||
&.top { margin-bottom: 10px; }
|
||||
&.right { margin-left: 10px; }
|
||||
&.bottom { margin-top: 10px; }
|
||||
&.left { margin-right: 10px; }
|
||||
|
||||
}
|
||||
|
||||
.popover-title {
|
||||
margin: 0; // reset heading margin
|
||||
padding: 8px 14px;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
line-height: 18px;
|
||||
background-color: @popoverTitleBackground;
|
||||
border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
|
||||
.border-radius(5px 5px 0 0);
|
||||
}
|
||||
|
||||
.popover-content {
|
||||
padding: 9px 14px;
|
||||
p, ul, ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Arrows
|
||||
.popover .arrow,
|
||||
.popover .arrow:after {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
}
|
||||
.popover .arrow:after {
|
||||
content: "";
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.popover {
|
||||
&.top .arrow {
|
||||
bottom: -@popoverArrowWidth;
|
||||
left: 50%;
|
||||
margin-left: -@popoverArrowWidth;
|
||||
border-width: @popoverArrowWidth @popoverArrowWidth 0;
|
||||
border-top-color: @popoverArrowColor;
|
||||
&:after {
|
||||
border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth 0;
|
||||
border-top-color: @popoverArrowOuterColor;
|
||||
bottom: -1px;
|
||||
left: -@popoverArrowOuterWidth;
|
||||
}
|
||||
}
|
||||
&.right .arrow {
|
||||
top: 50%;
|
||||
left: -@popoverArrowWidth;
|
||||
margin-top: -@popoverArrowWidth;
|
||||
border-width: @popoverArrowWidth @popoverArrowWidth @popoverArrowWidth 0;
|
||||
border-right-color: @popoverArrowColor;
|
||||
&:after {
|
||||
border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth @popoverArrowOuterWidth 0;
|
||||
border-right-color: @popoverArrowOuterColor;
|
||||
bottom: -@popoverArrowOuterWidth;
|
||||
left: -1px;
|
||||
}
|
||||
}
|
||||
&.bottom .arrow {
|
||||
top: -@popoverArrowWidth;
|
||||
left: 50%;
|
||||
margin-left: -@popoverArrowWidth;
|
||||
border-width: 0 @popoverArrowWidth @popoverArrowWidth;
|
||||
border-bottom-color: @popoverArrowColor;
|
||||
&:after {
|
||||
border-width: 0 @popoverArrowOuterWidth @popoverArrowOuterWidth;
|
||||
border-bottom-color: @popoverArrowOuterColor;
|
||||
top: -1px;
|
||||
left: -@popoverArrowOuterWidth;
|
||||
}
|
||||
}
|
||||
&.left .arrow {
|
||||
top: 50%;
|
||||
right: -@popoverArrowWidth;
|
||||
margin-top: -@popoverArrowWidth;
|
||||
border-width: @popoverArrowWidth 0 @popoverArrowWidth @popoverArrowWidth;
|
||||
border-left-color: @popoverArrowColor;
|
||||
&:after {
|
||||
border-width: @popoverArrowOuterWidth 0 @popoverArrowOuterWidth @popoverArrowOuterWidth;
|
||||
border-left-color: @popoverArrowOuterColor;
|
||||
bottom: -@popoverArrowOuterWidth;
|
||||
right: -1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
122
vendors/bootstrap/less/progress-bars.less
vendored
122
vendors/bootstrap/less/progress-bars.less
vendored
|
|
@ -1,122 +0,0 @@
|
|||
//
|
||||
// Progress bars
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// ANIMATIONS
|
||||
// ----------
|
||||
|
||||
// Webkit
|
||||
@-webkit-keyframes progress-bar-stripes {
|
||||
from { background-position: 40px 0; }
|
||||
to { background-position: 0 0; }
|
||||
}
|
||||
|
||||
// Firefox
|
||||
@-moz-keyframes progress-bar-stripes {
|
||||
from { background-position: 40px 0; }
|
||||
to { background-position: 0 0; }
|
||||
}
|
||||
|
||||
// IE9
|
||||
@-ms-keyframes progress-bar-stripes {
|
||||
from { background-position: 40px 0; }
|
||||
to { background-position: 0 0; }
|
||||
}
|
||||
|
||||
// Opera
|
||||
@-o-keyframes progress-bar-stripes {
|
||||
from { background-position: 0 0; }
|
||||
to { background-position: 40px 0; }
|
||||
}
|
||||
|
||||
// Spec
|
||||
@keyframes progress-bar-stripes {
|
||||
from { background-position: 40px 0; }
|
||||
to { background-position: 0 0; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
// THE BARS
|
||||
// --------
|
||||
|
||||
// Outer container
|
||||
.progress {
|
||||
overflow: hidden;
|
||||
height: @baseLineHeight;
|
||||
margin-bottom: @baseLineHeight;
|
||||
#gradient > .vertical(#f5f5f5, #f9f9f9);
|
||||
.box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
|
||||
.border-radius(4px);
|
||||
}
|
||||
|
||||
// Bar of progress
|
||||
.progress .bar {
|
||||
width: 0%;
|
||||
height: 100%;
|
||||
color: @white;
|
||||
float: left;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
#gradient > .vertical(#149bdf, #0480be);
|
||||
.box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
|
||||
.box-sizing(border-box);
|
||||
.transition(width .6s ease);
|
||||
}
|
||||
.progress .bar + .bar {
|
||||
.box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)");
|
||||
}
|
||||
|
||||
// Striped bars
|
||||
.progress-striped .bar {
|
||||
#gradient > .striped(#149bdf);
|
||||
.background-size(40px 40px);
|
||||
}
|
||||
|
||||
// Call animation for the active one
|
||||
.progress.active .bar {
|
||||
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
||||
-moz-animation: progress-bar-stripes 2s linear infinite;
|
||||
-ms-animation: progress-bar-stripes 2s linear infinite;
|
||||
-o-animation: progress-bar-stripes 2s linear infinite;
|
||||
animation: progress-bar-stripes 2s linear infinite;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// COLORS
|
||||
// ------
|
||||
|
||||
// Danger (red)
|
||||
.progress-danger .bar, .progress .bar-danger {
|
||||
#gradient > .vertical(#ee5f5b, #c43c35);
|
||||
}
|
||||
.progress-danger.progress-striped .bar, .progress-striped .bar-danger {
|
||||
#gradient > .striped(#ee5f5b);
|
||||
}
|
||||
|
||||
// Success (green)
|
||||
.progress-success .bar, .progress .bar-success {
|
||||
#gradient > .vertical(#62c462, #57a957);
|
||||
}
|
||||
.progress-success.progress-striped .bar, .progress-striped .bar-success {
|
||||
#gradient > .striped(#62c462);
|
||||
}
|
||||
|
||||
// Info (teal)
|
||||
.progress-info .bar, .progress .bar-info {
|
||||
#gradient > .vertical(#5bc0de, #339bb9);
|
||||
}
|
||||
.progress-info.progress-striped .bar, .progress-striped .bar-info {
|
||||
#gradient > .striped(#5bc0de);
|
||||
}
|
||||
|
||||
// Warning (orange)
|
||||
.progress-warning .bar, .progress .bar-warning {
|
||||
#gradient > .vertical(lighten(@orange, 15%), @orange);
|
||||
}
|
||||
.progress-warning.progress-striped .bar, .progress-striped .bar-warning {
|
||||
#gradient > .striped(lighten(@orange, 15%));
|
||||
}
|
||||
134
vendors/bootstrap/less/reset.less
vendored
134
vendors/bootstrap/less/reset.less
vendored
|
|
@ -1,134 +0,0 @@
|
|||
//
|
||||
// Modals
|
||||
// Adapted from http://github.com/necolas/normalize.css
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Display in IE6-9 and FF3
|
||||
// -------------------------
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// Display block in IE6-9 and FF3
|
||||
// -------------------------
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
// Prevents modern browsers from displaying 'audio' without controls
|
||||
// -------------------------
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Base settings
|
||||
// -------------------------
|
||||
|
||||
html {
|
||||
font-size: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
// Focus states
|
||||
a:focus {
|
||||
.tab-focus();
|
||||
}
|
||||
// Hover & Active
|
||||
a:hover,
|
||||
a:active {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
// Prevents sub and sup affecting line-height in all browsers
|
||||
// -------------------------
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
// Img border in a's and image quality
|
||||
// -------------------------
|
||||
|
||||
img {
|
||||
max-width: 100%; // Make images inherently responsive
|
||||
height: auto; // Make images inherently responsive
|
||||
vertical-align: middle;
|
||||
border: 0;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
// Prevent max-width from affecting Google Maps
|
||||
#map_canvas img {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
// Forms
|
||||
// -------------------------
|
||||
|
||||
// Font size in all browsers, margin changes, misc consistency
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
button,
|
||||
input {
|
||||
*overflow: visible; // Inner spacing ie IE6/7
|
||||
line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
|
||||
}
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
button,
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
cursor: pointer; // Cursors on all buttons applied consistently
|
||||
-webkit-appearance: button; // Style clickable inputs in iOS
|
||||
}
|
||||
input[type="search"] { // Appearance in Safari/Chrome
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
input[type="search"]::-webkit-search-decoration,
|
||||
input[type="search"]::-webkit-search-cancel-button {
|
||||
-webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
|
||||
}
|
||||
textarea {
|
||||
overflow: auto; // Remove vertical scrollbar in IE6-9
|
||||
vertical-align: top; // Readability and alignment cross-browser
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
//
|
||||
// Responsive: Large desktop and up
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
|
||||
// Fixed grid
|
||||
#grid > .core(@gridColumnWidth1200, @gridGutterWidth1200);
|
||||
|
||||
// Fluid grid
|
||||
#grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200);
|
||||
|
||||
// Input grid
|
||||
#grid > .input(@gridColumnWidth1200, @gridGutterWidth1200);
|
||||
|
||||
// Thumbnails
|
||||
.thumbnails {
|
||||
margin-left: -@gridGutterWidth1200;
|
||||
}
|
||||
.thumbnails > li {
|
||||
margin-left: @gridGutterWidth1200;
|
||||
}
|
||||
.row-fluid .thumbnails {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
}
|
||||
167
vendors/bootstrap/less/responsive-767px-max.less
vendored
167
vendors/bootstrap/less/responsive-767px-max.less
vendored
|
|
@ -1,167 +0,0 @@
|
|||
//
|
||||
// Responsive: Landscape phone to desktop/tablet
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
@media (max-width: 767px) {
|
||||
|
||||
// Padding to set content in a bit
|
||||
body {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
// Negative indent the now static "fixed" navbar
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
margin-left: -20px;
|
||||
margin-right: -20px;
|
||||
}
|
||||
// Remove padding on container given explicit padding set on body
|
||||
.container-fluid {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
// TYPOGRAPHY
|
||||
// ----------
|
||||
// Reset horizontal dl
|
||||
.dl-horizontal {
|
||||
dt {
|
||||
float: none;
|
||||
clear: none;
|
||||
width: auto;
|
||||
text-align: left;
|
||||
}
|
||||
dd {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// GRID & CONTAINERS
|
||||
// -----------------
|
||||
// Remove width from containers
|
||||
.container {
|
||||
width: auto;
|
||||
}
|
||||
// Fluid rows
|
||||
.row-fluid {
|
||||
width: 100%;
|
||||
}
|
||||
// Undo negative margin on rows and thumbnails
|
||||
.row,
|
||||
.thumbnails {
|
||||
margin-left: 0;
|
||||
}
|
||||
.thumbnails > li {
|
||||
float: none;
|
||||
margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
|
||||
}
|
||||
// Make all grid-sized elements block level again
|
||||
[class*="span"],
|
||||
.row-fluid [class*="span"] {
|
||||
float: none;
|
||||
display: block;
|
||||
width: auto;
|
||||
margin-left: 0;
|
||||
}
|
||||
.span12,
|
||||
.row-fluid .span12 {
|
||||
width: 100%;
|
||||
.box-sizing(border-box);
|
||||
}
|
||||
|
||||
// FORM FIELDS
|
||||
// -----------
|
||||
// Make span* classes full width
|
||||
.input-large,
|
||||
.input-xlarge,
|
||||
.input-xxlarge,
|
||||
input[class*="span"],
|
||||
select[class*="span"],
|
||||
textarea[class*="span"],
|
||||
.uneditable-input {
|
||||
.input-block-level();
|
||||
}
|
||||
// But don't let it screw up prepend/append inputs
|
||||
.input-prepend input,
|
||||
.input-append input,
|
||||
.input-prepend input[class*="span"],
|
||||
.input-append input[class*="span"] {
|
||||
display: inline-block; // redeclare so they don't wrap to new lines
|
||||
width: auto;
|
||||
}
|
||||
|
||||
// Modals
|
||||
.modal {
|
||||
position: fixed;
|
||||
top: 20px;
|
||||
left: 20px;
|
||||
right: 20px;
|
||||
width: auto;
|
||||
margin: 0;
|
||||
&.fade.show { top: auto; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// UP TO LANDSCAPE PHONE
|
||||
// ---------------------
|
||||
|
||||
@media (max-width: 480px) {
|
||||
|
||||
// Smooth out the collapsing/expanding nav
|
||||
.nav-collapse {
|
||||
-webkit-transform: translate3d(0, 0, 0); // activate the GPU
|
||||
}
|
||||
|
||||
// Block level the page header small tag for readability
|
||||
.page-header h1 small {
|
||||
display: block;
|
||||
line-height: @baseLineHeight;
|
||||
}
|
||||
|
||||
// Update checkboxes for iOS
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
// Remove the horizontal form styles
|
||||
.form-horizontal .control-group > label {
|
||||
float: none;
|
||||
width: auto;
|
||||
padding-top: 0;
|
||||
text-align: left;
|
||||
}
|
||||
// Move over all input controls and content
|
||||
.form-horizontal .controls {
|
||||
margin-left: 0;
|
||||
}
|
||||
// Move the options list down to align with labels
|
||||
.form-horizontal .control-list {
|
||||
padding-top: 0; // has to be padding because margin collaspes
|
||||
}
|
||||
// Move over buttons in .form-actions to align with .controls
|
||||
.form-horizontal .form-actions {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
// Modals
|
||||
.modal {
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
.modal-header .close {
|
||||
padding: 10px;
|
||||
margin: -10px;
|
||||
}
|
||||
|
||||
// Carousel
|
||||
.carousel-caption {
|
||||
position: static;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
//
|
||||
// Responsive: Tablet to desktop
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
@media (min-width: 768px) and (max-width: 979px) {
|
||||
|
||||
// Fixed grid
|
||||
#grid > .core(@gridColumnWidth768, @gridGutterWidth768);
|
||||
|
||||
// Fluid grid
|
||||
#grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
|
||||
|
||||
// Input grid
|
||||
#grid > .input(@gridColumnWidth768, @gridGutterWidth768);
|
||||
|
||||
// No need to reset .thumbnails here since it's the same @gridGutterWidth
|
||||
|
||||
}
|
||||
166
vendors/bootstrap/less/responsive-navbar.less
vendored
166
vendors/bootstrap/less/responsive-navbar.less
vendored
|
|
@ -1,166 +0,0 @@
|
|||
//
|
||||
// Responsive: Navbar
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// TABLETS AND BELOW
|
||||
// -----------------
|
||||
@media (max-width: @navbarCollapseWidth) {
|
||||
|
||||
// UNFIX THE TOPBAR
|
||||
// ----------------
|
||||
// Remove any padding from the body
|
||||
body {
|
||||
padding-top: 0;
|
||||
}
|
||||
// Unfix the navbars
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
position: static;
|
||||
}
|
||||
.navbar-fixed-top {
|
||||
margin-bottom: @baseLineHeight;
|
||||
}
|
||||
.navbar-fixed-bottom {
|
||||
margin-top: @baseLineHeight;
|
||||
}
|
||||
.navbar-fixed-top .navbar-inner,
|
||||
.navbar-fixed-bottom .navbar-inner {
|
||||
padding: 5px;
|
||||
}
|
||||
.navbar .container {
|
||||
width: auto;
|
||||
padding: 0;
|
||||
}
|
||||
// Account for brand name
|
||||
.navbar .brand {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin: 0 0 0 -5px;
|
||||
}
|
||||
|
||||
// COLLAPSIBLE NAVBAR
|
||||
// ------------------
|
||||
// Nav collapse clears brand
|
||||
.nav-collapse {
|
||||
clear: both;
|
||||
}
|
||||
// Block-level the nav
|
||||
.nav-collapse .nav {
|
||||
float: none;
|
||||
margin: 0 0 (@baseLineHeight / 2);
|
||||
}
|
||||
.nav-collapse .nav > li {
|
||||
float: none;
|
||||
}
|
||||
.nav-collapse .nav > li > a {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.nav-collapse .nav > .divider-vertical {
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .nav .nav-header {
|
||||
color: @navbarText;
|
||||
text-shadow: none;
|
||||
}
|
||||
// Nav and dropdown links in navbar
|
||||
.nav-collapse .nav > li > a,
|
||||
.nav-collapse .dropdown-menu a {
|
||||
padding: 9px 15px;
|
||||
font-weight: bold;
|
||||
color: @navbarLinkColor;
|
||||
.border-radius(3px);
|
||||
}
|
||||
// Buttons
|
||||
.nav-collapse .btn {
|
||||
padding: 4px 10px 4px;
|
||||
font-weight: normal;
|
||||
.border-radius(4px);
|
||||
}
|
||||
.nav-collapse .dropdown-menu li + li a {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.nav-collapse .nav > li > a:hover,
|
||||
.nav-collapse .dropdown-menu a:hover {
|
||||
background-color: @navbarBackground;
|
||||
}
|
||||
.navbar-inverse .nav-collapse .nav > li > a:hover,
|
||||
.navbar-inverse .nav-collapse .dropdown-menu a:hover {
|
||||
background-color: @navbarInverseBackground;
|
||||
}
|
||||
// Buttons in the navbar
|
||||
.nav-collapse.in .btn-group {
|
||||
margin-top: 5px;
|
||||
padding: 0;
|
||||
}
|
||||
// Dropdowns in the navbar
|
||||
.nav-collapse .dropdown-menu {
|
||||
position: static;
|
||||
top: auto;
|
||||
left: auto;
|
||||
float: none;
|
||||
display: block;
|
||||
max-width: none;
|
||||
margin: 0 15px;
|
||||
padding: 0;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
.border-radius(0);
|
||||
.box-shadow(none);
|
||||
}
|
||||
.nav-collapse .dropdown-menu:before,
|
||||
.nav-collapse .dropdown-menu:after {
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .dropdown-menu .divider {
|
||||
display: none;
|
||||
}
|
||||
// Forms in navbar
|
||||
.nav-collapse .navbar-form,
|
||||
.nav-collapse .navbar-search {
|
||||
float: none;
|
||||
padding: (@baseLineHeight / 2) 15px;
|
||||
margin: (@baseLineHeight / 2) 0;
|
||||
border-top: 1px solid @navbarBackground;
|
||||
border-bottom: 1px solid @navbarBackground;
|
||||
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)");
|
||||
}
|
||||
// Pull right (secondary) nav content
|
||||
.navbar .nav-collapse .nav.pull-right {
|
||||
float: none;
|
||||
margin-left: 0;
|
||||
}
|
||||
// Hide everything in the navbar save .brand and toggle button */
|
||||
.nav-collapse,
|
||||
.nav-collapse.collapse {
|
||||
overflow: hidden;
|
||||
height: 0;
|
||||
}
|
||||
// Navbar button
|
||||
.navbar .btn-navbar {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// STATIC NAVBAR
|
||||
// -------------
|
||||
.navbar-static .navbar-inner {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// DEFAULT DESKTOP
|
||||
// ---------------
|
||||
|
||||
@media (min-width: 980px) {
|
||||
|
||||
// Required to make the collapsing navbar work on regular desktops
|
||||
.nav-collapse.collapse {
|
||||
height: auto !important;
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
}
|
||||
43
vendors/bootstrap/less/responsive-utilities.less
vendored
43
vendors/bootstrap/less/responsive-utilities.less
vendored
|
|
@ -1,43 +0,0 @@
|
|||
//
|
||||
// Responsive: Utility classes
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Hide from screenreaders and browsers
|
||||
// Credit: HTML5 Boilerplate
|
||||
.hidden {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
// Visibility utilities
|
||||
|
||||
// For desktops
|
||||
.visible-phone { display: none !important; }
|
||||
.visible-tablet { display: none !important; }
|
||||
.hidden-phone { }
|
||||
.hidden-tablet { }
|
||||
.hidden-desktop { display: none !important; }
|
||||
.visible-desktop { display: inherit !important; }
|
||||
|
||||
// Tablets & small desktops only
|
||||
@media (min-width: 768px) and (max-width: 979px) {
|
||||
// Hide everything else
|
||||
.hidden-desktop { display: inherit !important; }
|
||||
.visible-desktop { display: none !important ; }
|
||||
// Show
|
||||
.visible-tablet { display: inherit !important; }
|
||||
// Hide
|
||||
.hidden-tablet { display: none !important; }
|
||||
}
|
||||
|
||||
// Phones only
|
||||
@media (max-width: 767px) {
|
||||
// Hide everything else
|
||||
.hidden-desktop { display: inherit !important; }
|
||||
.visible-desktop { display: none !important; }
|
||||
// Show
|
||||
.visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
|
||||
// Hide
|
||||
.hidden-phone { display: none !important; }
|
||||
}
|
||||
48
vendors/bootstrap/less/responsive.less
vendored
48
vendors/bootstrap/less/responsive.less
vendored
|
|
@ -1,48 +0,0 @@
|
|||
/*!
|
||||
* Bootstrap Responsive v2.1.0
|
||||
*
|
||||
* Copyright 2012 Twitter, Inc
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||
*/
|
||||
|
||||
|
||||
// Responsive.less
|
||||
// For phone and tablet devices
|
||||
// -------------------------------------------------------------
|
||||
|
||||
|
||||
// REPEAT VARIABLES & MIXINS
|
||||
// -------------------------
|
||||
// Required since we compile the responsive stuff separately
|
||||
|
||||
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
|
||||
@import "mixins.less";
|
||||
|
||||
|
||||
// RESPONSIVE CLASSES
|
||||
// ------------------
|
||||
|
||||
@import "responsive-utilities.less";
|
||||
|
||||
|
||||
// MEDIA QUERIES
|
||||
// ------------------
|
||||
|
||||
// Large desktops
|
||||
@import "responsive-1200px-min.less";
|
||||
|
||||
// Tablets to regular desktops
|
||||
@import "responsive-768px-979px.less";
|
||||
|
||||
// Phones to portrait tablets and narrow desktops
|
||||
@import "responsive-767px-max.less";
|
||||
|
||||
|
||||
// RESPONSIVE NAVBAR
|
||||
// ------------------
|
||||
|
||||
// From 979px and below, show a button to toggle navbar contents
|
||||
@import "responsive-navbar.less";
|
||||
51
vendors/bootstrap/less/scaffolding.less
vendored
51
vendors/bootstrap/less/scaffolding.less
vendored
|
|
@ -1,51 +0,0 @@
|
|||
//
|
||||
// Scaffolding
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Body reset
|
||||
// -------------------------
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: @baseFontFamily;
|
||||
font-size: @baseFontSize;
|
||||
line-height: @baseLineHeight;
|
||||
color: @textColor;
|
||||
background-color: @bodyBackground;
|
||||
}
|
||||
|
||||
|
||||
// Links
|
||||
// -------------------------
|
||||
|
||||
a {
|
||||
color: @linkColor;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: @linkColorHover;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
// Images
|
||||
// -------------------------
|
||||
|
||||
.img-rounded {
|
||||
.border-radius(6px);
|
||||
}
|
||||
|
||||
.img-polaroid {
|
||||
padding: 4px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,.1);
|
||||
-moz-box-shadow: 0 1px 3px rgba(0,0,0,.1);
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
.img-circle {
|
||||
.border-radius(500px);
|
||||
}
|
||||
39
vendors/bootstrap/less/sprites.less
vendored
39
vendors/bootstrap/less/sprites.less
vendored
|
|
@ -1,39 +0,0 @@
|
|||
//
|
||||
// Sprites
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// ICONS
|
||||
// -----
|
||||
|
||||
// All icons receive the styles of the <i> tag with a base class
|
||||
// of .i and are then given a unique class to add width, height,
|
||||
// and background-position. Your resulting HTML will look like
|
||||
// <i class="icon-inbox"></i>.
|
||||
|
||||
// For the white version of the icons, just add the .icon-white class:
|
||||
// <i class="icon-inbox icon-white"></i>
|
||||
|
||||
[class^="icon-"],
|
||||
[class*=" icon-"] {
|
||||
display: inline-block;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
vertical-align: text-top;
|
||||
background-image: url("@{iconSpritePath}");
|
||||
background-position: 14px 14px;
|
||||
background-repeat: no-repeat;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
/* White icons with optional class, or on hover/active states of certain elements */
|
||||
.icon-white,
|
||||
.nav > .active > a > [class^="icon-"],
|
||||
.nav > .active > a > [class*=" icon-"],
|
||||
.dropdown-menu > li > a:hover > [class^="icon-"],
|
||||
.dropdown-menu > li > a:hover > [class*=" icon-"],
|
||||
.dropdown-menu > .active > a > [class^="icon-"],
|
||||
.dropdown-menu > .active > a > [class*=" icon-"] {
|
||||
background-image: url("@{iconWhiteSpritePath}");
|
||||
}
|
||||
25
vendors/bootstrap/less/tables.less
vendored
25
vendors/bootstrap/less/tables.less
vendored
|
|
@ -92,31 +92,22 @@
|
|||
// For first th or td in the first row in the first thead or tbody
|
||||
thead:first-child tr:first-child th:first-child,
|
||||
tbody:first-child tr:first-child td:first-child {
|
||||
-webkit-border-top-left-radius: 4px;
|
||||
border-top-left-radius: 4px;
|
||||
-moz-border-radius-topleft: 4px;
|
||||
border-radius: 4px 0 0 0;
|
||||
}
|
||||
thead:first-child tr:first-child th:last-child,
|
||||
tbody:first-child tr:first-child td:last-child {
|
||||
-webkit-border-top-right-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
-moz-border-radius-topright: 4px;
|
||||
border-radius: 0 4px 0 0;
|
||||
}
|
||||
// For first th or td in the first row in the first thead or tbody
|
||||
thead:last-child tr:last-child th:first-child,
|
||||
tbody:last-child tr:last-child td:first-child,
|
||||
tfoot:last-child tr:last-child td:first-child {
|
||||
.border-radius(0 0 0 4px);
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
-moz-border-radius-bottomleft: 4px;
|
||||
border-radius: 0 0 0 4px;
|
||||
}
|
||||
thead:last-child tr:last-child th:last-child,
|
||||
tbody:last-child tr:last-child td:last-child,
|
||||
tfoot:last-child tr:last-child td:last-child {
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
-moz-border-radius-bottomright: 4px;
|
||||
border-radius: 0 0 4px 0;
|
||||
}
|
||||
|
||||
// Special fixes to round the left border on the first td/th
|
||||
|
|
@ -124,17 +115,13 @@
|
|||
caption + tbody tr:first-child td:first-child,
|
||||
colgroup + thead tr:first-child th:first-child,
|
||||
colgroup + tbody tr:first-child td:first-child {
|
||||
-webkit-border-top-left-radius: 4px;
|
||||
border-top-left-radius: 4px;
|
||||
-moz-border-radius-topleft: 4px;
|
||||
border-radius: 4px 0 0 0;
|
||||
}
|
||||
caption + thead tr:first-child th:last-child,
|
||||
caption + tbody tr:first-child td:last-child,
|
||||
colgroup + thead tr:first-child th:last-child,
|
||||
colgroup + tbody tr:first-child td:last-child {
|
||||
-webkit-border-top-right-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
-moz-border-right-topleft: 4px;
|
||||
border-radius: 0 4px 0 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
52
vendors/bootstrap/less/thumbnails.less
vendored
52
vendors/bootstrap/less/thumbnails.less
vendored
|
|
@ -1,52 +0,0 @@
|
|||
//
|
||||
// Thumbnails
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
|
||||
|
||||
// Make wrapper ul behave like the grid
|
||||
.thumbnails {
|
||||
margin-left: -@gridGutterWidth;
|
||||
list-style: none;
|
||||
.clearfix();
|
||||
}
|
||||
// Fluid rows have no left margin
|
||||
.row-fluid .thumbnails {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
// Float li to make thumbnails appear in a row
|
||||
.thumbnails > li {
|
||||
float: left; // Explicity set the float since we don't require .span* classes
|
||||
margin-bottom: @baseLineHeight;
|
||||
margin-left: @gridGutterWidth;
|
||||
}
|
||||
|
||||
// The actual thumbnail (can be `a` or `div`)
|
||||
.thumbnail {
|
||||
display: block;
|
||||
padding: 4px;
|
||||
line-height: @baseLineHeight;
|
||||
border: 1px solid #ddd;
|
||||
.border-radius(4px);
|
||||
.box-shadow(0 1px 3px rgba(0,0,0,.055));
|
||||
.transition(all .2s ease-in-out);
|
||||
}
|
||||
// Add a hover state for linked versions only
|
||||
a.thumbnail:hover {
|
||||
border-color: @linkColor;
|
||||
.box-shadow(0 1px 4px rgba(0,105,214,.25));
|
||||
}
|
||||
|
||||
// Images and captions
|
||||
.thumbnail > img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.thumbnail .caption {
|
||||
padding: 9px;
|
||||
color: @gray;
|
||||
}
|
||||
70
vendors/bootstrap/less/tooltip.less
vendored
70
vendors/bootstrap/less/tooltip.less
vendored
|
|
@ -1,70 +0,0 @@
|
|||
//
|
||||
// Tooltips
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Base class
|
||||
.tooltip {
|
||||
position: absolute;
|
||||
z-index: @zindexTooltip;
|
||||
display: block;
|
||||
visibility: visible;
|
||||
padding: 5px;
|
||||
font-size: 11px;
|
||||
.opacity(0);
|
||||
&.in { .opacity(80); }
|
||||
&.top { margin-top: -3px; }
|
||||
&.right { margin-left: 3px; }
|
||||
&.bottom { margin-top: 3px; }
|
||||
&.left { margin-left: -3px; }
|
||||
}
|
||||
|
||||
// Wrapper for the tooltip content
|
||||
.tooltip-inner {
|
||||
max-width: 200px;
|
||||
padding: 3px 8px;
|
||||
color: @tooltipColor;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
background-color: @tooltipBackground;
|
||||
.border-radius(4px);
|
||||
}
|
||||
|
||||
// Arrows
|
||||
.tooltip-arrow {
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
}
|
||||
.tooltip {
|
||||
&.top .tooltip-arrow {
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
margin-left: -@tooltipArrowWidth;
|
||||
border-width: @tooltipArrowWidth @tooltipArrowWidth 0;
|
||||
border-top-color: @tooltipArrowColor;
|
||||
}
|
||||
&.right .tooltip-arrow {
|
||||
top: 50%;
|
||||
left: 0;
|
||||
margin-top: -@tooltipArrowWidth;
|
||||
border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0;
|
||||
border-right-color: @tooltipArrowColor;
|
||||
}
|
||||
&.left .tooltip-arrow {
|
||||
top: 50%;
|
||||
right: 0;
|
||||
margin-top: -@tooltipArrowWidth;
|
||||
border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth;
|
||||
border-left-color: @tooltipArrowColor;
|
||||
}
|
||||
&.bottom .tooltip-arrow {
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -@tooltipArrowWidth;
|
||||
border-width: 0 @tooltipArrowWidth @tooltipArrowWidth;
|
||||
border-bottom-color: @tooltipArrowColor;
|
||||
}
|
||||
}
|
||||
66
vendors/bootstrap/less/variables.less
vendored
66
vendors/bootstrap/less/variables.less
vendored
|
|
@ -127,8 +127,7 @@
|
|||
@zindexPopover: 1010;
|
||||
@zindexTooltip: 1030;
|
||||
@zindexFixedNavbar: 1030;
|
||||
@zindexModalBackdrop: 1040;
|
||||
@zindexModal: 1050;
|
||||
@zindexModal: 1101;
|
||||
|
||||
|
||||
// Sprite icons path
|
||||
|
|
@ -152,44 +151,6 @@
|
|||
@wellBackground: #f5f5f5;
|
||||
|
||||
|
||||
// Navbar
|
||||
// -------------------------
|
||||
@navbarCollapseWidth: 979px;
|
||||
|
||||
@navbarHeight: 40px;
|
||||
@navbarBackground: darken(@navbarBackgroundHighlight, 5%);
|
||||
@navbarBackgroundHighlight: #ffffff;
|
||||
@navbarBorder: darken(@navbarBackground, 12%);
|
||||
|
||||
@navbarText: @gray;
|
||||
@navbarLinkColor: @gray;
|
||||
@navbarLinkColorHover: @grayDark;
|
||||
@navbarLinkColorActive: @gray;
|
||||
@navbarLinkBackgroundHover: transparent;
|
||||
@navbarLinkBackgroundActive: darken(@navbarBackground, 5%);
|
||||
|
||||
@navbarBrandColor: @navbarLinkColor;
|
||||
|
||||
// Inverted navbar
|
||||
@navbarInverseBackground: #111111;
|
||||
@navbarInverseBackgroundHighlight: #222222;
|
||||
@navbarInverseBorder: #252525;
|
||||
|
||||
@navbarInverseText: @grayLight;
|
||||
@navbarInverseLinkColor: @grayLight;
|
||||
@navbarInverseLinkColorHover: @white;
|
||||
@navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
|
||||
@navbarInverseLinkBackgroundHover: transparent;
|
||||
@navbarInverseLinkBackgroundActive: @navbarInverseBackground;
|
||||
|
||||
@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
|
||||
@navbarInverseSearchBackgroundFocus: @white;
|
||||
@navbarInverseSearchBorder: @navbarInverseBackground;
|
||||
@navbarInverseSearchPlaceholderColor: #ccc;
|
||||
|
||||
@navbarInverseBrandColor: @navbarInverseLinkColor;
|
||||
|
||||
|
||||
// Pagination
|
||||
// -------------------------
|
||||
@paginationBackground: #fff;
|
||||
|
|
@ -197,13 +158,6 @@
|
|||
@paginationActiveBackground: #f5f5f5;
|
||||
|
||||
|
||||
// Hero unit
|
||||
// -------------------------
|
||||
@heroUnitBackground: @grayLighter;
|
||||
@heroUnitHeadingColor: inherit;
|
||||
@heroUnitLeadColor: inherit;
|
||||
|
||||
|
||||
// Form states and alerts
|
||||
// -------------------------
|
||||
@warningText: #c09853;
|
||||
|
|
@ -223,24 +177,6 @@
|
|||
@infoBorder: darken(spin(@infoBackground, -10), 7%);
|
||||
|
||||
|
||||
// Tooltips and popovers
|
||||
// -------------------------
|
||||
@tooltipColor: #fff;
|
||||
@tooltipBackground: #000;
|
||||
@tooltipArrowWidth: 5px;
|
||||
@tooltipArrowColor: @tooltipBackground;
|
||||
|
||||
@popoverBackground: #fff;
|
||||
@popoverArrowWidth: 10px;
|
||||
@popoverArrowColor: #fff;
|
||||
@popoverTitleBackground: darken(@popoverBackground, 3%);
|
||||
|
||||
// Special enhancement for popovers
|
||||
@popoverArrowOuterWidth: @popoverArrowWidth + 1;
|
||||
@popoverArrowOuterColor: rgba(0,0,0,.25);
|
||||
|
||||
|
||||
|
||||
// GRID
|
||||
// --------------------------------------------------
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue