Skip to content

Commit 1e3f8e5

Browse files
committed
sticky form headers, category improvements, dropdown improvements
1 parent 785d121 commit 1e3f8e5

18 files changed

+785
-684
lines changed

domain/category/endpoint.go

+17-1
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,27 @@ func (h *Handler) Add(w http.ResponseWriter, r *http.Request) {
8282

8383
h.Store.Audit.Record(ctx, audit.EventTypeCategoryAdd)
8484

85-
ctx.Transaction.Commit()
85+
perm := pm.Permission{}
86+
perm.OrgID = ctx.OrgID
87+
perm.Who = "user"
88+
perm.WhoID = ctx.UserID
89+
perm.Scope = "object"
90+
perm.Location = "category"
91+
perm.RefID = cat.RefID
92+
perm.Action = pm.CategoryView
93+
94+
err = h.Store.Permission.AddPermission(ctx, perm)
95+
if err != nil {
96+
ctx.Transaction.Rollback()
97+
response.WriteServerError(w, method, err)
98+
h.Runtime.Log.Error(method, err)
99+
return
100+
}
86101

87102
cat, err = h.Store.Category.Get(ctx, cat.RefID)
88103
if err != nil {
89104
response.WriteServerError(w, method, err)
105+
h.Runtime.Log.Error(method, err)
90106
return
91107
}
92108

domain/space/endpoint.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ func (h *Handler) Add(w http.ResponseWriter, r *http.Request) {
116116
perm.RefID = sp.RefID
117117
perm.Action = "" // we send array for actions below
118118

119-
err = h.Store.Permission.AddPermissions(ctx, perm, permission.SpaceOwner, permission.SpaceManage, permission.SpaceView)
119+
err = h.Store.Permission.AddPermissions(ctx, perm, permission.SpaceOwner, permission.SpaceManage, permission.SpaceView,
120+
permission.DocumentAdd, permission.DocumentCopy, permission.DocumentDelete, permission.DocumentEdit, permission.DocumentMove,
121+
permission.DocumentTemplate)
120122
if err != nil {
121123
ctx.Transaction.Rollback()
122124
response.WriteServerError(w, method, err)

embed/bindata_assetfs.go

+619-619
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gui/app/components/document/document-attachments.js

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, DropdownMixin
2323
id: "",
2424
name: "",
2525
},
26+
canShow: Ember.computed('permissions', 'files', function() {
27+
return this.get('files.length') > 0 || this.get('permissions.documentEdit');
28+
}),
2629

2730
init() {
2831
this._super(...arguments);

gui/app/components/document/space-category.js

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, {
1717
documentService: Ember.inject.service('document'),
1818
categoryService: Ember.inject.service('category'),
1919
sessionService: Ember.inject.service('session'),
20+
newCategory: '',
2021
categories: [],
2122
hasCategories: Ember.computed('categories', function() {
2223
return this.get('categories').length > 0;

gui/app/components/dropdown-dialog.js

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export default Ember.Component.extend({
3232
targetOffset: "10px 0",
3333
constrainToWindow: true,
3434
constrainToScrollParent: true,
35+
cssClass: '',
3536
tether: Ember.inject.service(),
3637

3738
hasSecondButton: Ember.computed('button2', 'color2', function () {

gui/app/components/folder/space-view.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -155,25 +155,31 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, AuthMixin, {
155155
filtered.pushObject(d);
156156
}
157157
});
158+
158159
this.set('spaceSelected', false);
160+
this.set('uncategorizedSelected', false);
159161
break;
160162

161163
case 'uncategorized':
162-
this.set('uncategorizedSelected', true);
163164
allowed = _.pluck(categoryMembers, 'documentId');
164165
docs.forEach((d) => {
165166
if (!_.contains(allowed, d.get('id'))) {
166167
filtered.pushObject(d);
167168
}
168169
});
170+
171+
this.set('uncategorizedSelected', true);
172+
this.set('spaceSelected', false);
169173
break;
170174

171175
case 'space':
172-
this.set('spaceSelected', true);
173176
allowed = _.pluck(categoryMembers, 'documentId');
174177
docs.forEach((d) => {
175178
filtered.pushObject(d);
176179
});
180+
181+
this.set('spaceSelected', true);
182+
this.set('uncategorizedSelected', false);
177183
break;
178184
}
179185

gui/app/styles/mixins.scss

+12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
@mixin sticky()
2+
{
3+
position: -webkit-sticky;
4+
position: -moz-sticky;
5+
position: -ms-sticky;
6+
position: -o-sticky;
7+
position: -webkit-sticky;
8+
position: sticky;
9+
display: flex;
10+
z-index: 999;
11+
width: 100%;
12+
}
113
@mixin box-shadow($spec)
214
{
315
-webkit-box-shadow: $spec;

gui/app/styles/view/document/space-category-tag.scss

+16
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@
2727
}
2828
}
2929

30+
.document-category-dialog {
31+
height: 200px;
32+
overflow-y: auto;
33+
margin: 0;
34+
padding: 0;
35+
36+
// // Medium devices (tablets, 768px and up)
37+
// @media (min-width: 768px) { height: 300px; }
38+
39+
// // Large devices (desktops, 992px and up)
40+
// @media (min-width: 992px) { height: 400px; }
41+
42+
// // Extra large devices (large desktops, 1200px and up)
43+
// @media (min-width: 1200px) { height: 500px; }
44+
}
45+
3046
.document-tags {
3147
margin: 20px 0 0 0;
3248

gui/app/styles/view/folder/document.scss

-7
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@
141141
}
142142
}
143143

144-
145144
.space-filter {
146145
display: inline-block;
147146
margin: 0 30px 30px 0;
@@ -176,9 +175,3 @@
176175
margin: 0 0 10px 0;
177176
}
178177
}
179-
180-
// .category-filter {
181-
// > .selected {
182-
// // @extend .button-nav;
183-
// }
184-
// }

gui/app/styles/view/folder/settings.scss

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
@include content-container();
44
@include ease-in();
55
@extend .transition-all;
6+
margin: 0 0 30px 0;
67
}
78

89
.permissions-table {
9-
padding: 0;
10-
margin: 0 0 30px 0;
11-
width: 100%;
10+
padding: 0;
11+
margin: 0 auto;
12+
width: 90%;
1213

1314
> .row {
1415
padding: 8px 0;

gui/app/styles/widget/widget-input.scss

+41
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,47 @@
203203
}
204204
}
205205

206+
.form-header-sticky {
207+
@include sticky();
208+
top: 0;
209+
padding: 20px 0;
210+
background-color: $color-white;
211+
212+
> .left-zone {
213+
float: left;
214+
text-align: left;
215+
width: 65%;
216+
background-color: $color-white;
217+
218+
> .title {
219+
font-size: 1.4rem;
220+
font-weight: normal;
221+
font-family: $font-semibold;
222+
pointer-events: none;
223+
font-weight: bold;
224+
color: $color-off-black;
225+
@extend .no-select;
226+
}
227+
228+
> .tip {
229+
color: $color-input;
230+
font-size: 1.2rem;
231+
margin: 5px 0 30px;
232+
padding: 0;
233+
font-family: $font-light;
234+
text-align: left;
235+
@extend .no-select;
236+
}
237+
}
238+
239+
> .right-zone {
240+
float: right;
241+
text-align: right;
242+
width: 30%;
243+
background-color: $color-white;
244+
}
245+
}
246+
206247
.form-divider {
207248
margin-top: 30px;
208249
}
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,44 @@
1-
<div class="document-attachments non-printable">
2-
<h2>Attachments</h2>
3-
{{#if hasAttachments}}
4-
<ul class="list">
5-
{{#each files key="id" as |a index|}}
6-
<li class="item">
7-
<img class="icon" src="/assets/img/attachments/{{document/file-icon a.extension}}" />
8-
<a href="{{ appMeta.endpoint }}/public/attachments/{{ appMeta.orgId }}/{{ a.id }}">
9-
<span class="file">{{ a.filename }}</span>
10-
</a>
11-
{{#if permissions.documentEdit}}
12-
<div class="action round-button-mono">
13-
<i class="material-icons color-gray delete-attachment-{{a.id}}" title="Delete" {{action 'onConfirmDelete' a.id a.filename}}>delete</i>
14-
</div>
15-
{{/if}}
16-
</li>
17-
{{/each}}
18-
</ul>
19-
{{/if}}
20-
{{#if permissions.documentEdit}}
21-
<div class="upload-document-files">
22-
<div class="chip chip-action">
23-
<span id="upload-document-files" class="chip-text">+ attachment</span>
1+
{{#if canShow}}
2+
<div class="document-attachments non-printable">
3+
<h2>Attachments</h2>
4+
{{#if hasAttachments}}
5+
<ul class="list">
6+
{{#each files key="id" as |a index|}}
7+
<li class="item">
8+
<img class="icon" src="/assets/img/attachments/{{document/file-icon a.extension}}" />
9+
<a href="{{ appMeta.endpoint }}/public/attachments/{{ appMeta.orgId }}/{{ a.id }}">
10+
<span class="file">{{ a.filename }}</span>
11+
</a>
12+
{{#if permissions.documentEdit}}
13+
<div class="action round-button-mono">
14+
<i class="material-icons color-gray delete-attachment-{{a.id}}" title="Delete" {{action 'onConfirmDelete' a.id a.filename}}>delete</i>
15+
</div>
16+
{{/if}}
17+
</li>
18+
{{/each}}
19+
</ul>
20+
{{/if}}
21+
{{#if permissions.documentEdit}}
22+
<div class="upload-document-files">
23+
<div class="chip chip-action">
24+
<span id="upload-document-files" class="chip-text">+ attachment</span>
25+
</div>
2426
</div>
25-
</div>
26-
{{/if}}
27-
</div>
28-
29-
<div class="dropdown-dialog delete-attachment-dialog">
30-
<div class="content">
31-
<p>Are you sure you want to delete <span class="bold">{{deleteAttachment.name}}?</span></p>
27+
{{/if}}
3228
</div>
33-
<div class="actions">
34-
<div class="flat-button" {{action 'onCancel'}}>
35-
cancel
29+
30+
<div class="dropdown-dialog delete-attachment-dialog">
31+
<div class="content">
32+
<p>Are you sure you want to delete <span class="bold">{{deleteAttachment.name}}?</span></p>
3633
</div>
37-
<div class="flat-button flat-red" {{action 'onDelete'}}>
38-
delete
34+
<div class="actions">
35+
<div class="flat-button" {{action 'onCancel'}}>
36+
cancel
37+
</div>
38+
<div class="flat-button flat-red" {{action 'onDelete'}}>
39+
delete
40+
</div>
3941
</div>
42+
<div class="clearfix"></div>
4043
</div>
41-
<div class="clearfix"></div>
42-
</div>
44+
{{/if}}

gui/app/templates/components/document/space-category.hbs

+7-5
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@
2727
<div class="regular-button button-white" id="document-category-button">
2828
<i class="material-icons">add</i>
2929
</div>
30-
{{#dropdown-dialog target="document-category-button" position="bottom left" button="set" color="flat-green" onAction=(action 'onSave')}}
30+
{{#dropdown-dialog target="document-category-button" position="bottom right" button="set" color="flat-green" onAction=(action 'onSave')}}
3131
<p class="heading">Set document categories</p>
32-
{{ui/ui-list-picker items=categories nameField='category'}}
33-
{{#if canAddCategory}}
34-
{{#link-to 'folder.settings.category' folder.id folder.slug}}Manage{{/link-to}}
35-
{{/if}}
32+
<div class="document-category-dialog">
33+
{{ui/ui-list-picker items=categories nameField='category'}}
34+
{{#if canAddCategory}}
35+
{{#link-to 'folder.settings.category' folder.id folder.slug}}Manage{{/link-to}}
36+
{{/if}}
37+
</div>
3638
{{/dropdown-dialog}}
3739
{{/if}}
3840
</div>

gui/app/templates/components/dropdown-dialog.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div id="{{contentId}}" class="dropdown-dialog">
1+
<div id="{{contentId}}" class="dropdown-dialog {{cssClass}}">
22
<form class="form" {{action 'onAction' on="submit"}}>
33
<div class="content">
44
{{yield}}

gui/app/templates/components/folder/permission-admin.hbs

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
<div class="space-settings">
22
<div class="panel">
3-
<div class="form-header">
4-
<div class="title">Permissions</div>
5-
<div class="tip">Define who can do what in this space</div>
3+
<div class="form-header-sticky">
4+
<div class="left-zone">
5+
<div class="title">Permissions</div>
6+
<div class="tip">Define who can do what in this space</div>
7+
</div>
8+
<div class="right-zone">
9+
<div class="regular-button button-blue" {{action 'setPermissions'}}>GRANT</div>
10+
</div>
611
</div>
12+
<div class="clearfix" />
713
<div class="input-control">
814
<div class="permissions-table">
915
{{#each permissions as |permission|}}
@@ -40,6 +46,5 @@
4046
{{/each}}
4147
</div>
4248
</div>
43-
<div class="regular-button button-blue" {{action 'setPermissions'}}>GRANT</div>
4449
</div>
4550
</div>

gui/app/templates/components/folder/space-heading.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div class="space-heading {{if permissions.spaceOwner 'cursor-pointer'}}" onclick={{if permissions.spaceOwner (action 'toggleEdit')}}>
44
<h1 class="space-name">{{folder.name}}</h1>
55
<div class="space-summary">
6-
This space contains {{documents.length}} {{if (eq rootDocCount.length 1) 'document' 'documents'}}
6+
This space contains {{documents.length}} {{if (eq documents.length 1) 'document' 'documents'}}
77
{{if (eq categories.length 1) (concat 'and ' categories.length ' category')}}
88
{{if (gt categories.length 1) (concat 'and ' categories.length ' categories')}}
99
</div>

gui/app/templates/components/folder/space-view.hbs

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,21 @@
1919
{{#if (gt categories.length 0)}}
2020
<div class="space-filter">
2121
<div class="caption">Space</div>
22-
<div class="regular-button button-nav {{if spaceSelected 'selected'}}" {{action 'onDocumentFilter' 'space' folder.id}}>
22+
<div class="regular-button {{if spaceSelected 'button-blue' 'button-nav'}}" {{action 'onDocumentFilter' 'space' folder.id}}>
2323
<div class="name">all ({{documents.length}})</div>
2424
</div>
2525
</div>
2626

2727
<div class="category-filter">
2828
<div class="caption">Category</div>
2929
{{#if (gt rootDocCount 0)}}
30-
<div class="regular-button button-blue {{if uncategorizedSelected 'selected'}}" {{action 'onDocumentFilter' 'uncategorized' folder.id}}>
30+
<div class="regular-button {{if uncategorizedSelected 'button-blue' 'button-gray'}}" {{action 'onDocumentFilter' 'uncategorized' folder.id}}>
3131
<div class="name">uncategorized ({{rootDocCount}})</div>
3232
</div>
3333
<div class="button-gap"/>
3434
{{/if}}
3535
{{#each categories as |cat index|}}
36-
<div class="regular-button button-blue {{if cat.selected 'selected'}}" {{action 'onDocumentFilter' 'category' cat.id}}>
36+
<div class="regular-button {{if cat.selected 'button-blue' 'button-gray'}}" {{action 'onDocumentFilter' 'category' cat.id}}>
3737
{{cat.category}} ({{cat.docCount}})
3838
</div>
3939
<div class="button-gap"/>

0 commit comments

Comments
 (0)