diff --git a/lib/articles.rb b/lib/articles.rb
index 3862d51..62dfbb8 100644
--- a/lib/articles.rb
+++ b/lib/articles.rb
@@ -15,6 +15,7 @@ module WezM
:title => article[:title],
:path => article.identifier,
:date => Time.parse(article[:created_at]).rfc2822,
+ :summary => 'Insert summary here'
}
end
diff --git a/output/js/articles.js b/output/js/articles.js
index 6075f5e..05a463d 100644
--- a/output/js/articles.js
+++ b/output/js/articles.js
@@ -1,110 +1,66 @@
-jQuery(function(){
-
- // Keep a mapping of url-to-container for caching purposes.
+(function() {
+ // Load articles JSON ASAP
var articles = null;
+ function render_article(o) {
+ return '
\n\
+ \n\
+ ' + (Mojo.escape(Mojo.normalize(o.day))) + '\n\
+ ' + (Mojo.escape(Mojo.normalize(o.month))) + '\n\
+ ' + (Mojo.escape(Mojo.normalize(o.year))) + '\n\
+ \n\
+ \n\
+ ' + (Mojo.escape(Mojo.normalize(o.title))) + '\n\
+ ' + (Mojo.escape(Mojo.normalize(o.summary))) + '\n\
+
\n\
+ ';
+ };
+
function articles_loaded(data) {
articles = data;
- $('.pagination').slideDown('fast');
+ jQuery(function() {
+ $(window).bind('hashchange', function(e) {
+ // Get the hash (fragment) as a string, with any leading # removed. Note that
+ // in jQuery 1.4, you should use e.fragment instead of $.param.fragment().
+ var page;
+ var matches;
+ var page_fragment = e.fragment;
+ if(matches = page_fragment.match(/page-(\d+)$/)) {
+ page = new Number(matches[1]);
+ }
+ else {
+ return false;
+ }
+
+ // Generate the items
+ var per_page = 10;
+ var container = $('ul.articles');
+ container.empty();
+ var i = (page - 1) * per_page;
+ for(; i < page * per_page; i++) {
+ var article = articles[i];
+ var date = new Date(Date.parse(article.date));
+ var article_view = {
+ date: article.date,
+ day: date.getDay(),
+ month: date.getMonth(),
+ year: date.getYear(),
+ path: article.path,
+ title: article.title,
+ summary: article.summary
+ };
+ var li = render_article(article_view);
+ container.append(li);
+ }
+
+ });
+
+ $('.pagination').slideDown('fast');
+
+ // Since the event is only triggered when the hash changes, we need to trigger
+ // the event now, to handle the hash the page may have loaded with.
+ $(window).trigger( 'hashchange' );
+ });
};
-
- function show_page() {
-
- };
-
- // Bind an event to window.onhashchange that, when the history state changes,
- // gets the url from the hash and displays either our cached content or fetches
- // new content to be displayed.
- $(window).bind('hashchange', function(e) {
-
- // Get the hash (fragment) as a string, with any leading # removed. Note that
- // in jQuery 1.4, you should use e.fragment instead of $.param.fragment().
- var url = e.fragment;
-
- if ( articles ) {
- // Since the element is already in the cache, it doesn't need to be
- // created, so instead of creating it again, let's just show it!
-
-
- } else {
- // // Show "loading" content while AJAX content loads.
- // $( '.bbq-loading' ).show();
- //
- // // Create container for this url's content and store a reference to it in
- // // the cache.
- // cache[ url ] = $( '' )
- //
- // // Append the content container to the parent container.
- // .appendTo( '.bbq-content' )
- //
- // // Load external content via AJAX. Note that in order to keep this
- // // example streamlined, only the content in .infobox is shown. You'll
- // // want to change this based on your needs.
- // .load( url, function(){
- // // Content loaded, hide "loading" content.
- // $( '.bbq-loading' ).hide();
- // });
- var d = new Date(Date.parse());
- jQuery.get('json/articles.json', {}, articles_loaded, 'json');
- }
- })
-
- $('.newer, .older').click(function() {
- var elem = $(this);
-
- var page;
- var matches;
- if(matches = elem.attr('href').match(/(\d+)$/)) {
- page = new Number(matches[1]);
- }
- else {
- return false;
- }
-
- var per_page = 10;
-
- var i = (page - 1) * per_page;
- for(; i < page * per_page; i++) {
- console.log(articles[i].title);
- }
-
- return false;
- });
-
-
- // Since the event is only triggered when the hash changes, we need to trigger
- // the event now, to handle the hash the page may have loaded with.
- $(window).trigger( 'hashchange' );
-
-});
-
-
-
-// var articles;
-//
-
-// jQuery(function() {
-// $('.newer, .older').click(function() {
-// var elem = $(this);
-//
-// var page;
-// var matches;
-// if(matches = elem.attr('href').match(/(\d+)$/)) {
-// page = new Number(matches[1]);
-// }
-// else {
-// return false;
-// }
-//
-// var per_page = 10;
-//
-// var i = (page - 1) * per_page;
-// for(; i < page * per_page; i++) {
-// console.log(articles[i].title);
-// }
-//
-// return false;
-// });
-//
-// jQuery.get('json/articles.json', {}, articles_loaded, 'json');
-// });
+ jQuery.getJSON('json/articles.json', {}, articles_loaded);
+})();
diff --git a/output/js/mojo.js b/output/js/mojo.js
new file mode 100644
index 0000000..df13329
--- /dev/null
+++ b/output/js/mojo.js
@@ -0,0 +1,58 @@
+
+// Mojo - Copyright TJ Holowaychuk (MIT Licensed)
+
+;(function(){
+ Mojo = {
+
+ // --- Version
+
+ version: '0.2.0',
+
+ /**
+ * Escape HTML.
+ *
+ * @param {string} html
+ * @return {string}
+ * @api public
+ */
+
+ escape : function(html) {
+ if (!html) return
+ return html.toString()
+ .replace(/&/gmi, '&')
+ .replace(/"/gmi, '"')
+ .replace(/>/gmi, '>')
+ .replace(/
+
+ {{day}}
+ {{month}}
+ {{year}}
+
+
+ {{title}}
+ {{summary}}
+
+