mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-06 07:57:02 +03:00
Uploading and preparing the repository to the dev version.
Original unminified source code (dev folder - js, css, less) (fixes #6) Grunt build system Multiple identities correction (fixes #9) Compose html editor (fixes #12) New general settings - Loading Description New warning about default admin password Split general and login screen settings
This commit is contained in:
parent
afad45137e
commit
4cc2207513
846 changed files with 99453 additions and 2123 deletions
39
rainloop/v/0.0.0/app/templates/Views/AdminLogin.html
Normal file
39
rainloop/v/0.0.0/app/templates/Views/AdminLogin.html
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<div class="b-login-content">
|
||||
<div class="loginFormWrapper">
|
||||
<center>
|
||||
<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>
|
||||
<form class="form-horizontal span4 wrapper loginForm thm-login" action="#/" onsubmit="return false;" data-bind="command: submitCommand">
|
||||
<div class="control-group" data-bind="css: {'error': loginError}">
|
||||
<div class="input-append">
|
||||
<input class="inputLogin span4" placeholder="Login" type="text"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: login, hasFocus: loginFocus" />
|
||||
<span class="add-on">
|
||||
<i class="icon-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': passwordError}">
|
||||
<div class="input-append">
|
||||
<input class="inputPassword span4" placeholder="Password" type="password"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: password" />
|
||||
<span class="add-on">
|
||||
<i class="icon-key"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<button type="submit" class="btn btn-large span4 buttonLogin" data-bind="command: submitCommand">
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: submitRequest"></i>
|
||||
<span data-bind="visible: !submitRequest()">Log into the admin panel</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</center>
|
||||
</div>
|
||||
<div class="loginAfter"></div>
|
||||
<div>
|
||||
17
rainloop/v/0.0.0/app/templates/Views/AdminMenu.html
Normal file
17
rainloop/v/0.0.0/app/templates/Views/AdminMenu.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<div class="b-admin-left g-ui-user-select-none">
|
||||
<div class="b-toolbar"></div>
|
||||
<div class="b-content thm-settings-menu">
|
||||
<div class="b-admin-menu" data-bind="foreach: menu">
|
||||
<!-- ko if: disabled -->
|
||||
<span class="e-item disabled">
|
||||
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
|
||||
</span>
|
||||
<!-- /ko -->
|
||||
<!-- ko ifnot: disabled -->
|
||||
<a class="e-item selectable" href="#" data-bind="css: {'selected': selected }, attr: { 'href': $root.link(route) }">
|
||||
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
|
||||
</a>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
23
rainloop/v/0.0.0/app/templates/Views/AdminPane.html
Normal file
23
rainloop/v/0.0.0/app/templates/Views/AdminPane.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<div class="b-settings b-admin-right g-ui-user-select-none">
|
||||
<div class="b-toolbar">
|
||||
<div class="btn-toolbar">
|
||||
<h4 class="pull-left">
|
||||
Admin Panel
|
||||
|
||||
(<span data-bind="text: adminDomain"></span> – <span data-bind="text: version"></span>)
|
||||
</h4>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-narrow" data-bind="click: logoutClick">
|
||||
<i class="icon-switch"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-content" data-bind="nano: true">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div id="rl-settings-subscreen" class="b-settings-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<tr class="e-item" data-bind="css: {'disabled': disabled }">
|
||||
<td class="e-action">
|
||||
<span class="domain-name" data-bind="text: name"></span>
|
||||
</td>
|
||||
<td>
|
||||
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete" data-bind="css: {'delete-access': deleteAccess()}, click: function(oDomain) { $root.deleteDomain(oDomain); }">
|
||||
<span>Are you sure?</span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="delete-domain" data-bind="visible: !deleteAccess(), click: function (oDomain) { $root.domainForDeletion(oDomain); }">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="disable-domain" data-bind="click: function (oDomain) { $root.disableDomain(oDomain); }">
|
||||
<i data-bind="css: {'icon-checkbox-checked': !disabled(), 'icon-checkbox-unchecked': disabled}"></i>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
<div class="b-admin-domains" >
|
||||
<div class="legend">
|
||||
Domains
|
||||
</div>
|
||||
<div>
|
||||
<blockquote>
|
||||
<p class="muted">
|
||||
List of domains webmail is allowed to access.
|
||||
</p>
|
||||
</blockquote>
|
||||
<a class="btn" data-bind="click: createDomain">
|
||||
<i class="icon-plus"></i>
|
||||
|
||||
Add Domain
|
||||
</a>
|
||||
<div class="process-place" data-bind="style: {'visibility': visibility }">
|
||||
<i class="icon-spinner-2 animated"></i>
|
||||
|
||||
loading...
|
||||
</div>
|
||||
<table class="table table-hover b-admin-domains-list-table" data-bind="i18nUpdate: domains">
|
||||
<colgroup>
|
||||
<col />
|
||||
<col style="width: 140px" />
|
||||
<col style="width: 1%" />
|
||||
<col style="width: 1%" />
|
||||
</colgroup>
|
||||
<tbody data-bind="template: { name: 'AdminSettingsDomainListItem', foreach: domains }"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
<div class="b-admin-general">
|
||||
<div class="row" data-bind="visible: weakPassword">
|
||||
<div class="alert alert-error span8">
|
||||
<h4>Warning!</h4>
|
||||
<br />
|
||||
You are using the default admin password.
|
||||
<br />
|
||||
For security reasons please <strong><a href="#/security">change</a></strong>
|
||||
password to something else now.
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-bind="visible: !contactsSupported">
|
||||
<div class="alert span8">
|
||||
<h4>Notice!</h4>
|
||||
<br />
|
||||
<strong>Contacts</strong> functions are not supported.
|
||||
<br />
|
||||
You need to install or enable <strong>PDO (sqlite)</strong> exstenstion on your server.
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
General
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Title
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" data-bind="value: title, saveTrigger: titleTrigger" />
|
||||
<div data-bind="saveTrigger: titleTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Loading Description
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" data-bind="value: loadingDesc, saveTrigger: loadingDescTrigger" />
|
||||
<div data-bind="saveTrigger: loadingDescTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Language
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: languagesOptions, value: mainLanguage, optionsText: 'optText', optionsValue: 'optValue', saveTrigger: languageTrigger"></select>
|
||||
<div data-bind="saveTrigger: languageTrigger"></div>
|
||||
<br />
|
||||
<br />
|
||||
<label data-bind="click: function () { allowLanguagesOnSettings(!allowLanguagesOnSettings()); }">
|
||||
<i data-bind="css: allowLanguagesOnSettings() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow language selection on settings screen
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Theme
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: themesOptions, value: mainTheme, optionsText: 'optText', optionsValue: 'optValue', saveTrigger: themeTrigger"></select>
|
||||
<div data-bind="saveTrigger: themeTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { allowThemes(!allowThemes()); }">
|
||||
<i data-bind="css: allowThemes() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow theme selection on settings screen
|
||||
</label>
|
||||
<label data-bind="click: function () { allowCustomTheme(!allowCustomTheme()); }">
|
||||
<i data-bind="css: allowCustomTheme() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow customized theme
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { allowAdditionalAccounts(!allowAdditionalAccounts()); }">
|
||||
<i data-bind="css: allowAdditionalAccounts() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow additional accounts
|
||||
</label>
|
||||
<label data-bind="click: function () { allowIdentities(!allowIdentities()); }">
|
||||
<i data-bind="css: allowIdentities() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow identities
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
<div class="b-admin-licensing" >
|
||||
<div class="row">
|
||||
<div class="alert alert-info span10">
|
||||
RainLoop Webmail is licensed under <strong>Creative Commons
|
||||
<br />
|
||||
Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)</strong> license.
|
||||
<br />
|
||||
<br />
|
||||
You are <strong>free</strong> to use it for your <strong>personal</strong> or <strong>non-profit</strong> projects.
|
||||
<br />
|
||||
<br />
|
||||
Commercial use of <strong>RainLoop Webmail</strong> requires getting a
|
||||
<!-- <a href="http://rainloop.net/purchase/" target="_blank">permission</a> -->
|
||||
permission (Coming soon).
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Your Domain
|
||||
</label>
|
||||
<div class="controls">
|
||||
<span class="help-inline" style="padding-top: 5px;">
|
||||
<strong data-bind="text: adminDomain"></strong>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: !subscriptionEnabled()">
|
||||
<div class="controls">
|
||||
<div class="alert alert-block span8" style="margin-left: 0">
|
||||
This domain can't be licensed for commercial use.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: subscriptionEnabled">
|
||||
<div class="controls">
|
||||
<div data-bind="visible: licensingProcess()">
|
||||
<i class="icon-spinner-2 animated"></i>
|
||||
|
||||
checking...
|
||||
</div>
|
||||
<div data-bind="visible: !licensingProcess()">
|
||||
<div class="alert alert-block span8" style="margin-left: 0" data-bind="visible: !licensing()">
|
||||
This domain isn't licensed for commercial use.
|
||||
</div>
|
||||
<div data-bind="visible: licensing()">
|
||||
<div class="alert alert-success span8" style="margin-left: 0" data-bind="visible: licenseValid() && '' === licenseError()">
|
||||
<p>
|
||||
This domain is licensed for commercial use
|
||||
</p>
|
||||
<p data-bind="visible: 0 < licenseExpired()">
|
||||
<b>Subscription expires:</b>
|
||||
|
||||
<span data-bind="text: licenseExpiredMomentValue()"></span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="alert alert-error span8" style="margin-left: 0" data-bind="visible: !licenseValid() && '' !== licenseError(), text: licenseError"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: subscriptionEnabled() && !licensingProcess()">
|
||||
<div class="controls">
|
||||
<button class="btn" data-bind="click: showActivationForm">
|
||||
<i class="icon-love"></i>
|
||||
|
||||
Activate Subscription Key
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
33
rainloop/v/0.0.0/app/templates/Views/AdminSettingsLogin.html
Normal file
33
rainloop/v/0.0.0/app/templates/Views/AdminSettingsLogin.html
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<div class="b-admin-general">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
Login Screen
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Default Domain
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" data-bind="value: defaultDomain, saveTrigger: defaultDomainTrigger" />
|
||||
<div data-bind="saveTrigger: defaultDomainTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { allowLanguagesOnLogin(!allowLanguagesOnLogin()); }">
|
||||
<i data-bind="css: allowLanguagesOnLogin() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow language selection on login screen
|
||||
</label>
|
||||
<label data-bind="click: function () { determineUserLanguage(!determineUserLanguage()); }">
|
||||
<i data-bind="css: determineUserLanguage() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Try to determine user language
|
||||
</label>
|
||||
<br />
|
||||
<label data-bind="click: function () { allowCustomLogin(!allowCustomLogin()); }">
|
||||
<i data-bind="css: allowCustomLogin() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Enable additional Login field on login screen
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<div class="b-admin-packages">
|
||||
|
||||
<div class="alert" data-bind="visible: !packagesReal() && !packagesLoading()">
|
||||
Cannot access the repository at the moment.
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div class="alert" data-bind="visible: !packagesMainUpdatable() && !packagesLoading()">
|
||||
Unable to update RainLoop Webmail source!
|
||||
</div>
|
||||
-->
|
||||
|
||||
<div class="alert" data-bind="visible: '' !== packagesError()">
|
||||
<button type="button" class="close" data-bind="click: function () { packagesError('') }">×</button>
|
||||
<span data-bind="text: packagesError"></span>
|
||||
</div>
|
||||
|
||||
<div class="process-place" data-bind="style: {'visibility': visibility }">
|
||||
<i class="icon-spinner-2 animated"></i>
|
||||
|
||||
loading...
|
||||
</div>
|
||||
|
||||
<div data-bind="visible: 0 < packagesAvailableForUpdate().length">
|
||||
<div class="legend">
|
||||
Available for Update (<span data-bind="text: packagesAvailableForUpdate().length"></span>)
|
||||
</div>
|
||||
<div data-bind="template: { name: 'AdminSettingsPackagesTable', data: {f: packagesAvailableForUpdate} }"></div>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<div data-bind="visible: 0 < packagesCurrent().length">
|
||||
<div class="legend">
|
||||
Installed Packages
|
||||
</div>
|
||||
<div data-bind="template: { name: 'AdminSettingsPackagesTable', data: {f: packagesCurrent} }"></div>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<div data-bind="visible: 0 < packagesAvailableForInstallation().length">
|
||||
<div class="legend">
|
||||
Available for Installation
|
||||
</div>
|
||||
<div data-bind="template: { name: 'AdminSettingsPackagesTable', data: {f: packagesAvailableForInstallation} }"></div>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<tr class="e-item">
|
||||
<td class="package-name-parent">
|
||||
<i class="package-img" data-bind="css: 'core' === type ? 'icon-fire' : 'icon-lightning'"></i>
|
||||
<span class="package-name" data-bind="text: name, css: {'core': 'core' === type}"></span>
|
||||
<span class="package-installed pull-right" data-bind="text: installed"></span>
|
||||
<div class="package-desc" data-bind="text: desc"></div>
|
||||
</td>
|
||||
<td class="package-version-parent">
|
||||
<span class="package-version" data-bind="text: version"></span>
|
||||
</td>
|
||||
<td class="package-release-parent">
|
||||
<span class="package-release" data-bind="text: release"></span>
|
||||
</td>
|
||||
<td class="package-actions-parent">
|
||||
<i class="icon-download e-action button-download" data-bind="visible: !loading() && canBeUpdated, click: function () { $root.installPackage($data); }"></i>
|
||||
|
||||
<i class="icon-trash e-action button-delete" data-bind="visible: !loading() && canBeDeleted, click: function () { $root.deletePackage($data); }"></i>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: loading"></i>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<table class="table table-hover table-bordered b-admin-packages-list-table" data-bind="i18nUpdate: f">
|
||||
<colgroup>
|
||||
<col />
|
||||
<col style="width: 100px" />
|
||||
<col style="width: 100px" />
|
||||
<col style="width: 80px" />
|
||||
</colgroup>
|
||||
<tbody data-bind="template: { name: 'AdminSettingsPackagesListItem', foreach: f }"></tbody>
|
||||
</table>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<tr class="e-item" data-bind="css: {'disabled': disabled }">
|
||||
<td>
|
||||
<i class="plugin-img icon-lightning"></i>
|
||||
<span class="plugin-name" data-bind="text: name"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="configure-plugin" data-bind="click: function (oPlugin) { $root.configurePlugin(oPlugin); }">
|
||||
<i class="icon-settings5 e-action"></i>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="disable-plugin" data-bind="click: function (oPlugin) { $root.disablePlugin(oPlugin); }">
|
||||
<i data-bind="css: {'e-action icon-checkbox-checked': !disabled(), 'e-action icon-checkbox-unchecked': disabled}"></i>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<div class="b-admin-plugin-property">
|
||||
<label class="control-label">
|
||||
<span data-bind="text: Label, visible: 5 !== Type"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<!-- ko if: 0 === Type || 1 === Type -->
|
||||
<input type="text" data-bind="value: value" />
|
||||
<!-- /ko -->
|
||||
<!-- ko if: 3 === Type -->
|
||||
<input type="password" data-bind="value: value" />
|
||||
<!-- /ko -->
|
||||
<!-- ko if: 2 === Type -->
|
||||
<textarea data-bind="value: value"></textarea>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: 4 === Type -->
|
||||
<select data-bind="options: Default, value: value"></select>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: 5 === Type -->
|
||||
<label data-bind="click: function () { value(!value()); }">
|
||||
<i data-bind="css: value() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span data-bind="text: Label"></span>
|
||||
</label>
|
||||
<!-- /ko -->
|
||||
<span class="help-block" style="color: #ccc" data-bind="text: Desc, visible: '' !== Desc"></span>
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<div class="b-admin-plugins">
|
||||
|
||||
<div class="row">
|
||||
<div class="alert span8" data-bind="visible: '' !== pluginsError()">
|
||||
<button type="button" class="close" data-bind="click: function () { pluginsError('') }">×</button>
|
||||
<span data-bind="text: pluginsError"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="process-place" data-bind="style: {'visibility': visibility }">
|
||||
<i class="icon-spinner-2 animated"></i>
|
||||
|
||||
loading...
|
||||
</div>
|
||||
|
||||
<div class="legend">
|
||||
Plugins
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label data-bind="click: function () { enabledPlugins(!enabledPlugins()); }">
|
||||
<i data-bind="css: enabledPlugins() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
Enable plugins
|
||||
</label>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="alert alert-info span8" data-bind="visible: 0 === plugins().length">
|
||||
No plugins have yet been installed.
|
||||
<br />
|
||||
<br />
|
||||
<strong><a href="#/packages">Click here install new!</a></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span8">
|
||||
<table class="table table-hover b-admin-plugins-list-table" data-bind="i18nUpdate: plugins, visible: 0 < plugins().length, css: {'disabled': !enabledPlugins()}">
|
||||
<colgroup>
|
||||
<col />
|
||||
<col style="width: 30px" />
|
||||
<col style="width: 30px" />
|
||||
</colgroup>
|
||||
<tbody data-bind="template: { name: 'AdminSettingsPluginListItem', foreach: plugins }"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<div class="adminSecurity">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
Security
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { csrfProtection(!csrfProtection()); }">
|
||||
<i data-bind="css: csrfProtection() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<abbr title="Cross-site request forgery" class="initialism">CSRF</abbr> protection
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { usageStatistics(!usageStatistics()); }">
|
||||
<i data-bind="css: usageStatistics() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
Automatically send usage statistics to RainLoop team (It does not include any personal information)
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<a href="#" target="_blank" class="g-ui-link" data-bind="link: phpInfoLink()">Show PHP information</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
Changer Admin Password
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Current password
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: adminPassword, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
New password
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: adminPasswordNew, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<a class="btn" data-bind="command: saveNewAdminPasswordCommand, css: { 'btn-success': adminPasswordUpdateSuccess, 'btn-danger': adminPasswordUpdateError }">
|
||||
<i class="icon-key" data-bind="css: {'icon-white': adminPasswordUpdateSuccess() || adminPasswordUpdateError() }"></i>
|
||||
|
||||
Update Password
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
117
rainloop/v/0.0.0/app/templates/Views/AdminSettingsSocial.html
Normal file
117
rainloop/v/0.0.0/app/templates/Views/AdminSettingsSocial.html
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
<div class="adminSecurity">
|
||||
<div class="row">
|
||||
<div class="alert alert-info span10">
|
||||
Detailed information on social integration is found at
|
||||
<a href="http://rainloop.net/docs/social/" target="_blank">http://rainloop.net/docs/social/</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
Google
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { googleEnable(!googleEnable()); }">
|
||||
<i data-bind="css: googleEnable() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Enable Google Integration
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Client ID
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: googleClientID, saveTrigger: googleTrigger1" />
|
||||
<div data-bind="saveTrigger: googleTrigger1"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Client Secret
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: googleClientSecret, saveTrigger: googleTrigger2" />
|
||||
<div data-bind="saveTrigger: googleTrigger2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="legend">
|
||||
Facebook
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { facebookEnable(!facebookEnable()); }">
|
||||
<i data-bind="css: facebookEnable() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Enable Facebook Integration
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
App ID
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: facebookAppID, saveTrigger: facebookTrigger1" />
|
||||
<div data-bind="saveTrigger: facebookTrigger1"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
App Secret
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: facebookAppSecret, saveTrigger: facebookTrigger2" />
|
||||
<div data-bind="saveTrigger: facebookTrigger2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="legend">
|
||||
Twitter
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { twitterEnable(!twitterEnable()); }">
|
||||
<i data-bind="css: twitterEnable() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Enable Twitter Integration
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Consumer Key
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: twitterConsumerKey, saveTrigger: twitterTrigger1" />
|
||||
<div data-bind="saveTrigger: twitterTrigger1"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Consumer Secret
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: twitterConsumerSecret, saveTrigger: twitterTrigger2" />
|
||||
<div data-bind="saveTrigger: twitterTrigger2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="legend">
|
||||
Dropbox
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { dropboxEnable(!dropboxEnable()); }">
|
||||
<i data-bind="css: dropboxEnable() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Enable Dropbox Integration
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Api Key
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: dropboxApiKey, saveTrigger: dropboxTrigger1" />
|
||||
<div data-bind="saveTrigger: dropboxTrigger1"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<div class="b-attacment">
|
||||
<label>
|
||||
<input type="checkbox" data-bind="checked: enabled" />
|
||||
|
||||
<span class="name" data-bind="text: fileName"></span>
|
||||
(<span class="size" data-bind="text: friendlySize"></span>)
|
||||
</label>
|
||||
</div>
|
||||
<br />
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<div class="b-attacment-in-process" data-bind="css: {'error': '' !== error(), 'uploading': uploading, 'waiting': waiting }, in18nInit: true">
|
||||
<a class="close" data-bind="click: cancel">×</a>
|
||||
<span class="uploading"><i class="icon-spinner-2 animated"></i></span>
|
||||
<span class="namedStr">
|
||||
<span class="name" data-bind="text: fileName"></span>
|
||||
|
||||
(<span class="size" data-bind="text: friendlySize"></span>)
|
||||
<span class="upload-progress" data-bind="text: progress"></span>
|
||||
</span>
|
||||
<div class="error">
|
||||
<span data-bind="text: error"></span>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
99
rainloop/v/0.0.0/app/templates/Views/Login.html
Normal file
99
rainloop/v/0.0.0/app/templates/Views/Login.html
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
<div class="b-login-content">
|
||||
<div class="loginFormWrapper">
|
||||
<center>
|
||||
<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>
|
||||
<form class="form-horizontal span4 wrapper loginForm thm-login" action="#/" onsubmit="return false;" data-bind="command: submitCommand">
|
||||
{{INCLUDE/TopControlGroup/PLACE}}
|
||||
<div class="control-group" data-bind="css: {'error': emailError}">
|
||||
<div class="input-append">
|
||||
<input class="i18n inputEmail span4" type="email" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: email, hasFocus: emailFocus" data-i18n-placeholder="LOGIN/LABEL_EMAIL" />
|
||||
<span class="add-on">
|
||||
<i class="icon-envelope"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': loginError}, visible: allowCustomLogin()">
|
||||
<div class="input-append">
|
||||
<input class="i18n inputLogin span4" type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: login, hasFocus: loginFocus" data-i18n-placeholder="LOGIN/LABEL_LOGIN" />
|
||||
<span class="add-on">
|
||||
<i class="icon-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': passwordError}">
|
||||
<div class="input-append">
|
||||
<input class="i18n inputPassword span4" type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: password" data-i18n-placeholder="LOGIN/LABEL_PASSWORD" />
|
||||
<span class="add-on">
|
||||
<i class="icon-key"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{{INCLUDE/BottomControlGroup/PLACE}}
|
||||
<div class="control-group">
|
||||
<button type="submit" class="btn btn-large span4 buttonLogin" data-bind="command: submitCommand">
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: submitRequest"></i>
|
||||
<span class="i18n" data-i18n-text="LOGIN/BUTTON_SIGN_IN" data-bind="visible: !submitRequest()"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="pull-left signMeLabel" data-bind="click: function () { signMe(!signMe()); }, visible: signMeVisibility">
|
||||
<i data-bind="css: signMe() ? 'checkboxSignMe icon-checkbox-checked' : 'checkboxSignMe icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="LOGIN/LABEL_SIGN_ME"></span>
|
||||
</label>
|
||||
<div class="pull-right">
|
||||
<div class="btn-group" data-bind="visible: socialLoginEnabled() || allowLanguagesOnLogin()">
|
||||
<a class="btn dropdown-toggle buttonLoginMore" data-toggle="dropdown">
|
||||
<i data-bind="css: langRequest() ? 'icon-spinner-2 animated' : 'icon-reorder'"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu">
|
||||
{{INCLUDE/MenuDropdownTop/PLACE}}
|
||||
<li class="e-item" data-bind="visible: facebookLoginEnabled">
|
||||
<a class="e-link" data-bind="command: facebookCommand">
|
||||
<i class="icon-facebook-2"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="LOGIN/TITLE_SIGN_IN_FACEBOOK"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="visible: googleLoginEnabled">
|
||||
<a class="e-link" data-bind="command: googleCommand">
|
||||
<i class="icon-google"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="LOGIN/TITLE_SIGN_IN_GOOGLE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="visible: twitterLoginEnabled">
|
||||
<a class="e-link" data-bind="command: twitterCommand">
|
||||
<i class="icon-twitter"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="LOGIN/TITLE_SIGN_IN_TWITTER"></span>
|
||||
</a>
|
||||
</li>
|
||||
{{INCLUDE/MenuDropdownMiddle/PLACE}}
|
||||
<li class="divider" data-bind="visible: socialLoginEnabled() && allowLanguagesOnLogin()"></li>
|
||||
<li class="e-item" data-bind="visible: allowLanguagesOnLogin">
|
||||
<a class="e-link" data-bind="click: selectLanguage">
|
||||
<label class="flag-selector">
|
||||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + mainLanguage()" style=""></span>
|
||||
</span>
|
||||
<span class="flag-name" data-bind="text: mainLanguageFullName"></span>
|
||||
</label>
|
||||
</a>
|
||||
</li>
|
||||
{{INCLUDE/MenuDropdownBottom/PLACE}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</center>
|
||||
<div class="loginAfter"></div>
|
||||
</div>
|
||||
19
rainloop/v/0.0.0/app/templates/Views/MailFolderList.html
Normal file
19
rainloop/v/0.0.0/app/templates/Views/MailFolderList.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<div class="b-folders g-ui-user-select-none thm-folders">
|
||||
<div class="b-toolbar btn-toolbar">
|
||||
<a class="btn buttonCompose" data-placement="bottom" data-bind="click: composeClick, tooltip: 'FOLDER_LIST/BUTTON_COMPOSE'">
|
||||
<i class="icon-pencil"></i>
|
||||
</a>
|
||||
<a class="btn buttonContacts" data-placement="bottom" data-bind="visible: allowContacts, click: contactsClick, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
|
||||
<i class="icon-phonebook"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="b-content" data-bind="nano: true">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div data-bind="template: { name: 'MailFolderListSystemItem', foreach: folderListSystem }"></div>
|
||||
<hr class="b-list-delimiter" />
|
||||
<div data-bind="template: { name: 'MailFolderListItem', foreach: folderList }"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
10
rainloop/v/0.0.0/app/templates/Views/MailFolderListItem.html
Normal file
10
rainloop/v/0.0.0/app/templates/Views/MailFolderListItem.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<div class="e-item" data-bind="visible: visible">
|
||||
<a class="e-link" data-bind="droppable: function (oEvent, oUi) { $root.messagesDrop($data, oUi); },
|
||||
droppableOver: function (oEvent, oUi) { $root.messagesDropOver($data, oUi); },
|
||||
droppableOut: function (oEvent, oUi) { $root.messagesDropOut($data, oUi); },
|
||||
css: { 'selected': selected() && !isSystemFolder(), 'selectable': selectableForFolderList, 'hidden' : hidden, 'print-count': 0 < printableUnreadCount().length, 'system': isSystemFolder, 'anim-action-class': actionBlink }">
|
||||
<i data-bind="css: collapsedCss()"></i>
|
||||
<span class="name" data-bind="text: name"></span><!-- <span class="badge pull-right count" data-bind="text: printableUnreadCount"></span> -->
|
||||
</a>
|
||||
<div class="b-sub-folders" data-bind="template: { name: 'MailFolderListItem', foreach: subFolders }, css: { 'unpaddig-folder' : isUnpaddigFolder, 'collapsed': collapsed() }"></div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<div class="e-item b-folder-system-item">
|
||||
<a class="e-link" data-bind="droppable: function (oEvent, oUi) { $root.messagesDrop($data, oUi); }, css: { 'selected': selected, 'selectable': selectable, 'print-count': 0 < printableUnreadCount().length, 'anim-action-class': actionBlink }">
|
||||
<span class="badge pull-right count" data-bind="text: printableUnreadCount"></span>
|
||||
|
||||
<span class="name" data-bind="text: localName()"></span>
|
||||
</a>
|
||||
</div>
|
||||
163
rainloop/v/0.0.0/app/templates/Views/MailMessageList.html
Normal file
163
rainloop/v/0.0.0/app/templates/Views/MailMessageList.html
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
<div id="rl-resizer-left">
|
||||
<div class="messageList g-ui-user-select-none" data-bind="css: {'message-selected': isMessageSelected, 'loading': messageListCompleteLoadingThrottle, 'hideMessageListCheckbox': !useCheckboxesInList() }">
|
||||
<div class="toolbar">
|
||||
<div class="btn-toolbar">
|
||||
<div class="btn-group">
|
||||
<a class="btn dropdown-toggle buttonMove" data-toggle="dropdown" data-placement="bottom" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
|
||||
<i class="icon-legacyfilemanager"></i>
|
||||
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" data-bind="foreach: folderMenuForMove">
|
||||
<li class="e-item" data-bind="css: { 'disable': disable }, click: function () { if (!disable) $root.moveSelectedMessagesToFolder(id); }">
|
||||
<a class="e-link" data-bind="text: name"></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-danger buttonDelete" data-placement="bottom" data-bind="command: deleteCommand, tooltip: 'MESSAGE_LIST/BUTTON_DELETE'">
|
||||
<i class="icon-trash icon-white"></i>
|
||||
<span data-bind="text: 1 < messageListCheckedOrSelectedUidsWithSubMails().length ? ' (' + messageListCheckedOrSelectedUidsWithSubMails().length + ')' : ''"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group" data-placement="bottom" data-bind="visible: !isSpamFolder(), tooltip: 'MESSAGE_LIST/BUTTON_SPAM'">
|
||||
<a class="btn buttonSpam" data-bind="command: spamCommand">
|
||||
<i class="icon-bug"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown" data-placement="right" data-bind="tooltip: 'MESSAGE_LIST/BUTTON_MORE'">
|
||||
<i class="icon-reorder"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu">
|
||||
<li class="e-item" data-bind="click: listUnsetSeen, css: {'disable': !hasCheckedOrSelectedLines()}">
|
||||
<a class="e-link">
|
||||
<i class="icon2-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_UNSET_SEEN"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: listSetSeen, css: {'disable': !hasCheckedOrSelectedLines()}">
|
||||
<a class="e-link">
|
||||
<i class="icon2-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_SEEN"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: listSetFlags, css: {'disable': !hasCheckedOrSelectedLines()}">
|
||||
<a class="e-link">
|
||||
<i class="icon2-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_FLAG"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: listUnsetFlags, css: {'disable': !hasCheckedOrSelectedLines()}">
|
||||
<a class="e-link">
|
||||
<i class="icon2-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_UNSET_FLAG"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: listSetAllSeen, css: {'disable': !hasMessages()}">
|
||||
<a class="e-link">
|
||||
<i class="icon2-none"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_ALL_SEEN"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li class="e-item" data-bind="command: multyForwardCommand">
|
||||
<a class="e-link">
|
||||
<i class="icon-reply-all"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_MULTY_FORWARD"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li class="e-item" data-bind="command: deleteWithoutMoveCommand">
|
||||
<a class="e-link">
|
||||
<i class="icon-trash"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_DELETE_WITHOUT_MOVE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="command: clearCommand">
|
||||
<a class="e-link">
|
||||
<i class="icon-fire"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_EMPTY_FOLDER"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-message-list-wrapper">
|
||||
<div class="second-toolbar thm-message-list-top-toolbar">
|
||||
<div class="form-inline">
|
||||
<div class="input-append pull-right">
|
||||
<input class="i18n span4 inputSearch" type="text" tabindex="-1" placeholder="" data-i18n-placeholder="SEARCH/MAIN_INPUT_PLACEHOLDER" data-bind="value: inputProxyMessageListSearch, onEnter: searchEnterAction, hasfocus: inputMessageListSearchFocus" />
|
||||
<a class="btn buttonMoreSearch" data-bind="click: advancedSearchClick">
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
</div>
|
||||
<i class="checkboxCkeckAll" data-bind="css: checkAll() ? (isIncompleteChecked() ? 'icon-checkbox-partial' : 'icon-checkbox-checked') : 'icon-checkbox-unchecked', visible: !messageListCompleteLoadingThrottle()"></i>
|
||||
<i class="icon-spinner-2 animated" style="margin-top: 4px;" data-bind="visible: messageListCompleteLoadingThrottle"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mainDelimiter toolbarDelimiter"></div>
|
||||
<div class="b-content" data-bind="nano: true, initDom: dragOverBodyArea">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="listSearchDesc" data-bind="visible: '' !== messageListSearchDesc()">
|
||||
<a class="btn btn-small pull-right searchCancelButton" data-bind="click: cancelSearch">
|
||||
<i class="icon-remove"></i>
|
||||
</a>
|
||||
<span data-bind="text: messageListSearchDesc"></span>:
|
||||
</div>
|
||||
<div class="listDragOver" data-bind="css: {'viewAppendArea': dragOver() && '' === messageListError() && !popupVisibility(), 'dragOverEnter': dragOverEnter }, initDom: dragOverArea">
|
||||
<i class="icon-arrow-down-2 e-icon"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/PUT_MESSAGE_HERE"></span>
|
||||
</div>
|
||||
<div class="listClear" data-bind="visible: '' === messageListSearchDesc() && '' === messageListError() && 0 < messageList().length && (isSpamFolder() || isTrashFolder())">
|
||||
<span class="g-ui-link i18n" data-i18n-text="MESSAGE_LIST/BUTTON_EMPTY_FOLDER" data-bind="command: clearCommand"></span>
|
||||
</div>
|
||||
<div class="listError" data-bind="visible: !dragOver() && '' !== messageListError()">
|
||||
<span class="error" data-bind="text: messageListError"></span>
|
||||
</div>
|
||||
<div class="listEmptyList" data-bind="visible: !dragOver() && 0 === messageList().length && !messageListCompleteLoadingThrottle() && '' === messageListError() && '' === messageListSearch()">
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/EMPTY_LIST"></span>
|
||||
</div>
|
||||
<div class="listEmptyListLoading" data-bind="visible: !dragOver() && 0 === messageList().length &&
|
||||
messageListCompleteLoadingThrottle() && '' === messageListError()">
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/LIST_LOADING"></span><span class="textLoadingAnimationD1">.</span><span class="textLoadingAnimationD2">.</span><span class="textLoadingAnimationD3">.</span>
|
||||
</div>
|
||||
<div class="listEmptySearchList" data-bind="visible: !dragOver() && 0 === messageList().length && !messageListCompleteLoadingThrottle() && '' === messageListError() && '' !== messageListSearch()">
|
||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/EMPTY_SEARCH_LIST"></span>
|
||||
</div>
|
||||
<div data-bind="draggable: dragAndDronHelper, droppableSelector: '.b-folders .content.g-scrollbox'">
|
||||
<div class="messageListPlace" data-bind="template: { name: messageListItemTemplate(), foreach: messageList }"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mainDelimiter footerDelimiter"></div>
|
||||
<div class="b-footer thm-message-list-bottom-toolbar">
|
||||
<a class="btn buttonReload" data-placement="right" data-bind="command: reloadCommand, tooltip: 'MESSAGE_LIST/BUTTON_RELOAD'">
|
||||
<i class="icon-spinner-2" data-bind="css: {'animated': messageListCompleteLoadingThrottle}"></i>
|
||||
</a>
|
||||
<span data-bind="visible: 0 < userUsageProc(), tooltip2: quotaTooltip" class="e-quota">
|
||||
<span data-bind="text: userUsageProc"></span>%
|
||||
</span>
|
||||
<div class="pull-right">
|
||||
<div class="pagenator g-ui-user-select-none" data-bind="foreach: messageListPagenator">
|
||||
<a class="page" data-bind="css: { 'current': current, 'custom': custom }, title: title">
|
||||
<span class="pageNumber" data-bind="text: name"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<div class="messageListItem" data-bind="css: lineAsCcc()">
|
||||
<div class="sidebarParent">
|
||||
|
||||
</div>
|
||||
<div class="delimiter"></div>
|
||||
<div class="wrapper">
|
||||
<div class="flagParent">
|
||||
<span class="flagOn">
|
||||
<i class="icon-favorite"></i>
|
||||
</span>
|
||||
<span class="flagOnHalf">
|
||||
<i class="icon-favorite2"></i>
|
||||
</span>
|
||||
<span class="flagOff">
|
||||
<i class="icon-favorite2"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="dateParent actionHandle dragHandle">
|
||||
<span class="date" data-bind="text: momentShortDate, title: fullFormatDateValue"></span>
|
||||
</div>
|
||||
<div class="checkedParent">
|
||||
<i class="checkboxMessage" data-bind="css: checked() || selected() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||
</div>
|
||||
<div class="senderParent actionHandle dragHandle">
|
||||
<span class="threadsCountParent fullThreadHandle" data-bind="visible: '' !== threadsLenResult(), css: { 'lastSelected': !lastInCollapsedThread() }">
|
||||
<span lass="threadsCount" data-bind="visible: !lastInCollapsedThreadLoading(), text: threadsLenResult"></span>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: lastInCollapsedThreadLoading"></i>
|
||||
</span>
|
||||
<span class="replyFlag"><i class="icon-reply"></i> </span>
|
||||
<span class="forwardFlag"><i class="icon-forward"></i> </span>
|
||||
<span class="sender" data-bind="text: senderEmailsString"></span>
|
||||
|
||||
</div>
|
||||
<div class="attachmentParent actionHandle dragHandle">
|
||||
<span class="attachment">
|
||||
<i data-bind="css: attachmentIconClass"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="subjectParent actionHandle dragHandle">
|
||||
<span class="subject" data-bind="text: subject"></span>
|
||||
<span class="subject emptySubjectText" data-bind="text: $root.emptySubjectValue"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<div class="messageListItem e-single-line" data-bind="css: lineAsCcc()">
|
||||
<div class="sidebarParent">
|
||||
|
||||
</div>
|
||||
<div class="delimiter"></div>
|
||||
<div class="wrapper">
|
||||
<div class="dateParent actionHandle dragHandle">
|
||||
<span class="date" data-bind="text: momentShortDate, title: fullFormatDateValue"></span>
|
||||
</div>
|
||||
<div class="checkedParent">
|
||||
<i class="checkboxMessage" data-bind="css: checked() || selected() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||
</div>
|
||||
<div class="flagParent">
|
||||
<span class="flagOn">
|
||||
<i class="icon-favorite"></i>
|
||||
</span>
|
||||
<span class="flagOnHalf">
|
||||
<i class="icon-favorite2"></i>
|
||||
</span>
|
||||
<span class="flagOff">
|
||||
<i class="icon-favorite2"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="senderParent actionHandle dragHandle">
|
||||
<span class="threadsCountParent fullThreadHandle" data-bind="visible: '' !== threadsLenResult(), css: { 'lastSelected': !lastInCollapsedThread() }">
|
||||
<span lass="threadsCount" data-bind="visible: !lastInCollapsedThreadLoading(), text: threadsLenResult"></span>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: lastInCollapsedThreadLoading"></i>
|
||||
</span>
|
||||
<span class="replyFlag"><i class="icon-reply"></i> </span>
|
||||
<span class="forwardFlag"><i class="icon-forward"></i> </span>
|
||||
<span class="sender" data-bind="text: senderEmailsString"></span>
|
||||
|
||||
</div>
|
||||
<div class="attachmentParent actionHandle dragHandle">
|
||||
<span class="attachment">
|
||||
<i data-bind="css: attachmentIconClass"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="subjectParent actionHandle dragHandle">
|
||||
<span class="subject" data-bind="text: subject"></span>
|
||||
<span class="subject emptySubjectText" data-bind="text: $root.emptySubjectValue"></span>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
192
rainloop/v/0.0.0/app/templates/Views/MailMessageView.html
Normal file
192
rainloop/v/0.0.0/app/templates/Views/MailMessageView.html
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
<div id="rl-resizer-right">
|
||||
<div class="messageView" data-bind="css: {'message-selected': isMessageSelected}">
|
||||
<div class="toolbar g-ui-user-select-none">
|
||||
<div class="messageButtons btn-toolbar">
|
||||
<div class="btn-group" data-placement="bottom" data-bind="visible: !$root.usePreviewPane(), tooltip: 'MESSAGE/BUTTON_CLOSE'">
|
||||
<a class="btn buttonClose" data-bind="command: $root.closeMessage">
|
||||
<i class="icon-remove"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group" data-placement="bottom" data-bind="visible: $root.isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'">
|
||||
<a class="btn btn-success buttonEdit" data-bind="command: $root.messageEditCommand">
|
||||
<i class="icon-edit2 icon-white"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group" data-bind="visible: !$root.isDraftFolder()">
|
||||
<a class="btn buttonReply" data-placement="bottom" data-bind="command: $root.replyCommand, tooltip: 'MESSAGE/BUTTON_REPLY'">
|
||||
<i class="icon-reply"></i>
|
||||
</a>
|
||||
<a class="btn buttonReplyAll" data-placement="bottom" data-bind="command: $root.replyAllCommand, tooltip: 'MESSAGE/BUTTON_REPLY_ALL'">
|
||||
<i class="icon-reply-all"></i>
|
||||
</a>
|
||||
<a class="btn buttonForward" data-placement="bottom" data-bind=" command: $root.forwardCommand, tooltip: 'MESSAGE/BUTTON_FORWARD'">
|
||||
<i class="icon-forward"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a class="btn dropdown-toggle buttonMore" data-placement="right" data-toggle="dropdown" data-bind="command: $root.messageVisibilityCommand, tooltip: 'MESSAGE/BUTTON_MORE'">
|
||||
<i class="icon-reorder"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu">
|
||||
<li class="e-item" data-bind="visible: !$root.isDraftFolder()">
|
||||
<a class="e-link" data-bind="command: $root.forwardAsAttachmentCommand">
|
||||
<i class="icon-reply"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_FORWARD_AS_ATTACHMENT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" data-bind="visible: !$root.isDraftFolder()"></li>
|
||||
<li class="e-item">
|
||||
<a target="_blank" class="e-link" data-bind="click: function () { if (message()) { message().viewPopupMessage(); }}">
|
||||
<i class="icon-opennewwindow"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_IN_NEW_WINDOW"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item">
|
||||
<a target="_blank" class="e-link" data-bind="click: function () { if (message()) { message().printMessage(); }} ">
|
||||
<i class="icon-print"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_PRINT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li class="e-item">
|
||||
<a target="_blank" class="e-link" data-bind="link: viewViewLink()">
|
||||
<i class="icon-file-css"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_VIEW_ORIGINAL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item">
|
||||
<a target="_blank" class="e-link" data-bind="link: viewDownloadLink()">
|
||||
<i class="icon-download"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_DOWNLOAD_ORIGINAL"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-content thm-message-view-background-color">
|
||||
<div>
|
||||
<div class="b-message-view-desc" data-bind="visible: !message() && '' === $root.messageError()">
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MESSAGE_VIEW_DESC"></span>
|
||||
</div>
|
||||
<div class="b-message-view-desc error" data-bind="visible: !message() && '' !== $root.messageError()">
|
||||
<span class="text" data-bind="text: $root.messageError()"></span>
|
||||
</div>
|
||||
<div data-bind="visible: message">
|
||||
<div class="messageItem" data-bind="css: viewLineAsCcc(), nano: true">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div>
|
||||
<span class="buttonUp" data-bind="click: scrollToTop">
|
||||
<i class="icon-arrow-up--upload"></i>
|
||||
</span>
|
||||
<span class="buttonFull" data-bind="click: fullScreen">
|
||||
<i class="icon-scaleup"></i>
|
||||
</span>
|
||||
<span class="buttonUnFull" data-bind="click: unFullScreen">
|
||||
<i class="icon-scaledown"></i>
|
||||
</span>
|
||||
<div class="messageItemHeader">
|
||||
<div>
|
||||
<img class="fromPic" data-bind="visible: viewUserPicVisible, attr: {'src': viewUserPic() }">
|
||||
<div style="overflow: hidden;">
|
||||
<div class="subjectParent" data-bind="event: { 'dblclick': toggleFullScreen }">
|
||||
<span class="subject" data-bind="text: viewSubject, title: viewSubject"></span>
|
||||
<span class="i18n emptySubjectText" data-i18n-text="MESSAGE/EMPTY_SUBJECT_TEXT"></span>
|
||||
</div>
|
||||
<div class="senderParent">
|
||||
<div class="g-ui-user-select-none" style="float: left; cursor: pointer;" data-bind="click: function() { $root.showFullInfo(!$root.showFullInfo()); }">
|
||||
<i class="icon-arrow-right" data-bind="css: $root.showFullInfo() ? 'icon-arrow-down' : 'icon-arrow-right'"></i>
|
||||
</div>
|
||||
<div class="informationShort" data-bind="event: { 'dblclick': toggleFullScreen }">
|
||||
<span data-bind="visible: !$root.isDraftOrSentFolder()">
|
||||
<span class="from" data-bind="html: viewFromShort, title: viewFrom"></span>
|
||||
</span>
|
||||
<span data-bind="visible: $root.isDraftOrSentFolder()">
|
||||
<span class="i18n uiLabel labelTo" data-i18n-text="MESSAGE/LABEL_TO"></span>:
|
||||
<span class="to" data-bind="html: viewToShort, title: viewTo"></span>
|
||||
</span>
|
||||
(<span class="date" data-bind="text: viewDate"></span>)
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="informationFull" data-bind="visible: $root.showFullInfo()">
|
||||
<div data-bind="visible: '' !== viewFrom()">
|
||||
<span class="i18n uiLabel labelFrom" data-i18n-text="MESSAGE/LABEL_FROM"></span>:
|
||||
|
||||
<span class="from" data-bind="text: viewFrom, title: viewFrom"></span>
|
||||
</div>
|
||||
<div data-bind="visible: '' !== viewTo()">
|
||||
<span class="i18n uiLabel labelTo" data-i18n-text="MESSAGE/LABEL_TO"></span>:
|
||||
|
||||
<span class="to" data-bind="text: viewTo, title: viewTo"></span>
|
||||
</div>
|
||||
<div data-bind="visible: '' !== viewCc()">
|
||||
<span class="i18n uiLabel labelCc" data-i18n-text="MESSAGE/LABEL_CC"></span>:
|
||||
|
||||
<span class="cc" data-bind="text: viewCc, title: viewCc"></span>
|
||||
</div>
|
||||
<div data-bind="visible: '' !== viewBcc()">
|
||||
<span class="i18n uiLabel labelBcc" data-i18n-text="MESSAGE/LABEL_BCC"></span>:
|
||||
|
||||
<span class="bcc" data-bind="text: viewBcc, title: viewBcc"></span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="i18n uiLabel labelBcc" data-i18n-text="MESSAGE/LABEL_DATE"></span>:
|
||||
|
||||
<span class="date" data-bind="text: viewDate"></span>
|
||||
|
||||
(<span class="date" data-bind="text: viewMoment"></span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line-loading e-strip-animation" data-bind="visible: $root.messageLoadingThrottle()"></div>
|
||||
|
||||
<div class="loading g-ui-min-height-300" data-bind="visible: $root.messageLoadingThrottle()">
|
||||
<span class="i18n text" data-i18n-text="MESSAGE/MESSAGE_LOADING"></span><span class="textLoadingAnimationD1">.</span><span class="textLoadingAnimationD2">.</span><span class="textLoadingAnimationD3">.</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="g-ui-min-height-300" data-bind="visible: !$root.messageLoadingThrottle()">
|
||||
<div class="showImages" data-bind="visible: message() && message().hasImages(), click: function() { $root.showImages(message()); }">
|
||||
<i class="icon-image"></i>
|
||||
|
||||
<span class="i18n text" data-i18n-text="MESSAGE/BUTTON_SHOW_IMAGES"></span>
|
||||
</div>
|
||||
<div class="attachmentsPlace" data-bind="visible: message() && message().hasVisibleAttachments()">
|
||||
<ul class="attachmentList" data-bind="foreach: message() ? message().attachments() : []">
|
||||
<li class="attachmentItem" draggable="true" data-bind="visible: !isLinked, title: fileName, event: { 'dragstart': eventDragStart }">
|
||||
<div style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">
|
||||
<i class="attachmentIcon" data-bind="css: iconClass()"></i>
|
||||
|
||||
<span class="attachmentName" data-bind="text: fileName"></span>
|
||||
</div>
|
||||
<div>
|
||||
<a class="attachmentPreview magnificPopupImage pull-left"
|
||||
data-bind="visible: isImage(), attr: {href: linkPreview(), title: fileName}" target="_blank">
|
||||
<i class="icon-eye"></i>
|
||||
</a>
|
||||
<span class="attachmentSize pull-right" data-bind="text: friendlySize"></span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
</div>
|
||||
<div class="bodyText g-ui-min-height-300" data-bind="initDom: messagesBodiesDom"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
64
rainloop/v/0.0.0/app/templates/Views/PopupsActivate.html
Normal file
64
rainloop/v/0.0.0/app/templates/Views/PopupsActivate.html
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-activate-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="visible: !activateProcess()">Activate Subscription Key?</span>
|
||||
<span data-bind="visible: activateProcess">Activation...</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Domain
|
||||
</label>
|
||||
<div class="controls">
|
||||
<h4 class="help-inline" data-bind="text: domain" style="margin-top: 5px;"></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': '' !== activateText() && activateText.isError(), 'success': '' !== activateText() && !activateText.isError() }">
|
||||
<label class="control-label">
|
||||
Subscription Key
|
||||
</label>
|
||||
<div class="controls ">
|
||||
<input type="text" class="span5" data-bind="visible: !activateProcess() && !activationSuccessed(), value: key, valueUpdate: 'afterkeydown', hasFocus: key.focus"></input>
|
||||
<h4 class="help-inline" style="margin-top: 5px;" data-bind="text: key, visible: activateProcess() || activationSuccessed()"></h4>
|
||||
<div class="help-block" data-bind="text: activateText"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="alert">
|
||||
<p>
|
||||
After activation, commercial subscription for <strong data-bind="text: domain"></strong> will be extended.
|
||||
<br />
|
||||
Note that subscription key can only be activated for a single domain.
|
||||
</p>
|
||||
<p>
|
||||
Once started, the process of activation cannot be aborted or cancelled.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<!-- <a class="btn" href="http://rainloop.net/purchase/" target="_black">
|
||||
<i class="icon-cart"></i>
|
||||
|
||||
Purchase
|
||||
</a>-->
|
||||
<a class="btn buttonActivate" data-bind="visible: !activationSuccessed(), command: activateCommand">
|
||||
<i class="icon-key" data-bind="css: {'icon-key': !activateProcess(), 'icon-spinner-2 animated': activateProcess()}" ></i>
|
||||
|
||||
Activate
|
||||
</a>
|
||||
<span style="color: green" data-bind="visible: activationSuccessed">
|
||||
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
Activated
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
49
rainloop/v/0.0.0/app/templates/Views/PopupsAddAccount.html
Normal file
49
rainloop/v/0.0.0/app/templates/Views/PopupsAddAccount.html
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-account-add-content" 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-text="POPUPS_ADD_ACCOUNT/TITLE_ADD_ACCOUNT"></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': emailError}">
|
||||
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<input class="inputEmail input-large" type="email" autocomplete="off"
|
||||
data-bind="value: email, valueUpdate: 'afterkeydown', onEnter: addAccountCommand, hasfocus: emailFocus" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': loginError}, visible: allowCustomLogin()">
|
||||
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_LOGIN"></label>
|
||||
<div class="controls">
|
||||
<input class="inputLogin input-large" type="text" autocomplete="off"
|
||||
data-bind="value: login, onEnter: addAccountCommand, hasfocus: loginFocus" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': passwordError}">
|
||||
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input class="inputPassword input-large" type="password" autocomplete="off"
|
||||
data-bind="value: password, onEnter: addAccountCommand" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addAccountCommand">
|
||||
<i data-bind="css: {'icon-user-add': !submitRequest(), 'icon-spinner-2 animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="POPUPS_ADD_ACCOUNT/BUTTON_ADD_ACCOUNT"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-advanced-search-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n-text="SEARCH/TITLE_ADV"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<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-text="SEARCH/LABEL_ADV_FROM"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input class="uiInput inputFrom" type="text" 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-text="SEARCH/LABEL_ADV_TO"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input class="uiInput inputFrom" type="text" data-bind="value: to, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_SUBJECT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input class="uiInput inputFrom" type="text" data-bind="value: subject, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_TEXT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input class="uiInput inputFrom" type="text" data-bind="value: text, onEnter: searchCommand, onEsc: cancelCommand" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="value: selectedDateValue">
|
||||
<option value="-1" class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE_ALL"></option>
|
||||
<option value="3" class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE_3_DAYS"></option>
|
||||
<option value="7" class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE_7_DAYS"></option>
|
||||
<option value="30" class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE_MONTH"></option>
|
||||
<option value="90" class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE_3_MONTHS"></option>
|
||||
<option value="180" class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE_6_MONTHS"></option>
|
||||
<option value="365" class="i18n" data-i18n-text="SEARCH/LABEL_ADV_DATE_YEAR"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
</label>
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { hasAttachments(!hasAttachments()); }">
|
||||
<i data-bind="css: hasAttachments() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_HAS_ATTACHMENTS"></span>
|
||||
</label>
|
||||
</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-text="SEARCH/BUTTON_ADV_SEARCH"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
138
rainloop/v/0.0.0/app/templates/Views/PopupsCompose.html
Normal file
138
rainloop/v/0.0.0/app/templates/Views/PopupsCompose.html
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide 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">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<a class="btn btn-large button-send" data-bind="command: sendCommand, css: {'btn-danger': sendError, 'btn-warning': sendSuccessButSaveError }">
|
||||
<i data-bind="css: {'icon-rocket': !sending(), 'icon-spinner-2 animated': sending(), 'icon-white': sendError() || sendSuccessButSaveError()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="COMPOSE/BUTTON_SEND"></span>
|
||||
</a>
|
||||
<a class="btn button-save" data-bind="command: saveCommand, css: {'btn-danger': savedError }">
|
||||
<i data-bind="css: {'icon-floppy': !saving(), 'icon-spinner-2 animated': saving(), 'icon-white': savedError()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="COMPOSE/BUTTON_SAVE"></span>
|
||||
</a>
|
||||
<a class="btn btn-danger button-delete" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash icon-white"></i>
|
||||
</a>
|
||||
<span class="saved-text" data-bind="text: savedOrSendingText, css: { 'errorDesc': savedError }"></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">
|
||||
<div class="e-cell e-label">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/TITLE_FROM"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<div class="dropdown pull-left">
|
||||
<span class="dropdown-toggle g-ui-dropdown e-identity"
|
||||
id="IdentityLabel" role="button" data-toggle="dropdown"
|
||||
data-bind="text: currentIdentityString, dropdown: true, css: {'multiply': 1 < identitiesOptions().length }">
|
||||
</span>
|
||||
<!-- ko if: 1 < identitiesOptions().length -->
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="IdentityLabel">
|
||||
<!-- ko foreach: identitiesOptions -->
|
||||
<li class="e-item">
|
||||
<a class="e-link" data-bind="click: function (oIdentity) { $root.selectIdentity(oIdentity); return true; }">
|
||||
<span data-bind="text: optText"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
</ul>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<span class="pull-right" data-bind="visible: !showCcAndBcc()">
|
||||
<span class="i18n g-ui-link" data-i18n-text="COMPOSE/LINK_SHOW_INPUTS" data-bind="click: function () { showCcAndBcc(true); }"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/TITLE_TO"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" data-bind="select2: to" />
|
||||
<span class="help-block error-desc" data-bind="visible: emptyToError">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/EMPTY_TO_ERROR_DESC"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-delimiter-row" data-bind="visible: showCcAndBcc"> </div>
|
||||
<div class="e-row cc-row" data-bind="visible: showCcAndBcc">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/TITLE_CC"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" data-bind="select2: cc" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row bcc-row" data-bind="visible: showCcAndBcc">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/TITLE_BCC"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" data-bind="select2: bcc" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row reply-to-row" data-bind="visible: false">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/TITLE_REPLY_TO"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" data-bind="value: replyTo" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/TITLE_SUBJECT"></span>
|
||||
</div>
|
||||
<div class="e-cell e-value">
|
||||
<input type="text" size="70" data-bind="value: subject" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="e-row">
|
||||
<div class="e-cell e-label"></div>
|
||||
<div class="e-cell e-value">
|
||||
<div class="b-appachments pull-left" data-bind="visible: 0 < attachments().length">
|
||||
<div data-bind="template: { name: 'ComposeAttachment', foreach: attachmentsInReady }"></div>
|
||||
<div data-bind="template: { name: 'ComposeAttachmentInProcess', foreach: attachmentsInProcess }"></div>
|
||||
</div>
|
||||
<div data-bind="visible: addAttachmentEnabled">
|
||||
<div class="b-attachment-place" data-bind="visible: dragAndDropEnabled() && dragAndDropVisible(), initDom: composeUploaderDropPlace, css: {'dragAndDropOver': dragAndDropOver}">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/ATTACH_DROP_FILES_DESC"></span>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<div class="btn-group">
|
||||
<a class="btn" data-placement="top" data-bind="initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
||||
<i class="icon-attachment"></i>
|
||||
</a>
|
||||
<a class="btn" data-placement="top" data-bind="visible: dropboxEnabled, command: dropboxCommand, tooltip: 'COMPOSE/DROPBOX'">
|
||||
<i class="icon-dropbox"></i>
|
||||
</a>
|
||||
<a class="btn" data-placement="top" data-bind="visible: driveEnabled, command: driveCommand, tooltip: 'COMPOSE/GOOGLE_DRIVE'">
|
||||
<i class="icon-google-drive"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div data-bind="initDom: composeEditorToolbar"></div>
|
||||
</div>
|
||||
|
||||
<div class="textAreaParent" style="height: 200px; min-height: 200px" data-bind="initResizeTrigger: [resizer(), 200, 30]">
|
||||
<textarea style="height: 100%; width: 100%" data-bind="initDom: composeEditorTextArea" spellcheck="true"></textarea>
|
||||
<div style="height: 100%" data-bind="initDom: composeEditorHtmlArea" spellcheck="true"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
104
rainloop/v/0.0.0/app/templates/Views/PopupsContacts.html
Normal file
104
rainloop/v/0.0.0/app/templates/Views/PopupsContacts.html
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide 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>
|
||||
<a class="btn button-create-contact" data-bind="command: newCommand">
|
||||
<i class="icon-plus"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="CONTACTS/BUTTON_ADD_CONTACT"></span>
|
||||
</a>
|
||||
<a class="btn btn-success button-new-message" data-bind="command: newMessageCommand">
|
||||
<i class="icon-envelope icon-white"></i>
|
||||
</a>
|
||||
<a class="btn btn-danger button-delete" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash icon-white"></i>
|
||||
<span data-bind="text: 1 < contactsCheckedOrSelected().length ? ' (' + contactsCheckedOrSelected().length + ')' : ''"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="modal-body" style="position: relative">
|
||||
<div class="b-list-toopbar">
|
||||
<input class="i18n span3 e-search" type="text" placeholder="Search" data-18n-placeholder="CONTACS/SEARCH_INPUT_PLACEHOLDER" data-bind="value: search" />
|
||||
</div>
|
||||
<div class="b-list-content g-ui-user-select-none" data-bind="nano: true, 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-text="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-text="CONTACTS/EMPTY_LIST"></span>
|
||||
</div>
|
||||
<div class="listEmptyListLoading" data-bind="visible: 0 === contacts().length && '' === search() && contacts.loading()">
|
||||
<span class="i18n" data-i18n-text="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-text="CONTACTS/EMPTY_SEARCH"></span>
|
||||
</div>
|
||||
<div class="e-contact-foreach" data-bind="foreach: contacts, visible: 0 < contacts().length">
|
||||
<div class="e-contact-item g-ui-user-select-none" data-bind="css: lineAsCcc()">
|
||||
<div class="sidebarParent">
|
||||
|
||||
</div>
|
||||
<div class="delimiter"></div>
|
||||
<div class="wrapper">
|
||||
<div class="checkedParent">
|
||||
<i class="checkboxItem" data-bind="css: checked() || selected() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||
</div>
|
||||
<div class="nameParent actionHandle">
|
||||
<span class="listName" data-bind="text: listName"></span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-view-content" data-bind="nano: true">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div class="b-contact-view-desc" data-bind="visible: emptySelection">
|
||||
<span class="i18n" data-i18n-text="CONTACTS/CONTACT_VIEW_DESC"></span>
|
||||
</div>
|
||||
<div data-bind="visible: !emptySelection()">
|
||||
<div class="form-horizontal top-part">
|
||||
<div class="control-group">
|
||||
<div class="control-label" data-bind="initDom: imageUploader">
|
||||
<div class="image-wrapper" style="width: 100px; height: 100px;">
|
||||
<img data-bind="initDom: imageDom" style="width: 100px; height: 100px;" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="controls">
|
||||
<div class="top-row">
|
||||
<span class="contactEmptyValueClick" data-bind="visible: !viewName.focused() && '' === viewName(), click: function() { viewName.focused(true); }">display name</span>
|
||||
<span class="contactValueClick" data-bind="visible: !viewName.focused() && '' !== viewName(), click: function() { viewName.focused(true); }, text: viewName"></span>
|
||||
<input class="contactValueInput span5" type="text" placeholder="display name" data-bind="value: viewName, visible: viewName.focused, hasfocus: viewName.focused, onEnter: function () { viewName.focused(false); }">
|
||||
</div>
|
||||
<div class="top-row" data-bind="css: { hasError: viewEmail.hasError() }">
|
||||
<span class="contactEmptyValueClick" data-bind="visible: !viewEmail.focused() && '' === viewEmail(), click: function() { viewEmail.focused(true); }">email</span>
|
||||
<span class="contactValueClick" data-bind="visible: !viewEmail.focused() && !viewEmail.hasError() && '' !== viewEmail(), click: function() { viewEmail.focused(true); }, text: viewEmail"></span>
|
||||
<input class="contactValueInput span5" type="text" placeholder="email" data-bind="value: viewEmail, visible: viewEmail.hasError() || viewEmail.focused(), hasfocus: viewEmail.focused, onEnter: function () { viewEmail.focused(false); }">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="control-label">
|
||||
</div>
|
||||
<div class="controls">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn button-save-contact" data-bind="command: saveCommand">
|
||||
<i data-bind="css: {'icon-ok': !viewSaving(), 'icon-spinner-2 animated': viewSaving()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="CONTACTS/BUTTON_CREATE_CONTACT" data-bind="visible: '' === viewID()"></span>
|
||||
<span class="i18n" data-i18n-text="CONTACTS/BUTTON_UPDATE_CONTACT" data-bind="visible: '' !== viewID()"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
122
rainloop/v/0.0.0/app/templates/Views/PopupsDomain.html
Normal file
122
rainloop/v/0.0.0/app/templates/Views/PopupsDomain.html
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-domain-content" data-bind="modal: modalVisibility, css: {'domain-edit': edit, 'domain-white-list-page': whiteListPage}">
|
||||
<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()">
|
||||
<div class="span8">
|
||||
Name
|
||||
<br />
|
||||
<input type="text" data-bind="value: name, valueUpdate: 'afterkeydown'" />
|
||||
<span class="error-desc" data-bind="text: savingError"></span>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="span4" data-bind="css: { 'testing-done': testingDone, 'testing-error': testingImapError }">
|
||||
<div class="legend imap-header">
|
||||
IMAP
|
||||
</div>
|
||||
Server
|
||||
<br />
|
||||
<input type="text" data-bind="value: imapServer, valueUpdate: 'afterkeydown', hasfocus: imapServerFocus" />
|
||||
<br />
|
||||
<br />
|
||||
Port
|
||||
<br />
|
||||
<input type="text" data-bind="value: imapPort, valueUpdate: 'afterkeydown'" />
|
||||
<br />
|
||||
<br />
|
||||
Secure
|
||||
<br />
|
||||
<select class="span2" data-bind="value: imapSecure">
|
||||
<option value="0">None</option>
|
||||
<option value="1">SSL</option>
|
||||
<option value="2">TLS</option>
|
||||
</select>
|
||||
<br />
|
||||
<br />
|
||||
<label data-bind="click: function () { imapShortLogin(!imapShortLogin()); }">
|
||||
<i data-bind="css: imapShortLogin() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
Use short login form
|
||||
</label>
|
||||
</div>
|
||||
<div class="span4" data-bind="css: { 'testing-done': testingDone, 'testing-error': testingSmtpError }">
|
||||
<div class="legend smtp-header">
|
||||
SMTP
|
||||
</div>
|
||||
Server
|
||||
<br />
|
||||
<input type="text" data-bind="value: smtpServer, valueUpdate: 'afterkeydown', hasfocus: smtpServerFocus" />
|
||||
<br />
|
||||
<br />
|
||||
Port
|
||||
<br />
|
||||
<input type="text" data-bind="value: smtpPort, valueUpdate: 'afterkeydown'" />
|
||||
<br />
|
||||
<br />
|
||||
Secure
|
||||
<br />
|
||||
<select class="span2" data-bind="value: smtpSecure">
|
||||
<option value="0">None</option>
|
||||
<option value="1">SSL</option>
|
||||
<option value="2">TLS</option>
|
||||
</select>
|
||||
<br />
|
||||
<br />
|
||||
<label data-bind="click: function () { smtpShortLogin(!smtpShortLogin()); }">
|
||||
<i data-bind="css: smtpShortLogin() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
Use short login form
|
||||
</label>
|
||||
<label data-bind="click: function () { smtpAuth(!smtpAuth()); }">
|
||||
<i data-bind="css: smtpAuth() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
Use authentication
|
||||
</label>
|
||||
</div>
|
||||
<div class="span8">
|
||||
<div class="legend white-list-header">
|
||||
White List
|
||||
</div>
|
||||
<div class="alert alert-block span6 alert-null-left-margin" style="width: 562px;">
|
||||
List of users webmail is allowed to access.
|
||||
Use a space as delimiter.
|
||||
</div>
|
||||
<textarea class="input-xxlarge" style="width: 600px" rows="8" data-bind="value: whiteList"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn button-test-connection pull-left" data-bind="command: testConnectionCommand, css: {
|
||||
'btn-success': testingDone() && !testingImapError() && !testingSmtpError(),
|
||||
'btn-danger': testingDone() && (testingImapError() || testingSmtpError()) }">
|
||||
<i data-bind="css: {'icon-info': !testing(), 'icon-spinner-2 animated': testing(), 'icon-white': testingDone()}"></i>
|
||||
|
||||
Test Connection
|
||||
</a>
|
||||
<a class="btn button-white-list pull-left" data-bind="command: whiteListCommand">
|
||||
<i data-bind="css: {'icon-arrow-right-2': !whiteListPage(), 'icon-arrow-left': whiteListPage()}"></i>
|
||||
|
||||
<span data-bind="visible: !whiteListPage()">White List</span>
|
||||
<span data-bind="visible: whiteListPage()">Back</span>
|
||||
</a>
|
||||
<a class="btn buttonClose" data-bind="command: cancelCommand">
|
||||
<i class="icon-remove"></i>
|
||||
|
||||
Close
|
||||
</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-2 animated" data-bind="visible: saving"></i>
|
||||
|
||||
<span data-bind="text: edit() ? 'Update' : 'Add'"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
34
rainloop/v/0.0.0/app/templates/Views/PopupsFolderClear.html
Normal file
34
rainloop/v/0.0.0/app/templates/Views/PopupsFolderClear.html
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-folder-clear-content" 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-text="POPUPS_CLEAR_FOLDER/TITLE_CLEAR_FOLDER" data-bind="visible: !clearingProcess()"></span>
|
||||
<span class="i18n" data-i18n-text="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" />
|
||||
|
||||
<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-2 animated': clearingProcess()}" ></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="POPUPS_CLEAR_FOLDER/BUTTON_CLEAR"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
41
rainloop/v/0.0.0/app/templates/Views/PopupsFolderCreate.html
Normal file
41
rainloop/v/0.0.0/app/templates/Views/PopupsFolderCreate.html
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-folder-create-content" 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-text="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-text="POPUPS_CREATE_FOLDER/LABEL_NAME"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input class="uiInput inputName" type="text" data-bind="value: folderName, valueUpdate: 'afterkeydown', onEnter: createFolder, hasfocus: focusTrigger" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="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>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonCreate" data-bind="command: createFolder">
|
||||
<i class="icon-add-to-list"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="POPUPS_CREATE_FOLDER/BUTTON_CREATE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
54
rainloop/v/0.0.0/app/templates/Views/PopupsFolderSystem.html
Normal file
54
rainloop/v/0.0.0/app/templates/Views/PopupsFolderSystem.html
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-folder-system-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n-text="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-text="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-text="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-text="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-text="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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
62
rainloop/v/0.0.0/app/templates/Views/PopupsIdentity.html
Normal file
62
rainloop/v/0.0.0/app/templates/Views/PopupsIdentity.html
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-identity-content" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span data-bind="text: label"></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="visible: !owner(), css: {'error': email.hasError}">
|
||||
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_EMAIL"></label>
|
||||
<div class="controls">
|
||||
<input class="inputEmail input-large" type="email" autocomplete="off"
|
||||
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-text="POPUPS_IDENTITIES/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-text="POPUPS_IDENTITIES/LABEL_NAME"></label>
|
||||
<div class="controls">
|
||||
<input class="inputName input-large" type="text" autocomplete="off"
|
||||
data-bind="value: name, onEnter: addOrEditIdentityCommand, hasfocus: name.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': replyTo.hasError}" style="display: none">
|
||||
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_REPLY_TO"></label>
|
||||
<div class="controls">
|
||||
<input class="inputReplyTo input-large" type="text" autocomplete="off"
|
||||
data-bind="value: replyTo, onEnter: addOrEditIdentityCommand, hasfocus: replyTo.focused" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': bcc.hasError}" style="display: none">
|
||||
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_BCC"></label>
|
||||
<div class="controls">
|
||||
<input class="inputBcc input-large" type="text" autocomplete="off"
|
||||
data-bind="value: bcc, onEnter: addOrEditIdentityCommand, hasfocus: bcc.focused" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonAddAccount" data-bind="command: addOrEditIdentityCommand">
|
||||
<i data-bind="css: {'icon-ok': !submitRequest(), 'icon-spinner-2 animated': submitRequest()}"></i>
|
||||
|
||||
<span data-bind="text: button"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
20
rainloop/v/0.0.0/app/templates/Views/PopupsLanguages.html
Normal file
20
rainloop/v/0.0.0/app/templates/Views/PopupsLanguages.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-languages-content" data-bind="modal: modalVisibility, css: {'exp': exp}">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n-text="POPUPS_LANGUAGES/TITLE_LANGUAGES"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div data-bind="foreach: languages">
|
||||
<label class="lang-item" data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected}">
|
||||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + key" style=""></span>
|
||||
</span>
|
||||
<span class="lang-name" data-bind="text: fullName"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
39
rainloop/v/0.0.0/app/templates/Views/PopupsPlugin.html
Normal file
39
rainloop/v/0.0.0/app/templates/Views/PopupsPlugin.html
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-plugin-content" data-bind="modal: modalVisibility">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h4>
|
||||
Plugin "<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()">
|
||||
Nothing to configure
|
||||
</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>
|
||||
|
||||
Close
|
||||
</a>
|
||||
<a class="btn buttonClear" data-bind="command: saveCommand, visible: hasConfiguration">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
Save
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<style>
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #fff;
|
||||
font-family: arial, sans-serif;
|
||||
}
|
||||
|
||||
.tbl {width:100%;font-family:normal 11px Tahoma, Arial, Helvetica, "sans-serif"}
|
||||
.tt {padding:5px;border:solid #ddd;border-width:0px 0px 1px 0px}
|
||||
.tv {padding:5px;border:solid #ddd;border-width:0px 0px 1px 1px}
|
||||
.tb {padding:15px}
|
||||
a {color: blue; text-decoration: underline}
|
||||
a:visited {color: #609}
|
||||
a:active {color: red}
|
||||
blockquote {border-left: 2px solid black; margin: 0; padding: 0px 10px}
|
||||
pre {margin: 0px; padding: 0px; font-family: arial, sans-serif; background: #fff; border: none; white-space: normal}
|
||||
</style>
|
||||
|
||||
<table cellpadding="0" cellspacing="0" class="tbl">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_FROM"></td>
|
||||
<td class="tv" data-bind="text: popupFrom"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_TO"></td>
|
||||
<td class="tv" data-bind="text: popupTo"></td>
|
||||
</tr>
|
||||
<tr data-bind="visible: '' !== popupCc">
|
||||
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_CC"></td>
|
||||
<td class="tv" data-bind="text: popupCc"></td>
|
||||
</tr>
|
||||
<tr data-bind="visible: '' !== popupBcc">
|
||||
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_BCC"></td>
|
||||
<td class="tv" data-bind="text: popupBcc"></td>
|
||||
</tr>
|
||||
<tr data-bind="visible: '' !== popupDate">
|
||||
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_DATE"></td>
|
||||
<td class="tv" data-bind="text: popupDate"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_SUBJECT"></td>
|
||||
<td class="tv" data-bind="text: popupSubject"></td>
|
||||
</tr>
|
||||
<tr data-bind="visible: '' !== popupAttachments">
|
||||
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_ATTACHMENTS"></td>
|
||||
<td class="tv" data-bind="text: popupAttachments"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="tb">
|
||||
<div data-bind="html: popupBody"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
39
rainloop/v/0.0.0/app/templates/Views/SettingsAccounts.html
Normal file
39
rainloop/v/0.0.0/app/templates/Views/SettingsAccounts.html
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<div class="b-settings-accounts">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/LEGEND_ACCOUNTS"></span>
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn" data-bind="click: addNewAccount">
|
||||
<i class="icon-user-add"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/BUTTON_ADD_ACCOUNT"></span>
|
||||
</a>
|
||||
<div class="process-place" data-bind="style: {'visibility': visibility }">
|
||||
<i class="icon-spinner-2 animated"></i>
|
||||
|
||||
<span data-bind="text: processText"></span>
|
||||
</div>
|
||||
<table class="table table-hover list-table" data-bind="i18nUpdate: accounts">
|
||||
<colgroup>
|
||||
<col />
|
||||
<col style="width: 1%" />
|
||||
</colgroup>
|
||||
<tbody data-bind="foreach: accounts">
|
||||
<tr class="account-item">
|
||||
<td>
|
||||
<span class="account-img icon-user"></span>
|
||||
<span class="account-name" data-bind="text: email"></span>
|
||||
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete" data-bind="css: {'delete-access': deleteAccess()}, click: function(oAccount) { $root.deleteAccount(oAccount); }">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/DELETING_ASK"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="delete-account" data-bind="visible: !deleteAccess() && canBeDalete(), click: function (oAccount) { $root.accountForDeletion(oAccount); }">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<div class="b-settings-general">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LEGEND_CHANGE_PASSWORD"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_CURRENT_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: currentPassword, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_NEW_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: newPassword, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<a class="btn" data-bind="command: saveNewPasswordCommand, css: { 'btn-success': passwordUpdateSuccess, 'btn-danger': passwordUpdateError }">
|
||||
<i data-bind="css: {'icon-spinner-2 animated': changeProcess(), 'icon-key': !changeProcess(), 'icon-white': passwordUpdateSuccess() || passwordUpdateError() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/BUTTON_UPDATE_PASSWORD"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
3
rainloop/v/0.0.0/app/templates/Views/SettingsCustom.html
Normal file
3
rainloop/v/0.0.0/app/templates/Views/SettingsCustom.html
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<div class="settingsCustom">
|
||||
CUSTOM
|
||||
</div>
|
||||
26
rainloop/v/0.0.0/app/templates/Views/SettingsFolderItem.html
Normal file
26
rainloop/v/0.0.0/app/templates/Views/SettingsFolderItem.html
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<tr class="folder-item" data-bind="css: { 'selectable': selectable, 'gmailFolder' : isGmailFolder }">
|
||||
<td>
|
||||
<span class="folder-padding" data-bind="css: 'deep-' + deep"> </span>
|
||||
<span class="folder-name" data-bind="text: name, visible: !edited(), css: { 'e-action': canBeEdited, 'can-be-edited': canBeEdited }, click: function (oFolder) { $root.folderForEdit(oFolder); }"></span>
|
||||
|
||||
<span class="folder-system-name" data-bind="text: manageFolderSystemName, visible: isSystemFolder"></span>
|
||||
<input type="text" class="folder-name-input" data-bind="value: nameForEdit, visible: edited, hasfocus: edited, onEnter: function () { $root.folderEditOnEnter($data); }, onEsc: function () { $root.folderEditOnEsc($data); }" />
|
||||
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete" data-bind="css: {'delete-access': deleteAccess()}, click: function() { $root.deleteFolder($data); }">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FOLDERS/DELETING_ASK"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="delete-folder" data-bind="visible: canBeDeleted() && !deleteAccess(), click: function (oFolder) { $root.folderForDeletion(oFolder); }">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="unsubscribe-folder" data-bind="visible: canBeSubScribed() && !subScribed(), click: function(oFolder) { $root.subscribeFolder(oFolder); }">
|
||||
<i class="icon-eye"></i>
|
||||
</span>
|
||||
<span class="subscribe-folder" data-bind="visible: canBeSubScribed() && subScribed(), click: function(oFolder) { $root.unSubscribeFolder(oFolder); }">
|
||||
<i class="icon-eye"></i>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ko template: { name: 'SettingsFolderItem', foreach: subFolders } --><!-- /ko -->
|
||||
35
rainloop/v/0.0.0/app/templates/Views/SettingsFolders.html
Normal file
35
rainloop/v/0.0.0/app/templates/Views/SettingsFolders.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<div class="b-settings-folders" data-bind="css: { 'ignore-folder-subscribe': !useImapSubscribe }">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FOLDERS/LEGEND_FOLDERS"></span>
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn" data-bind="click: createFolder">
|
||||
<i class="icon-add-to-list"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FOLDERS/BUTTON_CREATE"></span>
|
||||
</a>
|
||||
|
||||
<a class="btn" data-bind="click: systemFolder">
|
||||
<i class="icon-wrench"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FOLDERS/BUTTON_SYSTEM"></span>
|
||||
</a>
|
||||
<div class="alert folders-list-error" data-bind="visible: '' !== foldersListError()">
|
||||
<button type="button" class="close" data-bind="click: function () { foldersListError(''); }">×</button>
|
||||
<span data-bind="text: foldersListError"></span>
|
||||
</div>
|
||||
<div class="process-place" data-bind="style: {'visibility': visibility }">
|
||||
<i class="icon-spinner-2 animated"></i>
|
||||
|
||||
<span data-bind="text: processText"></span>
|
||||
</div>
|
||||
<table class="table table-hover list-table" data-bind="i18nUpdate: folderList">
|
||||
<colgroup>
|
||||
<col />
|
||||
<col style="width: 1%" />
|
||||
<col style="width: 1%" />
|
||||
</colgroup>
|
||||
<tbody data-bind="template: { name: 'SettingsFolderItem', foreach: folderList }"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
125
rainloop/v/0.0.0/app/templates/Views/SettingsGeneral.html
Normal file
125
rainloop/v/0.0.0/app/templates/Views/SettingsGeneral.html
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<div class="b-settings-general">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LEGEND_GENERAL"></span>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: allowLanguagesOnSettings">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_LANGUAGE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<label class="flag-selector">
|
||||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + mainLanguage()" style=""></span>
|
||||
</span>
|
||||
<span class="flag-name" data-bind="text: mainLanguageFullName, click: selectLanguage"></span>
|
||||
<div data-bind="saveTrigger: languageTrigger"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="control-group" data-bind="visible: isAnimationSupported">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_ANIMATION"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<label>
|
||||
<input type="radio" name="interfaceAnimation" value="Full" data-bind="checked: interfaceAnimation" style="display: none" />
|
||||
<i data-bind="css: 'Full' === interfaceAnimation() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_ANIMATION_FULL"></span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="interfaceAnimation" value="Normal" data-bind="checked: interfaceAnimation" style="display: none" />
|
||||
<i data-bind="css: 'Normal' === interfaceAnimation() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_ANIMATION_NORMAL"></span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="interfaceAnimation" value="None" data-bind="checked: interfaceAnimation" style="display: none" />
|
||||
<i data-bind="css: 'None' === interfaceAnimation() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_ANIMATION_NONE"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_EDITOR"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<label>
|
||||
<input type="radio" name="richTextEditorType" value="Html" data-bind="checked: editorDefaultType" style="display: none" />
|
||||
<i data-bind="css: 'Html' === editorDefaultType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_EDITOR_HTML_AS_DEFAULT"></span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="richTextEditorType" value="Plain" data-bind="checked: editorDefaultType" style="display: none" />
|
||||
<i data-bind="css: 'Plain' === editorDefaultType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_EDITOR_PLAIN_AS_DEFAULT"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_VIEW_OPTIONS"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<select class="span2" data-bind="options: mainMessagesPerPageArray, value: mainMessagesPerPage, saveTrigger: mppTrigger" style="width: 70px;"></select>
|
||||
<span class="i18n help-inline" data-i18n-text="SETTINGS_GENERAL/LABEL_MESSAGE_PER_PAGE"></span>
|
||||
<div data-bind="saveTrigger: mppTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { showImages(!showImages()); }">
|
||||
<i data-bind="css: showImages() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_SHOW_IMAGES"></span>
|
||||
</label>
|
||||
<label data-bind="click: function () { useCheckboxesInList(!useCheckboxesInList()); }">
|
||||
<i data-bind="css: useCheckboxesInList() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_USE_CHECKBOXES_IN_LIST"></span>
|
||||
</label>
|
||||
<label data-bind="click: function () { usePreviewPane(!usePreviewPane()); }">
|
||||
<i data-bind="css: usePreviewPane() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_USE_PREVIEW_PANE"></span>
|
||||
</label>
|
||||
<label data-bind="visible: threading, click: function () { useThreads(!useThreads()); }">
|
||||
<i data-bind="css: useThreads() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_USE_THREADS"></span>
|
||||
</label>
|
||||
<label data-bind="click: function () { replySameFolder(!replySameFolder()); }">
|
||||
<i data-bind="css: replySameFolder() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_REPLY_SAME_FOLDER"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal" data-bind="visible: isDesktopNotificationsSupported()">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_CHROME_NOTIFICATION"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<div data-bind="visible: isDesktopNotificationsSupported">
|
||||
<label data-bind="css: { 'denied-by-browser': isDesktopNotificationsDenied }, click: function () { if (!isDesktopNotificationsDenied()) { useDesktopNotifications(!useDesktopNotifications()); }}">
|
||||
<i data-bind="css: useDesktopNotifications() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n notification-desc" data-i18n-text="SETTINGS_GENERAL/LABEL_CHROME_NOTIFICATION_DESC"></span>
|
||||
<span class="i18n notification-desc-denied" data-i18n-text="SETTINGS_GENERAL/LABEL_CHROME_NOTIFICATION_DESC_DENIED"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
53
rainloop/v/0.0.0/app/templates/Views/SettingsIdentities.html
Normal file
53
rainloop/v/0.0.0/app/templates/Views/SettingsIdentities.html
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<div class="b-settings-identities">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-bind="text: legent"></span>
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn" data-bind="click: addNewIdentity">
|
||||
<i class="icon-user-add"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/BUTTON_ADD_IDENTITY"></span>
|
||||
</a>
|
||||
<div class="process-place" data-bind="style: {'visibility': visibility }">
|
||||
<i class="icon-spinner-2 animated"></i>
|
||||
|
||||
<span data-bind="text: processText"></span>
|
||||
</div>
|
||||
<table class="table table-hover list-table" data-bind="i18nUpdate: identities">
|
||||
<colgroup>
|
||||
<col />
|
||||
<col style="width: 140px" />
|
||||
<col style="width: 1%" />
|
||||
</colgroup>
|
||||
<tbody data-bind="foreach: identities">
|
||||
<tr class="identity-item">
|
||||
<td class="e-action">
|
||||
<span class="identity-img icon-user"></span>
|
||||
<span class="identity-name" data-bind="text: formattedName()"></span>
|
||||
</td>
|
||||
<td>
|
||||
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete" data-bind="css: {'delete-access': deleteAccess()}, click: function(oIdentity) { $root.deleteIdentity(oIdentity); }">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/DELETING_ASK"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="delete-identity" data-bind="visible: !deleteAccess() && canBeDalete(), click: function (oIdentity) { $root.identityForDeletion(oIdentity); }">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LEGEND_SIGNATURE"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<textarea class="input-xxlarge" data-bind="value: signature, saveTrigger: signatureTrigger" rows="7" spellcheck="true"></textarea>
|
||||
<div style="vertical-align: top;" data-bind="saveTrigger: signatureTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
18
rainloop/v/0.0.0/app/templates/Views/SettingsMenu.html
Normal file
18
rainloop/v/0.0.0/app/templates/Views/SettingsMenu.html
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<div class="b-settins-left g-ui-user-select-none">
|
||||
<div class="b-toolbar">
|
||||
</div>
|
||||
<div class="b-content thm-settings-menu">
|
||||
<div class="b-settings-menu" data-bind="foreach: menu">
|
||||
<!-- ko if: disabled -->
|
||||
<span class="e-item disabled">
|
||||
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
|
||||
</span>
|
||||
<!-- /ko -->
|
||||
<!-- ko ifnot: disabled -->
|
||||
<a class="e-item selectable" href="#" data-bind="css: {'selected': selected }, attr: { 'href': $root.link(route) }">
|
||||
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
|
||||
</a>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
18
rainloop/v/0.0.0/app/templates/Views/SettingsPane.html
Normal file
18
rainloop/v/0.0.0/app/templates/Views/SettingsPane.html
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<div class="b-settings b-settins-right g-ui-user-select-none">
|
||||
<div class="b-toolbar">
|
||||
<div class="btn-toolbar">
|
||||
<a class="btn button-back" data-bind="click: backToMailBoxClick">
|
||||
<i class="icon-arrow-left"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_LABELS/BUTTON_BACK"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-content" data-bind="nano: true">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<div id="rl-settings-subscreen" class="b-settings-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
33
rainloop/v/0.0.0/app/templates/Views/SettingsPersonal.html
Normal file
33
rainloop/v/0.0.0/app/templates/Views/SettingsPersonal.html
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<div class="b-settings-personal">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_PERSONAL/LEGEND_PERSONAL"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_PERSONAL/LABEL_DISPLAY_NAME"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input class="input-xlarge" type="text" data-bind="value: displayName, saveTrigger: nameTrigger" />
|
||||
<div data-bind="saveTrigger: nameTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" style="display: none">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_PERSONAL/LABEL_REPLY_TO"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input class="input-xlarge" type="text" data-bind="value: replyTo" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_PERSONAL/LABEL_SIGNATURE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<textarea class="input-xxlarge" data-bind="value: signature, saveTrigger: signatureTrigger" rows="7" spellcheck="true"></textarea>
|
||||
<div style="vertical-align: top;" data-bind="saveTrigger: signatureTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
101
rainloop/v/0.0.0/app/templates/Views/SettingsSocial.html
Normal file
101
rainloop/v/0.0.0/app/templates/Views/SettingsSocial.html
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
<div class="b-settings-social">
|
||||
<div class="form-horizontal" data-bind="visible: googleEnable">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/LEGEND_GOOGLE"></span>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: !googleLoggined()">
|
||||
<button class="btn" data-bind="command: connectGoogle">
|
||||
<i class="icon-google" data-bind="visible: !googleActions()"></i>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: googleActions()"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/BUTTON_GOOGLE_CONNECT"></span>
|
||||
</button>
|
||||
<br />
|
||||
<br />
|
||||
<blockquote>
|
||||
<p class="i18n muted" style="width: 700px" data-i18n-text="SETTINGS_SOCIAL/MAIN_GOOGLE_DESC"></p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: googleLoggined">
|
||||
<strong>
|
||||
<i class="icon-google"></i>
|
||||
|
||||
<span data-bind="text: googleUserName"></span>
|
||||
</strong>
|
||||
<br />
|
||||
<br />
|
||||
<button class="btn" data-bind="command: disconnectGoogle">
|
||||
<i class="icon-remove" data-bind="visible: !googleActions()"></i>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: googleActions()"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/BUTTON_GOOGLE_DISCONNECT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal" data-bind="visible: facebookEnable">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/LEGEND_FACEBOOK"></span>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: !facebookLoggined()">
|
||||
<button class="btn" data-bind="command: connectFacebook">
|
||||
<i class="icon-facebook" data-bind="visible: !facebookActions()"></i>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: facebookActions()"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/BUTTON_FACEBOOK_CONNECT"></span>
|
||||
</button>
|
||||
<br />
|
||||
<br />
|
||||
<blockquote>
|
||||
<p class="i18n muted" style="width: 700px" data-i18n-text="SETTINGS_SOCIAL/MAIN_FACEBOOK_DESC"></p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: facebookLoggined">
|
||||
<strong>
|
||||
<i class="icon-facebook"></i>
|
||||
|
||||
<span data-bind="text: facebookUserName"></span>
|
||||
</strong>
|
||||
<br />
|
||||
<br />
|
||||
<button class="btn" data-bind="command: disconnectFacebook">
|
||||
<i class="icon-remove" data-bind="visible: !facebookActions()"></i>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: facebookActions()"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/BUTTON_FACEBOOK_DISCONNECT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal" data-bind="visible: twitterEnable">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/LEGEND_TWITTER"></span>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: !twitterLoggined()">
|
||||
<button class="btn" data-bind="command: connectTwitter">
|
||||
<i class="icon-twitter" data-bind="visible: !twitterActions()"></i>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: twitterActions()"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/BUTTON_TWITTER_CONNECT"></span>
|
||||
</button>
|
||||
<br />
|
||||
<br />
|
||||
<blockquote>
|
||||
<p class="i18n muted" style="width: 700px" data-i18n-text="SETTINGS_SOCIAL/MAIN_TWITTER_DESC"></p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: twitterLoggined">
|
||||
<strong>
|
||||
<i class="icon-twitter"></i>
|
||||
|
||||
<span data-bind="text: twitterUserName"></span>
|
||||
</strong>
|
||||
<br />
|
||||
<br />
|
||||
<button class="btn" data-bind="command: disconnectTwitter">
|
||||
<i class="icon-remove" data-bind="visible: !twitterActions()"></i>
|
||||
<i class="icon-spinner-2 animated" data-bind="visible: twitterActions()"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/BUTTON_TWITTER_DISCONNECT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
59
rainloop/v/0.0.0/app/templates/Views/SettingsThemes.html
Normal file
59
rainloop/v/0.0.0/app/templates/Views/SettingsThemes.html
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<div class="b-settings-themes">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LEGEND_THEMES"></span>
|
||||
<div class="themeTrigger" data-bind="saveTrigger: themeTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-themes-list" data-bind="foreach: themesObjects">
|
||||
<div class="e-item" data-bind="click: function () { $root.mainTheme(name); }, css: { 'selected': selected }">
|
||||
<div class="e-name" data-bind="text: nameDisplay"></div>
|
||||
<img class="e-image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-bind="attr: { 'src': themePreviewSrc }" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div class="form-horizontal" data-bind="visible: showCustomThemeConfig">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LEGEND_THEMES_CUSTOM"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LABEL_CUSTOM_TYPE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<label>
|
||||
<input type="radio" name="customThemeType" value="Light" data-bind="checked: customThemeType" style="display: none" />
|
||||
<i data-bind="css: 'Light' === customThemeType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LABEL_CUSTOM_TYPE_LIGHT"></span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="customThemeType" value="Dark" data-bind="checked: customThemeType" style="display: none" />
|
||||
<i data-bind="css: 'Dark' === customThemeType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LABEL_CUSTOM_TYPE_DARK"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LABEL_CUSTOM_BACKGROUND_IMAGE"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div data-bind="visible: '' !== customThemeImg()">
|
||||
<strong data-bind="text: customThemeImg"></strong>
|
||||
|
||||
<i class="icon-remove" style="cursor: pointer" data-bind="click: removeCustomThemeImg"></i>
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
<a class="btn" data-bind="visible: '' === customThemeImg(), initDom: customThemeUploaderButton">
|
||||
<i data-bind="css: {'icon-image': !customThemeUploaderProgress(), 'icon-spinner-2 animated': customThemeUploaderProgress()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/BUTTON_UPLOAD_BACKGROUND_IMAGE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
63
rainloop/v/0.0.0/app/templates/Views/SystemDropDown.html
Normal file
63
rainloop/v/0.0.0/app/templates/Views/SystemDropDown.html
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<div class="b-system-drop-down g-ui-user-select-none">
|
||||
<div class="b-toolbar">
|
||||
<div class="btn-toolbar">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-narrow" data-bind="click: logoutClick">
|
||||
<i class="icon-switch"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group pull-right">
|
||||
|
||||
</div>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-ellipsis btn-block dropdown-toggle system-dropdown" data-placement="left" data-toggle="dropdown"
|
||||
data-tooltip-class="tooltip-big" data-bind="tooltip2: emailTitle">
|
||||
<i data-bind="css: {'icon-user': !loading(), 'icon-spinner-2 animated': loading()}"></i>
|
||||
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu">
|
||||
<!-- ko if: accounts().length -->
|
||||
<!-- ko foreach: accounts -->
|
||||
<li class="e-item">
|
||||
<a class="e-link" data-bind="click: $root.accountClick, attr: {'href': changeAccountLink() }">
|
||||
<i class="icon-ok" data-bind="visible: $root.accountEmail() === email"></i>
|
||||
<i class="icon-user" data-bind="visible: $root.accountEmail() !== email"></i>
|
||||
|
||||
<span data-bind="text: email"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
<li class="divider"></li>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: allowAddAccount -->
|
||||
<li class="e-item">
|
||||
<a class="e-link" data-bind="click: addAccountClick">
|
||||
<i class="icon-user-add"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="TOP_TOOLBAR/BUTTON_ADD_ACCOUNT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
<li class="e-item">
|
||||
<a class="e-link" data-bind="click: settingsClick">
|
||||
<i class="icon-cog"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="TOP_TOOLBAR/BUTTON_SETTINGS"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!--
|
||||
<li class="divider"></li>
|
||||
<li class="e-item">
|
||||
<a class="e-link" data-bind="click: logoutClick">
|
||||
<i class="icon-switch"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="TOP_TOOLBAR/BUTTON_LOGOUT"></span>
|
||||
</a>
|
||||
</li>
|
||||
-->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Add table
Add a link
Reference in a new issue