1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-20 13:49:42 +02:00

Apply changes backported from Enterprise edition

This commit is contained in:
McMatts 2018-12-26 18:13:00 +00:00
parent 3d0a3cecf9
commit 5757b2d36e
24 changed files with 1474 additions and 1378 deletions

View file

@ -99,8 +99,8 @@ Documize supports the following (evergreen) browsers:
Documize is built with the following technologies: Documize is built with the following technologies:
- EmberJS (v3.1.2) - EmberJS (v3.5.1)
- Go (v1.11.2) - Go (v1.11.4)
## Authentication Options ## Authentication Options

File diff suppressed because one or more lines are too long

View file

@ -11,6 +11,7 @@
import { A } from '@ember/array'; import { A } from '@ember/array';
import { computed } from '@ember/object'; import { computed } from '@ember/object';
import { notEmpty } from '@ember/object/computed';
import { inject as service } from '@ember/service'; import { inject as service } from '@ember/service';
import Modals from '../../mixins/modal'; import Modals from '../../mixins/modal';
import Component from '@ember/component'; import Component from '@ember/component';
@ -22,7 +23,7 @@ export default Component.extend(Modals, {
router: service(), router: service(),
selectedCategories: A([]), selectedCategories: A([]),
tagz: A([]), tagz: A([]),
userChanges: notEmpty('contributorMsg'),
unassigned: computed('selectedCategories', 'tagz', function() { unassigned: computed('selectedCategories', 'tagz', function() {
return this.get('selectedCategories').length === 0 && this.get('tagz').length === 0; return this.get('selectedCategories').length === 0 && this.get('tagz').length === 0;
}), }),

View file

@ -33,6 +33,14 @@ export default Component.extend(ModalMixin, AuthMixin, Notifier, {
return false; return false;
}), }),
showActivity: computed('permissions', function() {
if (this.get('appMeta.edition') !== this.get('constants').Product.EnterpriseEdition) return false;
if (!this.get('session.authenticated')) return false;
if (!this.get('session.viewUsers')) return false;
if (this.get('permissions.spaceView')) return true;
return false;
}),
init() { init() {
this._super(...arguments); this._super(...arguments);

View file

@ -0,0 +1,41 @@
// 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 { A } from '@ember/array';
import { computed } from '@ember/object';
import { notEmpty } from '@ember/object/computed';
import { inject as service } from '@ember/service';
import Modals from '../../mixins/modal';
import Component from '@ember/component';
export default Component.extend(Modals, {
documentService: service('document'),
sessionService: service('session'),
router: service(),
userChanges: notEmpty('contributorMsg'),
unassigned: computed('selectedCategories', 'tagz', function() {
return this.get('selectedCategories').length === 0 && this.get('tagz').length === 0;
}),
actions: {
onEditStatus() {
if (!this.get('permissions.documentEdit')) return;
this.get('router').transitionTo('document.settings', {queryParams: {tab: 'general'}});
},
onSelectVersion(version) {
let space = this.get('space');
this.get('router').transitionTo('document', space.get('id'), space.get('slug'), version.documentId, this.get('document.slug'));
}
}
});

View file

@ -198,6 +198,7 @@ let constants = EmberObject.extend({
AddUser: 'dicon-add-27', AddUser: 'dicon-add-27',
All: 'dicon-menu-8', All: 'dicon-menu-8',
Announce: 'dicon-notification', Announce: 'dicon-notification',
Archive: 'dicon-box',
ArrowUp: 'dicon-arrow-up-2', ArrowUp: 'dicon-arrow-up-2',
ArrowDown: 'dicon-arrow-down-2', ArrowDown: 'dicon-arrow-down-2',
ArrowLeft: 'dicon-arrow-left-2', ArrowLeft: 'dicon-arrow-left-2',
@ -207,7 +208,7 @@ let constants = EmberObject.extend({
ArrowSmallLeft: 'dicon-small-left', ArrowSmallLeft: 'dicon-small-left',
ArrowSmallRight: 'dicon-small-right', ArrowSmallRight: 'dicon-small-right',
Attachment: 'dicon-attachment', Attachment: 'dicon-attachment',
BarChart: 'dicon-chart-bar-2', BarChart: 'dicon-chart-bar-33',
Blocks: 'dicon-menu-6', Blocks: 'dicon-menu-6',
Bookmark: 'dicon-bookmark', Bookmark: 'dicon-bookmark',
BookmarkSolid: 'dicon-bookmark-2', BookmarkSolid: 'dicon-bookmark-2',
@ -246,6 +247,7 @@ let constants = EmberObject.extend({
Search: 'dicon-magnifier', Search: 'dicon-magnifier',
Send: 'dicon-send', Send: 'dicon-send',
Settings: 'dicon-settings-gear', Settings: 'dicon-settings-gear',
Split: 'dicon-split-37',
Tag: 'dicon-delete-key', Tag: 'dicon-delete-key',
TickSmall: 'dicon-d-check', TickSmall: 'dicon-d-check',
Tick: 'dicon-check', Tick: 'dicon-check',
@ -256,6 +258,7 @@ let constants = EmberObject.extend({
TriangleSmallDown: 'dicon-small-triangle-down', TriangleSmallDown: 'dicon-small-triangle-down',
TriangleSmallLeft: 'dicon-small-triangle-left', TriangleSmallLeft: 'dicon-small-triangle-left',
TriangleSmallRight: 'dicon-small-triangle-right', TriangleSmallRight: 'dicon-small-triangle-right',
Unarchive: 'dicon-download',
Unlocked: 'dicon-unlocked', Unlocked: 'dicon-unlocked',
World: 'dicon-globe', World: 'dicon-globe',
}, },
@ -270,6 +273,7 @@ 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", Activate: "Activate",
Approve: 'Approve',
Authenticate: 'Authenticate', Authenticate: 'Authenticate',
Cancel: 'Cancel', Cancel: 'Cancel',
Close: 'Close', Close: 'Close',
@ -282,7 +286,9 @@ let constants = EmberObject.extend({
Join: 'Join', Join: 'Join',
Leave: 'Leave', Leave: 'Leave',
Next: 'Next', Next: 'Next',
OK: 'OK',
Publish: 'Publish', Publish: 'Publish',
Reject: 'Reject',
Remove: 'Remove', Remove: 'Remove',
Reset: 'Reset', Reset: 'Reset',
Restore: 'Restore', Restore: 'Restore',
@ -291,7 +297,8 @@ let constants = EmberObject.extend({
SignIn: 'Sign In', SignIn: 'Sign In',
Unassigned: 'Unassigned', Unassigned: 'Unassigned',
Update: 'Update', Update: 'Update',
Upload: 'Upload' Upload: 'Upload',
Version: 'Version'
} }
}); });

View file

@ -22,6 +22,8 @@ export default Controller.extend(Notifier, {
router: service(), router: service(),
sidebarTab: 'toc', sidebarTab: 'toc',
queryParams: ['currentPageId', 'source'], queryParams: ['currentPageId', 'source'],
contributionStatus: '',
approvalStatus: '',
actions: { actions: {
onSidebarChange(tab) { onSidebarChange(tab) {

View file

@ -19,6 +19,8 @@ export default Route.extend(AuthenticatedRouteMixin, {
linkService: service('link'), linkService: service('link'),
folderService: service('folder'), folderService: service('folder'),
userService: service('user'), userService: service('user'),
contributionStatus: '',
approvalStatus: '',
beforeModel(transition) { beforeModel(transition) {
// Note the source that sent user to this document. // Note the source that sent user to this document.

View file

@ -1,8 +1,20 @@
{{#layout/master-sidebar}} {{#layout/master-sidebar}}
{{ui/ui-spacer size=200}} {{ui/ui-spacer size=100}}
<div class="section"> <div class="section">
{{ui/ui-spacer size=100}} {{document/sidebar-meta
tab=tab
roles=roles
pages=pages
space=folder
spaces=folders
document=document
versions=versions
permissions=permissions
contributionStatus=contributionStatus
approvalStatus=approvalStatus}}
{{ui/ui-spacer size=300}}
<div class="text-center"> <div class="text-center">
{{#ui/ui-toolbar dark=true light=true raised=true large=false bordered=true}} {{#ui/ui-toolbar dark=true light=true raised=true large=false bordered=true}}
@ -40,14 +52,10 @@
{{#layout/master-content}} {{#layout/master-content}}
<div class="grid-container-6-4"> <div class="grid-container-6-4">
<div class="grid-cell-1"> <div class="grid-cell-1">
{{document/document-meta {{#link-to "folder.index" folder.id folder.slug class="no-print"}}
tab=tab {{ui/ui-button light=true color=constants.Color.Yellow uppercase=false
roles=roles icon=constants.Icon.ArrowLeft label=folder.name}}
space=folder {{/link-to}}
spaces=folders
document=document
versions=versions
permissions=permissions}}
</div> </div>
<div class="grid-cell-2 grid-cell-right"> <div class="grid-cell-2 grid-cell-right">
@ -66,7 +74,37 @@
</div> </div>
</div> </div>
{{ui/ui-spacer size=400}} {{document/document-meta
tab=tab
roles=roles
pages=pages
space=folder
spaces=folders
document=document
versions=versions
permissions=permissions
contributionStatus=contributionStatus
approvalStatus=approvalStatus}}
{{#if contributionStatus}}
{{ui/ui-spacer size=200}}
<div class="document-meta">
<div class="label-workflow-status">
{{contributionStatus}}
</div>
</div>
{{else}}
{{#if approvalStatus}}
{{ui/ui-spacer size=200}}
<div class="document-meta">
<div class="label-workflow-status">
{{approvalStatus}}
</div>
</div>
{{/if}}
{{/if}}
{{ui/ui-spacer size=300}}
<div class="document-meta {{if permissions.documentEdit "cursor-pointer"}}" {{action "onEditMeta"}}> <div class="document-meta {{if permissions.documentEdit "cursor-pointer"}}" {{action "onEditMeta"}}>
<div class="document-heading"> <div class="document-heading">

View file

@ -32,7 +32,7 @@ export default Route.extend(AuthenticatedRouteMixin, {
this.set('revisions', revisions); this.set('revisions', revisions);
resolve(revisions) resolve(revisions);
}); });
}); });
}, },

View file

@ -28,10 +28,9 @@
</div> </div>
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}} {{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
<div class="item {{if (eq tab "archived") "selected"}}" {{action "onTab" "archived"}}> <div class="item {{if (eq tab "archived") "selected"}}" {{action "onTab" "archived"}}>
<i class={{concat "dicon " constants.Icon.ListBullet}} /> <i class={{concat "dicon " constants.Icon.Archive}} />
<div class="name">Archived Content</div> <div class="name">Archived Content</div>
</div> </div>
<li class="tab tab-vertical {{if (eq tab "archived") "selected"}}" {{action "onTab" "archived"}}>Archived</li>
{{/if}} {{/if}}
{{#if model.permissions.spaceOwner}} {{#if model.permissions.spaceOwner}}
<div class="item {{if (eq tab "deletion") "selected"}}" {{action "onTab" "deletion"}}> <div class="item {{if (eq tab "deletion") "selected"}}" {{action "onTab" "deletion"}}>

View file

@ -29,6 +29,10 @@ export default Router.map(function () {
path: 'analytics' path: 'analytics'
}); });
this.route('activity', {
path: 'activity'
});
this.route( this.route(
'folder', 'folder',
{ {
@ -59,6 +63,9 @@ export default Router.map(function () {
this.route('revisions', { this.route('revisions', {
path: 'revisions' path: 'revisions'
}); });
this.route('activity', {
path: 'activity'
});
} }
); );

View file

@ -67,7 +67,7 @@
cursor: pointer; cursor: pointer;
} }
> .bookmarks, > .login { > .bookmarks, > .login, > .invalid-plan {
display: inline-block; display: inline-block;
>.dicon { >.dicon {
@ -78,6 +78,12 @@
} }
} }
> .invalid-plan {
>.dicon {
color: map-get($yellow-shades, 600) !important;
}
}
> .user-gravatar-container { > .user-gravatar-container {
display: inline-block; display: inline-block;
margin: 0 10px 0 0; margin: 0 10px 0 0;
@ -176,19 +182,20 @@
} }
} }
> .bookmarks, > .login { > .bookmarks, > .login, > .invalid-plan {
display: block;
>.dicon { >.dicon {
display: block;
color: $color-white; color: $color-white;
font-size: 20px; font-size: 20px;
padding: 20px 0; padding: 10px 0;
} }
} }
> .user-gravatar-container { > .user-gravatar-container {
display: block; display: block;
text-align: center; text-align: center;
margin: 0 0 15px 4px; margin: 10px 0 15px 4px;
padding: 0; padding: 0;
> .user-gravatar { > .user-gravatar {
@ -273,7 +280,7 @@
} }
> .user-gravatar-container { > .user-gravatar-container {
margin: 0 0 15px 8px; margin: 10px 0 15px 8px;
padding: 0; padding: 0;
> .user-gravatar { > .user-gravatar {

View file

@ -101,5 +101,3 @@
padding: 0 7px; padding: 0 7px;
} }
} }

View file

@ -207,11 +207,39 @@
> .archive-admin { > .archive-admin {
> .list { > .list {
padding: 0;
margin: 0;
> .item { > .item {
margin: 15px 0; @include card();
padding: 15px 0; list-style-type: none;
font-size: 1.2rem; margin: 0 0 2rem 0;
color: $theme-500; padding: 15px 20px;
width: 100%;
position: relative;
> .info {
padding: 0;
align-self: self-start;
justify-self: self-start;
> .name {
font-size: 1.3rem;
font-weight: 700;
color: map-get($gray-shades, 800);
}
> .desc {
font-size: 1.1rem;
font-weight: 400;
margin-top: 0.4rem;
color: $color-black-light-3;
}
}
> .actions {
margin-top: 20px;
}
} }
} }
} }
@ -287,10 +315,13 @@
> .deactivation-zone { > .deactivation-zone {
@include border-radius(3px); @include border-radius(3px);
border: 1px solid map-get($red-shades, 600); border: 1px solid map-get($yellow-shades, 600);
margin: 30px 0; margin: 30px 0;
padding: 20px 20px; padding: 20px 20px;
background-color: map-get($red-shades, 100); background-color: map-get($yellow-shades, 100);
color: $color-black-light-1;
> p {
color: map-get($yellow-shades, 800);
}
} }
} }

View file

@ -43,7 +43,7 @@
} }
} }
> .label-approval { > .label-open {
@include border-radius(3px); @include border-radius(3px);
@extend .no-select; @extend .no-select;
display: inline-block; display: inline-block;
@ -56,6 +56,32 @@
text-transform: uppercase; text-transform: uppercase;
} }
> .label-protected {
@include border-radius(3px);
@extend .no-select;
display: inline-block;
margin: 5px 5px 5px 0;
padding: 0.3rem 0.7rem;
font-size: 1.1rem;
font-weight: 500;
background-color: map-get($green-shades, 700);
color: map-get($green-shades, 100);
text-transform: uppercase;
}
> .label-locked {
@include border-radius(3px);
@extend .no-select;
display: inline-block;
margin: 5px 5px 5px 0;
padding: 0.3rem 0.7rem;
font-size: 1.1rem;
font-weight: 500;
background-color: map-get($red-shades, 700);
color: map-get($red-shades, 300);
text-transform: uppercase;
}
> .label-draft { > .label-draft {
@include border-radius(3px); @include border-radius(3px);
@extend .no-select; @extend .no-select;
@ -108,6 +134,15 @@
text-transform: uppercase; text-transform: uppercase;
} }
> .label-workflow-status {
@extend .no-select;
display: block;
margin: 0;
font-size: 1.1rem;
font-weight: 400;
color: map-get($gray-shades, 700);
}
> .document-heading { > .document-heading {
.name { .name {
color: map-get($gray-shades, 900); color: map-get($gray-shades, 900);
@ -116,7 +151,7 @@
} }
.desc { .desc {
color: map-get($gray-shades, 700); color: map-get($gray-shades, 800);
font-size: 1.2rem; font-size: 1.2rem;
font-weight: 500; font-weight: 500;
} }

View file

@ -1,151 +1,118 @@
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Product Billing & Subscription</h1>
<h2 class="sub-heading">Active subscription details</h2>
</div>
</div>
</div>
<div class="view-customize"> <div class="view-customize">
<form class="my-5 "> {{#if (eq subscription.status 0)}}
<div class="form-group row"> <h3 class="color-red-600">Enjoy the Documize free plan!</h3>
<label for="sub-name" class="col-sm-4 col-form-label"></label> <a href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}">
<div class="col-sm-7"> {{ui/ui-button color=constants.Color.Yellow light=true label="Upgrade Now"}}
{{#if (eq subscription.status 0)}} </a>
<h3 class="text-danger">Enjoy the Documize free plan!</h3> {{/if}}
<a class="btn btn-success" href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}">upgrade now &xrarr;</a> {{#if (eq subscription.status 1)}}
{{/if}} <h3 class="color-green-600">Nice, you have an active product subscription!</h3>
{{#if (eq subscription.status 1)}} <a href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}">
<h3 class="text-success">Nice, you have an active product subscription!</h3> {{ui/ui-button color=constants.Color.Yellow light=true label="Change Plan"}}
<a class="btn btn-success" href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}"> </a>
change plan &xrarr; {{/if}}
</a> {{#if (eq subscription.status 2)}}
{{/if}} <h3 class="color-red-600">Hmm, your product subscription has expired</h3>
{{#if (eq subscription.status 2)}} <a href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}">
<h3 class="text-danger">Hmm, your product subscription has expired</h3> {{ui/ui-button color=constants.Color.Yellow light=true label="Renew"}}
<a class="btn btn-success" href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}"> </a>
renew &xrarr; {{/if}}
</a> {{#if (eq subscription.status 3)}}
{{/if}} <h3 class="color-red-600">Hmm, {{subscription.activeUsers}} active user count exceeds permitted {{subscription.seats}} user limit</h3>
{{#if (eq subscription.status 3)}} <a href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}">
<h3 class="text-danger">Hmm, {{subscription.activeUsers}} active user count exceeds permitted {{subscription.seats}} user limit</h3> {{ui/ui-button color=constants.Color.Yellow light=true label="Upgrade"}}
<a class="btn btn-success" href="https://documize.com/checkout?ref=app&l={{appMeta.location}}&id={{subscription.id}}&o={{appMeta.orgId}}&u={{subscription.seats}}&a={{subscription.activeUsers}}&e={{subscription.email}}"> </a>
upgrade &xrarr; {{/if}}
</a> {{#if (eq subscription.status 4)}}
{{/if}} <h3 class="color-red-600">Hmm, your product subscription is not valid</h3>
{{#if (eq subscription.status 4)}} <a href="https://documize.com/pricing?ref=app">
<h3 class="text-danger">Hmm, your product subscription is not valid</h3> {{ui/ui-button color=constants.Color.Yellow light=true label="Upgrade"}}
<a class="btn btn-success" href="https://documize.com/pricing?ref=app">upgrade &xrarr;</a> </a>
{{/if}} {{/if}}
<br> {{ui/ui-spacer size=400}}
<br>
</div> <form>
<div class="form-group">
<label for="sub-id">Customer ID</label>
{{input id="sub-id" type="text" value=subscription.id class="form-control" readonly=true}}
<small class="form-text text-muted">Quote this ID when contacting us</small>
</div> </div>
<div class="form-group row"> <div class="form-group">
<label for="sub-id" class="col-sm-4 col-form-label">Customer ID</label> <label for="sub-name">Customer Name</label>
<div class="col-sm-7"> {{input id="sub-name" type="text" value=subscription.name class="form-control" readonly=true}}
{{input id="sub-id" type="text" value=subscription.id class="form-control" readonly=true}} <small class="form-text text-muted">The business or personal name of our customer</small>
<small class="form-text text-muted">Quote this ID when contacting us</small>
</div>
</div> </div>
<div class="form-group row"> <div class="form-group">
<label for="sub-name" class="col-sm-4 col-form-label">Customer Name</label> <label for="sub-email">Contact Email</label>
<div class="col-sm-7"> {{input id="sub-email" type="email" value=subscription.email class="form-control" readonly=true}}
{{input id="sub-name" type="text" value=subscription.name class="form-control" readonly=true}} <small class="form-text text-muted">Where we will send product update and billing notices</small>
<small class="form-text text-muted">The business or personal name of our customer</small>
</div>
</div> </div>
<div class="form-group row"> <div class="form-group">
<label for="sub-email" class="col-sm-4 col-form-label">Contact Email</label> <label for="sub-seats">Maximum Users</label>
<div class="col-sm-7"> {{input id="sub-seats" type="number" value=subscription.seats class="form-control" readonly=true}}
{{input id="sub-email" type="email" value=subscription.email class="form-control" readonly=true}} <small class="form-text text-muted">Your user pack size &mdash; you have {{subscription.activeUsers}} active users at the moment</small>
<small class="form-text text-muted">Where we will send product update and billing notices</small>
</div>
</div>
<div class="form-group row">
<label for="sub-seats" class="col-sm-4 col-form-label">Maximum Users</label>
<div class="col-sm-7">
{{input id="sub-seats" type="number" value=subscription.seats class="form-control" readonly=true}}
<small class="form-text text-muted">Your user pack size &mdash; you have {{subscription.activeUsers}} active users at the moment</small>
</div>
</div> </div>
{{#if (eq appMeta.location "selfhost")}} {{#if (eq appMeta.location "selfhost")}}
<div class="form-group row"> <div class="form-group">
<label for="sub-start" class="col-sm-4 col-form-label">Start Date</label> <label for="sub-start">Start Date</label>
<div class="col-sm-7"> {{input id="sub-start" type="text" value=(formatted-date subscription.start) class="form-control" readonly=true}}
{{input id="sub-start" type="text" value=(formatted-date subscription.start) class="form-control" readonly=true}} <small class="form-text text-muted">When you (re)signed up</small>
<small class="form-text text-muted">When you (re)signed up</small>
</div>
</div> </div>
<div class="form-group row"> <div class="form-group">
<label for="sub-end" class="col-sm-4 col-form-label">Renewal Date</label> <label for="sub-end">Renewal Date</label>
<div class="col-sm-7"> {{input id="sub-end" type="text" value=(formatted-date subscription.end) class="form-control" readonly=true}}
{{input id="sub-end" type="text" value=(formatted-date subscription.end) class="form-control" readonly=true}} <small class="form-text text-muted">The renewal date of your annual subscription</small>
<small class="form-text text-muted">The renewal date of your annual subscription</small>
</div>
</div> </div>
<div class="form-group row"> <div class="form-group">
<label for="sub-price" class="col-sm-4 col-form-label">Annual Billing</label> <label for="sub-price">Annual Billing</label>
<div class="col-sm-7"> {{input id="sub-price" type="text" value=(formatted-price subscription.price) class="form-control" readonly=true}}
{{input id="sub-price" type="text" value=(formatted-price subscription.price) class="form-control" readonly=true}} <small class="form-text text-muted">What you pay each year</small>
<small class="form-text text-muted">What you pay each year</small>
</div>
</div> </div>
{{else}} {{else}}
<div class="form-group row"> <div class="form-group">
<label for="sub-start" class="col-sm-4 col-form-label">Start of Billing</label> <label for="sub-start">Start of Billing</label>
<div class="col-sm-7"> {{input id="sub-start" type="text" value=(formatted-date subscription.start) class="form-control" readonly=true}}
{{input id="sub-start" type="text" value=(formatted-date subscription.start) class="form-control" readonly=true}} <small class="form-text text-muted">When we first charged your credit card &mdash; charged every 30 days thereafter</small>
<small class="form-text text-muted">When we first charged your credit card &mdash; charged every 30 days thereafter</small>
</div>
</div> </div>
<div class="form-group row"> <div class="form-group">
<label for="sub-price" class="col-sm-4 col-form-label">Monthly Amount</label> <label for="sub-price">Monthly Amount</label>
<div class="col-sm-7"> {{input id="sub-price" type="text" value=(formatted-price subscription.price) class="form-control" readonly=true}}
{{input id="sub-price" type="text" value=(formatted-price subscription.price) class="form-control" readonly=true}} <small class="form-text text-muted">What you pay us each month</small>
<small class="form-text text-muted">What you pay us each month</small>
</div>
</div> </div>
{{/if}} {{/if}}
{{#if subscription.trial}} {{#if subscription.trial}}
<div class="form-group row"> <div class="form-group">
<label for="sub-trial" class="col-sm-4 col-form-label">Trial?</label> <label for="sub-trial">Trial?</label>
<div class="col-sm-7"> {{input id="sub-trial" type="text" value="Yes" class="form-control" readonly=true}}
{{input id="sub-trial" type="text" value="Yes" class="form-control" readonly=true}}
</div>
</div> </div>
{{/if}} {{/if}}
{{#if (eq appMeta.location "selfhost")}} {{#if (eq appMeta.location "selfhost")}}
<div class="form-group row"> <div class="form-group">
<label for="sub-license" class="col-sm-4 col-form-label">Activation Key</label> <label for="sub-license">Activation Key</label>
<div class="col-sm-7"> {{textarea id="sub-license" value=license rows="10" class=(if licenseError "form-control is-invalid" "form-control")}}
{{focus-textarea id="sub-license" value=license rows="10" class=(if licenseError "form-control is-invalid" "form-control")}} <small class="form-text text-muted">The activation key you received after sign-up</small>
<small class="form-text text-muted">The activation key you received after sign-up</small>
<div class="btn btn-secondary mt-3" {{action "saveLicense"}}>Activate</div>
</div>
</div> </div>
{{/if}} {{/if}}
{{ui/ui-button color=constants.Color.Green light=true label="Activate" onClick=(action "saveLicense")}}
</form> </form>
</div> </div>
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}} {{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
{{#if (eq appMeta.location "cloud")}} {{#if (eq appMeta.location "cloud")}}
<div class="row"> {{ui/ui-spacer size=400}}
<div class="col-sm-4"></div> <div class="view-customize">
<div class="col-sm-7"> <div class="deactivation-zone">
<div class="view-customize"> <p>Let us know if you would like to close your account or cancel your subscription.</p>
<div class="deactivation-zone"> <p>Requests can take up to 24 hours to process.</p>
<p>Let us know if you would like to close your account or cancel your subscription.</p> <p><span class="bold-700">WARNING: </span>All data will be deleted so please download a complete backup of all your data.</p>
<p><span class="bold-700">WARNING: </span>All data will be deleted so please download a complete backup of all your data.</p>
<p>Requests can take up to 24 hours to process.</p> {{#link-to "customize.backup"}}
{{#link-to "customize.backup" class="btn btn-success"}}PERFORM BACKUP{{/link-to}} {{ui/ui-button color=constants.Color.Gray light=true label="Run Backup"}}
<div class="button-gap" /> {{/link-to}}
<button class="btn btn-danger" {{action "onRequestClosure"}}>CLOSE ACCOUNT</button> {{ui/ui-button-gap}}
</div> {{ui/ui-button color=constants.Color.Red light=true label="Close Account" onClick=(action "onRequestClosure")}}
</div>
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -165,8 +132,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 "onDeactivate"}}>Close Account</button> {{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Red light=true label="Close Account" onClick=(action "onDeactivate")}}
</div> </div>
</div> </div>
</div> </div>
@ -181,7 +149,7 @@
<p>If you haven"t already, please run a backup to download all your data.</p> <p>If you haven"t already, please run a backup to download all your data.</p>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">ok</button> {{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.OK dismiss=true}}
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,11 +1,6 @@
{{ui/ui-spacer size=300}}
<div class="document-meta"> <div class="document-meta">
{{#link-to "folder.index" space.id space.slug class="no-print"}}
{{ui/ui-button light=true color=constants.Color.Yellow uppercase=false
icon=constants.Icon.ArrowLeft label=space.name}}
{{/link-to}}
{{ui/ui-spacer size=300}}
<div class="title {{if permissions.documentEdit "cursor-pointer"}}" {{action "onEditCategory"}}>CATEGORY / TAG</div> <div class="title {{if permissions.documentEdit "cursor-pointer"}}" {{action "onEditCategory"}}>CATEGORY / TAG</div>
{{#each selectedCategories as |cat|}} {{#each selectedCategories as |cat|}}
<div class="meta-label"> <div class="meta-label">
@ -31,26 +26,4 @@
<div class="empty">Unassigned</div> <div class="empty">Unassigned</div>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{ui/ui-spacer size=200}}
<div class="title">STATUS</div>
<div class="{{if (eq document.lifecycle constants.Lifecycle.Draft) "label-draft"}}
{{if (eq document.lifecycle constants.Lifecycle.Live) "label-live"}}
{{if (eq document.lifecycle constants.Lifecycle.Archived) "label-archived"}}">
{{document.lifecycleLabel}}
{{#attach-tooltip showDelay=1000}}Lifecycle: Draft &middot; Live &middot; Archived{{/attach-tooltip}}
</div>
<div class="label-approval">
{{#if (eq document.protection constants.ProtectionType.None)}}OPEN{{/if}}
{{#if (eq document.protection constants.ProtectionType.Review)}}PROTECTED{{/if}}
{{#if (eq document.protection constants.ProtectionType.Lock)}}LOCKED{{/if}}
{{#attach-tooltip showDelay=1000}}Change Control: Open &middot; Protected &middot; Locked{{/attach-tooltip}}
</div>
{{#if document.template}}
<div class="label-template">
Template
{{#attach-tooltip showDelay=1000}}This is a template{{/attach-tooltip}}
</div>
{{/if}}
</div> </div>

View file

@ -13,6 +13,11 @@
tooltip="Save as template" onClick=(action "onShowTemplateModal")}} tooltip="Save as template" onClick=(action "onShowTemplateModal")}}
{{/if}} {{/if}}
{{#if showActivity}}
{{ui/ui-toolbar-icon icon=constants.Icon.Pulse color=constants.Color.Gray
tooltip="See content activity" linkTo="document.activity"}}
{{/if}}
{{#if showRevisions}} {{#if showRevisions}}
{{ui/ui-toolbar-icon icon=constants.Icon.TimeBack color=constants.Color.Gray {{ui/ui-toolbar-icon icon=constants.Icon.TimeBack color=constants.Color.Gray
tooltip="Revisions and rollback" linkTo="document.revisions"}} tooltip="Revisions and rollback" linkTo="document.revisions"}}
@ -56,6 +61,7 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}} {{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.Green light=true label=constants.Label.Delete onClick=(action "onSaveTemplate")}} {{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Delete onClick=(action "onSaveTemplate")}}
</div> </div>
</div> </div>
@ -71,6 +77,7 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}} {{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 "onDocumentDelete")}} {{ui/ui-button color=constants.Color.Red light=true label=constants.Label.Delete onClick=(action "onDocumentDelete")}}
</div> </div>
</div> </div>

View file

@ -3,17 +3,17 @@
desc="Assign one or more categories to help organize content within this space" desc="Assign one or more categories to help organize content within this space"
icon=constants.Icon.Category}} icon=constants.Icon.Category}}
{{ui/ui-list-picker items=categories nameField="category" singleSelect=false}} {{#if categories}}
{{ui/ui-list-picker items=categories nameField="category" singleSelect=false}}
{{#unless categories}} {{ui/ui-spacer size=300}}
{{ui/ui-button
color=constants.Color.Green
icon=constants.Icon.Category
label=constants.Label.Save
light=true
onClick=(action "onSave")}}
{{else}}
<p class="color-green-700">This space has no categories yet</p> <p class="color-green-700">This space has no categories yet</p>
{{/unless}} {{/if}}
{{ui/ui-spacer size=300}}
{{ui/ui-button
color=constants.Color.Green
icon=constants.Icon.Category
label=constants.Label.Save
light=true
onClick=(action "onSave")}}

View file

@ -0,0 +1,59 @@
<div class="document-meta">
<div class="title">VERSION</div>
{{#if (gt versions.length 0)}}
{{#ui/ui-toolbar dark=false light=true raised=true large=false bordered=true}}
{{ui/ui-toolbar-label label=document.versionId color=constants.Color.Gray}}
{{#attach-popover class="ember-attacher-popper" hideOn="clickout" showOn="click" isShown=false}}
<div class="menu">
<li class="item header">Select document version</li>
{{#each versions as |version|}}
<a class="item" href="#" {{action "onSelectVersion" version}}>{{version.versionId}}</a>
{{/each}}
</div>
{{/attach-popover}}
{{/ui/ui-toolbar}}
{{else}}
{{#if permissions.spaceManage}}
{{#ui/ui-toolbar dark=false light=true raised=true large=false bordered=true}}
{{ui/ui-toolbar-icon icon=constants.Icon.Plus color=constants.Color.Gray linkTo="document.settings"}}
{{/ui/ui-toolbar}}
{{else}}
<div class="empty">Not versioned</div>
{{/if}}
{{/if}}
{{ui/ui-spacer size=200}}
<div class="title {{if permissions.documentEdit "cursor-pointer"}}" {{action "onEditStatus"}}>STATUS</div>
<div class="{{if (eq document.lifecycle constants.Lifecycle.Draft) "label-draft"}}
{{if (eq document.lifecycle constants.Lifecycle.Live) "label-live"}}
{{if (eq document.lifecycle constants.Lifecycle.Archived) "label-archived"}}">
{{document.lifecycleLabel}}
{{#attach-tooltip showDelay=1000}}Lifecycle: Draft &middot; Live &middot; Archived{{/attach-tooltip}}
</div>
{{#if (eq document.protection constants.ProtectionType.None)}}
<div class="label-open">
OPEN
{{#attach-tooltip showDelay=1000}}Change Control: Open &middot; Protected &middot; Locked{{/attach-tooltip}}
</div>
{{/if}}
{{#if (eq document.protection constants.ProtectionType.Review)}}
<div class="label-protected">
PROTECTED
{{#attach-tooltip showDelay=1000}}Change Control: Open &middot; Protected &middot; Locked{{/attach-tooltip}}
</div>
{{/if}}
{{#if (eq document.protection constants.ProtectionType.Lock)}}
<div class="label-locked">
LOCKED
{{#attach-tooltip showDelay=1000}}Change Control: Open &middot; Protected &middot; Locked{{/attach-tooltip}}
</div>
{{/if}}
{{#if document.template}}
<div class="label-template">
Template
{{#attach-tooltip showDelay=1000}}This is a template{{/attach-tooltip}}
</div>
{{/if}}
</div>

View file

@ -195,11 +195,9 @@
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
{{ui/ui-button color=constants.Color.Gray light=true {{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Close dismiss=true}}
label=constants.Label.Close dismiss=true}}
{{ui/ui-button-gap}} {{ui/ui-button-gap}}
{{ui/ui-button color=constants.Color.Green light=true {{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Invite onClick=(action "onSpaceInvite")}}
label=constants.Label.Invite onClick=(action "onSpaceInvite")}}
</div> </div>
</div> </div>
</div> </div>

View file

@ -46,6 +46,7 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
{{ui/ui-button color=constants.Color.Gray light=true label=constants.Label.Cancel dismiss=true}} {{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.Green light=true label=constants.Label.Add onClick=(action "onAddEmptyDoc")}} {{ui/ui-button color=constants.Color.Green light=true label=constants.Label.Add onClick=(action "onAddEmptyDoc")}}
</div> </div>
</div> </div>

View file

@ -36,6 +36,14 @@
</div> </div>
<div class="meta"> <div class="meta">
{{#if session.isAdmin}}
{{#unless appMeta.valid}}
<div class="invalid-plan" {{action "onBilling"}}>
<i class={{concat "dicon " constants.Icon.Handshake}} />
{{#attach-tooltip}}Invalid product plan{{/attach-tooltip}}
</div>
{{/unless}}
{{/if}}
{{#if session.authenticated}} {{#if session.authenticated}}
{{#if hasPins}} {{#if hasPins}}
<div class="bookmarks" id="user-pins-button"> <div class="bookmarks" id="user-pins-button">