From de9eb9cf10e377303ca272b3e27f4c53318bc690 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 11:08:46 -0400
Subject: [PATCH 01/22] Add a document slots component.
---
front/current/components/project/slots.component.html | 0
front/current/components/project/slots.component.ts | 10 ++++++++++
2 files changed, 10 insertions(+)
create mode 100644 front/current/components/project/slots.component.html
create mode 100644 front/current/components/project/slots.component.ts
diff --git a/front/current/components/project/slots.component.html b/front/current/components/project/slots.component.html
new file mode 100644
index 0000000..e69de29
diff --git a/front/current/components/project/slots.component.ts b/front/current/components/project/slots.component.ts
new file mode 100644
index 0000000..3304e1a
--- /dev/null
+++ b/front/current/components/project/slots.component.ts
@@ -0,0 +1,10 @@
+import { Component } from 'angular2/core';
+import { config } from '../../config';
+
+
+@Component({
+ selector: 'document-slots',
+ templateUrl: config.static_url + '/components/project/slots.component.html'
+})
+export class SlotsComponent {
+};
--
GitLab
From ab997012c6e04f4f7cf337233c8d9f9f08141abe Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 11:09:32 -0400
Subject: [PATCH 02/22] Use the document slots component in the project details
component.
---
front/current/components/project/detail.component.html | 1 +
front/current/components/project/detail.component.ts | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/front/current/components/project/detail.component.html b/front/current/components/project/detail.component.html
index 78dc2f9..4269783 100644
--- a/front/current/components/project/detail.component.html
+++ b/front/current/components/project/detail.component.html
@@ -28,3 +28,4 @@
+
diff --git a/front/current/components/project/detail.component.ts b/front/current/components/project/detail.component.ts
index a18e00f..05bc6fd 100644
--- a/front/current/components/project/detail.component.ts
+++ b/front/current/components/project/detail.component.ts
@@ -11,12 +11,13 @@ import { ContactMethodService } from '../../services/project/contact-method.serv
import { AddressComponent } from './address.component';
import { ContactsComponent } from './contacts.component';
+import { SlotsComponent } from './slots.component';
@Component({
selector: 'project',
templateUrl: config.static_url + '/components/project/detail.component.html',
- directives: [ROUTER_DIRECTIVES, AddressComponent, ContactsComponent]
+ directives: [ROUTER_DIRECTIVES, AddressComponent, ContactsComponent, SlotsComponent]
})
export class ProjectDetailComponent implements OnInit {
constructor(
--
GitLab
From 74e960367dcdeb3ae208339aed910b309a371f1b Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 11:36:45 -0400
Subject: [PATCH 03/22] Fetch document slots in the project detail component.
---
front/current/components/project/detail.component.ts | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/front/current/components/project/detail.component.ts b/front/current/components/project/detail.component.ts
index 05bc6fd..9fd2c0e 100644
--- a/front/current/components/project/detail.component.ts
+++ b/front/current/components/project/detail.component.ts
@@ -8,6 +8,7 @@ import { ProjectService } from '../../services/project/project.service';
import { AddressService } from '../../services/project/address.service';
import { ContactService } from '../../services/project/contact.service';
import { ContactMethodService } from '../../services/project/contact-method.service';
+import { DocumentSlotService } from '../../services/project/document-slot.service';
import { AddressComponent } from './address.component';
import { ContactsComponent } from './contacts.component';
@@ -26,7 +27,8 @@ export class ProjectDetailComponent implements OnInit {
public projectService:ProjectService,
public addressService:AddressService,
public contactService:ContactService,
- public contactMethodService:ContactMethodService
+ public contactMethodService:ContactMethodService,
+ public documentSlotService:DocumentSlotService
) {};
project:Model;
@@ -34,6 +36,7 @@ export class ProjectDetailComponent implements OnInit {
address:Model;
contacts:Collection;
contact_methods:Collection;
+ document_slots:Collection;
ngOnInit() {
let project_id = this._routeParams.get('id');
@@ -45,6 +48,8 @@ export class ProjectDetailComponent implements OnInit {
.setFilters({'project_id': project_id}));
this.contact_methods = (this._restService.Collection(this.contactMethodService, [])
.setFilters({'project_id': project_id}));
+ this.document_slots = (this._restService.Collection(this.documentSlotService, [])
+ .setFilters({'project_id': project_id}));
this.fetch();
};
@@ -57,5 +62,6 @@ export class ProjectDetailComponent implements OnInit {
});
this.contacts.fetch();
this.contact_methods.fetch();
+ this.document_slots.fetch();
};
};
--
GitLab
From 753e4fcb777fa96e93500e8f47d44180c09efb16 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 11:38:27 -0400
Subject: [PATCH 04/22] Pass document slots into the document slots component
as an input.
---
front/current/components/project/detail.component.html | 2 +-
front/current/components/project/slots.component.ts | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/front/current/components/project/detail.component.html b/front/current/components/project/detail.component.html
index 4269783..a979964 100644
--- a/front/current/components/project/detail.component.html
+++ b/front/current/components/project/detail.component.html
@@ -28,4 +28,4 @@
-
+
diff --git a/front/current/components/project/slots.component.ts b/front/current/components/project/slots.component.ts
index 3304e1a..be10c7e 100644
--- a/front/current/components/project/slots.component.ts
+++ b/front/current/components/project/slots.component.ts
@@ -1,10 +1,13 @@
import { Component } from 'angular2/core';
import { config } from '../../config';
+import { Collection } from '../../services/rest.service';
@Component({
selector: 'document-slots',
- templateUrl: config.static_url + '/components/project/slots.component.html'
+ templateUrl: config.static_url + '/components/project/slots.component.html',
+ inputs: ['document_slots']
})
export class SlotsComponent {
+ document_slots:Collection;
};
--
GitLab
From 4839f7178adc15cfd4aca96ca2789c11efb55e01 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 15:47:06 -0400
Subject: [PATCH 05/22] Display titles of document slots.
---
.../components/project/slots.component.html | 10 ++++++++++
.../components/project/slots.component.ts | 20 +++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/front/current/components/project/slots.component.html b/front/current/components/project/slots.component.html
index e69de29..5d9c9f8 100644
--- a/front/current/components/project/slots.component.html
+++ b/front/current/components/project/slots.component.html
@@ -0,0 +1,10 @@
+
Documents
+
+
+
+
+
diff --git a/front/current/components/project/slots.component.ts b/front/current/components/project/slots.component.ts
index be10c7e..85e0513 100644
--- a/front/current/components/project/slots.component.ts
+++ b/front/current/components/project/slots.component.ts
@@ -9,5 +9,25 @@ import { Collection } from '../../services/rest.service';
inputs: ['document_slots']
})
export class SlotsComponent {
+ slots:any[] = [
+ {name: 'utility-bills', title: 'Utility Bills'},
+ {name: 'sceep-forms', title: 'SCEEP Forms'},
+ {name: 'pea-reports', title: 'PEA Reports'},
+ {name: 'balance-sheets', title: 'Balance Sheets'},
+ {name: 'income-statements', title: 'Income Statements'},
+ {name: 'financial-reports', title: 'Financial Reports'},
+ {name: 'taxes', title: 'Taxes'},
+ {name: 'credit-reports', title: 'Credit Reports'},
+ {name: 'certificate-of-incorporation', title: 'Certificate of Incorporation'},
+ {name: 'bank-statements', title: 'Bank Statements'},
+ {name: '501(c)3-confirmation', title: '501(c)3 Confirmation'},
+ {name: 'proof-of-insurance', title: 'Proof of Property and Liability Insurance'},
+ {name: 'property-appraisal', title: 'Property Appraisal'},
+ {name: 'title-of-location', title: 'Title of Location'},
+ {name: 'nyserda', title: 'NYSERDA Request for Financing Form'},
+ {name: 'loan-application', title: 'Loan Application'},
+ {name: 'contractor-quotes', title: 'Contractor Quotes'},
+ {name: 'misc', title: 'Miscellaneous'}
+ ]
document_slots:Collection;
};
--
GitLab
From e4f3fbf70986de9d17002bd44fd0160c96e23e66 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 16:05:41 -0400
Subject: [PATCH 06/22] Add a document slot component.
---
.../current/components/project/slot.component.html | 0
front/current/components/project/slot.component.ts | 14 ++++++++++++++
2 files changed, 14 insertions(+)
create mode 100644 front/current/components/project/slot.component.html
create mode 100644 front/current/components/project/slot.component.ts
diff --git a/front/current/components/project/slot.component.html b/front/current/components/project/slot.component.html
new file mode 100644
index 0000000..e69de29
diff --git a/front/current/components/project/slot.component.ts b/front/current/components/project/slot.component.ts
new file mode 100644
index 0000000..704ce34
--- /dev/null
+++ b/front/current/components/project/slot.component.ts
@@ -0,0 +1,14 @@
+import { Component } from 'angular2/core';
+import { config } from '../../config';
+import { Collection } from '../../services/rest.service';
+
+
+@Component({
+ selector: 'document-slot',
+ templateUrl: config.static_url + '/components/project/slot.component.html',
+ inputs: ['slot', 'document_slots']
+})
+export class SlotComponent {
+ slot:any;
+ document_slots:Collection;
+};
--
GitLab
From 63fb56c36be3c684b9fe5167ebb6d8fb248bbe94 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 16:06:15 -0400
Subject: [PATCH 07/22] Tie the individual document slot component into its
list.
---
.../components/project/slots.component.html | 4 +++
.../components/project/slots.component.ts | 29 +++++++++++++++++--
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/front/current/components/project/slots.component.html b/front/current/components/project/slots.component.html
index 5d9c9f8..07fa54f 100644
--- a/front/current/components/project/slots.component.html
+++ b/front/current/components/project/slots.component.html
@@ -6,5 +6,9 @@
diff --git a/front/current/components/project/slots.component.ts b/front/current/components/project/slots.component.ts
index 85e0513..1236e74 100644
--- a/front/current/components/project/slots.component.ts
+++ b/front/current/components/project/slots.component.ts
@@ -1,14 +1,25 @@
import { Component } from 'angular2/core';
+
import { config } from '../../config';
-import { Collection } from '../../services/rest.service';
+
+import { RestService, Collection } from '../../services/rest.service';
+import { DocumentSlotService } from '../../services/project/document-slot.service';
+
+import { SlotComponent } from './slot.component';
@Component({
selector: 'document-slots',
templateUrl: config.static_url + '/components/project/slots.component.html',
- inputs: ['document_slots']
+ inputs: ['document_slots'],
+ directives: [SlotComponent]
})
export class SlotsComponent {
+ constructor(
+ private _restService:RestService,
+ public documentSlotService:DocumentSlotService
+ ) {};
+
slots:any[] = [
{name: 'utility-bills', title: 'Utility Bills'},
{name: 'sceep-forms', title: 'SCEEP Forms'},
@@ -30,4 +41,18 @@ export class SlotsComponent {
{name: 'misc', title: 'Miscellaneous'}
]
document_slots:Collection;
+
+ public getDocumentSlots(slot:any) {
+ // Gets a subset of document slots for the given slot description.
+ let documentSlots = [];
+ let collection = this._restService.Collection(this.documentSlotService, []);
+
+ for (let documentSlot of this.document_slots.models) {
+ if (documentSlot.data['role'] == slot.name)
+ documentSlots.push(documentSlot);
+ }
+
+ collection.models = documentSlots;
+ return collection;
+ }
};
--
GitLab
From 565e1514dfc99a78eb2af734dd35d84c038a25bc Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 16:08:14 -0400
Subject: [PATCH 08/22] Move document slot title to the individual component.
---
front/current/components/project/slot.component.html | 1 +
front/current/components/project/slots.component.html | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/front/current/components/project/slot.component.html b/front/current/components/project/slot.component.html
index e69de29..6f285e1 100644
--- a/front/current/components/project/slot.component.html
+++ b/front/current/components/project/slot.component.html
@@ -0,0 +1 @@
+{{ slot.title }}
diff --git a/front/current/components/project/slots.component.html b/front/current/components/project/slots.component.html
index 07fa54f..fe3cdb0 100644
--- a/front/current/components/project/slots.component.html
+++ b/front/current/components/project/slots.component.html
@@ -5,7 +5,6 @@
-
{{ slot.title }}
Date: Fri, 22 Apr 2016 16:13:40 -0400
Subject: [PATCH 09/22] Fetch documents in the project detail component.
---
.../components/project/detail.component.ts | 22 +++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/front/current/components/project/detail.component.ts b/front/current/components/project/detail.component.ts
index 9fd2c0e..c2c0812 100644
--- a/front/current/components/project/detail.component.ts
+++ b/front/current/components/project/detail.component.ts
@@ -9,6 +9,7 @@ import { AddressService } from '../../services/project/address.service';
import { ContactService } from '../../services/project/contact.service';
import { ContactMethodService } from '../../services/project/contact-method.service';
import { DocumentSlotService } from '../../services/project/document-slot.service';
+import { DocumentService } from '../../services/document/document.service';
import { AddressComponent } from './address.component';
import { ContactsComponent } from './contacts.component';
@@ -28,7 +29,8 @@ export class ProjectDetailComponent implements OnInit {
public addressService:AddressService,
public contactService:ContactService,
public contactMethodService:ContactMethodService,
- public documentSlotService:DocumentSlotService
+ public documentSlotService:DocumentSlotService,
+ public documentService:DocumentService
) {};
project:Model;
@@ -37,6 +39,7 @@ export class ProjectDetailComponent implements OnInit {
contacts:Collection;
contact_methods:Collection;
document_slots:Collection;
+ documents:Collection;
ngOnInit() {
let project_id = this._routeParams.get('id');
@@ -50,6 +53,7 @@ export class ProjectDetailComponent implements OnInit {
.setFilters({'project_id': project_id}));
this.document_slots = (this._restService.Collection(this.documentSlotService, [])
.setFilters({'project_id': project_id}));
+ this.documents = this._restService.Collection(this.documentService, []);
this.fetch();
};
@@ -62,6 +66,20 @@ export class ProjectDetailComponent implements OnInit {
});
this.contacts.fetch();
this.contact_methods.fetch();
- this.document_slots.fetch();
+ this.document_slots.fetch(this.fetchDocuments.bind(this));
+ };
+
+ fetchDocuments() {
+ // Filter the documents collection by an array of keys from the document slots.
+ let keys = [];
+
+ for (let document_slot of this.document_slots.models) {
+ let key = document_slot.data['document_key'];
+ keys.push(key);
+ }
+
+ if (!keys.length) return;
+
+ this.documents.setFilters({keys: keys}).fetch();
};
};
--
GitLab
From 8032ead3285d8d92365520caf53900d7b90d8c97 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 16:35:04 -0400
Subject: [PATCH 10/22] Add document bindings to project detail components.
---
.../components/project/detail.component.html | 5 +++-
.../components/project/slot.component.ts | 4 ++-
.../components/project/slots.component.html | 2 ++
.../components/project/slots.component.ts | 28 +++++++++++++++++--
4 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/front/current/components/project/detail.component.html b/front/current/components/project/detail.component.html
index a979964..fe5bf33 100644
--- a/front/current/components/project/detail.component.html
+++ b/front/current/components/project/detail.component.html
@@ -28,4 +28,7 @@
-
+
diff --git a/front/current/components/project/slot.component.ts b/front/current/components/project/slot.component.ts
index 704ce34..ecc866a 100644
--- a/front/current/components/project/slot.component.ts
+++ b/front/current/components/project/slot.component.ts
@@ -6,9 +6,11 @@ import { Collection } from '../../services/rest.service';
@Component({
selector: 'document-slot',
templateUrl: config.static_url + '/components/project/slot.component.html',
- inputs: ['slot', 'document_slots']
+ inputs: ['slot', 'document_slots', 'documents', 'parent_documents']
})
export class SlotComponent {
slot:any;
document_slots:Collection;
+ documents:Collection;
+ parent_documents:Collection;
};
diff --git a/front/current/components/project/slots.component.html b/front/current/components/project/slots.component.html
index fe3cdb0..a0ebfec 100644
--- a/front/current/components/project/slots.component.html
+++ b/front/current/components/project/slots.component.html
@@ -7,6 +7,8 @@
diff --git a/front/current/components/project/slots.component.ts b/front/current/components/project/slots.component.ts
index 1236e74..f10a543 100644
--- a/front/current/components/project/slots.component.ts
+++ b/front/current/components/project/slots.component.ts
@@ -4,6 +4,7 @@ import { config } from '../../config';
import { RestService, Collection } from '../../services/rest.service';
import { DocumentSlotService } from '../../services/project/document-slot.service';
+import { DocumentService } from '../../services/document/document.service';
import { SlotComponent } from './slot.component';
@@ -11,13 +12,14 @@ import { SlotComponent } from './slot.component';
@Component({
selector: 'document-slots',
templateUrl: config.static_url + '/components/project/slots.component.html',
- inputs: ['document_slots'],
+ inputs: ['document_slots', 'documents'],
directives: [SlotComponent]
})
export class SlotsComponent {
constructor(
private _restService:RestService,
- public documentSlotService:DocumentSlotService
+ public documentSlotService:DocumentSlotService,
+ public documentService:DocumentService
) {};
slots:any[] = [
@@ -41,6 +43,7 @@ export class SlotsComponent {
{name: 'misc', title: 'Miscellaneous'}
]
document_slots:Collection;
+ documents:Collection;
public getDocumentSlots(slot:any) {
// Gets a subset of document slots for the given slot description.
@@ -54,5 +57,26 @@ export class SlotsComponent {
collection.models = documentSlots;
return collection;
+ };
+
+ public getDocuments(slot:any) {
+ // Gets a subset of documents for the given slot description.
+ let documents = [];
+ let collection = this._restService.Collection(this.documentService, []);
+ let document_slots = this.getDocumentSlots(slot);
+ let keys = [];
+
+ for (let document_slot of document_slots.models) {
+ let key = document_slot.data['document_key'];
+ keys.push(key);
+ }
+
+ for (let document_ of this.documents.models) {
+ if (keys.indexOf(document_.data['key']) > -1)
+ documents.push(document_);
+ }
+
+ collection.models = documents;
+ return collection;
}
};
--
GitLab
From 425e93b6c3f96554e9cf953f87a9a47bfa07fcff Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 16:42:39 -0400
Subject: [PATCH 11/22] Add documents to the slot component.
---
front/current/components/project/slot.component.html | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/front/current/components/project/slot.component.html b/front/current/components/project/slot.component.html
index 6f285e1..061b508 100644
--- a/front/current/components/project/slot.component.html
+++ b/front/current/components/project/slot.component.html
@@ -1 +1,8 @@
{{ slot.title }}
+
+
+ -
+ {{ document.data['name'] }}
+ {{ document.data['created'] }}
+
+
--
GitLab
From 751fbe9e00a551ab09ad4494083410268ddad19a Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:02:07 -0400
Subject: [PATCH 12/22] Add new document slot component to the project detail
component.
---
.../components/project/detail.component.html | 1 +
.../project/new-document-slot.component.html | 1 +
.../project/new-document-slot.component.ts | 64 +++++++++++++++++++
.../components/project/slot.component.html | 8 +++
.../components/project/slot.component.ts | 10 ++-
.../components/project/slots.component.html | 2 +
.../components/project/slots.component.ts | 5 +-
7 files changed, 87 insertions(+), 4 deletions(-)
create mode 100644 front/current/components/project/new-document-slot.component.html
create mode 100644 front/current/components/project/new-document-slot.component.ts
diff --git a/front/current/components/project/detail.component.html b/front/current/components/project/detail.component.html
index fe5bf33..08e5f39 100644
--- a/front/current/components/project/detail.component.html
+++ b/front/current/components/project/detail.component.html
@@ -29,6 +29,7 @@
diff --git a/front/current/components/project/new-document-slot.component.html b/front/current/components/project/new-document-slot.component.html
new file mode 100644
index 0000000..974682d
--- /dev/null
+++ b/front/current/components/project/new-document-slot.component.html
@@ -0,0 +1 @@
+
diff --git a/front/current/components/project/new-document-slot.component.ts b/front/current/components/project/new-document-slot.component.ts
new file mode 100644
index 0000000..739c11d
--- /dev/null
+++ b/front/current/components/project/new-document-slot.component.ts
@@ -0,0 +1,64 @@
+import { Component, OnInit } from 'angular2/core';
+
+import { config } from '../../config';
+import { RestService, Model, Collection } from '../../services/rest.service';
+
+import { DocumentSlotService } from '../../services/project/document-slot.service';
+import { DocumentService } from '../../services/document/document.service';
+
+@Component({
+ selector: 'new-document-slot',
+ inputs: ['project', 'document_slots', 'documents', 'role'],
+ templateUrl: config.static_url + '/components/project/new-document-slot.component.html'
+})
+export class NewDocumentSlotComponent implements OnInit {
+ constructor(
+ private _restService:RestService,
+
+ public documentSlotService:DocumentSlotService,
+ public documentService:DocumentService
+ ) {};
+
+ public project:Model;
+ public document_slots:Collection;
+ public documents:Collection;
+ public role:string;
+
+ public documentSlot:Model;
+ public document_:Model
+
+ ngOnInit() {
+ this.documentSlot = this._restService.Model(this.documentSlotService, {
+ project_id: this.project.data['id'],
+ role: this.role
+ });
+ this.document_ = this._restService.Model(this.documentService, {});
+ };
+
+ public upload(e) {
+ let self = this;
+
+ let el = e.currentTarget;
+ let file = el.files[0];
+ let reader = new FileReader();
+
+ reader.addEventListener('load', () => {
+ self.document_
+ .set({
+ data: reader.result,
+ name: el.value.split(/(\\|\/)/g).pop()
+ })
+ .save(() => {
+ self.documentSlot
+ .set({document_key: self.document_.data['key']})
+ .save(() => {
+ self.documents.models.push(self.document_);
+ self.document_slots.models.push(self.documentSlot);
+ self.ngOnInit();
+ });
+ });
+ }, false);
+ if (file)
+ reader.readAsDataURL(file);
+ };
+};
diff --git a/front/current/components/project/slot.component.html b/front/current/components/project/slot.component.html
index 061b508..1d8eaa3 100644
--- a/front/current/components/project/slot.component.html
+++ b/front/current/components/project/slot.component.html
@@ -5,4 +5,12 @@
{{ document.data['name'] }}
{{ document.data['created'] }}
+
+
+
diff --git a/front/current/components/project/slot.component.ts b/front/current/components/project/slot.component.ts
index ecc866a..d26c46f 100644
--- a/front/current/components/project/slot.component.ts
+++ b/front/current/components/project/slot.component.ts
@@ -1,16 +1,22 @@
import { Component } from 'angular2/core';
import { config } from '../../config';
-import { Collection } from '../../services/rest.service';
+import { Model, Collection } from '../../services/rest.service';
+import { NewDocumentSlotComponent } from './new-document-slot.component';
@Component({
selector: 'document-slot',
templateUrl: config.static_url + '/components/project/slot.component.html',
- inputs: ['slot', 'document_slots', 'documents', 'parent_documents']
+ inputs: [
+ 'project', 'slot', 'document_slots', 'documents', 'parent_documents',
+ 'parent_document_slots'],
+ directives: [NewDocumentSlotComponent]
})
export class SlotComponent {
+ project:Model;
slot:any;
document_slots:Collection;
documents:Collection;
parent_documents:Collection;
+ parent_document_slots:Collection;
};
diff --git a/front/current/components/project/slots.component.html b/front/current/components/project/slots.component.html
index a0ebfec..b94ea91 100644
--- a/front/current/components/project/slots.component.html
+++ b/front/current/components/project/slots.component.html
@@ -6,9 +6,11 @@
diff --git a/front/current/components/project/slots.component.ts b/front/current/components/project/slots.component.ts
index f10a543..00fcc4f 100644
--- a/front/current/components/project/slots.component.ts
+++ b/front/current/components/project/slots.component.ts
@@ -2,7 +2,7 @@ import { Component } from 'angular2/core';
import { config } from '../../config';
-import { RestService, Collection } from '../../services/rest.service';
+import { RestService, Model, Collection } from '../../services/rest.service';
import { DocumentSlotService } from '../../services/project/document-slot.service';
import { DocumentService } from '../../services/document/document.service';
@@ -12,7 +12,7 @@ import { SlotComponent } from './slot.component';
@Component({
selector: 'document-slots',
templateUrl: config.static_url + '/components/project/slots.component.html',
- inputs: ['document_slots', 'documents'],
+ inputs: ['project', 'document_slots', 'documents'],
directives: [SlotComponent]
})
export class SlotsComponent {
@@ -42,6 +42,7 @@ export class SlotsComponent {
{name: 'contractor-quotes', title: 'Contractor Quotes'},
{name: 'misc', title: 'Miscellaneous'}
]
+ project:Model
document_slots:Collection;
documents:Collection;
--
GitLab
From 15d62a8c694b79c3d2ca548d2c662061adddb652 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:07:29 -0400
Subject: [PATCH 13/22] Add download link to the document links in the project
detail page.
---
front/current/components/project/slot.component.html | 10 ++++++++--
front/current/components/project/slot.component.ts | 9 +++++++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/front/current/components/project/slot.component.html b/front/current/components/project/slot.component.html
index 1d8eaa3..5fe5155 100644
--- a/front/current/components/project/slot.component.html
+++ b/front/current/components/project/slot.component.html
@@ -2,8 +2,14 @@
-
- {{ document.data['name'] }}
- {{ document.data['created'] }}
+ {{ document.data['name'] }}
+ {{ document.data['created'] }}
+
-
{
+ var link = document.createElement('a');
+ link['download'] = document_.data['name'];
+ link.href = document_.data['data'];
+ link.click();
+ });
+ };
};
--
GitLab
From f7782800d7b265c88999c666eb637b80e031f1a2 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:15:53 -0400
Subject: [PATCH 14/22] Use flex styling for the document slots div.
---
front/current/assets/styles/components/_global.scss | 10 ++++++++--
front/current/assets/styles/components/_project.scss | 12 ++++++++++--
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/front/current/assets/styles/components/_global.scss b/front/current/assets/styles/components/_global.scss
index 3e18655..f5821e7 100644
--- a/front/current/assets/styles/components/_global.scss
+++ b/front/current/assets/styles/components/_global.scss
@@ -31,9 +31,15 @@ html {
}
body {
- margin: 0;
- height: 100%;
+ margin: 0;
+ height: 100%;
+}
+
+my-app {
+ display: block;
+ height: 100%;
}
+
/* Copy & Lists */
p {
line-height: $leading;
diff --git a/front/current/assets/styles/components/_project.scss b/front/current/assets/styles/components/_project.scss
index e41e1d7..cc6c415 100644
--- a/front/current/assets/styles/components/_project.scss
+++ b/front/current/assets/styles/components/_project.scss
@@ -6,13 +6,15 @@
}
project {
- display: block;
+ display: flex;
+ flex-direction: column;
margin-left: 50px;
+ height: 100%;
header {
display: flex;
border-bottom: 1px solid $light-gray;
- min-height: 220px;
+ flex-basis: 220px;
.project-details, .project-contacts { padding: 10px; }
.project-details {
@@ -39,4 +41,10 @@ project {
}
}
}
+
+ document-slots {
+ display: block;
+ flex-grow: 1;
+ overflow: auto;
+ }
}
--
GitLab
From f7191fbd15f33fe01f7aacad5b767525805c5a53 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:19:42 -0400
Subject: [PATCH 15/22] Remove document list from the project list component.
---
.../components/projects/list.component.html | 30 +------
.../components/projects/list.component.ts | 81 +------------------
.../projects/new-document-slot.component.html | 1 -
.../projects/new-document-slot.component.ts | 64 ---------------
4 files changed, 5 insertions(+), 171 deletions(-)
delete mode 100644 front/current/components/projects/new-document-slot.component.html
delete mode 100644 front/current/components/projects/new-document-slot.component.ts
diff --git a/front/current/components/projects/list.component.html b/front/current/components/projects/list.component.html
index ed73f4d..9a99266 100644
--- a/front/current/components/projects/list.component.html
+++ b/front/current/components/projects/list.component.html
@@ -9,17 +9,16 @@
| status |
name |
- documents |
- |
+ |
|
- |
+ |
{{ projects.error['status'] }}: {{ projects.error['short'] }}
|
@@ -33,31 +32,6 @@
[routerLink]="['../Project', {id: project.data['id'], section: 'summary'}]"
>{{ project.data['name'] }}
-
-
- |
diff --git a/front/current/components/projects/list.component.ts b/front/current/components/projects/list.component.ts
index 4753b29..92780f7 100644
--- a/front/current/components/projects/list.component.ts
+++ b/front/current/components/projects/list.component.ts
@@ -4,25 +4,17 @@ import { Control } from 'angular2/common';
import { config } from '../../config';
import { RestService, Model, Collection } from '../../services/rest.service';
-
import { ProjectService } from '../../services/project/project.service';
-import { DocumentSlotService } from '../../services/project/document-slot.service';
-import { DocumentService } from '../../services/document/document.service';
-
-import { NewDocumentSlotComponent } from './new-document-slot.component';
@Component({
selector: 'project-list',
templateUrl: config.static_url + '/components/projects/list.component.html',
- directives: [ROUTER_DIRECTIVES, NewDocumentSlotComponent]
+ directives: [ROUTER_DIRECTIVES]
})
export class ProjectListComponent implements OnInit {
constructor(
private _restService:RestService,
-
- private _projectService:ProjectService,
- private _documentSlotService:DocumentSlotService,
- private _documentService:DocumentService
+ private _projectService:ProjectService
) {
this.q.valueChanges
.debounceTime(500)
@@ -34,82 +26,15 @@ export class ProjectListComponent implements OnInit {
};
public projects:Collection;
- public documentSlots:Collection;
- public documents:Collection;
public q:Control = new Control('');
ngOnInit() {
this.projects = this._restService.Collection(this._projectService, []);
- this.documentSlots = this._restService.Collection(this._documentSlotService, []);
- this.documents = this._restService.Collection(this._documentService, []);
this.fetch();
};
- public getDocumentSlotsForProject(project:Model):Collection {
- let documentSlots = [];
- let collection = this._restService.Collection(this._documentSlotService, []);
-
- for (let documentSlot of this.documentSlots.models) {
- if (documentSlot.data['project_id'] == project.data['id'])
- documentSlots.push(documentSlot);
- }
-
- collection.models = documentSlots;
- return collection;
- };
-
- public getDocumentForDocumentSlot(documentSlot:Model):Model {
- for (let document_ of this.documents.models) {
- if (document_.data['key'] == documentSlot.data['document_key']) {
- return document_;
- }
- }
- };
-
- public download(document_:Model) {
- document_.setFilters({verbosity: 'data'}).fetch(() => {
- var link = document.createElement('a');
- link['download'] = document_.data['name'];
- link.href = document_.data['data'];
- link.click();
- });
- };
-
fetch() {
- this.projects.fetch(this.fetchDocumentSlots.bind(this));
- };
-
- fetchDocumentSlots() {
- let self = this;
- let keys = [];
-
- for (let project of self.projects.models) {
- let key = project.data['id'];
- if (keys.indexOf(key) == -1)
- keys.push(key)
- }
-
- if (!keys.length) return;
-
- self.documentSlots
- .setFilters({project_ids: keys})
- .fetch(self.fetchDocuments.bind(self));
- };
-
- fetchDocuments() {
- let self = this;
- let keys = [];
-
- for (let document_slot of self.documentSlots.models) {
- let key = document_slot.data['document_key'];
- keys.push(key);
- }
-
- if (!keys.length) return;
-
- self.documents
- .setFilters({ keys: keys })
- .fetch();
+ this.projects.fetch();
};
};
diff --git a/front/current/components/projects/new-document-slot.component.html b/front/current/components/projects/new-document-slot.component.html
deleted file mode 100644
index 974682d..0000000
--- a/front/current/components/projects/new-document-slot.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/front/current/components/projects/new-document-slot.component.ts b/front/current/components/projects/new-document-slot.component.ts
deleted file mode 100644
index 8aa3ff0..0000000
--- a/front/current/components/projects/new-document-slot.component.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { Component, OnInit } from 'angular2/core';
-
-import { config } from '../../config';
-import { RestService, Model, Collection } from '../../services/rest.service';
-
-import { DocumentSlotService } from '../../services/project/document-slot.service';
-import { DocumentService } from '../../services/document/document.service';
-
-@Component({
- selector: 'new-document-slot',
- inputs: ['project', 'documentSlots', 'documents'],
- templateUrl: config.static_url + '/components/projects/new-document-slot.component.html'
-})
-export class NewDocumentSlotComponent implements OnInit {
- constructor(
- private _restService:RestService,
-
- private _documentSlotService:DocumentSlotService,
- private _documentService:DocumentService
- ) {};
-
- // Inputs
- public project:Model;
- public documentSlots:Collection;
- public documents:Collection;
-
- public documentSlot:Model;
- public document_:Model
-
- ngOnInit() {
- this.documentSlot = this._restService.Model(this._documentSlotService, {
- project_id: this.project.data['id'],
- role: 'miscelaneous'
- });
- this.document_ = this._restService.Model(this._documentService, {});
- };
-
- public upload(e) {
- let self = this;
-
- let el = e.currentTarget;
- let file = el.files[0];
- let reader = new FileReader();
-
- reader.addEventListener('load', () => {
- self.document_
- .set({
- data: reader.result,
- name: el.value.split(/(\\|\/)/g).pop()
- })
- .save(() => {
- self.documentSlot
- .set({document_key: self.document_.data['key']})
- .save(() => {
- self.documents.models.push(self.document_);
- self.documentSlots.models.push(self.documentSlot);
- self.ngOnInit();
- });
- });
- }, false);
- if (file)
- reader.readAsDataURL(file);
- };
-};
--
GitLab
From 29f2db0d53b9609f84946be8eb3435a9c7fb81e1 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:22:32 -0400
Subject: [PATCH 16/22] Add list styling to the document lists.
---
front/current/assets/styles/components/_project.scss | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/front/current/assets/styles/components/_project.scss b/front/current/assets/styles/components/_project.scss
index cc6c415..3996cda 100644
--- a/front/current/assets/styles/components/_project.scss
+++ b/front/current/assets/styles/components/_project.scss
@@ -46,5 +46,11 @@ project {
display: block;
flex-grow: 1;
overflow: auto;
+
+ ul.document-list {
+ list-style-type: none;
+
+ li { margin-left: 10px; }
+ }
}
}
--
GitLab
From 25f2ce89d496cc2f7a3b1a3d57b090648d1864ca Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:25:28 -0400
Subject: [PATCH 17/22] Simplify the slot list component template.
---
.../components/project/slots.component.html | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/front/current/components/project/slots.component.html b/front/current/components/project/slots.component.html
index b94ea91..e851a9b 100644
--- a/front/current/components/project/slots.component.html
+++ b/front/current/components/project/slots.component.html
@@ -4,14 +4,13 @@
--
GitLab
From 2a5b959d43e1e8deda0806df46df43e4064e30c0 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:39:51 -0400
Subject: [PATCH 18/22] Add some spacing in the document slots section.
---
.../assets/styles/components/_project.scss | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/front/current/assets/styles/components/_project.scss b/front/current/assets/styles/components/_project.scss
index 3996cda..413adc9 100644
--- a/front/current/assets/styles/components/_project.scss
+++ b/front/current/assets/styles/components/_project.scss
@@ -14,7 +14,8 @@ project {
header {
display: flex;
border-bottom: 1px solid $light-gray;
- flex-basis: 220px;
+ flex-basis: 300px;
+ flex-grow: 0;
.project-details, .project-contacts { padding: 10px; }
.project-details {
@@ -46,11 +47,20 @@ project {
display: block;
flex-grow: 1;
overflow: auto;
+ padding: 10px;
- ul.document-list {
- list-style-type: none;
+ document-slot {
+ display: block;
+ margin: 10px;
- li { margin-left: 10px; }
+ ul.document-list {
+ list-style-type: none;
+
+ li {
+ margin-left: 10px;
+ margin-top: 5px;
+ }
+ }
}
}
}
--
GitLab
From 9e83b4377420fd6df2a942c4f7c2902f8eb0ea0b Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:43:19 -0400
Subject: [PATCH 19/22] Add an upload icon.
---
front/current/assets/fontello/config.json | 6 ++++++
.../assets/fontello/css/blocpower-codes.css | 3 ++-
.../fontello/css/blocpower-embedded.css | 15 ++++++++-------
.../fontello/css/blocpower-ie7-codes.css | 3 ++-
.../assets/fontello/css/blocpower-ie7.css | 3 ++-
.../current/assets/fontello/css/blocpower.css | 17 +++++++++--------
.../assets/fontello/font/blocpower.eot | Bin 8004 -> 8260 bytes
.../assets/fontello/font/blocpower.svg | 2 ++
.../assets/fontello/font/blocpower.ttf | Bin 7832 -> 8088 bytes
.../assets/fontello/font/blocpower.woff | Bin 4752 -> 4948 bytes
.../assets/fontello/font/blocpower.woff2 | Bin 4008 -> 4124 bytes
11 files changed, 31 insertions(+), 18 deletions(-)
diff --git a/front/current/assets/fontello/config.json b/front/current/assets/fontello/config.json
index f560a3e..7785853 100644
--- a/front/current/assets/fontello/config.json
+++ b/front/current/assets/fontello/config.json
@@ -65,6 +65,12 @@
"css": "fax",
"code": 59401,
"src": "fontawesome"
+ },
+ {
+ "uid": "128d63150a41800e0beff55235269542",
+ "css": "upload",
+ "code": 59402,
+ "src": "fontawesome"
}
]
}
\ No newline at end of file
diff --git a/front/current/assets/fontello/css/blocpower-codes.css b/front/current/assets/fontello/css/blocpower-codes.css
index c206aaf..d35dd5d 100644
--- a/front/current/assets/fontello/css/blocpower-codes.css
+++ b/front/current/assets/fontello/css/blocpower-codes.css
@@ -8,4 +8,5 @@
.icon-handset:before { content: '\e806'; } /* '' */
.icon-mobile:before { content: '\e807'; } /* '' */
.icon-envelope:before { content: '\e808'; } /* '' */
-.icon-fax:before { content: '\e809'; } /* '' */
\ No newline at end of file
+.icon-fax:before { content: '\e809'; } /* '' */
+.icon-upload:before { content: '\e80a'; } /* '' */
\ No newline at end of file
diff --git a/front/current/assets/fontello/css/blocpower-embedded.css b/front/current/assets/fontello/css/blocpower-embedded.css
index 4794422..64bac37 100644
--- a/front/current/assets/fontello/css/blocpower-embedded.css
+++ b/front/current/assets/fontello/css/blocpower-embedded.css
@@ -1,15 +1,15 @@
@font-face {
font-family: 'blocpower';
- src: url('../font/blocpower.eot?54828926');
- src: url('../font/blocpower.eot?54828926#iefix') format('embedded-opentype'),
- url('../font/blocpower.svg?54828926#blocpower') format('svg');
+ src: url('../font/blocpower.eot?944541');
+ src: url('../font/blocpower.eot?944541#iefix') format('embedded-opentype'),
+ url('../font/blocpower.svg?944541#blocpower') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'blocpower';
- src: url('data:application/octet-stream;base64,d09GRgABAAAAABKQAA8AAAAAHpgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADMAAABCsP6z7U9TLzIAAAGMAAAAQwAAAFY+IEj3Y21hcAAAAdAAAAB2AAAB7glP7Q1jdnQgAAACSAAAABMAAAAgBtX/BGZwZ20AAAJcAAAFkAAAC3CKkZBZZ2FzcAAAB+wAAAAIAAAACAAAABBnbHlmAAAH9AAAB4IAAArSu9NoUWhlYWQAAA94AAAAMwAAADYJgoUfaGhlYQAAD6wAAAAfAAAAJAc9A1tobXR4AAAPzAAAACEAAAAsJR7/+WxvY2EAAA/wAAAAGAAAABgLqA7bbWF4cAAAEAgAAAAgAAAAIAF+DHluYW1lAAAQKAAAAYUAAALZ2Vl9rHBvc3QAABGwAAAAYgAAAH+5eRh+cHJlcAAAEhQAAAB6AAAAhuVBK7x4nGNgZGBg4GKQY9BhYHRx8wlh4GBgYYAAkAxjTmZ6IlAMygPKsYBpDiBmg4gCAIojA08AeJxjYGSOZ5zAwMrAwFTFtIeBgaEHQjM+YDBkZAKKMrAyM2AFAWmuKQwOLxhecDIH/c9iiGIOYpgGFGYEyQEA3p4LlQB4nO2R0Q3CQAxD39FQ6Kmj8MlAfDELo2aL1kk9BpGepVi5+7CBO7CIlwgYXwY1H7mj/YXZfvDumyg/t+OQUqo9Wm+6Df248uDJ1u9W/rO3/rzNyu2ikzRKjzTVSJrKNk21lUYpk0Z5k0bJk0YdqKkL5gl3XxtNAAB4nGNgQAMSEMgc9D8LhAESbAPdAHicrVZpd9NGFB15SZyELCULLWphxMRpsEYmbMGACUGyYyBdnK2VoIsUO+m+8Ynf4F/zZNpz6Dd+Wu8bLySQtOdwmpOjd+fN1czbZRJaktgL65GUmy/F1NYmjew8CemGTctRfCg7eyFlisnfBVEQrZbatx2HREQiULWusEQQ+x5ZmmR86FFGy7akV03KLT3pLlvjQb1V334aOsqxO6GkZjN0aD2yJVUYVaJIpj1S0qZlqPorSSu8v8LMV81QwohOImm8GcbQSN4bZ7TKaDW24yiKbLLcKFIkmuFBFHmU1RLn5IoJDMoHzZDyyqcR5cP8iKzYo5xWsEu20/y+L3mndzk/sV9vUbbkQB/Ijuzg7HQlX4RbW2HctJPtKFQRdtd3QmzZ7FT/Zo/ymkYDtysyvdCMYKl8hRArP6HM/iFZLZxP+ZJHo1qykRNB62VO7Es+gdbjiClxzRhZ0N3RCRHU/ZIzDPaYPh788d4plgsTAngcy3pHJZwIEylhczRJ2jByYCVliyqp9a6YOOV1WsRbwn7t2tGXzmjjUHdiPFsPHVs5UcnxaFKnmUyd2knNoykNopR0JnjMrwMoP6JJXm1jNYmVR9M4ZsaERCICLdxLU0EsO7GkKQTNoxm9uRumuXYtWqTJA/Xco/f05la4udNT2g70s0Z/VqdiOtgL0+lp5C/xadrlIkXp+ukZfkziQdYCMpEtNsOUgwdv/Q7Sy9eWHIXXBtju7fMrqH3WRPCkAfsb0B5P1SkJTIWYVYhWQGKta1mWydWsFqnI1HdDmla+rNMEinIcF8e+jHH9XzMzlpgSvt+J07MjLj1z7UsI0xx8m3U9mtepxXIBcWZ5TqdZlu/rNMfyA53mWZ7X6QhLW6ejLD/UaYHlRzodY3lBC5p038GQizDkAg6QMISlA0NYXoIhLBUMYbkIQ1gWYQjLJRjC8mMYwnIZhrC8rGXV1FNJ49qZWAZsQmBijh65zEXlaiq5VEK7aFRqQ54SbpVUFM+qf2WgXjzyhjmwFkiXyJpfMc6Vj0bl+NYVLW8aO1fAsepvH472OfFS1ouFPwX/1dZUJb1izcOTq/Abhp5sJ6o2qXh0TZfPVT26/l9UVFgL9BtIhVgoyrJscGcihI86nYZqoJVDzGzMPLTrdcuan8P9NzFCFlD9+DcUGgvcg05ZSVnt4KzV19uy3DuDcjgTLEkxN/P6VvgiI7PSfpFZyp6PfB5wBYxKZdhqA60VvNknMQ+Z3iTPBHFbUTZI2tjOBIkNHPOAefOdBCZh6qoN5E7hhg34BWFuwXknXKJ6oyyH7kXs8yik/Fun4kT2qGiMwLPZG2Gv70LKb3EMJDT5pX4MVBWhqRg1FdA0Um6oBl/G2bptQsYO9CMqdsOyrOLDxxb3lZJtGYR8pIjVo6Of1l6iTqrcfmYUl++dvgXBIDUxf3vfdHGQyrtayTJHbQNTtxqVU9eaQ+NVh+rmUfW94+wTOWuabronHnpf06rbwcVcLLD2bQ7SUiYX1PVhhQ2iy8WlUOplNEnvuAcYFhjQ71CKjf+r+th8nitVhdFxJN9O1LfR52AM/A/Yf0f1A9D3Y+hyDS7P95oTn2704WyZrqIX66foNzBrrblZugbc0HQD4iFHrY64yg18pwZxeqS5HOkh4GPdFeIBwCaAxeAT3bWM5lMAo/mMOT7A58xh0GQOgy3mMNhmzhrADnMY7DKHwR5zGHzBnHWAL5nDIGQOg4g5DJ4wJwB4yhwGXzGHwdfMYfANc+4DfMscBjFzGCTMYbCv6dYwzC1e0F2gtkFVoANTT1jcw+JQU2XI/o4Xhv29Qcz+wSCm/qjp9pD6Ey8M9WeDmPqLQUz9VdOdIfU3Xhjq7wYx9Q+DmPpMvxjLZQa/jHyXCgeUXWw+5++J9w/bxUC5AAEAAf//AA94nLVWXWwcVxW+596ZO7Ozm/2dnVnbu+P1end243XteHd2NrGT9caJY0dxWidxUidpHZO/lvqHBgQBpX1oIgSBkNI0dUMqkMKPoKJ9qBFqUCUcqQihqEhVhBAiqIL0JYDEK61UTzh31mpTteUFsbs6c889d3bu/c73nTOEEXLvPXaXLhOVZEgfGWj2dQCB3gSlhI4RNE8SIASmCACZZhgiE1og392eCmS0jCTr5YJLTIMq3E7keFI3jTDYRceuOaRaMRVbNpJ6GMrQB3W35hTdOizl4PFw6E9W5ZWLP7tLabqUpRRyt8YbO0qw91tSWpeMdkoneXh5I/xO5at/dQ8ch1vedStqWBhV89od2Bg/IDWuvmPb7VJWD2eXvhIuEEI4nuV9dpcFSYR0kn4yTB4iR8jm5qYgKBpwpvDZADAVKDA6K4N/LLzguST/XDOHD+x7cFdt7VMNyZlyIalzpTtnF2uOa1YrRgz94ppfRx9EvGst3tXyy9Dyh6DlF9fidYwn0O9e86tivZU1lk0L0BrZ+4b0ZtZY/bvvUdO0VuufHYOPeVfnDRwm540sWMDnxMWcE1Hv9/dFaH5OPE4Y7637FoH64TziSe+t3nuC/ZPtJUUySR5s7sobnAGdGHGYxJAcQBlCuaAAkyiT5ghSZpojqqFxIknyNJHldfLO9SUgY6MD/aXJ9ZN6PKSRIhRVpA3kFI5f3eiEaqXm1vGLeJoKxwmjAf3ImAgyyYZcUqzj3bmiXay7dj/YYejEww2DYRrVirix7uA0/OvcqYVto7IsSVMJuVbd9/Cxhy46gwEa+ndQ16RBGg9s3X7oEaj6wQPHJsdHa0MqDb63FtWa2w89evLsqcUR/z/Y3mZjbvEZNUAhfnTfnv6BxsZNgQSrsIARfVcN8s077JIntUJZ65MxcfdZVaUgcLyHOF5j61BjXaTcLHUi58KAUI4RCUkokVmkn8ByFjFcR3ea3XoiLsttZXD6gFvQANB5rh8QhD7akCxq6gpq7tzlt5aki3+4ALneQX3l+JnJS4836eb5iz++8ORGNrqShLOPXaJLN6/wC97VTE9yZbTxxHd/eHFxUBo5ubT7zPGVJOYYt4dmhu4hSWI2dSFwwMwS+ALOnzTbqGyUQY+AaaDhuSLYTh3cCuYIZvjt25yn5TD3PuAcJDkqpTnNKfJfbvMwzssg4RUNjrGQtLQpuDRMtje3lgB4DKVY76MS7QJEHMGgMpXkBSIzKrM53AWVgM4SrFGMPEI4D/Gdgx2FmluoKnJHGda0VIu1tJUB3+dKTDdQi+4WaGkwEdO54IdAUOy+aLe0x+Iz27wN22ZmtsF5RdMU73TBATcPbxccTc2r2h+NdPCod1mOysN4vPljmh6FTESHiWX/nrdHZsBf5xS8Df6dy6qmwZ+9dyMGDRzzLnM+LM4/fzSYNgwfZuTB+yyO9WmS5JtdOypY+MQhfSkh4FhsfdRHml1Zm8nJckFfo34f6sEu9uHWhS5wXHeQ9Q1UjmmYSAeLYpWlii50UbPArAgR1SsNWq9YKBYUionHDfHgJqcaTefVIbc8fqW3I6GpqqQwyHSmwxsiqqTpXNcVGlWztoWihnDP4gTE5SBXNMvKhpRoim5NhIqM/iCyIZzOpiWNJfWO3ivjZTdtRuPZcMRxNgV5iLKSVrIiNBVVg7n2nCqrQWbA7sWeEOYVrJIFapQWgjyhSQIXSXADXqVvoj5SqJABMtIcjmsBxqjoOgiPQiRZkWYJ8ojJLUYAE6rBxIjOxKcJBz5RcwYcu5CIq3K6XHDsXBjhcOsxxxa0SCItMO0uc7D26EiMeuwj/vi1mLXbKZrOWV/UVO+OYARYSmg+cDCAv2u9ae9OpqcnA1amp5lo95fOwTcx5ar3VZH4vwXi8dXfiCV0M1rS0v1r2FvfJG3EJQ80ewKYa4byYpRhtgGz/VFrFVKcqFXs/GBVEpqLtRpLPWb4KcZm0wC/1glORCBMiz4tqE+LNULfdQof3My70NZ5cyJrb++g6ZFS55HXsyl3/S2nFsplgzRk5YO152fj3Zuhr8zcvAO/9UZbvH8jnTxfT7WnoT1tbn/KWOmdzFzqLgbiIdB0tXhiJGzuzZcHHazvfj0TWo6gmutkjDxMHiOnyTfIi+Sn5HVyg7zSfDkKKfLay898bc9OHlCvfe/U57duwo0/d/5zBwfWc1/thokvDmShDUjKJKm5dkghh9VASp1NRig+lnIlwGcT66gS1Wgr/6bJpgljofFYkGJ9mabYvdfBzuvXgVy/cf3Gyq/f+NUvf/Hqz3/yo++/9MLz3/n21889febLX1qYO3Hs0cP79+3eNbpty1Ct+kC5y2ozApwgih3YiRIVA7nht+26KCUyCij28dIidGVCzbFxEcc6YyB9RH35r37i/7y+XsMXkS3QFbtWcJzCOObdKbDxrA1TQ55VcCwTTptObH/EAO+Epo4Jpn6GeVZTxwXfx4X/yZEI+/6nm9pBI+u9RJ9y86v+TugR5NPhxEjRmxqawi0dxDcLI7o/4hqrT3/42Bc/ZeT9438Jv/OsZR7y7vwH2InF/wAAeJxjYGRgYADiXf8/34jnt/nKwM38AijCcNl2wX4Y/f/v/yzm18xBQC4HAxNIFAC/Xw+sAHicY2BkYGAO+p8FJF/8//v/L/NrBqAICuAGALaGB50AeJxjfsHAwAzH//8yL/j/nzEVyhcEsteAxf+DMABb+BIsAAAAAAAAAABmAQ4BsgIAAjQCtgNCA64EGgVpAAEAAAALAMEADAAAAAAAAgA2AEYAcwAAAL0LcAAAAAB4nHWQzU7CQBSFzwBikMQFJq5no8GYlB+jCxeGhAA7FyxgXcrQFkunmQ4aVr6F7+ADufVZPC0TYvxp09vvnnt775kCaOETAvvrls+eBRrM9lzBMR4cV6mPHNfIj46P0MTccZ36wvEJrvHkuIkzvHGCqDWYrfHuWKAlzhxXcCouHFep3ziukUeOj3Au5o7r1DeOTzATr46buBQfQ53tTBxGVraHV7Lf7d3JxU5qSnHqJ9Lf2kibXA7kSqdWJYn2Ar1ZJDrI9IsyUxVuE98c8gPMlMljncqe1z1oE5Uq41u1LDbkz2Hf2pVcGb2RYzdbZkavVWC9yNrsvtP5vhNDaGTYwSBGiAgWEm2qV3z30UUPd6QFOyQ7910xUvhIqPjY8ouorOTMB3xWzFKqih0J2UPAuOGMIgu4TeOFVYMpY8gJCeeYP+q/lVkZczoodki68+jxd9+EMS3JL50sD2fI8cydfaqWTgu3pnQnMf7hW3JeUVtTCah75d+xVO/R4f3POb8AYpeIBQAAAHicbcFBEoIwEATAHQhJBL/io6IMkHJdKBIsnu+Bq93SyKWX/wY0aOHQwSMg4oYeA+7SzemY6TSXGsqWzbj7wrS/FqecatRs7wfPGpZkY2H1n/WZlZH2pa4b2ymdIj+PPhi3AAB4nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjEwMmiBGJu5mBg5ICw+BjCLzWkX0wGgNCeQze60i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5mFi5NHawfi/dQNL70YmBhcADHYj9AAA') format('woff'),
- url('data:application/octet-stream;base64,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RSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=') format('truetype');
+ src: url('data:application/octet-stream;base64,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') format('woff'),
+ url('data:application/octet-stream;base64,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') format('truetype');
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'blocpower';
- src: url('../font/blocpower.svg?54828926#blocpower') format('svg');
+ src: url('../font/blocpower.svg?944541#blocpower') format('svg');
}
}
*/
@@ -61,4 +61,5 @@
.icon-handset:before { content: '\e806'; } /* '' */
.icon-mobile:before { content: '\e807'; } /* '' */
.icon-envelope:before { content: '\e808'; } /* '' */
-.icon-fax:before { content: '\e809'; } /* '' */
\ No newline at end of file
+.icon-fax:before { content: '\e809'; } /* '' */
+.icon-upload:before { content: '\e80a'; } /* '' */
\ No newline at end of file
diff --git a/front/current/assets/fontello/css/blocpower-ie7-codes.css b/front/current/assets/fontello/css/blocpower-ie7-codes.css
index 1371cb1..52046ba 100644
--- a/front/current/assets/fontello/css/blocpower-ie7-codes.css
+++ b/front/current/assets/fontello/css/blocpower-ie7-codes.css
@@ -8,4 +8,5 @@
.icon-handset { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-envelope { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-fax { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
+.icon-fax { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
diff --git a/front/current/assets/fontello/css/blocpower-ie7.css b/front/current/assets/fontello/css/blocpower-ie7.css
index 161ff92..f8e2262 100644
--- a/front/current/assets/fontello/css/blocpower-ie7.css
+++ b/front/current/assets/fontello/css/blocpower-ie7.css
@@ -19,4 +19,5 @@
.icon-handset { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-envelope { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-fax { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
+.icon-fax { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
diff --git a/front/current/assets/fontello/css/blocpower.css b/front/current/assets/fontello/css/blocpower.css
index be81987..c755445 100644
--- a/front/current/assets/fontello/css/blocpower.css
+++ b/front/current/assets/fontello/css/blocpower.css
@@ -1,11 +1,11 @@
@font-face {
font-family: 'blocpower';
- src: url('../font/blocpower.eot?92066164');
- src: url('../font/blocpower.eot?92066164#iefix') format('embedded-opentype'),
- url('../font/blocpower.woff2?92066164') format('woff2'),
- url('../font/blocpower.woff?92066164') format('woff'),
- url('../font/blocpower.ttf?92066164') format('truetype'),
- url('../font/blocpower.svg?92066164#blocpower') format('svg');
+ src: url('../font/blocpower.eot?52046343');
+ src: url('../font/blocpower.eot?52046343#iefix') format('embedded-opentype'),
+ url('../font/blocpower.woff2?52046343') format('woff2'),
+ url('../font/blocpower.woff?52046343') format('woff'),
+ url('../font/blocpower.ttf?52046343') format('truetype'),
+ url('../font/blocpower.svg?52046343#blocpower') format('svg');
font-weight: normal;
font-style: normal;
}
@@ -15,7 +15,7 @@
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'blocpower';
- src: url('../font/blocpower.svg?92066164#blocpower') format('svg');
+ src: url('../font/blocpower.svg?52046343#blocpower') format('svg');
}
}
*/
@@ -64,4 +64,5 @@
.icon-handset:before { content: '\e806'; } /* '' */
.icon-mobile:before { content: '\e807'; } /* '' */
.icon-envelope:before { content: '\e808'; } /* '' */
-.icon-fax:before { content: '\e809'; } /* '' */
\ No newline at end of file
+.icon-fax:before { content: '\e809'; } /* '' */
+.icon-upload:before { content: '\e80a'; } /* '' */
\ No newline at end of file
diff --git a/front/current/assets/fontello/font/blocpower.eot b/front/current/assets/fontello/font/blocpower.eot
index cb1ef8ba62713411ab528cdf8fce4da3721e8ceb..38c80942c5fed9690229a7e7769c0519e2194646 100644
GIT binary patch
delta 707
zcmXX@T}V_x6h7z9o!Pth-u9-hzYp%VZvLQ{i7W?JL3i@!tR#1c3gbh-rPf^0AljD#f3n*{D}+=VXAA1=78v)>!23%JKl=
zhX9&2W=>ngA0!;3Ss5Fj8~wzN%>b|mq;G^q%wgx94|M=WH|c>85snT<^~NG$e<%`-
z)yFR8ei8A6h?eomA+u=FwL|zl;i`xkvoNmD5#A;2oiHOK>4BTi=uS6)l(r_Pqu*z1
z-vJc=AbrW28nHf~Y}^9y*pD!Qs@)>hHG}|31h@vQuxg@NrT2wEh5+$0b=r|p?FH#D
z*GLienzU!Xker5IsHE2vnr3gZc{M}D`2a21CU2{8mdobW*dWuO9Q<$;x`StBM8Gq^
z=x7EJi2z*@2IMmGFgO&HnM1w`TnOF=oQq2!xah8|IMUou@2RfvSNhA`HHVzMq7g+S
zmbxkVYCEvTSKD?11Faq`V?LKujjf&79GB4TLSM7giLKQrSzHgRN?1{8h;`xON##{<
z;)2w-^z?SWeEuF@o_d*iJt5||b~kU~buFc+s*+L-vCjFr6RUa>j}twG^!Lq7DjH3F
z&8LEKWKw%kIy-0_{|Oq)7%Uv$|`MosA+`?l|Qp8nr-d)R1_*+4F9FB|3B
v4NgB?*rX?)8|AE0M+q5{Hz?473OZ3m4Rt(V?-ZYQh#6~q(i~3uN__f1@9&&W
delta 448
zcmXw!-z!657{|Zwd5^K3+2*&TSw@o8T*ws~QSPKrqBzaYrW{TzZOV_7k`(K8;ZiBN
zkYXj8aIwFDD7mGSxD$$acJRDCJ&6z-xHVW
zYRq7B_Bin;v1eS>L%032dw{bXkZz5Mspv_(bPmXSCx70U3>gotb*F$^Y_nBn74=e0
ztp-LWFbr;XKB_j_PlJpG(q%d{@n{tbQZ-@ipa+kO0i$DE+o{@h;5j`%S+w3*wV22W<2I+{m@qM{0
bYt$T9k~^*v&J=N0P%Lf=IvA3bg_ZUn)w^Vj
diff --git a/front/current/assets/fontello/font/blocpower.svg b/front/current/assets/fontello/font/blocpower.svg
index ad79828..5bbd3fb 100644
--- a/front/current/assets/fontello/font/blocpower.svg
+++ b/front/current/assets/fontello/font/blocpower.svg
@@ -25,6 +25,8 @@
+
+
\ No newline at end of file
diff --git a/front/current/assets/fontello/font/blocpower.ttf b/front/current/assets/fontello/font/blocpower.ttf
index 01a9b73af54b2978ea1c83b3d7cf58abecb39035..6473b344e6e8f02df119bb36d8eb8145e9a03003 100644
GIT binary patch
delta 706
zcmXYuT}V_x6vxk*xifqB-rHTZ_47e(cUu+3OhgLuqa-4d2sKF}?B>_jx_Z%7R-x7h
zDTyVN+k=li^biq2yAUEiF4bdDQbzR_Z1qqN_CciE+0B_dXXf|+&$+{#S#4YGSoX(%
z17Ifr^bbWW`}3s_y~L|D{tnGXtL0`^0ocDle)Xt57P-B$JV1O8K)1)NX`A!{;uy{9
z*!bM&M}Bk$fZrv5Ei_^cyKlX#0q}H_-x?yp)y65`vq&5WMWV6V*!k>F5+0DyG(I_G
z6)u|ZiQf`eM68&Nabu2no49(yii~UxTz^DodI8v$JvklyHXD2cQ1qSrC3|Yb{&c*4
z1E6Z5o_u~faC#O0iItq(5%t*LZCn^=?Zn)k=APguJ6k%|w
zsBo8Z8HALg4}_2xKnmGiUUsOluC}VOEKnXO@%j(AMOi({dMx%*@CDn@?+dncU~6*~
zmT;fRDzUj88{-VUCi)s#J2qD$vxO1X)Uc}2CzH|?DfM}8;vDN+dU&&6IeP~$PCd)K
zn2_@u+v_**s-9LgO-*YanG_=F#)_WA{X|bb?7o~yN2BR4xsWd#mFP&}*3O{k*bmTo
zCRdVIooC!#dy6h-!SomZ;a~Tvos<7J!&x&Mf_xymljl)1G0A|nu&4Y4f2>r9Yl0p;
rpJt?(r<9i)$dDsd3njWxMK@}wqk;RJrlONBIb)AcTEnT?BA@XOItQ7Y
delta 448
zcmXw!%PT~26vw~k{;uKPJLY;MlE!36n6iXB8>G1_RNr8O*aJo(a#e`4&g0oo
z(ZagQi#r}P_loMc#j{Ham9XK>o&ryj3*9XebD3>%tp~IB@jgX!&xqOf0z*7xTQ0*p
z=l|K2X0Yr_JpR3%m4Cx<_soz#SKH*HLj_8UawNLMfm)e2o@+NUA7;5IH~1TZRLUa{
WG^q?18jx3RRFkeMy5@%{jQ=3Sux
diff --git a/front/current/assets/fontello/font/blocpower.woff b/front/current/assets/fontello/font/blocpower.woff
index 194edbf3ecd4474427e49eb22132969d1c5582d7..e7244bcc25a1078ad263198bf58ccb0ff2efbf32 100644
GIT binary patch
delta 2806
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
S(~~m!NbNK&K|;nTH}-!*)X2>M
diff --git a/front/current/assets/fontello/font/blocpower.woff2 b/front/current/assets/fontello/font/blocpower.woff2
index fb2ebe0904e0c31bbc80e27ed9172821ebf0d737..76bbea9abca85683a65482596f2805a980c7317c 100644
GIT binary patch
literal 4124
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
a>gwuef~4Rq8+})pibem_oP~eoYoh>5?(fb3
literal 4008
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
OwDv*nq6ac)2LJ#t_n2`2
--
GitLab
From ccdda631d4333b0dea4ac5a39a79a6d28d7be930 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:47:23 -0400
Subject: [PATCH 20/22] Add a lable wrapper for file inputs.
---
front/current/assets/styles/components/_global.scss | 13 +++++++++++++
.../project/new-document-slot.component.html | 5 ++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/front/current/assets/styles/components/_global.scss b/front/current/assets/styles/components/_global.scss
index f5821e7..56cbb25 100644
--- a/front/current/assets/styles/components/_global.scss
+++ b/front/current/assets/styles/components/_global.scss
@@ -85,6 +85,9 @@ a {
}
}
+/* Inputs */
+label { cursor: pointer; }
+
/* Tables */
table {
border-spacing: 0px;
@@ -102,6 +105,16 @@ code {
/* Addresses */
address { font-style: normal; }
+/* Hidden */
+input[type=file].hidden {
+ width: 0.1px;
+ height: 0.1px;
+ position: absolute;
+ opacity: 0;
+ overflow: hidden;
+ z-index: -1;
+}
+
/* Leading paragraph text */
.lead {
font-size: $scale * 1rem;
diff --git a/front/current/components/project/new-document-slot.component.html b/front/current/components/project/new-document-slot.component.html
index 974682d..d4ad172 100644
--- a/front/current/components/project/new-document-slot.component.html
+++ b/front/current/components/project/new-document-slot.component.html
@@ -1 +1,4 @@
-
+
--
GitLab
From d80056cd66e8cebed4bb2fa2adfceca4e91a6086 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 17:50:26 -0400
Subject: [PATCH 21/22] Hide overflow on the body.
---
front/current/assets/styles/components/_global.scss | 1 +
1 file changed, 1 insertion(+)
diff --git a/front/current/assets/styles/components/_global.scss b/front/current/assets/styles/components/_global.scss
index 56cbb25..900bc13 100644
--- a/front/current/assets/styles/components/_global.scss
+++ b/front/current/assets/styles/components/_global.scss
@@ -33,6 +33,7 @@ html {
body {
margin: 0;
height: 100%;
+ overflow: hidden;
}
my-app {
--
GitLab
From a279867430b69faaec52db4ec08285e95ab558f4 Mon Sep 17 00:00:00 2001
From: astex <0astex@gmail.com>
Date: Fri, 22 Apr 2016 18:02:45 -0400
Subject: [PATCH 22/22] Add basic auth to the nginx configuration.
---
config/htpasswd | 1 +
config/nginx.conf | 3 +++
2 files changed, 4 insertions(+)
create mode 100644 config/htpasswd
diff --git a/config/htpasswd b/config/htpasswd
new file mode 100644
index 0000000..b0182b2
--- /dev/null
+++ b/config/htpasswd
@@ -0,0 +1 @@
+admin:Tb2N/R.D.JEf6
diff --git a/config/nginx.conf b/config/nginx.conf
index b8cb9b9..0ce74ee 100644
--- a/config/nginx.conf
+++ b/config/nginx.conf
@@ -22,6 +22,9 @@ http {
listen [::]:80;
server_name $DOMAIN www.$DOMAIN;
location / {
+ auth_basic "Please log in.";
+ auth_basic_user_file $CODEROOT/config/htpasswd;
+
root $CODEROOT/front;
try_files $uri$args $uri$args/ $uri/ /index.html =404;
}
--
GitLab