mirror of
https://github.com/documize/community.git
synced 2025-07-19 13:19:43 +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
|
// https://documize.com
|
||||||
|
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
|
import Notifier from '../../mixins/notifier';
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend(Notifier, {
|
||||||
appMeta: service(),
|
appMeta: service(),
|
||||||
buttonLabel: 'Rebuild Search Index',
|
buttonLabel: 'Rebuild',
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
reindex() {
|
reindex() {
|
||||||
this.set('buttonLabel', 'Rebuilding search index...')
|
this.set('buttonLabel', 'Running...');
|
||||||
this.get('reindex')();
|
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,
|
testSMTP: null,
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
saveSMTP() {
|
saveSMTP(e) {
|
||||||
if (this.get('SMTPHostEmptyError')) {
|
if (this.get('SMTPHostEmptyError')) {
|
||||||
$("#smtp-host").focus();
|
$("#smtp-host").focus();
|
||||||
return;
|
return;
|
||||||
|
@ -49,11 +49,17 @@ export default Component.extend(Notifier, {
|
||||||
);
|
);
|
||||||
|
|
||||||
this.set('buttonText', 'Please wait...');
|
this.set('buttonText', 'Please wait...');
|
||||||
|
this.notifyInfo('Sending test email to you');
|
||||||
|
|
||||||
this.get('saveSMTP')().then((result) => {
|
this.get('saveSMTP')().then((result) => {
|
||||||
this.notifySuccess('Saved');
|
|
||||||
this.set('buttonText', 'Save & Test');
|
this.set('buttonText', 'Save & Test');
|
||||||
this.set('testSMTP', result);
|
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.id', '');
|
||||||
this.set('deleteSpace.name', '');
|
this.set('deleteSpace.name', '');
|
||||||
this.loadData();
|
this.loadData();
|
||||||
|
this.notifySuccess('Deleted');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -86,6 +87,8 @@ export default Component.extend(Notifier, Modals, {
|
||||||
filterType: 'space',
|
filterType: 'space',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.notifyInfo('Export running...');
|
||||||
|
|
||||||
this.get('documentSvc').export(spec).then((htmlExport) => {
|
this.get('documentSvc').export(spec).then((htmlExport) => {
|
||||||
this.get('browserSvc').downloadFile(htmlExport, 'documize.html');
|
this.get('browserSvc').downloadFile(htmlExport, 'documize.html');
|
||||||
this.notifySuccess('Exported');
|
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) {
|
click(e) {
|
||||||
|
e.preventDefault();
|
||||||
if (is.not.undefined(this.onClick)) {
|
if (is.not.undefined(this.onClick)) {
|
||||||
this.onClick(e);
|
this.onClick(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,6 +196,7 @@ let constants = EmberObject.extend({
|
||||||
|
|
||||||
Icon: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
Icon: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
All: 'dicon-menu-8',
|
All: 'dicon-menu-8',
|
||||||
|
Announce: 'dicon-notification',
|
||||||
ArrowUp: 'dicon-arrow-up',
|
ArrowUp: 'dicon-arrow-up',
|
||||||
ArrowDown: 'dicon-arrow-down',
|
ArrowDown: 'dicon-arrow-down',
|
||||||
ArrowLeft: 'dicon-arrow-left',
|
ArrowLeft: 'dicon-arrow-left',
|
||||||
|
@ -203,12 +204,21 @@ let constants = EmberObject.extend({
|
||||||
Attachment: 'dicon-attachment',
|
Attachment: 'dicon-attachment',
|
||||||
BarChart: 'dicon-chart-bar-2',
|
BarChart: 'dicon-chart-bar-2',
|
||||||
Bookmark: 'dicon-bookmark',
|
Bookmark: 'dicon-bookmark',
|
||||||
|
ButtonAction: 'button-2',
|
||||||
|
Database: 'dicon-database',
|
||||||
|
Download: 'dicon-download',
|
||||||
Delete: 'dicon-bin',
|
Delete: 'dicon-bin',
|
||||||
Edit: 'dicon-pen-2',
|
Edit: 'dicon-pen-2',
|
||||||
|
Email: 'dicon-email',
|
||||||
|
Export: 'dicon-data-upload',
|
||||||
|
Export2: 'dicon-upload',
|
||||||
Filter: 'dicon-sort-tool',
|
Filter: 'dicon-sort-tool',
|
||||||
Grid1: 'dicon-grid-interface',
|
Grid1: 'dicon-grid-interface',
|
||||||
|
Handshake: 'handshake',
|
||||||
Index: 'dicon-align-justify',
|
Index: 'dicon-align-justify',
|
||||||
|
Integrations: 'dicon-geometry',
|
||||||
ListBullet: 'dicon-list-bullet-2',
|
ListBullet: 'dicon-list-bullet-2',
|
||||||
|
Locked: 'dicon-lock',
|
||||||
Print: 'dicon-print',
|
Print: 'dicon-print',
|
||||||
Pulse: 'dicon-pulse',
|
Pulse: 'dicon-pulse',
|
||||||
Plus: 'dicon-e-add',
|
Plus: 'dicon-e-add',
|
||||||
|
@ -216,8 +226,10 @@ let constants = EmberObject.extend({
|
||||||
People: 'dicon-multiple-19',
|
People: 'dicon-multiple-19',
|
||||||
Remove: 'dicon-i-remove',
|
Remove: 'dicon-i-remove',
|
||||||
Search: 'dicon-magnifier',
|
Search: 'dicon-magnifier',
|
||||||
|
Send: 'dicon-send',
|
||||||
Settings: 'dicon-settings-gear',
|
Settings: 'dicon-settings-gear',
|
||||||
Tag: 'dicon-delete-key',
|
Tag: 'dicon-delete-key',
|
||||||
|
Unlocked: 'dicon-unlocked',
|
||||||
World: 'dicon-globe',
|
World: 'dicon-globe',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -230,10 +242,13 @@ let constants = EmberObject.extend({
|
||||||
|
|
||||||
Label: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
Label: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
Add: 'Add',
|
Add: 'Add',
|
||||||
|
Activate: "Activate",
|
||||||
Cancel: 'Cancel',
|
Cancel: 'Cancel',
|
||||||
Close: 'Close',
|
Close: 'Close',
|
||||||
Delete: 'Delete',
|
Delete: 'Delete',
|
||||||
|
Export: 'Export',
|
||||||
Insert: 'Insert',
|
Insert: 'Insert',
|
||||||
|
Restore: 'Restore',
|
||||||
Save: 'Save',
|
Save: 'Save',
|
||||||
Update: 'Update',
|
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
|
{{customize/auth-settings
|
||||||
authProvider=model.authProvider
|
authProvider=model.authProvider
|
||||||
authConfig=model.authConfig
|
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")}}
|
{{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}}
|
{{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")}}
|
{{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}}
|
{{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}}
|
{{customize/integration-settings jira=model.jira trello=model.trello}}
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
//
|
//
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
|
import { inject as service } from '@ember/service';
|
||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
|
|
||||||
export default Controller.extend({
|
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}}
|
{{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")}}
|
{{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")}}
|
{{customize/smtp-settings model=model saveSMTP=(action "saveSMTP")}}
|
||||||
|
|
|
@ -1,59 +1,71 @@
|
||||||
{{#layout/top-bar}}
|
{{#layout/master-sidebar}}
|
||||||
{{/layout/top-bar}}
|
{{ui/ui-spacer size=300}}
|
||||||
|
|
||||||
{{#layout/middle-zone}}
|
<div class="section">
|
||||||
{{#layout/middle-zone-content}}
|
<div class="title">filter</div>
|
||||||
{{outlet}}
|
<div class="list">
|
||||||
{{/layout/middle-zone-content}}
|
{{#link-to "customize.general" activeClass="selected" class="item" tagName="div"}}
|
||||||
|
<i class={{concat "dicon " constants.Icon.Settings}} />
|
||||||
{{#layout/middle-zone-sidebar}}
|
<div class="name">General</div>
|
||||||
<div id="sidebar" class="sidebar">
|
{{/link-to}}
|
||||||
<h1>Settings</h1>
|
{{#link-to "customize.integrations" activeClass="selected" class="item" tagName="div"}}
|
||||||
<p>Configure authentication, SMTP, licensing and manage user accounts</p>
|
<i class={{concat "dicon " constants.Icon.Integrations}} />
|
||||||
|
<div class="name">Integrations</div>
|
||||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
{{/link-to}}
|
||||||
{{#link-to "customize.general" activeClass="selected" class="tab tab-vertical" tagName="li"}}General{{/link-to}}
|
{{#if session.isGlobalAdmin}}
|
||||||
{{#link-to "customize.integrations" activeClass="selected" class="tab tab-vertical" tagName="li"}}Integrations{{/link-to}}
|
{{#link-to "customize.smtp" activeClass="selected" class="item" tagName="div"}}
|
||||||
{{#if session.isGlobalAdmin}}
|
<i class={{concat "dicon " constants.Icon.Send}} />
|
||||||
{{#link-to "customize.smtp" activeClass="selected" class="tab tab-vertical" tagName="li"}}Mail{{/link-to}}
|
<div class="name">Mail Server</div>
|
||||||
{{/if}}
|
{{/link-to}}
|
||||||
</ul>
|
{{/if}}
|
||||||
|
{{#link-to "customize.users" activeClass="selected" class="item" tagName="div"}}
|
||||||
<div class="mt-4" />
|
<i class={{concat "dicon " constants.Icon.Person}} />
|
||||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
<div class="name">User Management</div>
|
||||||
{{#link-to "customize.groups" activeClass="selected" class="tab tab-vertical" tagName="li"}}Groups{{/link-to}}
|
{{/link-to}}
|
||||||
{{#link-to "customize.users" activeClass="selected" class="tab tab-vertical" tagName="li"}}Users{{/link-to}}
|
{{#link-to "customize.groups" activeClass="selected" class="item" tagName="div"}}
|
||||||
{{#if session.isGlobalAdmin}}
|
<i class={{concat "dicon " constants.Icon.People}} />
|
||||||
{{#link-to "customize.auth" activeClass="selected" class="tab tab-vertical" tagName="li"}}Authentication{{/link-to}}
|
<div class="name">User Groups</div>
|
||||||
{{/if}}
|
{{/link-to}}
|
||||||
</ul>
|
{{#if session.isGlobalAdmin}}
|
||||||
|
{{#link-to "customize.auth" activeClass="selected" class="item" tagName="div"}}
|
||||||
<div class="mt-4" />
|
<i class={{concat "dicon " constants.Icon.Locked}} />
|
||||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
<div class="name">Authentication</div>
|
||||||
{{#link-to "customize.folders" activeClass="selected" class="tab tab-vertical" tagName="li"}}Spaces{{/link-to}}
|
{{/link-to}}
|
||||||
{{#if session.isGlobalAdmin}}
|
{{/if}}
|
||||||
{{#link-to "customize.search" activeClass="selected" class="tab tab-vertical" tagName="li"}}Search{{/link-to}}
|
{{#link-to "customize.folders" activeClass="selected" class="item" tagName="div"}}
|
||||||
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
|
<i class={{concat "dicon " constants.Icon.Grid1}} />
|
||||||
{{#link-to "customize.audit" activeClass="selected" class="tab tab-vertical" tagName="li"}}Audit{{/link-to}}
|
<div class="name">Spaces</div>
|
||||||
{{/if}}
|
{{/link-to}}
|
||||||
{{/if}}
|
{{#if session.isGlobalAdmin}}
|
||||||
</ul>
|
{{#link-to "customize.search" activeClass="selected" class="item" tagName="div"}}
|
||||||
|
<i class={{concat "dicon " constants.Icon.Search}} />
|
||||||
<div class="mt-4" />
|
<div class="name">Search</div>
|
||||||
<ul class="tabnav-control tabnav-control-centered w-75">
|
{{/link-to}}
|
||||||
{{#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">
|
|
||||||
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
|
{{#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}}
|
{{/if}}
|
||||||
{{#link-to "customize.product" activeClass="selected" class="tab tab-vertical" tagName="li"}}Changelog{{/link-to}}
|
{{/if}}
|
||||||
</ul>
|
{{#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>
|
</div>
|
||||||
{{/layout/middle-zone-sidebar}}
|
</div>
|
||||||
{{/layout/middle-zone}}
|
{{/layout/master-sidebar}}
|
||||||
|
|
||||||
{{#layout/bottom-bar}}
|
{{#layout/master-content}}
|
||||||
{{/layout/bottom-bar}}
|
{{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
|
{{customize/user-admin users=model
|
||||||
onAddUser=(action "onAddUser")
|
onAddUser=(action "onAddUser")
|
||||||
onAddUsers=(action "onAddUsers")}}
|
onAddUsers=(action "onAddUsers")}}
|
||||||
|
|
|
@ -1,33 +1,29 @@
|
||||||
{{#layout/master-sidebar selectedItem="spaces"}}
|
{{#layout/master-sidebar selectedItem="spaces"}}
|
||||||
|
{{ui/ui-spacer size=300}}
|
||||||
{{#unless session.isMobile}}
|
|
||||||
{{ui/ui-spacer size=300}}
|
|
||||||
{{/unless}}
|
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<div class="title">filter</div>
|
<div class="title">filter</div>
|
||||||
<div class="list">
|
<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}} />
|
<i class={{concat "dicon " constants.Icon.All}} />
|
||||||
<div class="name">All ({{model.length}})</div>
|
<div class="name">All ({{model.length}})</div>
|
||||||
</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}} />
|
<i class={{concat "dicon " constants.Icon.World}} />
|
||||||
<div class="name">Public ({{publicSpaces.length}})</div>
|
<div class="name">Public ({{publicSpaces.length}})</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if session.authenticated}}
|
{{#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}} />
|
<i class={{concat "dicon " constants.Icon.People}} />
|
||||||
<div class="name">Protected ({{protectedSpaces.length}})</div>
|
<div class="name">Protected ({{protectedSpaces.length}})</div>
|
||||||
</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}} />
|
<i class={{concat "dicon " constants.Icon.Person}} />
|
||||||
<div class="name">Personal ({{personalSpaces.length}})</div>
|
<div class="name">Personal ({{personalSpaces.length}})</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{/layout/master-sidebar}}
|
{{/layout/master-sidebar}}
|
||||||
|
|
||||||
{{#layout/master-content}}
|
{{#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 labels
|
||||||
.form-group {
|
.form-group {
|
||||||
> label {
|
> label {
|
||||||
color: map-get($gray-shades, 800);
|
color: map-get($gray-shades, 700);
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
font-weight: 500;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
> small, > div[class*="col"] > small {
|
> small, > div[class*="col"] > small {
|
||||||
|
color: map-get($gray-shades, 600);
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
|
font-weight: 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
> small.highlight, > div[class*="col"] > small.highlight {
|
> small.highlight, > div[class*="col"] > small.highlight {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
color: map-get($yellow-shades, 700) !important;
|
color: map-get($yellow-shades, 700) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
margin-bottom: 30px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
// links
|
// links
|
||||||
|
|
|
@ -394,3 +394,23 @@ icons
|
||||||
.dicon-menu-8::before {
|
.dicon-menu-8::before {
|
||||||
content: "\ea48";
|
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;
|
font-weight: 400;
|
||||||
color: map-get($gray-shades, 800);
|
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() {
|
@mixin shadow() {
|
||||||
box-shadow: 1px 1px 3px 0px rgba(211,211,211,1);
|
box-shadow: 1px 1px 3px 0px rgba(211,211,211,1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,32 +1,60 @@
|
||||||
.product-update {
|
.product-update {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
margin: 50px 0;
|
|
||||||
|
|
||||||
> .update-summary {
|
> .update-status {
|
||||||
padding: 25px;
|
padding: 25px;
|
||||||
border: 1px solid map-get($yellow-shades, 700);
|
background-color: map-get($yellow-shades, 100);
|
||||||
background-color: map-get($gray-shades, 100);
|
border: 1px solid map-get($yellow-shades, 200);
|
||||||
@include border-radius(2px);
|
@include shadow();
|
||||||
|
@include border-radius(3px);
|
||||||
|
|
||||||
> .caption {
|
> .title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
color: map-get($yellow-shades, 700);
|
color: map-get($yellow-shades, 600);
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
display: inline-block;
|
display:block;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .instructions {
|
> .instructions {
|
||||||
font-weight: normal;
|
font-weight: 500;
|
||||||
font-size: 1.3rem;
|
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 {
|
> .version {
|
||||||
margin: 30px 0 0 20px;
|
font-weight: 700;
|
||||||
font-size: 1.3rem;
|
font-size: 1.2rem;
|
||||||
color: map-get($gray-shades, 600);
|
color: map-get($yellow-shades, 700);
|
||||||
font-weight: bold;
|
margin: 10px 0;
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .changes {
|
> .changes {
|
||||||
|
@ -41,10 +69,11 @@
|
||||||
> .tag-edition {
|
> .tag-edition {
|
||||||
margin: 10px 10px 10px 10px;
|
margin: 10px 10px 10px 10px;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
background-color: map-get($gray-shades, 300);
|
background-color: map-get($green-shades, 200);
|
||||||
color: $theme-500;
|
color: map-get($green-shades, 600);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
|
@include border-radius(3px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,4 @@
|
||||||
.view-customize {
|
.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 {
|
.user-table {
|
||||||
tbody tr td, thead tr th {
|
tbody tr td, thead tr th {
|
||||||
border-top: none !important;
|
border-top: none !important;
|
||||||
|
@ -157,9 +146,9 @@
|
||||||
|
|
||||||
> .backup-zone {
|
> .backup-zone {
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
border: 1px solid map-get($gray-shades, 300);
|
border: 1px solid map-get($green-shades, 200);
|
||||||
padding: 20px 20px;
|
padding: 20px 20px;
|
||||||
background-color: map-get($green-shades, 200);
|
background-color: map-get($green-shades, 100);
|
||||||
color: $color-black-light-1;
|
color: $color-black-light-1;
|
||||||
|
|
||||||
> .backup-fail {
|
> .backup-fail {
|
||||||
|
@ -175,10 +164,10 @@
|
||||||
|
|
||||||
> .restore-zone {
|
> .restore-zone {
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
border: 1px solid map-get($gray-shades, 300);
|
border: 1px solid map-get($red-shades, 200);
|
||||||
margin: 50px 0;
|
margin: 50px 0;
|
||||||
padding: 20px 20px;
|
padding: 20px 20px;
|
||||||
background-color: map-get($red-shades, 200);
|
background-color: map-get($red-shades, 100);
|
||||||
color: $color-black-light-1;
|
color: $color-black-light-1;
|
||||||
|
|
||||||
> .restore-fail {
|
> .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">
|
<div class="view-customize">
|
||||||
<form class="mt-5">
|
<form>
|
||||||
<div class="widget-list-picker widget-list-picker-horiz">
|
<div class="widget-list-picker widget-list-picker-horiz">
|
||||||
<ul class="options">
|
<ul class="options">
|
||||||
<li class="option {{if isDocumizeProvider "selected"}}" {{action "onDocumize"}}>
|
<li class="option {{if isDocumizeProvider "selected"}}" {{action "onDocumize"}}>
|
||||||
|
@ -35,202 +26,144 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br>
|
{{ui/ui-spacer size=300}}
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
{{#if isDocumizeProvider}}
|
|
||||||
<p>There are no settings.</p>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if isKeycloakProvider}}
|
{{#if isKeycloakProvider}}
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="keycloak-url" class="col-sm-3 col-form-label">Keycloak Server URL</label>
|
<label for="keycloak-url">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">e.g. http://localhost:8888/auth</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="keycloak-realm" class="col-sm-3 col-form-label">Keycloak Realm</label>
|
<label for="keycloak-realm">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">e.g. main</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="keycloak-publicKey" class="col-sm-3 col-form-label">Keycloak Realm Public Key</label>
|
<label for="keycloak-publicKey">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Copy the RSA Public Key from Realm Settings → Keys</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="keycloak-clientId" class="col-sm-3 col-form-label">Keycloak OIDC Client ID</label>
|
<label for="keycloak-clientId">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">e.g. account</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="keycloak-group" class="col-sm-3 col-form-label">Keycloak Group ID (Optional)</label>
|
<label for="keycloak-group">Keycloak Group ID (Optional)</label>
|
||||||
<div class="col-sm-9">
|
{{input id="keycloak-group" type="text" value=keycloakConfig.group class="form-control"}}
|
||||||
{{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>
|
||||||
<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>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="keycloak-admin-user" class="col-sm-3 col-form-label">Keycloak Username</label>
|
<label for="keycloak-admin-user">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")}}
|
||||||
{{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
|
||||||
<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>
|
||||||
against Realm specified above)</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="keycloak-admin-password" class="col-sm-3 col-form-label">Keycloak Password</label>
|
<label for="keycloak-admin-password">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 col-form-label">Disable Logout</label>
|
<label>Disable Logout</label>
|
||||||
<div class="col-sm-9">
|
{{x-toggle value=keycloakConfig.disableLogout size="medium" theme="light" onToggle=(action (mut keycloakConfig.disableLogout))}}
|
||||||
{{x-toggle value=keycloakConfig.disableLogout size="medium" theme="light" onToggle=(action (mut keycloakConfig.disableLogout))}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-defaultPermissionAddSpace" class="col-sm-3 col-form-label">Can Create Spaces</label>
|
<label for="ldap-defaultPermissionAddSpace">Can Create Spaces</label>
|
||||||
<div class="col-sm-9">
|
{{x-toggle value=keycloakConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut keycloakConfig.defaultPermissionAddSpace))}}
|
||||||
{{x-toggle value=keycloakConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut keycloakConfig.defaultPermissionAddSpace))}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if isLDAPProvider}}
|
{{#if isLDAPProvider}}
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-host" class="col-sm-3 col-form-label">LDAP Server</label>
|
<label for="ldap-host">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">IP or host address, e.g. ldap.example.org, 127.0.0.1</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-port" class="col-sm-3 col-form-label">LDAP Server Port</label>
|
<label for="ldap-port">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Port number, e.g. 389</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-encryption" class="col-sm-3 col-form-label">Encryption</label>
|
<label for="ldap-encryption">Encryption</label>
|
||||||
<div class="col-sm-9">
|
<select onchange={{action "onLDAPEncryption" value="target.value"}} class="form-control">
|
||||||
<select onchange={{action "onLDAPEncryption" value="target.value"}} class="form-control">
|
<option value={{constants.AuthProvider.EncryptionTypeNone}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeNone}}>
|
||||||
<option value={{constants.AuthProvider.EncryptionTypeNone}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeNone}}>
|
{{constants.AuthProvider.EncryptionTypeNone}}
|
||||||
{{constants.AuthProvider.EncryptionTypeNone}}
|
</option>
|
||||||
</option>
|
<option value={{constants.AuthProvider.EncryptionTypeStartTLS}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeStartTLS}}>
|
||||||
<option value={{constants.AuthProvider.EncryptionTypeStartTLS}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeStartTLS}}>
|
{{constants.AuthProvider.EncryptionTypeStartTLS}}
|
||||||
{{constants.AuthProvider.EncryptionTypeStartTLS}}
|
</option>
|
||||||
</option>
|
</select>
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-baseDN" class="col-sm-3 col-form-label">Base DN</label>
|
<label for="ldap-baseDN">Base DN</label>
|
||||||
<div class="col-sm-9">
|
{{input id="ldap-baseDN" type="text" value=ldapConfig.baseDN class="form-control"}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Starting point for search filters, e.g. ou=users,dc=example,dc=com</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-bindDN" class="col-sm-3 col-form-label">Bind DN</label>
|
<label for="ldap-bindDN">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">login credentials for LDAP server</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-bindPassword" class="col-sm-3 col-form-label">Bind Password</label>
|
<label for="ldap-bindPassword">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">login credentials for LDAP server</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-userFilter" class="col-sm-3 col-form-label">User Filter</label>
|
<label for="ldap-userFilter">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")}}
|
||||||
{{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">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>
|
||||||
<small class="form-text text-muted highlight">Specify User Filter and/or Group Filter</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-groupFilter" class="col-sm-3 col-form-label">Group Filter</label>
|
<label for="ldap-groupFilter">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")}}
|
||||||
{{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>
|
||||||
<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>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-attributeUserRDN" class="col-sm-3 col-form-label">User Attribute RDN</label>
|
<label for="ldap-attributeUserRDN">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")}}
|
||||||
{{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">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>
|
||||||
<small class="form-text text-muted highlight">User Attributes used to retreive data when using User Filter</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-attributeUserFirstname" class="col-sm-3 col-form-label">User Attribute Firstname</label>
|
<label for="ldap-attributeUserFirstname">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Firstname attribute, e.g. givenName</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-attributeUserLastname" class="col-sm-3 col-form-label">User Attribute Lastname</label>
|
<label for="ldap-attributeUserLastname">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Lastname attribute, e.g. sn</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-attributeUserEmail" class="col-sm-3 col-form-label">User Attribute Email</label>
|
<label for="ldap-attributeUserEmail">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Email attribute, e.g. mail</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-attributeGroupMember" class="col-sm-3 col-form-label">Group Attribute Member</label>
|
<label for="ldap-attributeGroupMember">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")}}
|
||||||
{{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">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>
|
||||||
<small class="form-text text-muted highlight">Group Attributes used to retreive data when using Group Filter</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-disableLogout" class="col-sm-3 col-form-label">Disable Logout</label>
|
<label for="ldap-disableLogout">Disable Logout</label>
|
||||||
<div class="col-sm-9">
|
{{x-toggle value=ldapConfig.disableLogout size="medium" theme="light" onToggle=(action (mut ldapConfig.disableLogout))}}
|
||||||
{{x-toggle value=ldapConfig.disableLogout size="medium" theme="light" onToggle=(action (mut ldapConfig.disableLogout))}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="ldap-defaultPermissionAddSpace" class="col-sm-3 col-form-label">Can Create Spaces</label>
|
<label for="ldap-defaultPermissionAddSpace">Can Create Spaces</label>
|
||||||
<div class="col-sm-9">
|
{{x-toggle value=ldapConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut ldapConfig.defaultPermissionAddSpace))}}
|
||||||
{{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>
|
</div>
|
||||||
|
{{ui/ui-button color=constants.Color.Yellow light=true label="Test →" onClick=(action "onLDAPPreview")}}
|
||||||
|
{{ui/ui-button-gap}}
|
||||||
{{/if}}
|
{{/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>
|
</form>
|
||||||
|
|
||||||
{{#if (gt keycloakFailure.length 0)}}
|
{{#if (gt keycloakFailure.length 0)}}
|
||||||
|
@ -253,8 +186,8 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<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>
|
</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="view-customize">
|
||||||
|
|
||||||
<div class="backup-restore">
|
<div class="backup-restore">
|
||||||
<div class="backup-zone">
|
<div class="backup-zone">
|
||||||
{{#if session.isGlobalAdmin}}
|
{{#if session.isGlobalAdmin}}
|
||||||
|
@ -36,10 +26,10 @@
|
||||||
{{#if backupRunning}}
|
{{#if backupRunning}}
|
||||||
<h3 class="text-success">Backup running, please wait...</h3>
|
<h3 class="text-success">Backup running, please wait...</h3>
|
||||||
{{else}}
|
{{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}}
|
{{#if session.isGlobalAdmin}}
|
||||||
<div class="button-gap" />
|
{{ui/ui-button-gap}}
|
||||||
<button class="btn btn-success mb-3" {{action "onSystemBackup"}}>SYSTEM BACKUP</button>
|
{{ui/ui-button color=constants.Color.Green light=true label="SYSTEM BACKUP" onClick=(action "onSystemBackup")}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if backupFailed}}
|
{{#if backupFailed}}
|
||||||
|
@ -73,7 +63,7 @@
|
||||||
<div class="restore-success">Restore completed — restart your browser and log in</div>
|
<div class="restore-success">Restore completed — restart your browser and log in</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if restoreUploadReady}}
|
{{#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}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -94,8 +84,9 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
|
||||||
<button type="button" class="btn btn-danger" onclick={{action "onRestore"}}>Start Restore</button>
|
{{ui/ui-button-gap}}
|
||||||
|
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Restore onClick=(action "onRestore")}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</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="product-update">
|
||||||
<div class="update-summary">
|
<div class="update-status">
|
||||||
{{#if appMeta.updateAvailable}}
|
{{!-- appMeta.updateAvailable --}}
|
||||||
<a href="https://documize.com/downloads" class="caption">New version available</a>
|
{{#if true}}
|
||||||
|
<a class="title" href="https://documize.com/downloads">Documize product update is available :)</a>
|
||||||
<p class="instructions">
|
<p class="instructions">
|
||||||
To upgrade, replace existing binary and restart Documize. Migrate between Community and Enterprise editions seamlessly.
|
To upgrade, replace existing binary and restart Documize. Migrate between Community and Enterprise editions seamlessly.
|
||||||
</p>
|
</p>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="caption">Release Summary</div>
|
<div class="title">Product Downloads</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<p>
|
<div class="links">
|
||||||
<span class="color-black-light-2">Community Edition {{appMeta.communityLatest}}</span>
|
<p>
|
||||||
<a href="https://storage.googleapis.com/documize/downloads/documize-community-windows-amd64.exe" class="bold-700">Windows</a> ·
|
<span class="edition-name">Community Edition {{appMeta.communityLatest}}</span>
|
||||||
<a href="https://storage.googleapis.com/documize/downloads/documize-community-linux-amd64" class="bold-700">Linux</a> ·
|
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-windows-amd64.exe">Windows</a> ·
|
||||||
<a href="https://storage.googleapis.com/documize/downloads/documize-community-darwin-amd64" class="bold-700">macOS</a>
|
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-linux-amd64">Linux</a> ·
|
||||||
</p>
|
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-darwin-amd64">macOS</a>
|
||||||
<p>
|
</p>
|
||||||
<span class="color-black-light-2">Enterprise Edition {{appMeta.enterpriseLatest}}</span>
|
<p>
|
||||||
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-windows-amd64.exe" class="bold-700 color-gray-700">Windows</a> ·
|
<span class="edition-name">Enterprise Edition {{appMeta.enterpriseLatest}}</span>
|
||||||
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-linux-amd64" class="bold-700 color-gray-700">Linux</a> ·
|
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-windows-amd64.exe">Windows</a> ·
|
||||||
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-darwin-amd64" class="bold-700 color-gray-700">macOS</a>
|
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-linux-amd64">Linux</a> ·
|
||||||
</p>
|
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-darwin-amd64">macOS</a>
|
||||||
<div class="my-5" />
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ui/ui-spacer size=400}}
|
||||||
|
<div class="change-log">
|
||||||
{{{changelog}}}
|
{{{changelog}}}
|
||||||
</div>
|
</div>
|
||||||
</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">
|
<div class="view-customize">
|
||||||
<form class="mt-5">
|
<form>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="siteTitle" class="col-sm-4 col-form-label">Site Name</label>
|
<label for="siteTitle">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")}}
|
||||||
{{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>
|
||||||
<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>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label id="siteMessage" class="col-sm-4 col-form-label">Site Message</label>
|
<label for="conversionEndpoint">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")}}
|
||||||
{{textarea id="siteMessage" rows="3" value=model.general.message class=(if hasMessageInputError "form-control is-invalid" "form-control")}}
|
<small class="form-text text-muted">
|
||||||
<small class="form-text text-muted">Provide short message explaining this Documize instance</small>
|
Endpoint for handling import/export (e.g. https://api.documize.com,
|
||||||
</div>
|
<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">
|
<div class="form-group">
|
||||||
<label class="col-sm-4 col-form-label">Anonymous Access</label>
|
<label for="maxTags">Maximum Tags Per Document</label>
|
||||||
<div class="col-sm-7">
|
<select class="form-control" id="maxTags" {{action "change" on="change"}}>
|
||||||
<div class="form-check">
|
<option selected={{is-equal 3 maxTags}} value="3">3</option>
|
||||||
<input type="checkbox" class="form-check-input" id="allowAnonymousAccess" checked={{model.general.allowAnonymousAccess}}>
|
<option selected={{is-equal 4 maxTags}} value="4">4</option>
|
||||||
<label class="form-check-label" for="allowAnonymousAccess">
|
<option selected={{is-equal 5 maxTags}} value="5">5</option>
|
||||||
Make content marked as "Everyone" available to anonymous users
|
<option selected={{is-equal 6 maxTags}} value="6">6</option>
|
||||||
</label>
|
<option selected={{is-equal 7 maxTags}} value="7">7</option>
|
||||||
</div>
|
<option selected={{is-equal 8 maxTags}} value="8">8</option>
|
||||||
</div>
|
<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">
|
<div class="form-group">
|
||||||
<label for="conversionEndpoint" class="col-sm-4 col-form-label">Conversion Service URL</label>
|
<label>Default Site Theme</label>
|
||||||
<div class="col-sm-7">
|
{{ui/theme-picker onChange=(action "onThemeChange")}}
|
||||||
{{input id="conversionEndpoint" type="text" value=model.general.conversionEndpoint class=(if hasConversionEndpointInputError "form-control is-invalid" "form-control")}}
|
<small class="form-text text-muted">Users can set their own theme under Profile</small>
|
||||||
<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>
|
</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>
|
</form>
|
||||||
</div>
|
</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">
|
<div class="view-customize">
|
||||||
<form class="mt-5">
|
<form>
|
||||||
|
|
||||||
<h2>Jira</h2>
|
<h2>Jira</h2>
|
||||||
<p>Displays issues within documentation</p>
|
<p>Displays issues within documentation</p>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="jira-url" class="col-sm-4 col-form-label">URL</label>
|
<label for="jira-url">URL</label>
|
||||||
<div class="col-sm-7">
|
{{focus-input id="jira-url" type="text" value=jiraCreds.url class="form-control"}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Fully qualified domain name for your Jira instance e.g. http://jira.example.org</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="jira-username" class="col-sm-4 col-form-label">Username</label>
|
<label for="jira-username">Username</label>
|
||||||
<div class="col-sm-7">
|
{{input id="jira-username" type="text" value=jiraCreds.username class="form-control"}}
|
||||||
{{input id="jira-username" type="text" value=jiraCreds.username class="form-control"}}
|
<small class="form-text text-muted">Your Jira login username/email</small>
|
||||||
<small class="form-text text-muted">Your Jira login username/email</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="jira-secret" class="col-sm-4 col-form-label">Password</label>
|
<label for="jira-secret">Password</label>
|
||||||
<div class="col-sm-7">
|
{{input id="jira-secret" type="password" value=jiraCreds.secret class="form-control"}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">Provide API Token if using Atlassian Cloud or Password when self-hosting Jira</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if session.isGlobalAdmin}}
|
{{#if session.isGlobalAdmin}}
|
||||||
<h2>Trello</h2>
|
<h2>Trello</h2>
|
||||||
<p>Displays boards within documentation</p>
|
<p>Displays boards within documentation</p>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="trello-key" class="col-sm-4 col-form-label">App Key</label>
|
<label for="trello-key">App Key</label>
|
||||||
<div class="col-sm-7">
|
|
||||||
{{input id="trello-key" type="text" value=trelloCreds.appKey class="form-control"}}
|
{{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>
|
<small class="form-text text-muted">See <a href="https://trello.com/app-key">https://trello.com/app-key</a></small>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/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>
|
</form>
|
||||||
</div>
|
</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">
|
<div class="view-customize">
|
||||||
<form class="mt-5 ">
|
<form>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<p>It can take up to 30 minutes to rebuild the search index across all documents and associated content.</p>
|
<p>It can take up to 30 minutes to rebuild the search index.</p>
|
||||||
<div class="btn btn-danger mt-3" {{action "reindex"}}>{{buttonLabel}}</div>
|
{{ui/ui-button color=constants.Color.Yellow light=true label=buttonLabel onClick=(action "reindex")}}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</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">
|
<div class="view-customize">
|
||||||
<form class="mt-5">
|
<form>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="smtp-host" class="col-sm-4 col-form-label">Host</label>
|
<label for="smtp-host">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")}}
|
||||||
{{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>
|
||||||
<small class="form-text text-muted">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>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="smtp-port" class="col-sm-4 col-form-label">Port</label>
|
<label>Base64</label>
|
||||||
<div class="col-sm-8">
|
<div class="form-check">
|
||||||
{{input id="smtp-port" type="text" value=model.smtp.port class=(if SMTPPortEmptyError "form-control is-invalid" "form-control")}}
|
{{input id="smtp-base64creds" type="checkbox" checked=model.smtp.base64creds class="form-check-input"}}
|
||||||
<small class="form-text text-muted">e.g. 587</small>
|
<label class="form-check-label" for="smtp-base64creds">Base64 encode Username and Password fields</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
<label for="smtp-userid" class="col-sm-4 col-form-label">Username</label>
|
<label>SSL</label>
|
||||||
<div class="col-sm-8">
|
<div class="form-check">
|
||||||
{{input id="smtp-userid" type="text" value=model.smtp.userid class="form-control"}}
|
{{input id="smtp-usessl" type="checkbox" checked=model.smtp.usessl class="form-check-input"}}
|
||||||
<small class="form-text text-muted">e.g. Login username for SMTP server</small>
|
<label class="form-check-label" for="smtp-usessl">Use SSL</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
{{ui/ui-button color=constants.Color.Green light=true label=buttonText onClick=(action "saveSMTP")}}
|
||||||
<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>
|
|
||||||
</form>
|
</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>
|
</div>
|
|
@ -1,15 +1,7 @@
|
||||||
<div class="row">
|
<div class="view-customize">
|
||||||
<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">
|
|
||||||
{{#if spaces}}
|
{{#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">
|
<div class="space-list">
|
||||||
{{#each spaces as |space|}}
|
{{#each spaces as |space|}}
|
||||||
<div class="space row">
|
<div class="space row">
|
||||||
|
@ -46,8 +38,9 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
|
||||||
<button type="button" class="btn btn-danger" onclick={{action "onDelete"}}>Delete</button>
|
{{ui/ui-button-gap}}
|
||||||
|
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Delete onClick=(action "onDelete")}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="view-customize">
|
<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}}
|
{{#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 id="add-user-modal" class="modal" tabindex="-1" role="dialog">
|
||||||
<div class="modal-dialog modal-lg" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="view-customize">
|
<div class="view-customize">
|
||||||
|
{{ui/ui-button color=constants.Color.Green light=true icon=constants.Icon.People label=constants.Label.Add onClick=(action "onShowAddGroupModal")}}
|
||||||
<h1 class="admin-heading">Groups</h1>
|
{{ui/ui-spacer size=300}}
|
||||||
<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>
|
|
||||||
|
|
||||||
<div id="add-group-modal" class="modal" tabindex="-1" role="dialog">
|
<div id="add-group-modal" class="modal" tabindex="-1" role="dialog">
|
||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
|
@ -24,8 +21,9 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
|
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||||
<button type="button" class="btn btn-success" onclick= {{action "onAddGroup"}}>Add</button>
|
{{ui/ui-button-gap}}
|
||||||
|
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Add onClick=(action "onAddGroup")}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -83,8 +81,9 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
|
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||||
<button type="button" class="btn btn-danger" onclick= {{action "onDeleteGroup"}}>Delete</button>
|
{{ui/ui-button-gap}}
|
||||||
|
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Delete onClick=(action "onDeleteGroup")}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -108,8 +107,9 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
|
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
|
||||||
<button type="button" class="btn btn-success" onclick= {{action "onEditGroup"}}>Save</button>
|
{{ui/ui-button-gap}}
|
||||||
|
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Save onClick=(action "onEditGroup")}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -134,7 +134,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -153,7 +153,7 @@
|
||||||
<div class="view-customize">
|
<div class="view-customize">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<div class="btn-group btn-group-toggle">
|
<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"}}">
|
<label class="btn btn-outline-secondary {{if (eq userLimit 1) "active"}}">
|
||||||
<input type="radio" name="options" autocomplete="off" {{action "onLimit" 1}}>1
|
<input type="radio" name="options" autocomplete="off" {{action "onLimit" 1}}>1
|
||||||
</label>
|
</label>
|
||||||
|
@ -202,7 +202,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<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>
|
</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">
|
<div class="master-content">
|
||||||
{{yield}}
|
{{yield}}
|
||||||
</div>
|
</div>
|
||||||
|
{{ui/ui-spacer size=300}}
|
Binary file not shown.
|
@ -184,6 +184,21 @@
|
||||||
<glyph glyph-name="menu-8"
|
<glyph glyph-name="menu-8"
|
||||||
unicode=""
|
unicode=""
|
||||||
horiz-adv-x="256" d="M10.455 205.545C7.266 202.357 7.265 198.085 10.452 194.646L12.905 192L128 192L243.095 192L245.548 194.646C248.735 198.085 248.734 202.357 245.545 205.545L243.091 208L128 208L12.909 208L10.455 205.545M10.455 133.545C7.266 130.357 7.265 126.085 10.452 122.646L12.905 120L128 120L243.095 120L245.548 122.646C248.735 126.085 248.734 130.357 245.545 133.545L243.091 136L128 136L12.909 136L10.455 133.545M10.455 61.545C7.266 58.357 7.265 54.085 10.452 50.646L12.905 48L128 48L243.095 48L245.548 50.646C248.735 54.085 248.734 58.357 245.545 61.545L243.091 64L128 64L12.909 64L10.455 61.545" />
|
horiz-adv-x="256" d="M10.455 205.545C7.266 202.357 7.265 198.085 10.452 194.646L12.905 192L128 192L243.095 192L245.548 194.646C248.735 198.085 248.734 202.357 245.545 205.545L243.091 208L128 208L12.909 208L10.455 205.545M10.455 133.545C7.266 130.357 7.265 126.085 10.452 122.646L12.905 120L128 120L243.095 120L245.548 122.646C248.735 126.085 248.734 130.357 245.545 133.545L243.091 136L128 136L12.909 136L10.455 133.545M10.455 61.545C7.266 58.357 7.265 54.085 10.452 50.646L12.905 48L128 48L243.095 48L245.548 50.646C248.735 54.085 248.734 58.357 245.545 61.545L243.091 64L128 64L12.909 64L10.455 61.545" />
|
||||||
|
<glyph glyph-name="send"
|
||||||
|
unicode=""
|
||||||
|
horiz-adv-x="256" d="M124.113 207.144C34.495 175.02 10.416 166.031 9.249 164.263C8.259 162.762 7.987 160.885 8.422 158.562C9.017 155.391 11.73 153.134 40.536 131.847L72 108.596L72 68.944L72 29.292L74.452 26.646C79.092 21.64 81.14 22.555 99.937 38.035C111.322 47.411 117.191 52.913 117.617 54.609C118.957 59.95 113.6 65.691 108.474 64.404C106.968 64.026 101.745 60.396 96.868 56.336L88 48.955L88 72.478C88 85.415 88.231 96 88.513 96C88.795 96 113.382 78 143.149 56C174.758 32.64 198.163 16 199.414 16C201.93 16 205.592 18.37 206.925 20.86C207.904 22.688 248 237.73 248 241.148C248 244.113 243.541 248.017 240.295 247.894C238.758 247.836 186.476 229.499 124.113 207.144M211.501 130.184C202.425 81.153 195 40.578 195 40.018C195 39.458 194.608 39 194.129 39C193.4 39 97.234 109.572 94.642 112.009C94.17 112.453 123.87 136.892 160.642 166.317C197.414 195.743 227.613 219.709 227.751 219.575C227.888 219.442 220.576 179.216 211.501 130.184M138.956 169.362C85.002 126.19 80.516 122.821 78.585 124.022C72.67 127.702 33.04 157.52 33.714 157.784C38.786 159.769 195.734 215.87 196.371 215.925C196.85 215.966 171.013 195.013 138.956 169.362" />
|
||||||
|
<glyph glyph-name="email"
|
||||||
|
unicode=""
|
||||||
|
horiz-adv-x="256" d="M20.678 230.496C10.818 227.786 4.14 220.965 1.449 210.856C-0.662 202.923 -0.662 53.077 1.449 45.144C4.158 34.967 10.967 28.158 21.144 25.449C29.116 23.328 226.884 23.328 234.856 25.449C245.033 28.158 251.842 34.967 254.551 45.144C256.662 53.077 256.662 202.923 254.551 210.856C251.802 221.184 245.184 227.802 234.856 230.551C227.22 232.583 28.088 232.532 20.678 230.496M231.906 214.694C233.78 214.037 236.255 212.23 237.406 210.677C239.49 207.867 239.5 207.478 239.5 128C239.5 48.522 239.49 48.133 237.406 45.323C236.255 43.77 233.78 41.963 231.906 41.306C227.004 39.589 28.996 39.589 24.094 41.306C22.22 41.963 19.745 43.77 18.594 45.323C16.51 48.133 16.5 48.522 16.5 128C16.5 207.478 16.51 207.867 18.594 210.677C19.745 212.23 22.22 214.037 24.094 214.694C28.996 216.411 227.004 216.411 231.906 214.694M36.017 190.714C33.118 189.248 31.459 185.293 32.313 181.89C32.998 179.159 121.586 98.072 125.539 96.557C127.081 95.966 128.919 95.966 130.461 96.557C134.232 98.002 223 179.151 223.652 181.749C224.653 185.738 223.148 188.962 219.464 190.718C216.923 191.93 215.316 192.125 213.521 191.44C212.168 190.923 192.367 173.486 169.521 152.692L127.981 114.883L89.74 149.621C68.708 168.727 49.598 186.078 47.272 188.18C42.834 192.19 40.135 192.798 36.017 190.714M68.341 118.715C67.154 118.047 58.45 107.83 48.999 96.011C32.674 75.595 31.844 74.346 32.378 71.011C33.327 65.074 38.556 62.423 43.669 65.285C46.603 66.928 78.817 107.423 79.567 110.411C79.901 111.742 79.485 114.096 78.618 115.771C76.39 120.08 72.665 121.147 68.341 118.715M179.08 118.25C177.903 117.287 176.686 114.92 176.378 112.989C175.844 109.656 176.681 108.393 192.937 87.989C202.354 76.17 211.057 65.944 212.279 65.265C217.423 62.404 222.671 65.062 223.622 71.011C224.156 74.346 223.326 75.595 207.001 96.011C197.55 107.83 188.846 118.047 187.659 118.715C184.591 120.441 181.56 120.276 179.08 118.25" />
|
||||||
|
<glyph glyph-name="download"
|
||||||
|
unicode=""
|
||||||
|
horiz-adv-x="256" d="M122.455 253.545L120 251.091L120 167.331L120 83.571L101.689 101.785C85.513 117.875 83 120 80.143 120C75.809 120 72 116.189 72 111.852C72 108.949 74.732 105.875 98.255 82.306C122.577 57.936 124.766 56 128 56C131.234 56 133.423 57.936 157.745 82.306C181.268 105.875 184 108.949 184 111.852C184 116.189 180.191 120 175.857 120C173 120 170.487 117.875 154.311 101.785L136 83.571L136 167.331L136 251.091L133.545 253.545C131.998 255.093 129.948 256 128 256C126.052 256 124.002 255.093 122.455 253.545M26.455 157.545L24 155.091L24 84.191L24 13.292L26.452 10.646L28.905 8L128 8L227.095 8L229.548 10.646L232 13.292L232 84.191L232 155.091L229.545 157.545L227.091 160L196 160L164.909 160L162.455 157.545C159.266 154.357 159.265 150.085 162.452 146.646L164.905 144L190.452 144L216 144L216 84L216 24L128 24L40 24L40 84L40 144L65.548 144L91.095 144L93.548 146.646C96.735 150.085 96.734 154.357 93.545 157.545L91.091 160L60 160L28.909 160L26.455 157.545" />
|
||||||
|
<glyph glyph-name="database"
|
||||||
|
unicode=""
|
||||||
|
horiz-adv-x="256" d="M98.5 254.891C74.423 252.649 50.976 247.017 36.5 240C26.165 234.99 21.306 230.852 18.381 224.571L16.02 219.5L16.01 127.946L16 36.393L18.618 31.14C23.303 21.737 35.041 14.77 56.5 8.652C95.969 -2.599 160.031 -2.599 199.5 8.652C220.959 14.77 232.697 21.737 237.382 31.14L240 36.393L239.99 127.946L239.98 219.5L237.619 224.571C234.694 230.852 229.835 234.99 219.5 240C204.703 247.173 181.377 252.667 156 254.956C142.743 256.152 111.657 256.117 98.5 254.891M158.499 238.483C188.722 235.31 210.795 228.933 220.851 220.472C224.826 217.127 224.828 214.874 220.857 211.534C207.24 200.075 168.913 192.021 128 192.021C87.087 192.021 48.76 200.075 35.143 211.534C31.172 214.874 31.174 217.127 35.149 220.472C52.703 235.243 109.869 243.59 158.499 238.483M56.5 184.652C95.969 173.401 160.031 173.401 199.5 184.652C206.1 186.534 214.313 189.383 217.75 190.984L224 193.895L224 160.036L224 126.178L220.857 123.534C207.24 112.075 168.913 104.021 128 104.021C87.087 104.021 48.76 112.075 35.143 123.534L32 126.178L32 160.036L32 193.895L38.25 190.984C41.688 189.383 49.9 186.534 56.5 184.652M56.5 96.652C95.969 85.401 160.031 85.401 199.5 96.652C206.1 98.534 214.313 101.383 217.75 102.984L224 105.895L224 72.036L224 38.178L220.857 35.534C207.24 24.075 168.913 16.021 128 16.021C87.087 16.021 48.76 24.075 35.143 35.534L32 38.178L32 72.036L32 105.895L38.25 102.984C41.688 101.383 49.9 98.534 56.5 96.652" />
|
||||||
|
<glyph glyph-name="notification"
|
||||||
|
unicode=""
|
||||||
|
horiz-adv-x="256" d="M111 226.646C62.875 210.535 21.7 196.412 19.5 195.261C12.071 191.376 5.312 182.832 2.081 173.241C-3.075 157.934 1.396 140.103 13.025 129.596C18.261 124.866 23.114 122.523 36.847 118.095L48.455 114.352L60.207 85.426C91.413 8.612 89.076 13.91 93.966 8.904C109.853 -7.36 136.832 -0.014 142.952 22.243C145.159 30.271 143.957 35.115 133.058 62.09C127.412 76.066 122.571 88.05 122.3 88.723C122.029 89.395 139.288 84.073 160.654 76.896C196.386 64.893 199.981 63.877 205.5 64.219C234.164 65.996 255.965 107.373 255.965 160C255.965 212.946 233.789 254.641 205.066 255.697C198.836 255.926 194.021 254.439 111 226.646M214.256 236.388C216.519 234.797 220.518 230.347 223.142 226.498C245.586 193.582 245.614 126.826 223.197 93.521C211.01 75.415 196.323 75.618 184.394 94.057C164.652 124.576 162.425 182.115 179.616 217.512C189.431 237.72 202.346 244.758 214.256 236.388M164.643 223.25C148.018 190.213 148.018 129.787 164.643 96.75C165.958 94.138 166.689 92 166.267 92C165.845 92 134.304 102.399 96.175 115.108C32.868 136.211 26.554 138.512 23.443 141.624C17.703 147.364 16.517 150.509 16.517 160C16.517 169.563 17.553 172.252 23.529 178.208C27.037 181.705 31.173 183.229 95.875 204.879C133.619 217.509 165.07 227.878 165.767 227.921C166.616 227.974 166.246 226.435 164.643 223.25M188.5 190.846C180.659 186.139 183.736 176.853 193.501 175.753C206.071 174.336 212.131 159.946 204.273 150.175C201.481 146.704 197.817 144.894 190.778 143.511C184.258 142.23 182.016 135.257 186.636 130.636C192.92 124.353 209.814 130.251 217.939 141.564C229.949 158.288 223.177 181.389 203.918 189.397C198.743 191.549 190.899 192.286 188.5 190.846M86.169 101.789L101.905 96.578L114.952 64.24C122.129 46.454 128 30.679 128 29.185C128 22.489 121.353 16 114.5 16.005C110.93 16.008 105.686 19 103.641 22.202C102.575 23.871 74.555 91.966 69.312 105.63C69.023 106.384 69.157 107 69.61 107C70.063 107 77.515 104.655 86.169 101.789" />
|
||||||
</font>
|
</font>
|
||||||
</defs>
|
</defs>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 74 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue