page.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use strict';
  2. const Schema = require('warehouse').Schema;
  3. const pathFn = require('path');
  4. const Moment = require('./types/moment');
  5. const moment = require('moment');
  6. module.exports = ctx => {
  7. const Page = new Schema({
  8. title: {type: String, default: ''},
  9. date: {
  10. type: Moment,
  11. default: moment,
  12. language: ctx.config.languages,
  13. timezone: ctx.config.timezone
  14. },
  15. updated: {
  16. type: Moment,
  17. default: moment,
  18. language: ctx.config.languages,
  19. timezone: ctx.config.timezone
  20. },
  21. comments: {type: Boolean, default: true},
  22. layout: {type: String, default: 'page'},
  23. _content: {type: String, default: ''},
  24. source: {type: String, required: true},
  25. path: {type: String, required: true},
  26. raw: {type: String, default: ''},
  27. content: {type: String},
  28. excerpt: {type: String},
  29. more: {type: String}
  30. });
  31. Page.virtual('permalink').get(function() {
  32. return `${ctx.config.url}/${this.path}`;
  33. });
  34. Page.virtual('full_source').get(function() {
  35. return pathFn.join(ctx.source_dir, this.source || '');
  36. });
  37. return Page;
  38. };