Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Feature/branding image. Closes #774 #829

Closed
wants to merge 12 commits into from
3 changes: 1 addition & 2 deletions .meteor/packages
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,9 @@ simple:reactive-method
sacha:spin
tap:i18n-ui
force-ssl
cfs:autoform
kadira:dochead
gwendall:autoform-i18n
forwarder:autoform-wizard-iron-router
peppelg:bootstrap-3-modal

apinf:api-umbrella

1 change: 1 addition & 0 deletions .meteor/versions
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ caching-compiler@1.0.0
caching-html-compiler@1.0.2
callback-hook@1.0.4
cfs:access-point@0.1.49
cfs:autoform@2.2.1
cfs:base-package@0.0.30
cfs:collection@0.5.5
cfs:collection-filters@0.2.4
Expand Down
12 changes: 6 additions & 6 deletions both/collections/branding.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
Branding = new Mongo.Collection('branding');

Schemas.BrandingSchema = new SimpleSchema({
projectLogo: {
projectLogoId: {
type: String,
label: 'Project logo',
optional: true,
autoform: {
afFieldInput: {
type: 'fileUpload',
collection: 'ProjectLogo'
type: "cfs-file",
collection: "brandingFiles"
}
}
},
coverPhoto: {
coverPhotoId: {
type: String,
label: 'Cover photo',
optional: true,
autoform: {
afFieldInput: {
type: 'fileUpload',
collection: 'CoverPhoto'
type: "cfs-file",
collection: "brandingFiles"
}
}
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
CoverPhoto = new FS.Collection("coverPhoto", {
BrandingFiles = new FS.Collection("brandingFiles", {
stores: [
new FS.Store.GridFS("coverPhoto")
new FS.Store.GridFS("brandingFiles")
]
});

CoverPhoto.filters({
BrandingFiles.filters({
allow: {
maxSize: 10048567, // ~ 10Mbs.
extensions: ['jpg', 'jpeg', 'png', 'gif']
Expand All @@ -16,7 +16,7 @@ CoverPhoto.filters({
});

if (Meteor.isServer) {
CoverPhoto.allow({
BrandingFiles.allow({
insert: function(userId, doc) {
return Roles.userIsInRole(userId, ['admin']);
},
Expand Down
33 changes: 0 additions & 33 deletions both/collections/projectLogo.js

This file was deleted.

14 changes: 11 additions & 3 deletions client/layouts/master_layout/navbar/navbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,17 @@ Template.navbar.helpers({
return profilePicture.url();
},
projectLogo: function () {
var lastUploadedLogo = ProjectLogo.findOne({}, {sort: {uploadedAt: -1}});
if (lastUploadedLogo) {
return lastUploadedLogo
// Get branding document
let branding = Branding.findOne();

if (branding) {
// Get project logo ID
let projectLogoId = branding.projectLogoId;

if (projectLogoId) {
// Get project logo collection object
return BrandingFiles.findOne(projectLogoId);
}
}
},
"isSearchRoute": function () {
Expand Down
8 changes: 4 additions & 4 deletions client/views/branding/branding.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ <h3 class="panel-title">Project Branding</h3>
<div class="panel-body">
{{#if branding}}
{{#autoForm collection="Branding" id="branding" doc=branding type="update"}}
{{> afQuickField name='projectLogo'}}
{{> afQuickField name='projectLogoId' }}
{{#if projectLogo}}
<p>
<img alt="{{projectLogo.name}}" src="{{projectLogo.url}}" width="150px">
</p>
{{/if}}
{{> afQuickField name='coverPhoto'}}
{{> afQuickField name='coverPhotoId' }}
{{#if coverPhoto}}
<p>
<img alt="{{coverPhoto.name}}" src="{{coverPhoto.url}}" width="100%">
Expand All @@ -42,8 +42,8 @@ <h3 class="panel-title">Project Branding</h3>
{{/autoForm}}
{{else}}
{{#autoForm collection="Branding" id="branding" type="insert"}}
{{> afQuickField name='projectLogo'}}
{{> afQuickField name='coverPhoto'}}
{{> afQuickField name='projectLogoId' }}
{{> afQuickField name='coverPhotoId' }}
{{> afQuickField name='siteTitle'}}
{{> afQuickField name='siteAbbreviation'}}
{{> afQuickField name='siteSlogan'}}
Expand Down
32 changes: 22 additions & 10 deletions client/views/branding/branding.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,31 @@ Template.branding.helpers({
return Branding.findOne();
},
projectLogo: function () {
// Get last uploaded image from collection
var lastUploadedLogo = ProjectLogo.findOne({}, {sort: {uploadedAt: -1}});
// Check if new logo was uploaded, if so change it with previous
if (lastUploadedLogo) {
return lastUploadedLogo
// Get branding document
let branding = Branding.findOne();

if (branding) {
// Get project logo ID
let projectLogoId = branding.projectLogoId;

if (projectLogoId) {
// Get project logo collection object
return BrandingFiles.findOne(projectLogoId);
}
}
},
coverPhoto: function () {
// Get last uploaded image from collection
var lastUploadedCover = CoverPhoto.findOne({}, {sort: {uploadedAt: -1}});
// Check if new cover was uploaded, if so change it with previous
if (lastUploadedCover) {
return lastUploadedCover;
// Get branding document
let branding = Branding.findOne();

if (branding) {
// Get project logo ID
let coverPhotoId = branding.coverPhotoId;

if (coverPhotoId) {
// Get cover photo collection object
return BrandingFiles.findOne(coverPhotoId);
}
}
}
});
38 changes: 27 additions & 11 deletions client/views/home/home.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,38 @@ Template.home.created = function () {
Template.home.helpers({
branding: function () {
// Get Branding collection content
return Branding.findOne();
let branding = Branding.findOne();

if (branding) {
return branding;
}
},
projectLogo: function () {
// Get last uploaded image from collection
var lastUploadedLogo = ProjectLogo.findOne({}, {sort: {uploadedAt: -1}});
// Check if new logo was uploaded, if so change it with previous
if (lastUploadedLogo) {
return lastUploadedLogo;
// Get branding document
let branding = Branding.findOne();

if (branding) {
// Get project logo ID
let projectLogoId = branding.projectLogoId;

if (projectLogoId) {
// Get project logo collection object
return BrandingFiles.findOne(projectLogoId);
}
}
},
coverPhoto: function () {
// Get last uploaded image from collection
var lastUploadedCover = CoverPhoto.findOne({}, {sort: {uploadedAt: -1}});
// Check if new cover was uploaded, if so change it with previous
if (lastUploadedCover) {
return lastUploadedCover;
// Get branding document
let branding = Branding.findOne();

if (branding) {
// Get project logo ID
let coverPhotoId = branding.coverPhotoId;

if (coverPhotoId) {
// Get cover photo collection object
return BrandingFiles.findOne(coverPhotoId);
}
}
}
});
36 changes: 31 additions & 5 deletions server/publish/branding.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,40 @@
Meteor.publish('projectLogo', function() {
// Get ProjectLogo collection object
return ProjectLogo.find({});
// Get branding document
let branding = Branding.findOne();

try {
// Get project logo ID
let projectLogoId = branding.projectLogoId;

if (projectLogoId) {
// Get ProjectLogo collection object
return BrandingFiles.find(projectLogoId);
}
} catch(err) {
console.log(err);
}
});

Meteor.publish('coverPhoto', function() {
// Get CoverPhoto collection object
return CoverPhoto.find({});
// Get branding document
let branding = Branding.findOne();

try {
// Get project logo ID
let coverPhotoId = branding.coverPhotoId;

if (coverPhotoId) {
// Get ProjectLogo collection object
return BrandingFiles.find(coverPhotoId);
}
} catch(err) {
console.log(err);
}
});

Meteor.publish('branding', function() {
// Get Branding collection object
return Branding.find({});
let branding = Branding.find({});

return branding;
});