mirror of
https://github.com/documize/community.git
synced 2025-08-01 19:45:24 +02:00
Redesign setting screens
We're using iconography to stylize each setting screen. Imeplemented new color palletes and shades.
This commit is contained in:
parent
02102f9bf3
commit
f442081a41
42 changed files with 563 additions and 548 deletions
|
@ -10,16 +10,20 @@
|
|||
// https://documize.com
|
||||
|
||||
import { inject as service } from '@ember/service';
|
||||
import Notifier from '../../mixins/notifier';
|
||||
import Component from '@ember/component';
|
||||
|
||||
export default Component.extend({
|
||||
export default Component.extend(Notifier, {
|
||||
appMeta: service(),
|
||||
buttonLabel: 'Rebuild Search Index',
|
||||
buttonLabel: 'Rebuild',
|
||||
|
||||
actions: {
|
||||
reindex() {
|
||||
this.set('buttonLabel', 'Rebuilding search index...')
|
||||
this.get('reindex')();
|
||||
this.set('buttonLabel', 'Running...');
|
||||
this.notifyInfo("Starting search re-index process");
|
||||
this.get('reindex')(() => {
|
||||
this.notifySuccess("Search re-indexing complete");
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -24,7 +24,7 @@ export default Component.extend(Notifier, {
|
|||
testSMTP: null,
|
||||
|
||||
actions: {
|
||||
saveSMTP() {
|
||||
saveSMTP(e) {
|
||||
if (this.get('SMTPHostEmptyError')) {
|
||||
$("#smtp-host").focus();
|
||||
return;
|
||||
|
@ -49,11 +49,17 @@ export default Component.extend(Notifier, {
|
|||
);
|
||||
|
||||
this.set('buttonText', 'Please wait...');
|
||||
this.notifyInfo('Sending test email to you');
|
||||
|
||||
this.get('saveSMTP')().then((result) => {
|
||||
this.notifySuccess('Saved');
|
||||
this.set('buttonText', 'Save & Test');
|
||||
this.set('testSMTP', result);
|
||||
|
||||
if (result.success) {
|
||||
this.notifySuccess(result.message);
|
||||
} else {
|
||||
this.notifyError(result.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,6 +76,7 @@ export default Component.extend(Notifier, Modals, {
|
|||
this.set('deleteSpace.id', '');
|
||||
this.set('deleteSpace.name', '');
|
||||
this.loadData();
|
||||
this.notifySuccess('Deleted');
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -86,6 +87,8 @@ export default Component.extend(Notifier, Modals, {
|
|||
filterType: 'space',
|
||||
};
|
||||
|
||||
this.notifyInfo('Export running...');
|
||||
|
||||
this.get('documentSvc').export(spec).then((htmlExport) => {
|
||||
this.get('browserSvc').downloadFile(htmlExport, 'documize.html');
|
||||
this.notifySuccess('Exported');
|
||||
|
|
15
gui/app/components/layout/logo-heading.js
Normal file
15
gui/app/components/layout/logo-heading.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// This software (Documize Community Edition) is licensed under
|
||||
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||
//
|
||||
// You can operate outside the AGPL restrictions by purchasing
|
||||
// Documize Enterprise Edition and obtaining a commercial license
|
||||
// by contacting <sales@documize.com>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Component from '@ember/component';
|
||||
|
||||
export default Component.extend({
|
||||
});
|
|
@ -58,6 +58,7 @@ export default Component.extend({
|
|||
}),
|
||||
|
||||
click(e) {
|
||||
e.preventDefault();
|
||||
if (is.not.undefined(this.onClick)) {
|
||||
this.onClick(e);
|
||||
}
|
||||
|
|
|
@ -196,6 +196,7 @@ let constants = EmberObject.extend({
|
|||
|
||||
Icon: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||
All: 'dicon-menu-8',
|
||||
Announce: 'dicon-notification',
|
||||
ArrowUp: 'dicon-arrow-up',
|
||||
ArrowDown: 'dicon-arrow-down',
|
||||
ArrowLeft: 'dicon-arrow-left',
|
||||
|
@ -203,12 +204,21 @@ let constants = EmberObject.extend({
|
|||
Attachment: 'dicon-attachment',
|
||||
BarChart: 'dicon-chart-bar-2',
|
||||
Bookmark: 'dicon-bookmark',
|
||||
ButtonAction: 'button-2',
|
||||
Database: 'dicon-database',
|
||||
Download: 'dicon-download',
|
||||
Delete: 'dicon-bin',
|
||||
Edit: 'dicon-pen-2',
|
||||
Email: 'dicon-email',
|
||||
Export: 'dicon-data-upload',
|
||||
Export2: 'dicon-upload',
|
||||
Filter: 'dicon-sort-tool',
|
||||
Grid1: 'dicon-grid-interface',
|
||||
Handshake: 'handshake',
|
||||
Index: 'dicon-align-justify',
|
||||
Integrations: 'dicon-geometry',
|
||||
ListBullet: 'dicon-list-bullet-2',
|
||||
Locked: 'dicon-lock',
|
||||
Print: 'dicon-print',
|
||||
Pulse: 'dicon-pulse',
|
||||
Plus: 'dicon-e-add',
|
||||
|
@ -216,8 +226,10 @@ let constants = EmberObject.extend({
|
|||
People: 'dicon-multiple-19',
|
||||
Remove: 'dicon-i-remove',
|
||||
Search: 'dicon-magnifier',
|
||||
Send: 'dicon-send',
|
||||
Settings: 'dicon-settings-gear',
|
||||
Tag: 'dicon-delete-key',
|
||||
Unlocked: 'dicon-unlocked',
|
||||
World: 'dicon-globe',
|
||||
},
|
||||
|
||||
|
@ -230,10 +242,13 @@ let constants = EmberObject.extend({
|
|||
|
||||
Label: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||
Add: 'Add',
|
||||
Activate: "Activate",
|
||||
Cancel: 'Cancel',
|
||||
Close: 'Close',
|
||||
Delete: 'Delete',
|
||||
Export: 'Export',
|
||||
Insert: 'Insert',
|
||||
Restore: 'Restore',
|
||||
Save: 'Save',
|
||||
Update: 'Update',
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
{{layout/logo-heading
|
||||
title="Authentication"
|
||||
desc="Choose user authentication provider — Documize, Redhat Keycloak, LDAP/AD"
|
||||
icon=constants.Icon.Locked}}
|
||||
|
||||
{{customize/auth-settings
|
||||
authProvider=model.authProvider
|
||||
authConfig=model.authConfig
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title="Backup & Restore"
|
||||
desc="Export all content to self-contained single zip file"
|
||||
icon=constants.Icon.Database}}
|
||||
|
||||
{{customize/backup-restore onBackup=(action "onBackup") onRestore=(action "onRestore")}}
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title="Spaces"
|
||||
desc="Delete spaces, take ownership of shared and orphaned spaces"
|
||||
icon=constants.Icon.Grid1}}
|
||||
|
||||
{{customize/space-admin}}
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title="Customize"
|
||||
desc="Options to help you customize Documize"
|
||||
icon=constants.Icon.Settings}}
|
||||
|
||||
{{customize/general-settings model=model save=(action "save")}}
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title="User Groups"
|
||||
desc="Define groups for easier user and permission management"
|
||||
icon=constants.Icon.People}}
|
||||
|
||||
{{customize/user-groups}}
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title="Integrations"
|
||||
desc="Enable and configure third party integrations"
|
||||
icon=constants.Icon.Integrations}}
|
||||
|
||||
{{customize/integration-settings jira=model.jira trello=model.trello}}
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
//
|
||||
// https://documize.com
|
||||
|
||||
import { inject as service } from '@ember/service';
|
||||
import Controller from '@ember/controller';
|
||||
|
||||
export default Controller.extend({
|
||||
appMeta: service(),
|
||||
});
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title=(concat appMeta.edition " Edition " appMeta.version)
|
||||
desc="Enterprise Edition provides premium features and comprehensive product support"
|
||||
icon=constants.Icon.Announce}}
|
||||
|
||||
{{customize/change-log}}
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title="Search"
|
||||
desc="Rebuild the search index"
|
||||
icon=constants.Icon.Search}}
|
||||
|
||||
{{customize/search-index searchStatus=model reindex=(action "reindex")}}
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
{{layout/logo-heading
|
||||
title="Mail Server"
|
||||
desc="Specify mail server details required for sending user invite and notification emails"
|
||||
icon=constants.Icon.Send}}
|
||||
|
||||
{{customize/smtp-settings model=model saveSMTP=(action "saveSMTP")}}
|
||||
|
|
|
@ -1,59 +1,71 @@
|
|||
{{#layout/top-bar}}
|
||||
{{/layout/top-bar}}
|
||||
{{#layout/master-sidebar}}
|
||||
{{ui/ui-spacer size=300}}
|
||||
|
||||
{{#layout/middle-zone}}
|
||||
{{#layout/middle-zone-content}}
|
||||
{{outlet}}
|
||||
{{/layout/middle-zone-content}}
|
||||
|
||||
{{#layout/middle-zone-sidebar}}
|
||||
<div id="sidebar" class="sidebar">
|
||||
<h1>Settings</h1>
|
||||
<p>Configure authentication, SMTP, licensing and manage user accounts</p>
|
||||
|
||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
||||
{{#link-to "customize.general" activeClass="selected" class="tab tab-vertical" tagName="li"}}General{{/link-to}}
|
||||
{{#link-to "customize.integrations" activeClass="selected" class="tab tab-vertical" tagName="li"}}Integrations{{/link-to}}
|
||||
{{#if session.isGlobalAdmin}}
|
||||
{{#link-to "customize.smtp" activeClass="selected" class="tab tab-vertical" tagName="li"}}Mail{{/link-to}}
|
||||
{{/if}}
|
||||
</ul>
|
||||
|
||||
<div class="mt-4" />
|
||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
||||
{{#link-to "customize.groups" activeClass="selected" class="tab tab-vertical" tagName="li"}}Groups{{/link-to}}
|
||||
{{#link-to "customize.users" activeClass="selected" class="tab tab-vertical" tagName="li"}}Users{{/link-to}}
|
||||
{{#if session.isGlobalAdmin}}
|
||||
{{#link-to "customize.auth" activeClass="selected" class="tab tab-vertical" tagName="li"}}Authentication{{/link-to}}
|
||||
{{/if}}
|
||||
</ul>
|
||||
|
||||
<div class="mt-4" />
|
||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
||||
{{#link-to "customize.folders" activeClass="selected" class="tab tab-vertical" tagName="li"}}Spaces{{/link-to}}
|
||||
{{#if session.isGlobalAdmin}}
|
||||
{{#link-to "customize.search" activeClass="selected" class="tab tab-vertical" tagName="li"}}Search{{/link-to}}
|
||||
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
|
||||
{{#link-to "customize.audit" activeClass="selected" class="tab tab-vertical" tagName="li"}}Audit{{/link-to}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</ul>
|
||||
|
||||
<div class="mt-4" />
|
||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
||||
{{#link-to "customize.backup" activeClass="selected" class="tab tab-vertical" tagName="li"}}Backup // Restore{{/link-to}}
|
||||
</ul>
|
||||
|
||||
<div class="mt-4" />
|
||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
||||
<div class="section">
|
||||
<div class="title">filter</div>
|
||||
<div class="list">
|
||||
{{#link-to "customize.general" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Settings}} />
|
||||
<div class="name">General</div>
|
||||
{{/link-to}}
|
||||
{{#link-to "customize.integrations" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Integrations}} />
|
||||
<div class="name">Integrations</div>
|
||||
{{/link-to}}
|
||||
{{#if session.isGlobalAdmin}}
|
||||
{{#link-to "customize.smtp" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Send}} />
|
||||
<div class="name">Mail Server</div>
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
{{#link-to "customize.users" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Person}} />
|
||||
<div class="name">User Management</div>
|
||||
{{/link-to}}
|
||||
{{#link-to "customize.groups" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.People}} />
|
||||
<div class="name">User Groups</div>
|
||||
{{/link-to}}
|
||||
{{#if session.isGlobalAdmin}}
|
||||
{{#link-to "customize.auth" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Locked}} />
|
||||
<div class="name">Authentication</div>
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
{{#link-to "customize.folders" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Grid1}} />
|
||||
<div class="name">Spaces</div>
|
||||
{{/link-to}}
|
||||
{{#if session.isGlobalAdmin}}
|
||||
{{#link-to "customize.search" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Search}} />
|
||||
<div class="name">Search</div>
|
||||
{{/link-to}}
|
||||
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
|
||||
{{#link-to "customize.billing" activeClass="selected" class="tab tab-vertical" tagName="li"}}Billing{{/link-to}}
|
||||
{{#link-to "customize.audit" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.ButtonAction}} />
|
||||
<div class="name">Audit Log</div>
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
{{#link-to "customize.product" activeClass="selected" class="tab tab-vertical" tagName="li"}}Changelog{{/link-to}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
{{#link-to "customize.backup" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Database}} />
|
||||
<div class="name">Backup & Restore</div>
|
||||
{{/link-to}}
|
||||
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
|
||||
{{#link-to "customize.billing" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Handshake}} />
|
||||
<div class="name">Billing</div>
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
{{#link-to "customize.product" activeClass="selected" class="item" tagName="div"}}
|
||||
<i class={{concat "dicon " constants.Icon.Announce}} />
|
||||
<div class="name">Changelog</div>
|
||||
{{/link-to}}
|
||||
</div>
|
||||
{{/layout/middle-zone-sidebar}}
|
||||
{{/layout/middle-zone}}
|
||||
</div>
|
||||
{{/layout/master-sidebar}}
|
||||
|
||||
{{#layout/bottom-bar}}
|
||||
{{/layout/bottom-bar}}
|
||||
{{#layout/master-content}}
|
||||
{{outlet}}
|
||||
{{/layout/master-content}}
|
|
@ -1,3 +1,8 @@
|
|||
{{layout/logo-heading
|
||||
title="User Management"
|
||||
desc="Manage basic information, passwords and permissions"
|
||||
icon=constants.Icon.Person}}
|
||||
|
||||
{{customize/user-admin users=model
|
||||
onAddUser=(action "onAddUser")
|
||||
onAddUsers=(action "onAddUsers")}}
|
||||
|
|
|
@ -1,33 +1,29 @@
|
|||
{{#layout/master-sidebar selectedItem="spaces"}}
|
||||
|
||||
{{#unless session.isMobile}}
|
||||
{{ui/ui-spacer size=300}}
|
||||
{{/unless}}
|
||||
{{ui/ui-spacer size=300}}
|
||||
|
||||
<div class="section">
|
||||
<div class="title">filter</div>
|
||||
<div class="list">
|
||||
<div class="item {{if (eq selectedView "all") "selected"}}" {{action 'onSelect' 'all'}}>
|
||||
<div class="item {{if (eq selectedView "all") "selected"}}" {{action "onSelect" "all"}}>
|
||||
<i class={{concat "dicon " constants.Icon.All}} />
|
||||
<div class="name">All ({{model.length}})</div>
|
||||
</div>
|
||||
<div class="item {{if (eq selectedView "public") "selected"}}" {{action 'onSelect' 'public'}}>
|
||||
<div class="item {{if (eq selectedView "public") "selected"}}" {{action "onSelect" "public"}}>
|
||||
<i class={{concat "dicon " constants.Icon.World}} />
|
||||
<div class="name">Public ({{publicSpaces.length}})</div>
|
||||
</div>
|
||||
{{#if session.authenticated}}
|
||||
<div class="item {{if (eq selectedView "protected") "selected"}}" {{action 'onSelect' 'protected'}}>
|
||||
<div class="item {{if (eq selectedView "protected") "selected"}}" {{action "onSelect" "protected"}}>
|
||||
<i class={{concat "dicon " constants.Icon.People}} />
|
||||
<div class="name">Protected ({{protectedSpaces.length}})</div>
|
||||
</div>
|
||||
<div class="item {{if (eq selectedView "personal") "selected"}}" {{action 'onSelect' 'personal'}}>
|
||||
<div class="item {{if (eq selectedView "personal") "selected"}}" {{action "onSelect" "personal"}}>
|
||||
<i class={{concat "dicon " constants.Icon.Person}} />
|
||||
<div class="name">Personal ({{personalSpaces.length}})</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/layout/master-sidebar}}
|
||||
|
||||
{{#layout/master-content}}
|
||||
|
|
8
gui/app/styles/core/bootstrap.scss
vendored
8
gui/app/styles/core/bootstrap.scss
vendored
|
@ -59,19 +59,23 @@ $input-btn-focus-color: rgba($theme-500, .25);
|
|||
// form labels
|
||||
.form-group {
|
||||
> label {
|
||||
color: map-get($gray-shades, 800);
|
||||
color: map-get($gray-shades, 700);
|
||||
font-size: 1.2rem;
|
||||
font-weight: 500;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
> small, > div[class*="col"] > small {
|
||||
color: map-get($gray-shades, 600);
|
||||
font-size: 1rem;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
> small.highlight, > div[class*="col"] > small.highlight {
|
||||
font-size: 1rem;
|
||||
color: map-get($yellow-shades, 700) !important;
|
||||
}
|
||||
|
||||
margin-bottom: 30px !important;
|
||||
}
|
||||
|
||||
// links
|
||||
|
|
|
@ -394,3 +394,23 @@ icons
|
|||
.dicon-menu-8::before {
|
||||
content: "\ea48";
|
||||
}
|
||||
|
||||
.dicon-send::before {
|
||||
content: "\ea49";
|
||||
}
|
||||
|
||||
.dicon-email::before {
|
||||
content: "\ea4a";
|
||||
}
|
||||
|
||||
.dicon-download::before {
|
||||
content: "\ea4b";
|
||||
}
|
||||
|
||||
.dicon-database::before {
|
||||
content: "\ea4c";
|
||||
}
|
||||
|
||||
.dicon-notification::before {
|
||||
content: "\ea4d";
|
||||
}
|
||||
|
|
|
@ -10,3 +10,22 @@
|
|||
font-weight: 400;
|
||||
color: map-get($gray-shades, 800);
|
||||
}
|
||||
|
||||
.logo-heading {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
> .image {
|
||||
align-self: center;
|
||||
margin-right: 25px;
|
||||
|
||||
> i {
|
||||
font-size: 3.5rem;
|
||||
color: map-get($gray-shades, 600);
|
||||
}
|
||||
}
|
||||
|
||||
> .text {
|
||||
align-self: flex-start;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@mixin shadow() {
|
||||
box-shadow: 1px 1px 3px 0px rgba(211,211,211,1);
|
||||
}
|
||||
|
|
|
@ -1,32 +1,60 @@
|
|||
.product-update {
|
||||
text-align: left;
|
||||
margin: 50px 0;
|
||||
|
||||
> .update-summary {
|
||||
> .update-status {
|
||||
padding: 25px;
|
||||
border: 1px solid map-get($yellow-shades, 700);
|
||||
background-color: map-get($gray-shades, 100);
|
||||
@include border-radius(2px);
|
||||
background-color: map-get($yellow-shades, 100);
|
||||
border: 1px solid map-get($yellow-shades, 200);
|
||||
@include shadow();
|
||||
@include border-radius(3px);
|
||||
|
||||
> .caption {
|
||||
> .title {
|
||||
font-weight: bold;
|
||||
font-size: 1.5rem;
|
||||
color: map-get($yellow-shades, 700);
|
||||
color: map-get($yellow-shades, 600);
|
||||
margin-bottom: 15px;
|
||||
display: inline-block;
|
||||
display:block;
|
||||
}
|
||||
|
||||
> .instructions {
|
||||
font-weight: normal;
|
||||
font-weight: 500;
|
||||
font-size: 1.3rem;
|
||||
color: map-get($gray-shades, 600);
|
||||
color: map-get($gray-shades, 800);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
> .links {
|
||||
margin: 30px 0 0 0;
|
||||
|
||||
> p {
|
||||
> .edition-name {
|
||||
font-size: 1.3rem;
|
||||
font-weight: 400;
|
||||
color: map-get($yellow-shades, 900);
|
||||
}
|
||||
|
||||
> .link {
|
||||
font-size: 1.3rem;
|
||||
color: map-get($yellow-shades, 800);
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> .change-log {
|
||||
padding: 25px;
|
||||
background-color: map-get($gray-shades, 100);
|
||||
border: 1px solid map-get($gray-shades, 200);
|
||||
@include shadow();
|
||||
@include border-radius(3px);
|
||||
|
||||
> .version {
|
||||
margin: 30px 0 0 20px;
|
||||
font-size: 1.3rem;
|
||||
color: map-get($gray-shades, 600);
|
||||
font-weight: bold;
|
||||
font-weight: 700;
|
||||
font-size: 1.2rem;
|
||||
color: map-get($yellow-shades, 700);
|
||||
margin: 10px 0;
|
||||
display: block;
|
||||
}
|
||||
|
||||
> .changes {
|
||||
|
@ -41,10 +69,11 @@
|
|||
> .tag-edition {
|
||||
margin: 10px 10px 10px 10px;
|
||||
padding: 5px 10px;
|
||||
background-color: map-get($gray-shades, 300);
|
||||
color: $theme-500;
|
||||
background-color: map-get($green-shades, 200);
|
||||
color: map-get($green-shades, 600);
|
||||
font-weight: bold;
|
||||
font-size: 0.9rem;
|
||||
@include border-radius(3px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,4 @@
|
|||
.view-customize {
|
||||
> .admin-heading {
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
color: $color-black;
|
||||
}
|
||||
|
||||
> .sub-heading {
|
||||
font-size: 1.1rem;
|
||||
color: map-get($gray-shades, 600);
|
||||
}
|
||||
|
||||
.user-table {
|
||||
tbody tr td, thead tr th {
|
||||
border-top: none !important;
|
||||
|
@ -157,9 +146,9 @@
|
|||
|
||||
> .backup-zone {
|
||||
@include border-radius(3px);
|
||||
border: 1px solid map-get($gray-shades, 300);
|
||||
border: 1px solid map-get($green-shades, 200);
|
||||
padding: 20px 20px;
|
||||
background-color: map-get($green-shades, 200);
|
||||
background-color: map-get($green-shades, 100);
|
||||
color: $color-black-light-1;
|
||||
|
||||
> .backup-fail {
|
||||
|
@ -175,10 +164,10 @@
|
|||
|
||||
> .restore-zone {
|
||||
@include border-radius(3px);
|
||||
border: 1px solid map-get($gray-shades, 300);
|
||||
border: 1px solid map-get($red-shades, 200);
|
||||
margin: 50px 0;
|
||||
padding: 20px 20px;
|
||||
background-color: map-get($red-shades, 200);
|
||||
background-color: map-get($red-shades, 100);
|
||||
color: $color-black-light-1;
|
||||
|
||||
> .restore-fail {
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">Authentication</h1>
|
||||
<h2 class="sub-heading">Choose user authentication mechanism</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="view-customize">
|
||||
<form class="mt-5">
|
||||
<form>
|
||||
<div class="widget-list-picker widget-list-picker-horiz">
|
||||
<ul class="options">
|
||||
<li class="option {{if isDocumizeProvider "selected"}}" {{action "onDocumize"}}>
|
||||
|
@ -35,202 +26,144 @@
|
|||
</ul>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
{{#if isDocumizeProvider}}
|
||||
<p>There are no settings.</p>
|
||||
{{/if}}
|
||||
{{ui/ui-spacer size=300}}
|
||||
|
||||
{{#if isKeycloakProvider}}
|
||||
<div class="form-group row">
|
||||
<label for="keycloak-url" class="col-sm-3 col-form-label">Keycloak Server URL</label>
|
||||
<div class="col-sm-9">
|
||||
{{focus-input id="keycloak-url" type="text" value=keycloakConfig.url class=(if KeycloakUrlError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. http://localhost:8888/auth</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="keycloak-url">Keycloak Server URL</label>
|
||||
{{focus-input id="keycloak-url" type="text" value=keycloakConfig.url class=(if KeycloakUrlError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. http://localhost:8888/auth</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="keycloak-realm" class="col-sm-3 col-form-label">Keycloak Realm</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="keycloak-realm" type="text" value=keycloakConfig.realm class=(if KeycloakRealmError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. main</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="keycloak-realm">Keycloak Realm</label>
|
||||
{{input id="keycloak-realm" type="text" value=keycloakConfig.realm class=(if KeycloakRealmError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. main</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="keycloak-publicKey" class="col-sm-3 col-form-label">Keycloak Realm Public Key</label>
|
||||
<div class="col-sm-9">
|
||||
{{textarea id="keycloak-publicKey" type="text" value=keycloakConfig.publicKey rows=7 class=(if KeycloakPublicKeyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Copy the RSA Public Key from Realm Settings → Keys</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="keycloak-publicKey">Keycloak Realm Public Key</label>
|
||||
{{textarea id="keycloak-publicKey" type="text" value=keycloakConfig.publicKey rows=7 class=(if KeycloakPublicKeyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Copy the RSA Public Key from Realm Settings → Keys</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="keycloak-clientId" class="col-sm-3 col-form-label">Keycloak OIDC Client ID</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="keycloak-clientId" type="text" value=keycloakConfig.clientId class=(if KeycloakClientIdError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. account</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="keycloak-clientId">Keycloak OIDC Client ID</label>
|
||||
{{input id="keycloak-clientId" type="text" value=keycloakConfig.clientId class=(if KeycloakClientIdError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. account</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="keycloak-group" class="col-sm-3 col-form-label">Keycloak Group ID (Optional)</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="keycloak-group" type="text" value=keycloakConfig.group class="form-control"}}
|
||||
<small class="form-text text-muted">If you want to sync users in a particular Group (e.g. "Documize Users"), provide the Group ID (e.g. 511d8b61-1ec8-45f6-bc8d-5de64d54c9d2)</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="keycloak-group">Keycloak Group ID (Optional)</label>
|
||||
{{input id="keycloak-group" type="text" value=keycloakConfig.group class="form-control"}}
|
||||
<small class="form-text text-muted">If you want to sync users in a particular Group (e.g. "Documize Users"), provide the Group ID (e.g. 511d8b61-1ec8-45f6-bc8d-5de64d54c9d2)</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="keycloak-admin-user" class="col-sm-3 col-form-label">Keycloak Username</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="keycloak-admin-user" type="text" value=keycloakConfig.adminUser class=(if KeycloakAdminUserError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize (create user under Master Realm and assign 'view-users' role
|
||||
against Realm specified above)</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="keycloak-admin-user">Keycloak Username</label>
|
||||
{{input id="keycloak-admin-user" type="text" value=keycloakConfig.adminUser class=(if KeycloakAdminUserError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize (create user under Master Realm and assign 'view-users' role
|
||||
against Realm specified above)</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="keycloak-admin-password" class="col-sm-3 col-form-label">Keycloak Password</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="keycloak-admin-password" type="password" value=keycloakConfig.adminPassword class=(if KeycloakAdminPasswordError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="keycloak-admin-password">Keycloak Password</label>
|
||||
{{input id="keycloak-admin-password" type="password" value=keycloakConfig.adminPassword class=(if KeycloakAdminPasswordError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label">Disable Logout</label>
|
||||
<div class="col-sm-9">
|
||||
{{x-toggle value=keycloakConfig.disableLogout size="medium" theme="light" onToggle=(action (mut keycloakConfig.disableLogout))}}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Disable Logout</label>
|
||||
{{x-toggle value=keycloakConfig.disableLogout size="medium" theme="light" onToggle=(action (mut keycloakConfig.disableLogout))}}
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-defaultPermissionAddSpace" class="col-sm-3 col-form-label">Can Create Spaces</label>
|
||||
<div class="col-sm-9">
|
||||
{{x-toggle value=keycloakConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut keycloakConfig.defaultPermissionAddSpace))}}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-defaultPermissionAddSpace">Can Create Spaces</label>
|
||||
{{x-toggle value=keycloakConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut keycloakConfig.defaultPermissionAddSpace))}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if isLDAPProvider}}
|
||||
<div class="form-group row">
|
||||
<label for="ldap-host" class="col-sm-3 col-form-label">LDAP Server</label>
|
||||
<div class="col-sm-9">
|
||||
{{focus-input id="ldap-host" type="text" value=ldapConfig.serverHost class=(if ldapErrorServerHost "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">IP or host address, e.g. ldap.example.org, 127.0.0.1</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-host">LDAP Server</label>
|
||||
{{focus-input id="ldap-host" type="text" value=ldapConfig.serverHost class=(if ldapErrorServerHost "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">IP or host address, e.g. ldap.example.org, 127.0.0.1</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-port" class="col-sm-3 col-form-label">LDAP Server Port</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-port" type="number" value=ldapConfig.serverPort class=(if ldapErrorServerPort "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Port number, e.g. 389</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-port">LDAP Server Port</label>
|
||||
{{input id="ldap-port" type="number" value=ldapConfig.serverPort class=(if ldapErrorServerPort "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Port number, e.g. 389</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-encryption" class="col-sm-3 col-form-label">Encryption</label>
|
||||
<div class="col-sm-9">
|
||||
<select onchange={{action "onLDAPEncryption" value="target.value"}} class="form-control">
|
||||
<option value={{constants.AuthProvider.EncryptionTypeNone}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeNone}}>
|
||||
{{constants.AuthProvider.EncryptionTypeNone}}
|
||||
</option>
|
||||
<option value={{constants.AuthProvider.EncryptionTypeStartTLS}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeStartTLS}}>
|
||||
{{constants.AuthProvider.EncryptionTypeStartTLS}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-encryption">Encryption</label>
|
||||
<select onchange={{action "onLDAPEncryption" value="target.value"}} class="form-control">
|
||||
<option value={{constants.AuthProvider.EncryptionTypeNone}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeNone}}>
|
||||
{{constants.AuthProvider.EncryptionTypeNone}}
|
||||
</option>
|
||||
<option value={{constants.AuthProvider.EncryptionTypeStartTLS}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeStartTLS}}>
|
||||
{{constants.AuthProvider.EncryptionTypeStartTLS}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-baseDN" class="col-sm-3 col-form-label">Base DN</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-baseDN" type="text" value=ldapConfig.baseDN class="form-control"}}
|
||||
<small class="form-text text-muted">Starting point for search filters, e.g. ou=users,dc=example,dc=com</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-baseDN">Base DN</label>
|
||||
{{input id="ldap-baseDN" type="text" value=ldapConfig.baseDN class="form-control"}}
|
||||
<small class="form-text text-muted">Starting point for search filters, e.g. ou=users,dc=example,dc=com</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-bindDN" class="col-sm-3 col-form-label">Bind DN</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-bindDN" type="text" value=ldapConfig.bindDN class=(if ldapErrorBindDN "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">login credentials for LDAP server</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-bindDN">Bind DN</label>
|
||||
{{input id="ldap-bindDN" type="text" value=ldapConfig.bindDN class=(if ldapErrorBindDN "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">login credentials for LDAP server</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-bindPassword" class="col-sm-3 col-form-label">Bind Password</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-bindPassword" type="password" value=ldapConfig.bindPassword class=(if ldapErrorBindPassword "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">login credentials for LDAP server</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-bindPassword">Bind Password</label>
|
||||
{{input id="ldap-bindPassword" type="password" value=ldapConfig.bindPassword class=(if ldapErrorBindPassword "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">login credentials for LDAP server</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-userFilter" class="col-sm-3 col-form-label">User Filter</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-userFilter" type="text" value=ldapConfig.userFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Search filter for finding users, e.g. (|(objectClass=person)(objectClass=user)(objectClass=inetOrgPerson))</small>
|
||||
<small class="form-text text-muted highlight">Specify User Filter and/or Group Filter</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-userFilter">User Filter</label>
|
||||
{{input id="ldap-userFilter" type="text" value=ldapConfig.userFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Search filter for finding users, e.g. (|(objectClass=person)(objectClass=user)(objectClass=inetOrgPerson))</small>
|
||||
<small class="form-text text-muted highlight">Specify User Filter and/or Group Filter</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-groupFilter" class="col-sm-3 col-form-label">Group Filter</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-groupFilter" type="text" value=ldapConfig.groupFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Search filter for finding users via groups, e.g. (&(objectClass=group)(|(cn=ship_crew)(cn=admin_staff)))</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-groupFilter">Group Filter</label>
|
||||
{{input id="ldap-groupFilter" type="text" value=ldapConfig.groupFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Search filter for finding users via groups, e.g. (&(objectClass=group)(|(cn=ship_crew)(cn=admin_staff)))</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="ldap-attributeUserRDN" class="col-sm-3 col-form-label">User Attribute RDN</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-attributeUserRDN" type="text" value=ldapConfig.attributeUserRDN class=(if ldapErrorAttributeUserRDN "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Username/login attribute, e.g. uid in LDAP, sAMAccountName in Active Directory</small>
|
||||
<small class="form-text text-muted highlight">User Attributes used to retreive data when using User Filter</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-attributeUserRDN">User Attribute RDN</label>
|
||||
{{input id="ldap-attributeUserRDN" type="text" value=ldapConfig.attributeUserRDN class=(if ldapErrorAttributeUserRDN "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Username/login attribute, e.g. uid in LDAP, sAMAccountName in Active Directory</small>
|
||||
<small class="form-text text-muted highlight">User Attributes used to retreive data when using User Filter</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-attributeUserFirstname" class="col-sm-3 col-form-label">User Attribute Firstname</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-attributeUserFirstname" type="text" value=ldapConfig.attributeUserFirstname class=(if ldapErrorAttributeUserFirstname "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Firstname attribute, e.g. givenName</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-attributeUserFirstname">User Attribute Firstname</label>
|
||||
{{input id="ldap-attributeUserFirstname" type="text" value=ldapConfig.attributeUserFirstname class=(if ldapErrorAttributeUserFirstname "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Firstname attribute, e.g. givenName</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-attributeUserLastname" class="col-sm-3 col-form-label">User Attribute Lastname</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-attributeUserLastname" type="text" value=ldapConfig.attributeUserLastname class=(if ldapErrorAttributeUserLastname "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Lastname attribute, e.g. sn</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-attributeUserLastname">User Attribute Lastname</label>
|
||||
{{input id="ldap-attributeUserLastname" type="text" value=ldapConfig.attributeUserLastname class=(if ldapErrorAttributeUserLastname "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Lastname attribute, e.g. sn</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-attributeUserEmail" class="col-sm-3 col-form-label">User Attribute Email</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-attributeUserEmail" type="text" value=ldapConfig.attributeUserEmail class=(if ldapErrorAttributeUserEmail "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Email attribute, e.g. mail</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-attributeUserEmail">User Attribute Email</label>
|
||||
{{input id="ldap-attributeUserEmail" type="text" value=ldapConfig.attributeUserEmail class=(if ldapErrorAttributeUserEmail "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Email attribute, e.g. mail</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-attributeGroupMember" class="col-sm-3 col-form-label">Group Attribute Member</label>
|
||||
<div class="col-sm-9">
|
||||
{{input id="ldap-attributeGroupMember" type="text" value=ldapConfig.attributeGroupMember class=(if ldapErrorAttributeGroupMember "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Attribute that identifies individual group member, e.g. member or uniqueMember</small>
|
||||
<small class="form-text text-muted highlight">Group Attributes used to retreive data when using Group Filter</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-attributeGroupMember">Group Attribute Member</label>
|
||||
{{input id="ldap-attributeGroupMember" type="text" value=ldapConfig.attributeGroupMember class=(if ldapErrorAttributeGroupMember "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Attribute that identifies individual group member, e.g. member or uniqueMember</small>
|
||||
<small class="form-text text-muted highlight">Group Attributes used to retreive data when using Group Filter</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-disableLogout" class="col-sm-3 col-form-label">Disable Logout</label>
|
||||
<div class="col-sm-9">
|
||||
{{x-toggle value=ldapConfig.disableLogout size="medium" theme="light" onToggle=(action (mut ldapConfig.disableLogout))}}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-disableLogout">Disable Logout</label>
|
||||
{{x-toggle value=ldapConfig.disableLogout size="medium" theme="light" onToggle=(action (mut ldapConfig.disableLogout))}}
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ldap-defaultPermissionAddSpace" class="col-sm-3 col-form-label">Can Create Spaces</label>
|
||||
<div class="col-sm-9">
|
||||
{{x-toggle value=ldapConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut ldapConfig.defaultPermissionAddSpace))}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-3"></div>
|
||||
<div class="col-sm-9">
|
||||
<div class="btn btn-secondary mt-4" {{action "onLDAPPreview"}}>Test Connection & Preview pauth→</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ldap-defaultPermissionAddSpace">Can Create Spaces</label>
|
||||
{{x-toggle value=ldapConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut ldapConfig.defaultPermissionAddSpace))}}
|
||||
</div>
|
||||
{{ui/ui-button color=constants.Color.Yellow light=true label="Test →" onClick=(action "onLDAPPreview")}}
|
||||
{{ui/ui-button-gap}}
|
||||
{{/if}}
|
||||
|
||||
<div class="btn btn-success mt-4" {{action "onSave"}}>ACTIVATE</div>
|
||||
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Activate onClick=(action "onSave")}}
|
||||
</form>
|
||||
|
||||
{{#if (gt keycloakFailure.length 0)}}
|
||||
|
@ -253,8 +186,8 @@
|
|||
{{/if}}
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,14 +1,4 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">Backup & Restore</h1>
|
||||
<h2 class="sub-heading">Export all documents and settings to a single ZIP file.</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="view-customize">
|
||||
|
||||
<div class="backup-restore">
|
||||
<div class="backup-zone">
|
||||
{{#if session.isGlobalAdmin}}
|
||||
|
@ -36,10 +26,10 @@
|
|||
{{#if backupRunning}}
|
||||
<h3 class="text-success">Backup running, please wait...</h3>
|
||||
{{else}}
|
||||
<button class="btn btn-success mb-3" {{action "onBackup"}}>TENANT BACKUP ({{appMeta.appHost}})</button>
|
||||
{{ui/ui-button color=constants.Color.Yellow light=true label=(concat "TENANT BACKUP (" appMeta.appHost ")") onClick=(action "onBackup")}}
|
||||
{{#if session.isGlobalAdmin}}
|
||||
<div class="button-gap" />
|
||||
<button class="btn btn-success mb-3" {{action "onSystemBackup"}}>SYSTEM BACKUP</button>
|
||||
{{ui/ui-button-gap}}
|
||||
{{ui/ui-button color=constants.Color.Green light=true label="SYSTEM BACKUP" onClick=(action "onSystemBackup")}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if backupFailed}}
|
||||
|
@ -73,7 +63,7 @@
|
|||
<div class="restore-success">Restore completed — restart your browser and log in</div>
|
||||
{{else}}
|
||||
{{#if restoreUploadReady}}
|
||||
<button class="btn btn-danger mb-3" {{action "onShowRestoreModal"}}>{{restoreButtonLabel}}</button>
|
||||
{{ui/ui-button color=constants.Color.Red light=false label=restoreButtonLabel onClick=(action "onShowRestoreModal")}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
@ -94,8 +84,9 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-danger" onclick={{action "onRestore"}}>Start Restore</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
|
||||
{{ui/ui-button-gap}}
|
||||
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Restore onClick=(action "onRestore")}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,37 +1,31 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">{{appMeta.edition}} Edition {{appMeta.version}}</h1>
|
||||
<h2 class="sub-heading">Enterprise Edition unlocks
|
||||
<a class="" href="https://documize.com/pricing">premium capabilities and product support</a>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-update">
|
||||
<div class="update-summary">
|
||||
{{#if appMeta.updateAvailable}}
|
||||
<a href="https://documize.com/downloads" class="caption">New version available</a>
|
||||
<div class="update-status">
|
||||
{{!-- appMeta.updateAvailable --}}
|
||||
{{#if true}}
|
||||
<a class="title" href="https://documize.com/downloads">Documize product update is available :)</a>
|
||||
<p class="instructions">
|
||||
To upgrade, replace existing binary and restart Documize. Migrate between Community and Enterprise editions seamlessly.
|
||||
</p>
|
||||
{{else}}
|
||||
<div class="caption">Release Summary</div>
|
||||
<div class="title">Product Downloads</div>
|
||||
{{/if}}
|
||||
<p>
|
||||
<span class="color-black-light-2">Community Edition {{appMeta.communityLatest}}</span>
|
||||
<a href="https://storage.googleapis.com/documize/downloads/documize-community-windows-amd64.exe" class="bold-700">Windows</a> ·
|
||||
<a href="https://storage.googleapis.com/documize/downloads/documize-community-linux-amd64" class="bold-700">Linux</a> ·
|
||||
<a href="https://storage.googleapis.com/documize/downloads/documize-community-darwin-amd64" class="bold-700">macOS</a>
|
||||
</p>
|
||||
<p>
|
||||
<span class="color-black-light-2">Enterprise Edition {{appMeta.enterpriseLatest}}</span>
|
||||
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-windows-amd64.exe" class="bold-700 color-gray-700">Windows</a> ·
|
||||
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-linux-amd64" class="bold-700 color-gray-700">Linux</a> ·
|
||||
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-darwin-amd64" class="bold-700 color-gray-700">macOS</a>
|
||||
</p>
|
||||
<div class="my-5" />
|
||||
<div class="links">
|
||||
<p>
|
||||
<span class="edition-name">Community Edition {{appMeta.communityLatest}}</span>
|
||||
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-windows-amd64.exe">Windows</a> ·
|
||||
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-linux-amd64">Linux</a> ·
|
||||
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-darwin-amd64">macOS</a>
|
||||
</p>
|
||||
<p>
|
||||
<span class="edition-name">Enterprise Edition {{appMeta.enterpriseLatest}}</span>
|
||||
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-windows-amd64.exe">Windows</a> ·
|
||||
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-linux-amd64">Linux</a> ·
|
||||
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-darwin-amd64">macOS</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{ui/ui-spacer size=400}}
|
||||
<div class="change-log">
|
||||
{{{changelog}}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,73 +1,52 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">Instance Settings</h1>
|
||||
<h2 class="sub-heading">Settings applicable to the Documize instance</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="view-customize">
|
||||
<form class="mt-5">
|
||||
<div class="form-group row">
|
||||
<label for="siteTitle" class="col-sm-4 col-form-label">Site Name</label>
|
||||
<div class="col-sm-7">
|
||||
{{focus-input id="siteTitle" type="text" value=model.general.title class=(if hasTitleInputError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Provide short title for this Documize instance</small>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="siteTitle">Site Name</label>
|
||||
{{focus-input id="siteTitle" type="text" value=model.general.title class=(if hasTitleInputError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Provide short title for this Documize instance</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label id="siteMessage">Site Message</label>
|
||||
{{textarea id="siteMessage" rows="3" value=model.general.message class=(if hasMessageInputError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Provide short message explaining this Documize instance</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Anonymous Access</label>
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="allowAnonymousAccess" checked={{model.general.allowAnonymousAccess}}>
|
||||
<label class="form-check-label" for="allowAnonymousAccess">
|
||||
Make content marked as "Everyone" available to anonymous users
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label id="siteMessage" class="col-sm-4 col-form-label">Site Message</label>
|
||||
<div class="col-sm-7">
|
||||
{{textarea id="siteMessage" rows="3" value=model.general.message class=(if hasMessageInputError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">Provide short message explaining this Documize instance</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="conversionEndpoint">Conversion Service URL</label>
|
||||
{{input id="conversionEndpoint" type="text" value=model.general.conversionEndpoint class=(if hasConversionEndpointInputError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">
|
||||
Endpoint for handling import/export (e.g. https://api.documize.com,
|
||||
<a href="https://docs.documize.com/s/WNEpptWJ9AABRnha/administration-guides/d/WO0pt_MXigAB6sJ7/general-options">view documentation</a>)
|
||||
</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label">Anonymous Access</label>
|
||||
<div class="col-sm-7">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="allowAnonymousAccess" checked={{model.general.allowAnonymousAccess}}>
|
||||
<label class="form-check-label" for="allowAnonymousAccess">
|
||||
Make content marked as "Everyone" available to anonymous users
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="maxTags">Maximum Tags Per Document</label>
|
||||
<select class="form-control" id="maxTags" {{action "change" on="change"}}>
|
||||
<option selected={{is-equal 3 maxTags}} value="3">3</option>
|
||||
<option selected={{is-equal 4 maxTags}} value="4">4</option>
|
||||
<option selected={{is-equal 5 maxTags}} value="5">5</option>
|
||||
<option selected={{is-equal 6 maxTags}} value="6">6</option>
|
||||
<option selected={{is-equal 7 maxTags}} value="7">7</option>
|
||||
<option selected={{is-equal 8 maxTags}} value="8">8</option>
|
||||
<option selected={{is-equal 9 maxTags}} value="9">9</option>
|
||||
<option selected={{is-equal 10 maxTags}} value="10">10</option>
|
||||
</select>
|
||||
<small class="form-text text-muted">How many tags can be assigned to a document (between 3 and 10 tags)</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="conversionEndpoint" class="col-sm-4 col-form-label">Conversion Service URL</label>
|
||||
<div class="col-sm-7">
|
||||
{{input id="conversionEndpoint" type="text" value=model.general.conversionEndpoint class=(if hasConversionEndpointInputError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">
|
||||
Endpoint for handling import/export (e.g. https://api.documize.com,
|
||||
<a href="https://docs.documize.com/s/WNEpptWJ9AABRnha/administration-guides/d/WO0pt_MXigAB6sJ7/general-options">view documentation</a>)
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="maxTags" class="col-sm-4 col-form-label">Maximum Tags Per Document</label>
|
||||
<div class="col-sm-7">
|
||||
<select class="form-control" id="maxTags" {{action "change" on="change"}}>
|
||||
<option selected={{is-equal 3 maxTags}} value="3">3</option>
|
||||
<option selected={{is-equal 4 maxTags}} value="4">4</option>
|
||||
<option selected={{is-equal 5 maxTags}} value="5">5</option>
|
||||
<option selected={{is-equal 6 maxTags}} value="6">6</option>
|
||||
<option selected={{is-equal 7 maxTags}} value="7">7</option>
|
||||
<option selected={{is-equal 8 maxTags}} value="8">8</option>
|
||||
<option selected={{is-equal 9 maxTags}} value="9">9</option>
|
||||
<option selected={{is-equal 10 maxTags}} value="10">10</option>
|
||||
</select>
|
||||
<small class="form-text text-muted">How many tags can be assigned to a document (between 3 and 10 tags)</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label">Default Site Theme</label>
|
||||
<div class="col-sm-7">
|
||||
{{ui/theme-picker onChange=(action "onThemeChange")}}
|
||||
<small class="form-text text-muted">Users can set their own theme under Profile</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Default Site Theme</label>
|
||||
{{ui/theme-picker onChange=(action "onThemeChange")}}
|
||||
<small class="form-text text-muted">Users can set their own theme under Profile</small>
|
||||
</div>
|
||||
|
||||
<div class="btn btn-success bold-700 text-uppercase mt-4" {{action "save"}}>Save</div>
|
||||
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Save onClick=(action "save")}}
|
||||
</form>
|
||||
</div>
|
|
@ -1,52 +1,33 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">Integrations Settings</h1>
|
||||
<h2 class="sub-heading">Enable and configure third party integrations</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="view-customize">
|
||||
<form class="mt-5">
|
||||
|
||||
<form>
|
||||
<h2>Jira</h2>
|
||||
<p>Displays issues within documentation</p>
|
||||
<div class="form-group row">
|
||||
<label for="jira-url" class="col-sm-4 col-form-label">URL</label>
|
||||
<div class="col-sm-7">
|
||||
{{focus-input id="jira-url" type="text" value=jiraCreds.url class="form-control"}}
|
||||
<small class="form-text text-muted">Fully qualified domain name for your Jira instance e.g. http://jira.example.org</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="jira-url">URL</label>
|
||||
{{focus-input id="jira-url" type="text" value=jiraCreds.url class="form-control"}}
|
||||
<small class="form-text text-muted">Fully qualified domain name for your Jira instance e.g. http://jira.example.org</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="jira-username" class="col-sm-4 col-form-label">Username</label>
|
||||
<div class="col-sm-7">
|
||||
{{input id="jira-username" type="text" value=jiraCreds.username class="form-control"}}
|
||||
<small class="form-text text-muted">Your Jira login username/email</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="jira-username">Username</label>
|
||||
{{input id="jira-username" type="text" value=jiraCreds.username class="form-control"}}
|
||||
<small class="form-text text-muted">Your Jira login username/email</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="jira-secret" class="col-sm-4 col-form-label">Password</label>
|
||||
<div class="col-sm-7">
|
||||
{{input id="jira-secret" type="password" value=jiraCreds.secret class="form-control"}}
|
||||
<small class="form-text text-muted">Provide API Token if using Atlassian Cloud or Password when self-hosting Jira</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="jira-secret">Password</label>
|
||||
{{input id="jira-secret" type="password" value=jiraCreds.secret class="form-control"}}
|
||||
<small class="form-text text-muted">Provide API Token if using Atlassian Cloud or Password when self-hosting Jira</small>
|
||||
</div>
|
||||
|
||||
{{#if session.isGlobalAdmin}}
|
||||
<h2>Trello</h2>
|
||||
<p>Displays boards within documentation</p>
|
||||
<div class="form-group row">
|
||||
<label for="trello-key" class="col-sm-4 col-form-label">App Key</label>
|
||||
<div class="col-sm-7">
|
||||
<div class="form-group">
|
||||
<label for="trello-key">App Key</label>
|
||||
{{input id="trello-key" type="text" value=trelloCreds.appKey class="form-control"}}
|
||||
<small class="form-text text-muted">See <a href="https://trello.com/app-key">https://trello.com/app-key</a></small>
|
||||
</div>
|
||||
<small class="form-text text-muted">See <a href="https://trello.com/app-key">https://trello.com/app-key</a></small>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="btn btn-success bold-700 text-uppercase mt-4" {{action "onSave"}}>Save</div>
|
||||
|
||||
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Save onClick=(action "onSave")}}
|
||||
</form>
|
||||
</div>
|
|
@ -1,17 +1,8 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">Search</h1>
|
||||
<h2 class="sub-heading">There are currently {{searchStatus.entries}} search entries.</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="view-customize">
|
||||
<form class="mt-5 ">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<p>It can take up to 30 minutes to rebuild the search index across all documents and associated content.</p>
|
||||
<div class="btn btn-danger mt-3" {{action "reindex"}}>{{buttonLabel}}</div>
|
||||
<p>It can take up to 30 minutes to rebuild the search index.</p>
|
||||
{{ui/ui-button color=constants.Color.Yellow light=true label=buttonLabel onClick=(action "reindex")}}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,91 +1,56 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">SMTP Server</h1>
|
||||
<h2 class="sub-heading">For sending email notifications</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="view-customize">
|
||||
<form class="mt-5">
|
||||
<div class="form-group row">
|
||||
<label for="smtp-host" class="col-sm-4 col-form-label">Host</label>
|
||||
<div class="col-sm-8">
|
||||
{{focus-input id="smtp-host" type="text" value=model.smtp.host class=(if SMTPHostEmptyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. my.host.com</small>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="smtp-host">Host</label>
|
||||
{{focus-input id="smtp-host" type="text" value=model.smtp.host class=(if SMTPHostEmptyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text">e.g. my.host.com</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="smtp-port">Port</label>
|
||||
{{input id="smtp-port" type="text" value=model.smtp.port class=(if SMTPPortEmptyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. 587</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="smtp-userid">Username</label>
|
||||
{{input id="smtp-userid" type="text" value=model.smtp.userid class="form-control"}}
|
||||
<small class="form-text text-muted">e.g. Login username for SMTP server</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="smtp-password">Password</label>
|
||||
{{input id="smtp-password" type="password" value=model.smtp.password class="form-control"}}
|
||||
<small class="form-text text-muted">e.g. Login password for SMTP server</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="smtp-sender">Sender Email</label>
|
||||
{{input id="smtp-sender" type="email" value=model.smtp.sender class=(if SMTPSenderEmptyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. user@some-domain.com</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="smtp-senderName">Sender Name</label>
|
||||
{{input id="smtp-senderName" type="text" value=model.smtp.senderName class=(if senderNameError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. Documize</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Anonymous</label>
|
||||
<div class="form-check">
|
||||
{{input id="smtp-anonymous" type="checkbox" checked=model.smtp.anonymous class="form-check-input"}}
|
||||
<label class="form-check-label" for="smtp-anonymous">Anonymous authentication, ignore Username and Password fields</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="smtp-port" class="col-sm-4 col-form-label">Port</label>
|
||||
<div class="col-sm-8">
|
||||
{{input id="smtp-port" type="text" value=model.smtp.port class=(if SMTPPortEmptyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. 587</small>
|
||||
<div class="form-group">
|
||||
<label>Base64</label>
|
||||
<div class="form-check">
|
||||
{{input id="smtp-base64creds" type="checkbox" checked=model.smtp.base64creds class="form-check-input"}}
|
||||
<label class="form-check-label" for="smtp-base64creds">Base64 encode Username and Password fields</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="smtp-userid" class="col-sm-4 col-form-label">Username</label>
|
||||
<div class="col-sm-8">
|
||||
{{input id="smtp-userid" type="text" value=model.smtp.userid class="form-control"}}
|
||||
<small class="form-text text-muted">e.g. Login username for SMTP server</small>
|
||||
<div class="form-group">
|
||||
<label>SSL</label>
|
||||
<div class="form-check">
|
||||
{{input id="smtp-usessl" type="checkbox" checked=model.smtp.usessl class="form-check-input"}}
|
||||
<label class="form-check-label" for="smtp-usessl">Use SSL</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="smtp-password" class="col-sm-4 col-form-label">Password</label>
|
||||
<div class="col-sm-8">
|
||||
{{input id="smtp-password" type="password" value=model.smtp.password class="form-control"}}
|
||||
<small class="form-text text-muted">e.g. Login password for SMTP server</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="smtp-sender" class="col-sm-4 col-form-label">Sender Email</label>
|
||||
<div class="col-sm-8">
|
||||
{{input id="smtp-sender" type="email" value=model.smtp.sender class=(if SMTPSenderEmptyError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. user@some-domain.com</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="smtp-senderName" class="col-sm-4 col-form-label">Sender Name</label>
|
||||
<div class="col-sm-8">
|
||||
{{input id="smtp-senderName" type="text" value=model.smtp.senderName class=(if senderNameError "form-control is-invalid" "form-control")}}
|
||||
<small class="form-text text-muted">e.g. Documize</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label">Anonymous</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="form-check">
|
||||
{{input id="smtp-anonymous" type="checkbox" checked=model.smtp.anonymous class="form-check-input"}}
|
||||
<label class="form-check-label" for="smtp-anonymous">Anonymous authentication, ignore Username and Password fields</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label">Base64</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="form-check">
|
||||
{{input id="smtp-base64creds" type="checkbox" checked=model.smtp.base64creds class="form-check-input"}}
|
||||
<label class="form-check-label" for="smtp-base64creds">Base64 encode Username and Password fields</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label">SSL</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="form-check">
|
||||
{{input id="smtp-usessl" type="checkbox" checked=model.smtp.usessl class="form-check-input"}}
|
||||
<label class="form-check-label" for="smtp-usessl">Use SSL</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn btn-success mt-4" {{action "saveSMTP"}}>{{buttonText}}</div>
|
||||
{{ui/ui-button color=constants.Color.Green light=true label=buttonText onClick=(action "saveSMTP")}}
|
||||
</form>
|
||||
{{#if testSMTP.success}}
|
||||
<p class="smtp-success my-3">{{testSMTP.message}}</p>
|
||||
{{else}}
|
||||
<p class="smtp-failure my-3">{{testSMTP.message}}</p>
|
||||
{{/if}}
|
||||
</div>
|
|
@ -1,15 +1,7 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">Manage Spaces</h1>
|
||||
<h2 class="sub-heading">Delete spaces, take ownership of shared spaces and orphaned spaces</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="view-customize my-5">
|
||||
<div class="view-customize">
|
||||
{{#if spaces}}
|
||||
<button type="button" class="btn btn-success" onclick={{action "onExport"}}>Export content</button>
|
||||
{{ui/ui-button color=constants.Color.Yellow light=true icon=constants.Icon.Export label=constants.Label.Export onClick=(action "onExport")}}
|
||||
|
||||
<div class="space-list">
|
||||
{{#each spaces as |space|}}
|
||||
<div class="space row">
|
||||
|
@ -46,8 +38,9 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-danger" onclick={{action "onDelete"}}>Delete</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
|
||||
{{ui/ui-button-gap}}
|
||||
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Delete onClick=(action "onDelete")}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
<h1 class="admin-heading">Users</h1>
|
||||
<h2 class="sub-heading">Set basic information, passwords and permissions for {{users.length}} users</h2>
|
||||
|
||||
{{#if isAuthProviderDocumize}}
|
||||
<div class="btn btn-success mt-3 mb-3" {{action "onOpenUserModal"}}>Add user</div>
|
||||
{{ui/ui-button color=constants.Color.Green light=true icon=constants.Icon.Person label=constants.Label.Add onClick=(action "onOpenUserModal")}}
|
||||
|
||||
<div id="add-user-modal" class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="view-customize">
|
||||
|
||||
<h1 class="admin-heading">Groups</h1>
|
||||
<h2 class="sub-heading">Create groups for easier user management — assign users to groups</h2>
|
||||
<div class="btn btn-success mt-3 mb-3" {{action "onShowAddGroupModal"}}>Add Group</div>
|
||||
|
||||
{{ui/ui-button color=constants.Color.Green light=true icon=constants.Icon.People label=constants.Label.Add onClick=(action "onShowAddGroupModal")}}
|
||||
{{ui/ui-spacer size=300}}
|
||||
<div id="add-group-modal" class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
|
@ -24,8 +21,9 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-success" onclick= {{action "onAddGroup"}}>Add</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||
{{ui/ui-button-gap}}
|
||||
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Add onClick=(action "onAddGroup")}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -83,8 +81,9 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-danger" onclick= {{action "onDeleteGroup"}}>Delete</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||
{{ui/ui-button-gap}}
|
||||
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Delete onClick=(action "onDeleteGroup")}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -108,8 +107,9 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-success" onclick= {{action "onEditGroup"}}>Save</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||
{{ui/ui-button-gap}}
|
||||
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Save onClick=(action "onEditGroup")}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -134,7 +134,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -153,7 +153,7 @@
|
|||
<div class="view-customize">
|
||||
<div class="text-center">
|
||||
<div class="btn-group btn-group-toggle">
|
||||
{{#attach-tooltip showDelay=1000}}Number of users to display{{/attach-tooltip}}>
|
||||
{{#attach-tooltip showDelay=1000}}Number of users to display{{/attach-tooltip}}
|
||||
<label class="btn btn-outline-secondary {{if (eq userLimit 1) "active"}}">
|
||||
<input type="radio" name="options" autocomplete="off" {{action "onLimit" 1}}>1
|
||||
</label>
|
||||
|
@ -202,7 +202,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
10
gui/app/templates/components/layout/logo-heading.hbs
Normal file
10
gui/app/templates/components/layout/logo-heading.hbs
Normal file
|
@ -0,0 +1,10 @@
|
|||
<div class="logo-heading">
|
||||
<div class="image">
|
||||
<i class="dicon {{icon}}" />
|
||||
</div>
|
||||
<div class="text">
|
||||
{{layout/page-heading title=title}}
|
||||
{{layout/page-desc desc=desc}}
|
||||
</div>
|
||||
</div>
|
||||
{{ui/ui-spacer size=300}}
|
|
@ -1,3 +1,4 @@
|
|||
<div class="master-content">
|
||||
{{yield}}
|
||||
</div>
|
||||
{{ui/ui-spacer size=300}}
|
Loading…
Add table
Add a link
Reference in a new issue