diff --git a/TODO.otl b/TODO.otl index ebcc561..5f4791f 100755 --- a/TODO.otl +++ b/TODO.otl @@ -1,9 +1,9 @@ [_] 39% Priority work [_] 76% general todo [_] 0% Priority work for 10.03.13 - [_] load/save from JSON - [_] add page via template [_] change image + [_] add page via template + [_] load/save from JSON [_] basic instructions [_] 37% Version 1.0 checklist (migration to layout.html) [X] page scaling for full page view @@ -24,8 +24,8 @@ [_] issue selection & related navigation | essentially a special magazine that will load other magazines | instead of going into a full page view... - [_] 0% #URL rework... - [_] make #URLs a configurable framework... + [_] 20% #URL rework... + [X] make #URLs a configurable framework... | rather than being hard-coded as they are now... [_] make #URLs magazine-specific... [_] BUG: when #URL updates are off layer toggling breaks... diff --git a/magazine.js b/magazine.js index 91bb6f5..44b859d 100755 --- a/magazine.js +++ b/magazine.js @@ -874,6 +874,70 @@ function prevBookmark(){ * **********************************************************************/ +URL_HANDLERS = { + // basic navigation... + home: function(){ + return 0 + }, + end: function(){ + return $('.page').length-1 + }, + + // relative URLs... + next: function(){ + nextPage() + return getPageNumber() + }, + prev: function(){ + prevPage() + return getPageNumber() + }, + nextArticle: function(){ + nextArticle() + return getPageNumber() + }, + prevArticle: function(){ + prevArticle() + return getPageNumber() + }, + nextBookmark: function(){ + nextBookmark() + return getPageNumber() + }, + prevBookmark: function(){ + prevBookmark() + return getPageNumber() + }, + + // actions... + // XXX this scrolls someplace odd... + thumbnails: function(){ + n = getPageNumber() + togglePageView('off') + return n + }, + bookmark: function(){ + toggleBookmark() + return getPageNumber() + }, + // hide all visible layers on current page... + hideLayers: function(){ + $('.current.page .shown') + .addClass('hidden') + .removeClass('shown') + return getPageNumber() + }, + + // history... + // NOTE: these are handled by hashChangeHandler() + back: function(){ + return 'back' + }, + forward: function(){ + return anchor + }, +} + // XXX make URLs magazine-specific... // ...for extrnal linking we'll need the magazine ID, or make each // magazine a seporate path... @@ -899,75 +963,24 @@ function loadURLState(){ return n } - // XXX add real external aliases... - if(anchor == 'thumbnails') { - togglePageView('off') - return getPageNumber() + if(anchor in URL_HANDLERS){ + return URL_HANDLERS[anchor]() + } - } else if(anchor == 'home') { - return 0 - - } else if(anchor == 'end') { - return $('.page').length-1 - - // history... - // NOTE: these are handled by hashChangeHandler() - } else if(anchor == 'back') { - return anchor - } else if(anchor == 'forward') { - return anchor - - // relative URLs... - } else if(anchor == 'next') { - nextPage() - return getPageNumber() - - } else if(anchor == 'prev') { - prevPage() - return getPageNumber() - - } else if(anchor == 'nextArticle') { - nextArticle() - return getPageNumber() - - } else if(anchor == 'prevArticle') { - prevArticle() - return getPageNumber() - - } else if(anchor == 'nextBookmark') { - nextBookmark() - return getPageNumber() - - } else if(anchor == 'prevBookmark') { - prevBookmark() - return getPageNumber() - - } else if(anchor == 'bookmark'){ - toggleBookmark() - return getPageNumber() - - // hide all visible layers on current page... - } else if(anchor == 'hideLayers') { - $('.current.page .shown') + // show a layer... + var elem = $('[name='+anchor+']') + n = getPageNumber(elem.parents('.page')) + // toggle hidden/shown elements... + if(elem.hasClass('hidden')){ + elem + .addClass('shown') + .removeClass('hidden') + } else if(elem.hasClass('shown')){ + elem .addClass('hidden') .removeClass('shown') - return getPageNumber() - - } else { - var elem = $('[name='+anchor+']') - n = getPageNumber(elem.parents('.page')) - // toggle hidden/shown elements... - if(elem.hasClass('hidden')){ - elem - .addClass('shown') - .removeClass('hidden') - } else if(elem.hasClass('shown')){ - elem - .addClass('hidden') - .removeClass('shown') - } - return n } + return n } // save current state to URL... function saveURLState(){