news_tmpl.js.erb 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //= depend_on news.json
  2. app.templates.newsPage = () => ` <h1 class="_lined-heading">Changelog</h1>
  3. <p class="_note">
  4. For the latest news, follow <a href="https://twitter.com/DevDocs">@DevDocs</a>.<br>
  5. For development updates, follow the project on <a href="https://github.com/freeCodeCamp/devdocs">GitHub</a>.
  6. <div class="_news">${app.templates.newsList(app.news)}</div> `;
  7. app.templates.newsList = function(news, options = {}) {
  8. let year = new Date().getUTCFullYear();
  9. let result = '';
  10. for (let value of news) {
  11. const date = new Date(value[0]);
  12. if ((options.years !== false) && (year !== date.getUTCFullYear())) {
  13. year = date.getUTCFullYear();
  14. result += `<h2 class="_block-heading">${year}</h2>`;
  15. }
  16. result += newsItem(date, value.slice(1));
  17. }
  18. return result;
  19. };
  20. const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
  21. var newsItem = function(date, news) {
  22. date = `<span class="_news-date">${MONTHS[date.getUTCMonth()]} ${date.getUTCDate()}</span>`;
  23. let result = '';
  24. for (let i = 0; i < news.length; i++) {
  25. let text = news[i];
  26. text = text.split("\n");
  27. const title = `<span class="_news-title">${text.shift()}</span>`;
  28. result += `<div class="_news-row">${i === 0 ? date : ''} ${title} ${text.join('<br>')}</div>`;
  29. }
  30. return result;
  31. };
  32. app.news = <%= App.news.to_json %>