1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-24 07:39: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:
McMatts 2018-12-13 12:24:16 +00:00
parent 02102f9bf3
commit f442081a41
42 changed files with 563 additions and 548 deletions

View file

@ -1,14 +1,5 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Authentication</h1>
<h2 class="sub-heading">Choose user authentication mechanism</h2>
</div>
</div>
</div>
<div class="view-customize">
<form class="mt-5">
<form>
<div class="widget-list-picker widget-list-picker-horiz">
<ul class="options">
<li class="option {{if isDocumizeProvider "selected"}}" {{action "onDocumize"}}>
@ -35,202 +26,144 @@
</ul>
</div>
<br>
<br>
<br>
{{#if isDocumizeProvider}}
<p>There are no settings.</p>
{{/if}}
{{ui/ui-spacer size=300}}
{{#if isKeycloakProvider}}
<div class="form-group row">
<label for="keycloak-url" class="col-sm-3 col-form-label">Keycloak Server URL</label>
<div class="col-sm-9">
{{focus-input id="keycloak-url" type="text" value=keycloakConfig.url class=(if KeycloakUrlError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. http://localhost:8888/auth</small>
</div>
<div class="form-group">
<label for="keycloak-url">Keycloak Server URL</label>
{{focus-input id="keycloak-url" type="text" value=keycloakConfig.url class=(if KeycloakUrlError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. http://localhost:8888/auth</small>
</div>
<div class="form-group row">
<label for="keycloak-realm" class="col-sm-3 col-form-label">Keycloak Realm</label>
<div class="col-sm-9">
{{input id="keycloak-realm" type="text" value=keycloakConfig.realm class=(if KeycloakRealmError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. main</small>
</div>
<div class="form-group">
<label for="keycloak-realm">Keycloak Realm</label>
{{input id="keycloak-realm" type="text" value=keycloakConfig.realm class=(if KeycloakRealmError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. main</small>
</div>
<div class="form-group row">
<label for="keycloak-publicKey" class="col-sm-3 col-form-label">Keycloak Realm Public Key</label>
<div class="col-sm-9">
{{textarea id="keycloak-publicKey" type="text" value=keycloakConfig.publicKey rows=7 class=(if KeycloakPublicKeyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Copy the RSA Public Key from Realm Settings &rarr; Keys</small>
</div>
<div class="form-group">
<label for="keycloak-publicKey">Keycloak Realm Public Key</label>
{{textarea id="keycloak-publicKey" type="text" value=keycloakConfig.publicKey rows=7 class=(if KeycloakPublicKeyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Copy the RSA Public Key from Realm Settings &rarr; Keys</small>
</div>
<div class="form-group row">
<label for="keycloak-clientId" class="col-sm-3 col-form-label">Keycloak OIDC Client ID</label>
<div class="col-sm-9">
{{input id="keycloak-clientId" type="text" value=keycloakConfig.clientId class=(if KeycloakClientIdError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. account</small>
</div>
<div class="form-group">
<label for="keycloak-clientId">Keycloak OIDC Client ID</label>
{{input id="keycloak-clientId" type="text" value=keycloakConfig.clientId class=(if KeycloakClientIdError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. account</small>
</div>
<div class="form-group row">
<label for="keycloak-group" class="col-sm-3 col-form-label">Keycloak Group ID (Optional)</label>
<div class="col-sm-9">
{{input id="keycloak-group" type="text" value=keycloakConfig.group class="form-control"}}
<small class="form-text text-muted">If you want to sync users in a particular Group (e.g. "Documize Users"), provide the Group ID (e.g. 511d8b61-1ec8-45f6-bc8d-5de64d54c9d2)</small>
</div>
<div class="form-group">
<label for="keycloak-group">Keycloak Group ID (Optional)</label>
{{input id="keycloak-group" type="text" value=keycloakConfig.group class="form-control"}}
<small class="form-text text-muted">If you want to sync users in a particular Group (e.g. "Documize Users"), provide the Group ID (e.g. 511d8b61-1ec8-45f6-bc8d-5de64d54c9d2)</small>
</div>
<div class="form-group row">
<label for="keycloak-admin-user" class="col-sm-3 col-form-label">Keycloak Username</label>
<div class="col-sm-9">
{{input id="keycloak-admin-user" type="text" value=keycloakConfig.adminUser class=(if KeycloakAdminUserError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize (create user under Master Realm and assign 'view-users' role
against Realm specified above)</small>
</div>
<div class="form-group">
<label for="keycloak-admin-user">Keycloak Username</label>
{{input id="keycloak-admin-user" type="text" value=keycloakConfig.adminUser class=(if KeycloakAdminUserError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize (create user under Master Realm and assign 'view-users' role
against Realm specified above)</small>
</div>
<div class="form-group row">
<label for="keycloak-admin-password" class="col-sm-3 col-form-label">Keycloak Password</label>
<div class="col-sm-9">
{{input id="keycloak-admin-password" type="password" value=keycloakConfig.adminPassword class=(if KeycloakAdminPasswordError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize</small>
</div>
<div class="form-group">
<label for="keycloak-admin-password">Keycloak Password</label>
{{input id="keycloak-admin-password" type="password" value=keycloakConfig.adminPassword class=(if KeycloakAdminPasswordError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Used to connect with Keycloak and sync users with Documize</small>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label">Disable Logout</label>
<div class="col-sm-9">
{{x-toggle value=keycloakConfig.disableLogout size="medium" theme="light" onToggle=(action (mut keycloakConfig.disableLogout))}}
</div>
<div class="form-group">
<label>Disable Logout</label>
{{x-toggle value=keycloakConfig.disableLogout size="medium" theme="light" onToggle=(action (mut keycloakConfig.disableLogout))}}
</div>
<div class="form-group row">
<label for="ldap-defaultPermissionAddSpace" class="col-sm-3 col-form-label">Can Create Spaces</label>
<div class="col-sm-9">
{{x-toggle value=keycloakConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut keycloakConfig.defaultPermissionAddSpace))}}
</div>
<div class="form-group">
<label for="ldap-defaultPermissionAddSpace">Can Create Spaces</label>
{{x-toggle value=keycloakConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut keycloakConfig.defaultPermissionAddSpace))}}
</div>
{{/if}}
{{#if isLDAPProvider}}
<div class="form-group row">
<label for="ldap-host" class="col-sm-3 col-form-label">LDAP Server</label>
<div class="col-sm-9">
{{focus-input id="ldap-host" type="text" value=ldapConfig.serverHost class=(if ldapErrorServerHost "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">IP or host address, e.g. ldap.example.org, 127.0.0.1</small>
</div>
<div class="form-group">
<label for="ldap-host">LDAP Server</label>
{{focus-input id="ldap-host" type="text" value=ldapConfig.serverHost class=(if ldapErrorServerHost "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">IP or host address, e.g. ldap.example.org, 127.0.0.1</small>
</div>
<div class="form-group row">
<label for="ldap-port" class="col-sm-3 col-form-label">LDAP Server Port</label>
<div class="col-sm-9">
{{input id="ldap-port" type="number" value=ldapConfig.serverPort class=(if ldapErrorServerPort "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Port number, e.g. 389</small>
</div>
<div class="form-group">
<label for="ldap-port">LDAP Server Port</label>
{{input id="ldap-port" type="number" value=ldapConfig.serverPort class=(if ldapErrorServerPort "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Port number, e.g. 389</small>
</div>
<div class="form-group row">
<label for="ldap-encryption" class="col-sm-3 col-form-label">Encryption</label>
<div class="col-sm-9">
<select onchange={{action "onLDAPEncryption" value="target.value"}} class="form-control">
<option value={{constants.AuthProvider.EncryptionTypeNone}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeNone}}>
{{constants.AuthProvider.EncryptionTypeNone}}
</option>
<option value={{constants.AuthProvider.EncryptionTypeStartTLS}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeStartTLS}}>
{{constants.AuthProvider.EncryptionTypeStartTLS}}
</option>
</select>
</div>
<div class="form-group">
<label for="ldap-encryption">Encryption</label>
<select onchange={{action "onLDAPEncryption" value="target.value"}} class="form-control">
<option value={{constants.AuthProvider.EncryptionTypeNone}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeNone}}>
{{constants.AuthProvider.EncryptionTypeNone}}
</option>
<option value={{constants.AuthProvider.EncryptionTypeStartTLS}} selected={{is-equal ldapConfig.encryptionType constants.AuthProvider.EncryptionTypeStartTLS}}>
{{constants.AuthProvider.EncryptionTypeStartTLS}}
</option>
</select>
</div>
<div class="form-group row">
<label for="ldap-baseDN" class="col-sm-3 col-form-label">Base DN</label>
<div class="col-sm-9">
{{input id="ldap-baseDN" type="text" value=ldapConfig.baseDN class="form-control"}}
<small class="form-text text-muted">Starting point for search filters, e.g. ou=users,dc=example,dc=com</small>
</div>
<div class="form-group">
<label for="ldap-baseDN">Base DN</label>
{{input id="ldap-baseDN" type="text" value=ldapConfig.baseDN class="form-control"}}
<small class="form-text text-muted">Starting point for search filters, e.g. ou=users,dc=example,dc=com</small>
</div>
<div class="form-group row">
<label for="ldap-bindDN" class="col-sm-3 col-form-label">Bind DN</label>
<div class="col-sm-9">
{{input id="ldap-bindDN" type="text" value=ldapConfig.bindDN class=(if ldapErrorBindDN "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">login credentials for LDAP server</small>
</div>
<div class="form-group">
<label for="ldap-bindDN">Bind DN</label>
{{input id="ldap-bindDN" type="text" value=ldapConfig.bindDN class=(if ldapErrorBindDN "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">login credentials for LDAP server</small>
</div>
<div class="form-group row">
<label for="ldap-bindPassword" class="col-sm-3 col-form-label">Bind Password</label>
<div class="col-sm-9">
{{input id="ldap-bindPassword" type="password" value=ldapConfig.bindPassword class=(if ldapErrorBindPassword "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">login credentials for LDAP server</small>
</div>
<div class="form-group">
<label for="ldap-bindPassword">Bind Password</label>
{{input id="ldap-bindPassword" type="password" value=ldapConfig.bindPassword class=(if ldapErrorBindPassword "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">login credentials for LDAP server</small>
</div>
<div class="form-group row">
<label for="ldap-userFilter" class="col-sm-3 col-form-label">User Filter</label>
<div class="col-sm-9">
{{input id="ldap-userFilter" type="text" value=ldapConfig.userFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Search filter for finding users, e.g. (|(objectClass=person)(objectClass=user)(objectClass=inetOrgPerson))</small>
<small class="form-text text-muted highlight">Specify User Filter and/or Group Filter</small>
</div>
<div class="form-group">
<label for="ldap-userFilter">User Filter</label>
{{input id="ldap-userFilter" type="text" value=ldapConfig.userFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Search filter for finding users, e.g. (|(objectClass=person)(objectClass=user)(objectClass=inetOrgPerson))</small>
<small class="form-text text-muted highlight">Specify User Filter and/or Group Filter</small>
</div>
<div class="form-group row">
<label for="ldap-groupFilter" class="col-sm-3 col-form-label">Group Filter</label>
<div class="col-sm-9">
{{input id="ldap-groupFilter" type="text" value=ldapConfig.groupFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Search filter for finding users via groups, e.g. (&(objectClass=group)(|(cn=ship_crew)(cn=admin_staff)))</small>
</div>
<div class="form-group">
<label for="ldap-groupFilter">Group Filter</label>
{{input id="ldap-groupFilter" type="text" value=ldapConfig.groupFilter class=(if ldapErrorNoFilter "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Search filter for finding users via groups, e.g. (&(objectClass=group)(|(cn=ship_crew)(cn=admin_staff)))</small>
</div>
<div class="form-group row">
<label for="ldap-attributeUserRDN" class="col-sm-3 col-form-label">User Attribute RDN</label>
<div class="col-sm-9">
{{input id="ldap-attributeUserRDN" type="text" value=ldapConfig.attributeUserRDN class=(if ldapErrorAttributeUserRDN "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Username/login attribute, e.g. uid in LDAP, sAMAccountName in Active Directory</small>
<small class="form-text text-muted highlight">User Attributes used to retreive data when using User Filter</small>
</div>
<div class="form-group">
<label for="ldap-attributeUserRDN">User Attribute RDN</label>
{{input id="ldap-attributeUserRDN" type="text" value=ldapConfig.attributeUserRDN class=(if ldapErrorAttributeUserRDN "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Username/login attribute, e.g. uid in LDAP, sAMAccountName in Active Directory</small>
<small class="form-text text-muted highlight">User Attributes used to retreive data when using User Filter</small>
</div>
<div class="form-group row">
<label for="ldap-attributeUserFirstname" class="col-sm-3 col-form-label">User Attribute Firstname</label>
<div class="col-sm-9">
{{input id="ldap-attributeUserFirstname" type="text" value=ldapConfig.attributeUserFirstname class=(if ldapErrorAttributeUserFirstname "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Firstname attribute, e.g. givenName</small>
</div>
<div class="form-group">
<label for="ldap-attributeUserFirstname">User Attribute Firstname</label>
{{input id="ldap-attributeUserFirstname" type="text" value=ldapConfig.attributeUserFirstname class=(if ldapErrorAttributeUserFirstname "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Firstname attribute, e.g. givenName</small>
</div>
<div class="form-group row">
<label for="ldap-attributeUserLastname" class="col-sm-3 col-form-label">User Attribute Lastname</label>
<div class="col-sm-9">
{{input id="ldap-attributeUserLastname" type="text" value=ldapConfig.attributeUserLastname class=(if ldapErrorAttributeUserLastname "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Lastname attribute, e.g. sn</small>
</div>
<div class="form-group">
<label for="ldap-attributeUserLastname">User Attribute Lastname</label>
{{input id="ldap-attributeUserLastname" type="text" value=ldapConfig.attributeUserLastname class=(if ldapErrorAttributeUserLastname "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Lastname attribute, e.g. sn</small>
</div>
<div class="form-group row">
<label for="ldap-attributeUserEmail" class="col-sm-3 col-form-label">User Attribute Email</label>
<div class="col-sm-9">
{{input id="ldap-attributeUserEmail" type="text" value=ldapConfig.attributeUserEmail class=(if ldapErrorAttributeUserEmail "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Email attribute, e.g. mail</small>
</div>
<div class="form-group">
<label for="ldap-attributeUserEmail">User Attribute Email</label>
{{input id="ldap-attributeUserEmail" type="text" value=ldapConfig.attributeUserEmail class=(if ldapErrorAttributeUserEmail "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Email attribute, e.g. mail</small>
</div>
<div class="form-group row">
<label for="ldap-attributeGroupMember" class="col-sm-3 col-form-label">Group Attribute Member</label>
<div class="col-sm-9">
{{input id="ldap-attributeGroupMember" type="text" value=ldapConfig.attributeGroupMember class=(if ldapErrorAttributeGroupMember "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Attribute that identifies individual group member, e.g. member or uniqueMember</small>
<small class="form-text text-muted highlight">Group Attributes used to retreive data when using Group Filter</small>
</div>
<div class="form-group">
<label for="ldap-attributeGroupMember">Group Attribute Member</label>
{{input id="ldap-attributeGroupMember" type="text" value=ldapConfig.attributeGroupMember class=(if ldapErrorAttributeGroupMember "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Attribute that identifies individual group member, e.g. member or uniqueMember</small>
<small class="form-text text-muted highlight">Group Attributes used to retreive data when using Group Filter</small>
</div>
<div class="form-group row">
<label for="ldap-disableLogout" class="col-sm-3 col-form-label">Disable Logout</label>
<div class="col-sm-9">
{{x-toggle value=ldapConfig.disableLogout size="medium" theme="light" onToggle=(action (mut ldapConfig.disableLogout))}}
</div>
<div class="form-group">
<label for="ldap-disableLogout">Disable Logout</label>
{{x-toggle value=ldapConfig.disableLogout size="medium" theme="light" onToggle=(action (mut ldapConfig.disableLogout))}}
</div>
<div class="form-group row">
<label for="ldap-defaultPermissionAddSpace" class="col-sm-3 col-form-label">Can Create Spaces</label>
<div class="col-sm-9">
{{x-toggle value=ldapConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut ldapConfig.defaultPermissionAddSpace))}}
</div>
</div>
<div class="form-group row">
<div class="col-sm-3"></div>
<div class="col-sm-9">
<div class="btn btn-secondary mt-4" {{action "onLDAPPreview"}}>Test Connection & Preview pauth&rarr;</div>
</div>
<div class="form-group">
<label for="ldap-defaultPermissionAddSpace">Can Create Spaces</label>
{{x-toggle value=ldapConfig.defaultPermissionAddSpace size="medium" theme="light" onToggle=(action (mut ldapConfig.defaultPermissionAddSpace))}}
</div>
{{ui/ui-button color=constants.Color.Yellow light=true label="Test →" onClick=(action "onLDAPPreview")}}
{{ui/ui-button-gap}}
{{/if}}
<div class="btn btn-success mt-4" {{action "onSave"}}>ACTIVATE</div>
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Activate onClick=(action "onSave")}}
</form>
{{#if (gt keycloakFailure.length 0)}}
@ -253,8 +186,8 @@
{{/if}}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
</div>
</div>
</div>
</div>
</div>

View file

@ -1,14 +1,4 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Backup & Restore</h1>
<h2 class="sub-heading">Export all documents and settings to a single ZIP file.</h2>
</div>
</div>
</div>
<div class="view-customize">
<div class="backup-restore">
<div class="backup-zone">
{{#if session.isGlobalAdmin}}
@ -36,10 +26,10 @@
{{#if backupRunning}}
<h3 class="text-success">Backup running, please wait...</h3>
{{else}}
<button class="btn btn-success mb-3" {{action "onBackup"}}>TENANT BACKUP ({{appMeta.appHost}})</button>
{{ui/ui-button color=constants.Color.Yellow light=true label=(concat "TENANT BACKUP (" appMeta.appHost ")") onClick=(action "onBackup")}}
{{#if session.isGlobalAdmin}}
<div class="button-gap" />
<button class="btn btn-success mb-3" {{action "onSystemBackup"}}>SYSTEM BACKUP</button>
{{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Green light=true label="SYSTEM BACKUP" onClick=(action "onSystemBackup")}}
{{/if}}
{{/if}}
{{#if backupFailed}}
@ -73,7 +63,7 @@
<div class="restore-success">Restore completed &mdash; restart your browser and log in</div>
{{else}}
{{#if restoreUploadReady}}
<button class="btn btn-danger mb-3" {{action "onShowRestoreModal"}}>{{restoreButtonLabel}}</button>
{{ui/ui-button color=constants.Color.Red light=false label=restoreButtonLabel onClick=(action "onShowRestoreModal")}}
{{/if}}
{{/if}}
</div>
@ -94,8 +84,9 @@
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-danger" onclick={{action "onRestore"}}>Start Restore</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
{{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Restore onClick=(action "onRestore")}}
</div>
</div>
</div>

View file

@ -1,37 +1,31 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">{{appMeta.edition}} Edition {{appMeta.version}}</h1>
<h2 class="sub-heading">Enterprise Edition unlocks
<a class="" href="https://documize.com/pricing">premium capabilities and product support</a>
</h2>
</div>
</div>
</div>
<div class="product-update">
<div class="update-summary">
{{#if appMeta.updateAvailable}}
<a href="https://documize.com/downloads" class="caption">New version available</a>
<div class="update-status">
{{!-- appMeta.updateAvailable --}}
{{#if true}}
<a class="title" href="https://documize.com/downloads">Documize product update is available :)</a>
<p class="instructions">
To upgrade, replace existing binary and restart Documize. Migrate between Community and Enterprise editions seamlessly.
</p>
{{else}}
<div class="caption">Release Summary</div>
<div class="title">Product Downloads</div>
{{/if}}
<p>
<span class="color-black-light-2">Community Edition {{appMeta.communityLatest}}</span>&nbsp;&nbsp;&nbsp;
<a href="https://storage.googleapis.com/documize/downloads/documize-community-windows-amd64.exe" class="bold-700">Windows</a>&nbsp;&middot;
<a href="https://storage.googleapis.com/documize/downloads/documize-community-linux-amd64" class="bold-700">Linux</a>&nbsp;&middot;
<a href="https://storage.googleapis.com/documize/downloads/documize-community-darwin-amd64" class="bold-700">macOS</a>&nbsp;
</p>
<p>
<span class="color-black-light-2">Enterprise Edition {{appMeta.enterpriseLatest}}</span>&nbsp;&nbsp;&nbsp;
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-windows-amd64.exe" class="bold-700 color-gray-700">Windows</a>&nbsp;&middot;
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-linux-amd64" class="bold-700 color-gray-700">Linux</a>&nbsp;&middot;
<a href="https://storage.googleapis.com/documize/downloads/documize-enterprise-darwin-amd64" class="bold-700 color-gray-700">macOS</a>&nbsp;
</p>
<div class="my-5" />
<div class="links">
<p>
<span class="edition-name">Community Edition {{appMeta.communityLatest}}</span>&nbsp;&nbsp;&nbsp;
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-windows-amd64.exe">Windows</a>&nbsp;&middot;
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-linux-amd64">Linux</a>&nbsp;&middot;
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-community-darwin-amd64">macOS</a>&nbsp;
</p>
<p>
<span class="edition-name">Enterprise Edition {{appMeta.enterpriseLatest}}</span>&nbsp;&nbsp;&nbsp;
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-windows-amd64.exe">Windows</a>&nbsp;&middot;
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-linux-amd64">Linux</a>&nbsp;&middot;
<a class="link" href="https://storage.googleapis.com/documize/downloads/documize-enterprise-darwin-amd64">macOS</a>&nbsp;
</p>
</div>
</div>
{{ui/ui-spacer size=400}}
<div class="change-log">
{{{changelog}}}
</div>
</div>

View file

@ -1,73 +1,52 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Instance Settings</h1>
<h2 class="sub-heading">Settings applicable to the Documize instance</h2>
</div>
</div>
</div>
<div class="view-customize">
<form class="mt-5">
<div class="form-group row">
<label for="siteTitle" class="col-sm-4 col-form-label">Site Name</label>
<div class="col-sm-7">
{{focus-input id="siteTitle" type="text" value=model.general.title class=(if hasTitleInputError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Provide short title for this Documize instance</small>
<form>
<div class="form-group">
<label for="siteTitle">Site Name</label>
{{focus-input id="siteTitle" type="text" value=model.general.title class=(if hasTitleInputError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Provide short title for this Documize instance</small>
</div>
<div class="form-group">
<label id="siteMessage">Site Message</label>
{{textarea id="siteMessage" rows="3" value=model.general.message class=(if hasMessageInputError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Provide short message explaining this Documize instance</small>
</div>
<div class="form-group">
<label>Anonymous Access</label>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="allowAnonymousAccess" checked={{model.general.allowAnonymousAccess}}>
<label class="form-check-label" for="allowAnonymousAccess">
Make content marked as "Everyone" available to anonymous users
</label>
</div>
</div>
<div class="form-group row">
<label id="siteMessage" class="col-sm-4 col-form-label">Site Message</label>
<div class="col-sm-7">
{{textarea id="siteMessage" rows="3" value=model.general.message class=(if hasMessageInputError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Provide short message explaining this Documize instance</small>
</div>
<div class="form-group">
<label for="conversionEndpoint">Conversion Service URL</label>
{{input id="conversionEndpoint" type="text" value=model.general.conversionEndpoint class=(if hasConversionEndpointInputError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">
Endpoint for handling import/export (e.g. https://api.documize.com,
<a href="https://docs.documize.com/s/WNEpptWJ9AABRnha/administration-guides/d/WO0pt_MXigAB6sJ7/general-options">view documentation</a>)
</small>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label">Anonymous Access</label>
<div class="col-sm-7">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="allowAnonymousAccess" checked={{model.general.allowAnonymousAccess}}>
<label class="form-check-label" for="allowAnonymousAccess">
Make content marked as "Everyone" available to anonymous users
</label>
</div>
</div>
<div class="form-group">
<label for="maxTags">Maximum Tags Per Document</label>
<select class="form-control" id="maxTags" {{action "change" on="change"}}>
<option selected={{is-equal 3 maxTags}} value="3">3</option>
<option selected={{is-equal 4 maxTags}} value="4">4</option>
<option selected={{is-equal 5 maxTags}} value="5">5</option>
<option selected={{is-equal 6 maxTags}} value="6">6</option>
<option selected={{is-equal 7 maxTags}} value="7">7</option>
<option selected={{is-equal 8 maxTags}} value="8">8</option>
<option selected={{is-equal 9 maxTags}} value="9">9</option>
<option selected={{is-equal 10 maxTags}} value="10">10</option>
</select>
<small class="form-text text-muted">How many tags can be assigned to a document (between 3 and 10 tags)</small>
</div>
<div class="form-group row">
<label for="conversionEndpoint" class="col-sm-4 col-form-label">Conversion Service URL</label>
<div class="col-sm-7">
{{input id="conversionEndpoint" type="text" value=model.general.conversionEndpoint class=(if hasConversionEndpointInputError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">
Endpoint for handling import/export (e.g. https://api.documize.com,
<a href="https://docs.documize.com/s/WNEpptWJ9AABRnha/administration-guides/d/WO0pt_MXigAB6sJ7/general-options">view documentation</a>)
</small>
</div>
</div>
<div class="form-group row">
<label for="maxTags" class="col-sm-4 col-form-label">Maximum Tags Per Document</label>
<div class="col-sm-7">
<select class="form-control" id="maxTags" {{action "change" on="change"}}>
<option selected={{is-equal 3 maxTags}} value="3">3</option>
<option selected={{is-equal 4 maxTags}} value="4">4</option>
<option selected={{is-equal 5 maxTags}} value="5">5</option>
<option selected={{is-equal 6 maxTags}} value="6">6</option>
<option selected={{is-equal 7 maxTags}} value="7">7</option>
<option selected={{is-equal 8 maxTags}} value="8">8</option>
<option selected={{is-equal 9 maxTags}} value="9">9</option>
<option selected={{is-equal 10 maxTags}} value="10">10</option>
</select>
<small class="form-text text-muted">How many tags can be assigned to a document (between 3 and 10 tags)</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label">Default Site Theme</label>
<div class="col-sm-7">
{{ui/theme-picker onChange=(action "onThemeChange")}}
<small class="form-text text-muted">Users can set their own theme under Profile</small>
</div>
<div class="form-group">
<label>Default Site Theme</label>
{{ui/theme-picker onChange=(action "onThemeChange")}}
<small class="form-text text-muted">Users can set their own theme under Profile</small>
</div>
<div class="btn btn-success bold-700 text-uppercase mt-4" {{action "save"}}>Save</div>
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Save onClick=(action "save")}}
</form>
</div>

View file

@ -1,52 +1,33 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Integrations Settings</h1>
<h2 class="sub-heading">Enable and configure third party integrations</h2>
</div>
</div>
</div>
<div class="view-customize">
<form class="mt-5">
<form>
<h2>Jira</h2>
<p>Displays issues within documentation</p>
<div class="form-group row">
<label for="jira-url" class="col-sm-4 col-form-label">URL</label>
<div class="col-sm-7">
{{focus-input id="jira-url" type="text" value=jiraCreds.url class="form-control"}}
<small class="form-text text-muted">Fully qualified domain name for your Jira instance e.g. http://jira.example.org</small>
</div>
<div class="form-group">
<label for="jira-url">URL</label>
{{focus-input id="jira-url" type="text" value=jiraCreds.url class="form-control"}}
<small class="form-text text-muted">Fully qualified domain name for your Jira instance e.g. http://jira.example.org</small>
</div>
<div class="form-group row">
<label for="jira-username" class="col-sm-4 col-form-label">Username</label>
<div class="col-sm-7">
{{input id="jira-username" type="text" value=jiraCreds.username class="form-control"}}
<small class="form-text text-muted">Your Jira login username/email</small>
</div>
<div class="form-group">
<label for="jira-username">Username</label>
{{input id="jira-username" type="text" value=jiraCreds.username class="form-control"}}
<small class="form-text text-muted">Your Jira login username/email</small>
</div>
<div class="form-group row">
<label for="jira-secret" class="col-sm-4 col-form-label">Password</label>
<div class="col-sm-7">
{{input id="jira-secret" type="password" value=jiraCreds.secret class="form-control"}}
<small class="form-text text-muted">Provide API Token if using Atlassian Cloud or Password when self-hosting Jira</small>
</div>
<div class="form-group">
<label for="jira-secret">Password</label>
{{input id="jira-secret" type="password" value=jiraCreds.secret class="form-control"}}
<small class="form-text text-muted">Provide API Token if using Atlassian Cloud or Password when self-hosting Jira</small>
</div>
{{#if session.isGlobalAdmin}}
<h2>Trello</h2>
<p>Displays boards within documentation</p>
<div class="form-group row">
<label for="trello-key" class="col-sm-4 col-form-label">App Key</label>
<div class="col-sm-7">
<div class="form-group">
<label for="trello-key">App Key</label>
{{input id="trello-key" type="text" value=trelloCreds.appKey class="form-control"}}
<small class="form-text text-muted">See <a href="https://trello.com/app-key">https://trello.com/app-key</a></small>
</div>
<small class="form-text text-muted">See <a href="https://trello.com/app-key">https://trello.com/app-key</a></small>
</div>
{{/if}}
<div class="btn btn-success bold-700 text-uppercase mt-4" {{action "onSave"}}>Save</div>
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Save onClick=(action "onSave")}}
</form>
</div>

View file

@ -1,17 +1,8 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Search</h1>
<h2 class="sub-heading">There are currently {{searchStatus.entries}} search entries.</h2>
</div>
</div>
</div>
<div class="view-customize">
<form class="mt-5 ">
<form>
<div class="form-group">
<p>It can take up to 30 minutes to rebuild the search index across all documents and associated content.</p>
<div class="btn btn-danger mt-3" {{action "reindex"}}>{{buttonLabel}}</div>
<p>It can take up to 30 minutes to rebuild the search index.</p>
{{ui/ui-button color=constants.Color.Yellow light=true label=buttonLabel onClick=(action "reindex")}}
</div>
</form>
</div>

View file

@ -1,91 +1,56 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">SMTP Server</h1>
<h2 class="sub-heading">For sending email notifications</h2>
</div>
</div>
</div>
<div class="view-customize">
<form class="mt-5">
<div class="form-group row">
<label for="smtp-host" class="col-sm-4 col-form-label">Host</label>
<div class="col-sm-8">
{{focus-input id="smtp-host" type="text" value=model.smtp.host class=(if SMTPHostEmptyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. my.host.com</small>
<form>
<div class="form-group">
<label for="smtp-host">Host</label>
{{focus-input id="smtp-host" type="text" value=model.smtp.host class=(if SMTPHostEmptyError "form-control is-invalid" "form-control")}}
<small class="form-text">e.g. my.host.com</small>
</div>
<div class="form-group">
<label for="smtp-port">Port</label>
{{input id="smtp-port" type="text" value=model.smtp.port class=(if SMTPPortEmptyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. 587</small>
</div>
<div class="form-group">
<label for="smtp-userid">Username</label>
{{input id="smtp-userid" type="text" value=model.smtp.userid class="form-control"}}
<small class="form-text text-muted">e.g. Login username for SMTP server</small>
</div>
<div class="form-group">
<label for="smtp-password">Password</label>
{{input id="smtp-password" type="password" value=model.smtp.password class="form-control"}}
<small class="form-text text-muted">e.g. Login password for SMTP server</small>
</div>
<div class="form-group">
<label for="smtp-sender">Sender Email</label>
{{input id="smtp-sender" type="email" value=model.smtp.sender class=(if SMTPSenderEmptyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. user@some-domain.com</small>
</div>
<div class="form-group">
<label for="smtp-senderName">Sender Name</label>
{{input id="smtp-senderName" type="text" value=model.smtp.senderName class=(if senderNameError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. Documize</small>
</div>
<div class="form-group">
<label>Anonymous</label>
<div class="form-check">
{{input id="smtp-anonymous" type="checkbox" checked=model.smtp.anonymous class="form-check-input"}}
<label class="form-check-label" for="smtp-anonymous">Anonymous authentication, ignore Username and Password fields</label>
</div>
</div>
<div class="form-group row">
<label for="smtp-port" class="col-sm-4 col-form-label">Port</label>
<div class="col-sm-8">
{{input id="smtp-port" type="text" value=model.smtp.port class=(if SMTPPortEmptyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. 587</small>
<div class="form-group">
<label>Base64</label>
<div class="form-check">
{{input id="smtp-base64creds" type="checkbox" checked=model.smtp.base64creds class="form-check-input"}}
<label class="form-check-label" for="smtp-base64creds">Base64 encode Username and Password fields</label>
</div>
</div>
<div class="form-group row">
<label for="smtp-userid" class="col-sm-4 col-form-label">Username</label>
<div class="col-sm-8">
{{input id="smtp-userid" type="text" value=model.smtp.userid class="form-control"}}
<small class="form-text text-muted">e.g. Login username for SMTP server</small>
<div class="form-group">
<label>SSL</label>
<div class="form-check">
{{input id="smtp-usessl" type="checkbox" checked=model.smtp.usessl class="form-check-input"}}
<label class="form-check-label" for="smtp-usessl">Use SSL</label>
</div>
</div>
<div class="form-group row">
<label for="smtp-password" class="col-sm-4 col-form-label">Password</label>
<div class="col-sm-8">
{{input id="smtp-password" type="password" value=model.smtp.password class="form-control"}}
<small class="form-text text-muted">e.g. Login password for SMTP server</small>
</div>
</div>
<div class="form-group row">
<label for="smtp-sender" class="col-sm-4 col-form-label">Sender Email</label>
<div class="col-sm-8">
{{input id="smtp-sender" type="email" value=model.smtp.sender class=(if SMTPSenderEmptyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. user@some-domain.com</small>
</div>
</div>
<div class="form-group row">
<label for="smtp-senderName" class="col-sm-4 col-form-label">Sender Name</label>
<div class="col-sm-8">
{{input id="smtp-senderName" type="text" value=model.smtp.senderName class=(if senderNameError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">e.g. Documize</small>
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label">Anonymous</label>
<div class="col-sm-8">
<div class="form-check">
{{input id="smtp-anonymous" type="checkbox" checked=model.smtp.anonymous class="form-check-input"}}
<label class="form-check-label" for="smtp-anonymous">Anonymous authentication, ignore Username and Password fields</label>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label">Base64</label>
<div class="col-sm-8">
<div class="form-check">
{{input id="smtp-base64creds" type="checkbox" checked=model.smtp.base64creds class="form-check-input"}}
<label class="form-check-label" for="smtp-base64creds">Base64 encode Username and Password fields</label>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label">SSL</label>
<div class="col-sm-8">
<div class="form-check">
{{input id="smtp-usessl" type="checkbox" checked=model.smtp.usessl class="form-check-input"}}
<label class="form-check-label" for="smtp-usessl">Use SSL</label>
</div>
</div>
</div>
<div class="btn btn-success mt-4" {{action "saveSMTP"}}>{{buttonText}}</div>
{{ui/ui-button color=constants.Color.Green light=true label=buttonText onClick=(action "saveSMTP")}}
</form>
{{#if testSMTP.success}}
<p class="smtp-success my-3">{{testSMTP.message}}</p>
{{else}}
<p class="smtp-failure my-3">{{testSMTP.message}}</p>
{{/if}}
</div>

View file

@ -1,15 +1,7 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Manage Spaces</h1>
<h2 class="sub-heading">Delete spaces, take ownership of shared spaces and orphaned spaces</h2>
</div>
</div>
</div>
<div class="view-customize my-5">
<div class="view-customize">
{{#if spaces}}
<button type="button" class="btn btn-success" onclick={{action "onExport"}}>Export content</button>
{{ui/ui-button color=constants.Color.Yellow light=true icon=constants.Icon.Export label=constants.Label.Export onClick=(action "onExport")}}
<div class="space-list">
{{#each spaces as |space|}}
<div class="space row">
@ -46,8 +38,9 @@
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-danger" onclick={{action "onDelete"}}>Delete</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}}
{{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Delete onClick=(action "onDelete")}}
</div>
</div>
</div>

View file

@ -1,11 +1,9 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Users</h1>
<h2 class="sub-heading">Set basic information, passwords and permissions for {{users.length}} users</h2>
{{#if isAuthProviderDocumize}}
<div class="btn btn-success mt-3 mb-3" {{action "onOpenUserModal"}}>Add user</div>
{{ui/ui-button color=constants.Color.Green light=true icon=constants.Icon.Person label=constants.Label.Add onClick=(action "onOpenUserModal")}}
<div id="add-user-modal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">

View file

@ -1,11 +1,8 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Groups</h1>
<h2 class="sub-heading">Create groups for easier user management &mdash; assign users to groups</h2>
<div class="btn btn-success mt-3 mb-3" {{action "onShowAddGroupModal"}}>Add Group</div>
{{ui/ui-button color=constants.Color.Green light=true icon=constants.Icon.People label=constants.Label.Add onClick=(action "onShowAddGroupModal")}}
{{ui/ui-spacer size=300}}
<div id="add-group-modal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
@ -24,8 +21,9 @@
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success" onclick= {{action "onAddGroup"}}>Add</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
{{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Add onClick=(action "onAddGroup")}}
</div>
</div>
</div>
@ -83,8 +81,9 @@
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-danger" onclick= {{action "onDeleteGroup"}}>Delete</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
{{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Delete onClick=(action "onDeleteGroup")}}
</div>
</div>
</div>
@ -108,8 +107,9 @@
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success" onclick= {{action "onEditGroup"}}>Save</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
{{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Save onClick=(action "onEditGroup")}}
</div>
</div>
</div>
@ -134,7 +134,7 @@
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
</div>
</div>
</div>
@ -153,7 +153,7 @@
<div class="view-customize">
<div class="text-center">
<div class="btn-group btn-group-toggle">
{{#attach-tooltip showDelay=1000}}Number of users to display{{/attach-tooltip}}>
{{#attach-tooltip showDelay=1000}}Number of users to display{{/attach-tooltip}}
<label class="btn btn-outline-secondary {{if (eq userLimit 1) "active"}}">
<input type="radio" name="options" autocomplete="off" {{action "onLimit" 1}}>1
</label>
@ -202,7 +202,7 @@
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
</div>
</div>
</div>