Browse Source

Move changelog to a JSON file

Thibaut 11 years ago
parent
commit
752babb9d0

+ 173 - 0
assets/javascripts/news.json

@@ -0,0 +1,173 @@
+[
+  [ "2014-11-30",
+    "New <a href=\"/phpunit/\">PHPUnit</a> and <a href=\"/nokogiri/\">Nokogiri</a> documentations"
+  ], [
+    "2014-11-16",
+    "New <a href=\"/python2/\">Python 2</a> documentation"
+  ], [
+    "2014-11-09",
+    "New design\nFeedback welcome on <a href=\"https://twitter.com/DevDocs\" target=\"_blank\">Twitter</a> and <a href=\"https://github.com/Thibaut/devdocs\" target=\"_blank\">GitHub</a>."
+  ], [
+    "2014-10-19",
+    "New <a href=\"/svg/\">SVG</a>, <a href=\"/marionette/\">Marionette.js</a>, and <a href=\"/mongoose/\">Mongoose</a> documentations"
+  ], [
+    "2014-10-18",
+    "New <a href=\"/nginx/\">nginx</a> documentation"
+  ], [
+    "2014-10-13",
+    "New <a href=\"/xpath/\">XPath</a> documentation"
+  ], [
+    "2014-09-07",
+    "Updated the HTML, CSS, JavaScript, and DOM documentations with additional content."
+  ], [
+    "2014-08-04",
+    "New <a href=\"/django/\">Django</a> documentation"
+  ], [
+    "2014-07-27",
+    "New <a href=\"/markdown/\">Markdown</a> documentation"
+  ], [
+    "2014-07-05",
+    "New <a href=\"/cordova/\">Cordova</a> documentation"
+  ], [
+    "2014-07-01",
+    "New <a href=\"/chai/\">Chai</a> and <a href=\"/sinon/\">Sinon</a> documentations"
+  ], [
+    "2014-06-15",
+    "New <a href=\"/requirejs/\">RequireJS</a> documentation"
+  ], [
+    "2014-06-14",
+    "New <a href=\"/haskell/\">Haskell</a> documentation"
+  ], [
+    "2014-05-25",
+    "New <a href=\"/laravel/\">Laravel</a> documentation"
+  ], [
+    "2014-05-04",
+    "New <a href=\"/express/\">Express</a>, <a href=\"/grunt/\">Grunt</a>, and <a href=\"/maxcdn/\">MaxCDN</a> documentations"
+  ], [
+    "2014-04-06",
+    "New <a href=\"/go/\">Go</a> documentation"
+  ], [
+    "2014-03-30",
+    "New <a href=\"/cpp/\">C++</a> documentation"
+  ], [
+    "2014-03-16",
+    "New <a href=\"/yii/\">Yii</a> documentation"
+  ], [
+    "2014-03-08",
+    "Added path bar."
+  ], [
+    "2014-02-22",
+    "New <a href=\"/c/\">C</a> documentation"
+  ], [
+    "2014-02-16",
+    "New <a href=\"/moment/\">Moment.js</a> documentation"
+  ], [
+    "2014-02-12",
+    "The root/category pages are now included in the search index (e.g. <a href=\"/#q=CSS\">CSS</a>)"
+  ], [
+    "2014-01-26",
+    "Updated <a href=\"/angular/\">Angular.js</a> documentation"
+  ], [
+    "2014-01-19",
+    "New <a href=\"/d3/\">D3.js</a> and <a href=\"/knockout/\">Knockout.js</a> documentations"
+  ], [
+    "2014-01-18",
+    "DevDocs is now available as a <a href=\"https://marketplace.firefox.com/app/devdocs/\">Firefox web app</a> (currently requires Aurora)."
+  ], [
+    "2014-01-12",
+    "Added <code class=\"_label\">alt + g</code> shortcut for searching on Google.",
+    "Added <code class=\"_label\">alt + r</code> shortcut for revealing the current page in the sidebar."
+  ], [
+    "2013-12-14",
+    "New <a href=\"/postgresql/\">PostgreSQL</a> documentation"
+  ], [
+    "2013-12-13",
+    "New <a href=\"/git/\">Git</a> and <a href=\"/redis/\">Redis</a> documentations"
+  ], [
+    "2013-11-26",
+    "New <a href=\"/python/\">Python</a> documentation"
+  ], [
+    "2013-11-19",
+    "New <a href=\"/rails/\">Ruby on Rails</a> documentation"
+  ], [
+    "2013-11-16",
+    "New <a href=\"/ruby/\">Ruby</a> documentation"
+  ], [
+    "2013-10-24",
+    "DevDocs is now <a href=\"https://github.com/Thibaut/devdocs\">open source</a>."
+  ], [
+    "2013-10-09",
+    "DevDocs is now available as a <a href=\"https://chrome.google.com/webstore/detail/devdocs/mnfehgbmkapmjnhcnbodoamcioleeooe\">Chrome web app</a>."
+  ], [
+    "2013-09-22",
+    "New <a href=\"/php/\">PHP</a> documentation"
+  ], [
+    "2013-09-06",
+    "New <a href=\"/lodash/\">Lo-Dash</a> documentation ",
+    "On mobile devices you can now search a specific documentation by typing its name and <code class=\"_label\">Space</code>."
+  ], [
+    "2013-09-01",
+    "New <a href=\"/jqueryui/\">jQuery UI</a> and <a href=\"/jquerymobile/\">jQuery Mobile</a> documentations"
+  ], [
+    "2013-08-28",
+    "New smartphone interface\nTested on iOS 6+ and Android 4.1+"
+  ], [
+    "2013-08-25",
+    "New <a href=\"/ember/\">Ember.js</a> documentation"
+  ], [
+    "2013-08-18",
+    "New <a href=\"/coffeescript/\">CoffeeScript</a> documentation",
+    "URL search now automatically opens the first result."
+  ], [
+    "2013-08-13",
+    "New <a href=\"/angular/\">Angular.js</a> documentation"
+  ], [
+    "2013-08-11",
+    "New <a href=\"/sass/\">Sass</a> and <a href=\"/less/\">Less</a> documentations"
+  ], [
+    "2013-08-05",
+    "New <a href=\"/node/\">Node.js</a> documentation"
+  ], [
+    "2013-08-03",
+    "Added support for OpenSearch"
+  ], [
+    "2013-07-30",
+    "New <a href=\"/backbone/\">Backbone.js</a> documentation"
+  ], [
+    "2013-07-27",
+    "You can now customize the list of documentations.\nNew docs will be hidden by default, but you'll see a notification when there are new releases.",
+    "New <a href=\"/http/\">HTTP</a> documentation"
+  ], [
+    "2013-07-15",
+    "URL search now works with single documentations: <a href=\"/#q=js%20sort\">devdocs.io/#q=js sort</a>"
+  ], [
+    "2013-07-13",
+    "Added syntax highlighting",
+    "Added documentation versions"
+  ], [
+    "2013-07-11",
+    "New <a href=\"/underscore/\">Underscore.js</a> documentation ",
+    "Improved compatibility with tablets\nA mobile version is planned as soon as other high priority features have been implemented."
+  ], [
+    "2013-07-10",
+    "You can now search specific documentations.\nSimply type the documentation's name and press <code class=\"_label\">Tab</code>.\nThe name is fuzzy matched so you can use abbreviations like <code>js</code> for <code>JavaScript</code>."
+  ], [
+    "2013-07-08",
+    "Improved search with fuzzy matching and better results\nFor example, searching <code>jqmka</code> now returns <code>jQuery.makeArray()</code>.",
+    "DevDocs finally has an icon.",
+    "<code class=\"_label\">space</code> has replaced <code class=\"_label\">alt + space</code> for scrolling down."
+  ], [
+    "2013-07-06",
+    "New <a href=\"/dom/\">DOM</a> and <a href=\"/dom_events/\">DOM Events</a> documentations\nDevDocs now includes almost all reference documents available on the Mozilla Developer Network.\nBig thank you to Mozilla and all the people that contributed to MDN.",
+    "Implemented URL search: <a href=\"/#q=sort\">devdocs.io/#q=sort</a>"
+  ], [
+    "2013-07-02",
+    "New <a href=\"/javascript/\">JavaScript</a> documentation"
+  ], [
+    "2013-06-28",
+    "DevDocs made the front page of Hacker News!\nHi everyone &mdash; thanks for trying DevDocs.\nPlease bear with me while I fix bugs and scramble to add more docs.\nThis is only v1. There's a lot more to come."
+  ], [
+    "2013-06-18",
+    "Initial release"
+  ]
+]

