UNPKG

tanam

Version:

Pluggable CMS for Firebase

154 lines (153 loc) 6.35 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const admin = require("firebase-admin"); const siteCollection = () => admin.firestore().collection('tanam').doc(process.env.GCLOUD_PROJECT); function getTemplate404() { return __awaiter(this, void 0, void 0, function* () { const siteInfo = (yield siteCollection().get()).data(); console.log(`[getTemplates] Finding templates for theme: ${siteInfo.theme}`); const templateSnap = yield siteCollection() .collection('themes').doc(siteInfo.theme) .collection('templates').doc('http404') .get(); console.log(`[getTemplates] get http404 template: ${JSON.stringify(templateSnap.data())}`); return templateSnap.data(); }); } exports.getTemplate404 = getTemplate404; function getTemplates() { return __awaiter(this, void 0, void 0, function* () { const siteInfo = (yield siteCollection().get()).data(); console.log(`[getTemplates] Finding templates for theme: ${siteInfo.theme}`); const templatesSnap = yield siteCollection() .collection('themes').doc(siteInfo.theme) .collection('templates') .get(); console.log(`[getTemplates] Number of templates found: ${templatesSnap.docs.length}`); return templatesSnap.docs.map(doc => doc.data()); }); } exports.getTemplates = getTemplates; function createDefaultTemplates() { return __awaiter(this, void 0, void 0, function* () { const templatesCollection = admin.firestore() .collection('tanam').doc(process.env.GCLOUD_PROJECT) .collection('themes').doc('default') .collection('templates'); const blog = { id: 'blog', title: 'Blog post template', created: admin.firestore.FieldValue.serverTimestamp(), updated: admin.firestore.FieldValue.serverTimestamp(), selector: 'blog', templateType: 'dust', template: ` <!-- {@contextDump /} --> <h1>{document.title}</h1> <img src="/_/image/{document.data.featuredImage}?s=medium" /> {@document id=document.data.author document=document} {> author document=document /} {/document} <p>{document.data.content|s}</p> `, }; const event = { id: 'event', title: 'Event template', created: admin.firestore.FieldValue.serverTimestamp(), updated: admin.firestore.FieldValue.serverTimestamp(), selector: 'event', templateType: 'dust', template: ` <!-- {@contextDump /} --> <h1>{document.title}</h1> <img src="/_/image/{document.data.featuredImage}" /> <div class="event-dates"> <span>{document.data.timeStart}</span> <span>{document.data.timeEnd}</span> </div> {#document.data.location} <p><a href="{mapUrl}">{name}</a></p> {/document.data.location} <p>{document.data.content|s}</p> `, }; const location = { id: 'location', title: 'Location template', created: admin.firestore.FieldValue.serverTimestamp(), updated: admin.firestore.FieldValue.serverTimestamp(), selector: 'location', templateType: 'dust', template: ` <!-- {@contextDump /} --> <h2>{document.title}</h2> {#document.data} <ul> <li>{address1}</li> <li>{address2}</li> <li>{city}</li> <li>{region}</li> <li>{postCode}</li> <li>{country}</li> <li><a href="{mapsUrl}">View on maps</a></li> </ul> {/document.data} `, }; const author = { id: 'author', title: 'Author template', created: admin.firestore.FieldValue.serverTimestamp(), updated: admin.firestore.FieldValue.serverTimestamp(), selector: 'author', templateType: 'dust', template: ` <!-- {@contextDump /} --> <h1>{document.title}</h1> {#document.data} <img src="{photoUrl}" /> <ul> <li>{name}</li> <li>{email}</li> <li><a href="{website}">Profile website</a></li> </ul> {/document.data} `, }; const page = { id: 'page', title: 'Standard page template', created: admin.firestore.FieldValue.serverTimestamp(), updated: admin.firestore.FieldValue.serverTimestamp(), selector: 'page', templateType: 'dust', template: ` <!-- {@contextDump /} --> {@select key=document.data.layout} {@eq value="landing-page"}Show a landing page layout{/eq} {@eq value="right-sidebar"}Include a right sidebar page template{/eq} {@none} Display the regular page layout {/none} {/select} `, }; console.log(`[createDefaultTemplates] ${JSON.stringify({ blog, event, location, author, page }, null, 2)}`); return Promise.all([ templatesCollection.doc(blog.id).set(blog), templatesCollection.doc(event.id).set(event), templatesCollection.doc(location.id).set(location), templatesCollection.doc(author.id).set(author), templatesCollection.doc(page.id).set(page), ]); }); } exports.createDefaultTemplates = createDefaultTemplates; //# sourceMappingURL=template.service.js.map