diff --git a/app/assets/javascripts/app/pages/post-viewer.js b/app/assets/javascripts/app/pages/post-viewer.js index 832f95cc60ad95ba2a7d288f0d4849dd82076f83..d1213e3c7de6a4115095aa253438a3ad0ac28179 100644 --- a/app/assets/javascripts/app/pages/post-viewer.js +++ b/app/assets/javascripts/app/pages/post-viewer.js @@ -50,29 +50,20 @@ app.pages.PostViewer = app.views.Base.extend({ }, bindNavHooks : function() { - /* navagation hooks */ - var nextPostLocation = this.model.get("next_post"); - var previousPostLocation = this.model.get("previous_post"); - - + var model = this.model; $(document).keydown(function(evt){ - /* prevent nav from happening if the user is using the arrow - * keys to navigate through their comment text */ + // prevent nav from happening if the user is using the arrow keys to navigate through their comment text if($(evt.target).is("textarea")) { return } switch(evt.keyCode) { case 37: - navigate(nextPostLocation); break; + app.router.navigate(model.get("next_post"), true); break; case 39: - navigate(previousPostLocation); break; + app.router.navigate(model.get("previous_post"), true); break; default: break; } }) - - function navigate(loc) { - loc ? window.location = loc : null - } }, commentAnywhere : function(evt) { diff --git a/app/assets/javascripts/app/router.js b/app/assets/javascripts/app/router.js index 812b1bbc7379d33a457d0d20b99c08ddd51a4a9f..fad9951ab6feec76513fd1a64e5763f00a43b5dc 100644 --- a/app/assets/javascripts/app/router.js +++ b/app/assets/javascripts/app/router.js @@ -23,10 +23,23 @@ app.Router = Backbone.Router.extend({ "posts/new" : "composer", "posts/:id": "singlePost", + "posts/:id/next": "siblingPost", + "posts/:id/previous": "siblingPost", + "p/:id": "singlePost", "framer": "framer" }, + siblingPost : function(){ //next or previous + var post = new app.models.Post(); + post.bind("change", setPreloadAttributesAndNavigate) + post.fetch({url : window.location}) + + function setPreloadAttributesAndNavigate(){ + window.preloads.post = post.attributes + app.router.navigate(post.url(), true) + } + }, newProfile : function(personId) { this.renderPage(new app.pages.Profile({ personId : personId })); diff --git a/app/assets/javascripts/app/views/post-viewer/nav.js b/app/assets/javascripts/app/views/post-viewer/nav.js index 1fa714fa6c8fcfdbdc1279e2e77c23ccc801d5ce..575a4249306ca079eb0a6cc5b338e65c3dd8e5fc 100644 --- a/app/assets/javascripts/app/views/post-viewer/nav.js +++ b/app/assets/javascripts/app/views/post-viewer/nav.js @@ -1,16 +1,3 @@ app.views.PostViewerNav = app.views.Base.extend({ - templateName: "post-viewer/nav", - - postRenderTemplate : function() { - var mappings = {"#forward" : "next_post", - "#back" : "previous_post"}; - - _.each(mappings, function(attribute, selector){ - this.setArrow(this.$(selector), this.model.get(attribute)) - }, this); - }, - - setArrow : function(arrow, loc) { - loc ? arrow.attr('href', loc) : arrow.remove() - } + templateName: "post-viewer/nav" }); \ No newline at end of file diff --git a/app/assets/templates/post-viewer/nav.jst.hbs b/app/assets/templates/post-viewer/nav.jst.hbs index 81924ce37c2a6190461138ef02775b292f01cf87..56771c79172353b53b0493025fdf6df2897f3eb1 100644 --- a/app/assets/templates/post-viewer/nav.jst.hbs +++ b/app/assets/templates/post-viewer/nav.jst.hbs @@ -1,10 +1,10 @@ -<a href="#" class="nav-arrow left" id="forward"> +<a href="{{next_post}}" class="nav-arrow left" id="forward" rel="backbone"> <div class="nav-arrow-inner"> <img src="{{imageUrl "arrow-left.png"}}" /> </div> </a> -<a href="#" class="nav-arrow right" id="back"> +<a href="{{previous_post}}" class="nav-arrow right" id="back" rel="backbone"> <div class="nav-arrow-inner"> <img src="{{imageUrl "arrow-right.png"}}" /> </div>