+ 0 - 219
assets/javascripts/templates/pages/news_tmpl.coffee

@@ -1,219 +0,0 @@
-app.templates.newsPage = ->
-  """ <h1 class="_lined-heading">Changelog</h1>
-      <p class="_note">For the latest news,
-        subscribe to the <a href="http://eepurl.com/HnLUz">newsletter</a>
-        or follow <a href="https://twitter.com/DevDocs">@DevDocs</a>.<br>
-        For development updates, follow the project on <a href="https://github.com/Thibaut/devdocs">GitHub</a>.
-      <div class="_news">#{app.templates.newsList app.news}</div> """
-
-app.templates.newsList = (news) ->
-  year = new Date().getUTCFullYear()
-  result = ''
-
-  for value in news
-    date = new Date(value[0])
-    if year isnt date.getUTCFullYear()
-      year = date.getUTCFullYear()
-      result += "<h4>#{year}</h4>"
-    result += newsItem(date, value[1..])
-
-  result
-
-MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
-
-newsItem = (date, news) ->
-  date = """<span class="_news-date">#{MONTHS[date.getUTCMonth()]} #{date.getUTCDate()}</span>"""
-  result = ''
-
-  for text, i in news
-    text = text.split "\n"
-    title = """<span class="_news-title">#{text.shift()}</span>"""
-    result += """<div class="_news-row">#{if i is 0 then date else ''} #{title} #{text.join '<br>'}</div>"""
-
-  result
-
-app.news = [
-  [ 1417305600000, # November 30, 2014
-    """ New <a href="/phpunit/">PHPUnit</a> and <a href="/nokogiri/">Nokogiri</a> documentations """
-  ], [
-    1416096000000, # November 16, 2014
-    """ New <a href="/python2/">Python 2</a> documentation """
-  ], [
-    1415491200000, # November 9, 2014
-    """ New design
-        Feedback welcome on <a href="https://twitter.com/DevDocs" target="_blank">Twitter</a> and <a href="https://github.com/Thibaut/devdocs" target="_blank">GitHub</a>. """
-  ], [
-    1413676800000, # October 19, 2014
-    """ New <a href="/svg/">SVG</a>, <a href="/marionette/">Marionette.js</a>, and <a href="/mongoose/">Mongoose</a> documentations """,
-  ], [
-    1413590400000, # October 18, 2014
-    """ New <a href="/nginx/">nginx</a> documentation """,
-  ], [
-    1413158400000, # October 13, 2014
-    """ New <a href="/xpath/">XPath</a> documentation """,
-  ], [
-    1410048000000, # September 7, 2014
-    """ Updated the HTML, CSS, JavaScript, and DOM documentations with additional content. """,
-  ], [
-    1407110400000, # August 4, 2014
-    """ New <a href="/django/">Django</a> documentation """,
-  ], [
-    1406419200000, # July 27, 2014
-    """ New <a href="/markdown/">Markdown</a> documentation """,
-  ], [
-    1404518400000, # July 5, 2014
-    """ New <a href="/cordova/">Cordova</a> documentation """,
-  ], [
-    1404172800000, # July 1, 2014
-    """ New <a href="/chai/">Chai</a> and <a href="/sinon/">Sinon</a> documentations """,
-  ], [
-    1402790400000, # June 15, 2014
-    """ New <a href="/requirejs/">RequireJS</a> documentation """,
-  ], [
-    1402704000000, # June 14, 2014
-    """ New <a href="/haskell/">Haskell</a> documentation """,
-  ], [
-    1400976000000, # May 25, 2014
-    """ New <a href="/laravel/">Laravel</a> documentation """,
-  ], [
-    1399161600000, # May 4, 2014
-    """ New <a href="/express/">Express</a>, <a href="/grunt/">Grunt</a>, and <a href="/maxcdn/">MaxCDN</a> documentations """,
-  ], [
-    1396742400000, # April 6, 2014
-    """ New <a href="/go/">Go</a> documentation """,
-  ], [
-    1396137600000, # March 30, 2014
-    """ New <a href="/cpp/">C++</a> documentation """,
-  ], [
-    1394928000000, # March 16, 2014
-    """ New <a href="/yii/">Yii</a> documentation """,
-  ], [
-    1394236800000, # March 8, 2014
-    """ Added path bar. """,
-  ], [
-    1393027200000, # February 22, 2014
-    """ New <a href="/c/">C</a> documentation """,
-  ], [
-    1392508800000, # February 16, 2014
-    """ New <a href="/moment/">Moment.js</a> documentation """,
-  ], [
-    1392163200000, # February 12, 2014
-    """ The root/category pages are now included in the search index (e.g. <a href="/#q=CSS">CSS</a>) """,
-  ], [
-    1390694400000, # January 26, 2014
-    """ Updated <a href="/angular/">Angular.js</a> documentation """,
-  ], [
-    1390089600000, # January 19, 2014
-    """ New <a href="/d3/">D3.js</a> and <a href="/knockout/">Knockout.js</a> documentations """,
-  ], [
-    1390003200000, # January 18, 2014
-    """ DevDocs is now available as a <a href="https://marketplace.firefox.com/app/devdocs/">Firefox web app</a> (currently requires Aurora). """,
-  ], [
-    1389484800000, # January 12, 2014
-    """ Added <code class="_label">alt + g</code> shortcut for searching on Google. """,
-    """ Added <code class="_label">alt + r</code> shortcut for revealing the current page in the sidebar. """
-  ], [
-    1386979200000, # December 14, 2013
-    """ New <a href="/postgresql/">PostgreSQL</a> documentation """
-  ], [
-    1386892800000, # December 13, 2013
-    """ New <a href="/git/">Git</a> and <a href="/redis/">Redis</a> documentations """
-  ], [
-    1385424000000, # November 26, 2013
-    """ New <a href="/python/">Python</a> documentation """
-  ], [
-    1384819200000, # November 19, 2013
-    """ New <a href="/rails/">Ruby on Rails</a> documentation """
-  ], [
-    1384560000000, # November 16, 2013
-    """ New <a href="/ruby/">Ruby</a> documentation """
-  ], [
-    1382572800000, # October 24, 2013
-    """ DevDocs is now <a href="https://github.com/Thibaut/devdocs">open source</a>. """
-  ], [
-    1381276800000, # October 9, 2013
-    """ DevDocs is now available as a <a href="https://chrome.google.com/webstore/detail/devdocs/mnfehgbmkapmjnhcnbodoamcioleeooe">Chrome web app</a>. """
-  ], [
-    1379808000000, # September 22, 2013
-    """ New <a href="/php/">PHP</a> documentation """
-  ], [
-    1378425600000, # September 6, 2013
-    """ New <a href="/lodash/">Lo-Dash</a> documentation """,
-    """ On mobile devices you can now search a specific documentation by typing its name and <code class="_label">Space</code>. """
-  ], [
-    1377993600000, # September 1, 2013
-    """ New <a href="/jqueryui/">jQuery UI</a> and <a href="/jquerymobile/">jQuery Mobile</a> documentations """
-  ], [
-    1377648000000, # August 28, 2013
-    """ New smartphone interface
-        Tested on iOS 6+ and Android 4.1+ """
-  ], [
-    1377388800000, # August 25, 2013
-    """ New <a href="/ember/">Ember.js</a> documentation """
-  ], [
-    1376784000000, # August 18, 2013
-    """ New <a href="/coffeescript/">CoffeeScript</a> documentation """,
-    """ URL search now automatically opens the first result. """
-  ], [
-    1376352000000, # August 13, 2013
-    """ New <a href="/angular/">Angular.js</a> documentation """
-  ], [
-    1376179200000, # August 11, 2013
-    """ New <a href="/sass/">Sass</a> and <a href="/less/">Less</a> documentations """
-  ], [
-    1375660800000, # August 5, 2013
-    """ New <a href="/node/">Node.js</a> documentation """
-  ], [
-    1375488000000, # August 3, 2013
-    """ Added support for OpenSearch """
-  ], [
-    1375142400000, # July 30, 2013
-    """ New <a href="/backbone/">Backbone.js</a> documentation """
-  ], [
-    1374883200000, # July 27, 2013
-    """ You can now customize the list of documentations.
-        New docs will be hidden by default, but you'll see a notification when there are new releases. """,
-    """ New <a href="/http/">HTTP</a> documentation """
-  ], [
-    1373846400000, # July 15, 2013
-    """ URL search now works with single documentations: <a href="/#q=js%20sort">devdocs.io/#q=js sort</a> """
-  ], [
-    1373673600000, # July 13, 2013
-    """ Added syntax highlighting """,
-    """ Added documentation versions """
-  ], [
-    1373500800000, # July 11, 2013
-    """ New <a href="/underscore/">Underscore.js</a> documentation """,
-    """ Improved compatibility with tablets
-        A mobile version is planned as soon as other high priority features have been implemented. """
-  ], [
-    1373414400000, # July 10, 2013
-    """ You can now search specific documentations.
-        Simply type the documentation's name and press <code class="_label">Tab</code>.
-        The name is fuzzy matched so you can use abbreviations like <code>js</code> for <code>JavaScript</code>. """
-  ], [
-    1373241600000, # July 8, 2013
-    """ Improved search with fuzzy matching and better results
-        For example, searching <code>jqmka</code> now returns <code>jQuery.makeArray()</code>. """,
-    """ DevDocs finally has an icon. """,
-    """ <code class="_label">space</code> has replaced <code class="_label">alt + space</code> for scrolling down. """
-  ], [
-    1373068800000, # July 6, 2013
-    """ New <a href="/dom/">DOM</a> and <a href="/dom_events/">DOM Events</a> documentations
-        DevDocs now includes almost all reference documents available on the Mozilla Developer Network.
-        Big thank you to Mozilla and all the people that contributed to MDN. """,
-    """ Implemented URL search: <a href="/#q=sort">devdocs.io/#q=sort</a> """
-  ], [
-    1372723200000, # July 2, 2013
-    """ New <a href="/javascript/">JavaScript</a> documentation """
-  ], [
-    1372377600000, # June 28, 2013
-    """ DevDocs made the front page of Hacker News!
-        Hi everyone &mdash; thanks for trying DevDocs.
-        Please bear with me while I fix bugs and scramble to add more docs.
-        This is only v1. There's a lot more to come. """
-  ], [
-    1371513600000, # June 18, 2013
-    """ Initial release """
-  ]
-]

