tanam
Version:
Pluggable CMS for Firebase
154 lines (153 loc) • 6.35 kB
JavaScript
;
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