+ 37 - 0
assets/javascripts/templates/pages/news_tmpl.coffee.erb

@@ -0,0 +1,37 @@
+#= depend_on news.json
+
+app.templates.newsPage = ->
+  """ <h1 class="_lined-heading">Changelog</h1>
+      <p class="_note">For the latest news,
+        subscribe to the <a href="http://eepurl.com/HnLUz">newsletter</a>
+        or follow <a href="https://twitter.com/DevDocs">@DevDocs</a>.<br>
+        For development updates, follow the project on <a href="https://github.com/Thibaut/devdocs">GitHub</a>.
+      <div class="_news">#{app.templates.newsList app.news}</div> """
+
+app.templates.newsList = (news) ->
+  year = new Date().getUTCFullYear()
+  result = ''
+
+  for value in news
+    date = new Date(value[0])
+    if year isnt date.getUTCFullYear()
+      year = date.getUTCFullYear()
+      result += "<h4>#{year}</h4>"
+    result += newsItem(date, value[1..])
+
+  result
+
+MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
+
+newsItem = (date, news) ->
+  date = """<span class="_news-date">#{MONTHS[date.getUTCMonth()]} #{date.getUTCDate()}</span>"""
+  result = ''
+
+  for text, i in news
+    text = text.split "\n"
+    title = """<span class="_news-title">#{text.shift()}</span>"""
+    result += """<div class="_news-row">#{if i is 0 then date else ''} #{title} #{text.join '<br>'}</div>"""
+
+  result
+
+app.news = <%= App.news.to_json %>

+ 2 - 2
assets/javascripts/views/misc/news.coffee

@@ -20,11 +20,11 @@ class app.views.News extends app.views.Notif
     return [] unless time = @getLastReadTime()
 
     for news in app.news
-      break if news[0] <= time
+      break if new Date(news[0]).getTime() <= time
       news
 
   getLastNewsTime: ->
-    app.news[0][0]
+    new Date(app.news[0][0]).getTime()
 
   getLastReadTime: ->
     app.store.get 'news'

+ 3 - 0
lib/app.rb

@@ -26,6 +26,9 @@ class App < Sinatra::Application
     set :docs_manifest_path, -> { File.join(docs_path, 'docs.json') }
     set :docs, -> { Hash[JSON.parse(File.read(docs_manifest_path)).map! { |doc| [doc['slug'], doc] }] }
 
+    set :news_path, -> { File.join(root, assets_prefix, 'javascripts', 'news.json') }
+    set :news, -> { JSON.parse(File.read(news_path)) }
+
     Dir[docs_path, root.join(assets_prefix, '*/')].each do |path|
       sprockets.append_path(path)
     end