From 58418a1bff7576fbbbb33f6c9e1cdba9c877a855 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sat, 2 Feb 2013 07:35:17 +0400 Subject: [PATCH] split off the editor functions into it's own file... Signed-off-by: Alex A. Naanou --- editor.html | 2 + editor.js | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 1 + magazine.js | 188 ++---------------------------------------------- navigator.js | 2 + 5 files changed, 206 insertions(+), 184 deletions(-) create mode 100755 editor.js diff --git a/editor.html b/editor.html index 52dae67..5b48c7a 100755 --- a/editor.html +++ b/editor.html @@ -15,6 +15,8 @@ + + diff --git a/editor.js b/editor.js new file mode 100755 index 0000000..ec05e7c --- /dev/null +++ b/editor.js @@ -0,0 +1,197 @@ +/********************************************************************** +* +* Magazine editor actions +* +* +**********************************************************************/ + +/************************************************ editor: magazine ***/ + +// NOTE: we do not need to create any event handlers here specifically +// as all events are ahndled by the viewer... +function loadMagazine(mag, position, bookmarks){ + mag = loadMagazineData(mag) + loadMagazineChrome(position, bookmarks) + return mag +} + + +// NOTE: this will, in addition to the magazine itself, will populate with +// the basic content (cover, article, article cover) +function createBaseMagazine(title, cover, article){ + removeMagazine() + var mag = loadMagazine(createMagazine(title, cover, article)) + return mag +} + + +/************************************************* editor: article ***/ + +function createArticleBefore(article, title){ + if(article == null){ + article = $('.current.page').parents('.article') + } + // XXX fill the data... + var res = createArticle().insertBefore(article) + setCurrentPage() + $('.viewer').trigger('articleCreated', res) + return res +} +function createArticleAfter(article, title){ + if(article == null){ + article = $('.current.page').parents('.article') + } + // XXX fill the data... + var res = createArticle().insertAfter(article) + setCurrentPage() + $('.viewer').trigger('articleCreated', res) + return res +} + + +// XXX TEST! +function shiftArticleLeft(article){ + var articles = $('.article') + var i = articles.index(article) + if(i <= 0){ + return article + } + var target = $(articles[i-1]) + article + .detach() + .insertBefore(target) + setCurrentPage() + $('.viewer').trigger('articleMoved', res) + return res +} +// XXX TEST! +function shiftArticleRight(article){ + var articles = $('.article') + var i = articles.index(article) + if(i >= articles.length){ + return article + } + var target = $(articles[i+1]) + article + .detach() + .insertAfter(target) + setCurrentPage() + $('.viewer').trigger('articleMoved', res) + return res +} + + +function removeArticle(article){ + if(article == null){ + article = $('.current.page').parents('.article') + } + article.remove() + setCurrentPage() + $('.viewer').trigger('articleRemoved', res) + return res +} + + + +/*************************************************** editor: pages ***/ + +function createPageIn(article, template){ + if(article == null){ + article = $('.current.page').parents('.article') + } + // no article + if(article.length == 0){ + return + } + var res = createPage(template).appendTo(article) + $('.viewer').trigger('pageCreated', res) + return res +} + + +// XXX the next two are almost identical... +// XXX prevent this from working outside of an article.... +function createPageAfter(page, template){ + if(page == null){ + page = $('.current.page') + } + var res = createPage(template).insertAfter(page) + $('.viewer').trigger('pageCreated', res) + return res +} +// XXX prevent this from working outside of an article.... +function createPageBefore(page, template){ + if(page == null){ + page = $('.current.page') + } + var res = createPage(template).insertBefore(page) + $('.viewer').trigger('pageCreated', res) + return res +} + + +// NOTE: on negative position this will position the element after the +// target, e.g. position -1 is the last element, etc. +// XXX at this point there is no way to move something to either an +// article or a magazine that do not contain any pages directly... +// ...add special cases: +// - if we are moving the page in the direction of an empty article +// push the page into the article... +// - if we are moving page 0 left and the magazine has no cover +// push it to the magazine... +function movePageTo(page, position){ + if(page == null){ + page = $('.current.page') + } + if(position >= $('.page').length){ + position = -1 + } + var target = getPageAt(position) + page.detach() + if(position >= 0){ + page.insertBefore(target) + } else { + page.insertAfter(target) + } + setCurrentPage() + $('.viewer').trigger('pageMoved', page) + return page +} + + +function shiftPageLeft(page){ + if(page == null){ + page = $('.current.page') + } + movePageTo(page, getPageNumber(page)-1) + return page +} +function shiftPageRight(page){ + if(page == null){ + page = $('.current.page') + } + movePageTo(page, getPageNumber(page)+2) + return page +} + + +function removePage(page){ + if(page == null){ + page = $('.current.page') + } + + var cur = getPageNumber() + page.remove() + setCurrentPage(cur) + $('.viewer').trigger('pageRemoved', page) + return page +} + + + + + + + +/*********************************************************************/ +// vim:set ts=4 sw=4 : diff --git a/index.html b/index.html index 07161a3..7225dd8 100755 --- a/index.html +++ b/index.html @@ -14,6 +14,7 @@ + diff --git a/magazine.js b/magazine.js index 192ae71..4f4e1ee 100755 --- a/magazine.js +++ b/magazine.js @@ -1017,7 +1017,7 @@ function createCoverPage(data){ -/*********************************************** editor: templates ***/ +/******************************************************* templates ***/ // NOTE: for these to be self-aplicable they must only replace the content // of the matched elements and not touch the element itself. @@ -1080,8 +1080,7 @@ function runMagazineTemplates(){ } - -/************************************************ editor: magazine ***/ +/******************************************* basic magazine editor ***/ // load the data... function loadMagazineData(mag){ @@ -1089,6 +1088,8 @@ function loadMagazineData(mag){ mag.appendTo($('.aligner')) return mag } + + // load chrome elements like bookmarks and navigator.... function loadMagazineChrome(position, bookmarks){ setupBookmarkTouchZones() @@ -1104,23 +1105,6 @@ function loadMagazineChrome(position, bookmarks){ updateView() } -// NOTE: we do not need to create any event handlers here specifically -// as all events are ahndled by the viewer... -function loadMagazine(mag, position, bookmarks){ - mag = loadMagazineData(mag) - loadMagazineChrome(position, bookmarks) - return mag -} - - -// NOTE: this will, in addition to the magazine itself, will populate with -// the basic content (cover, article, article cover) -function createBaseMagazine(title, cover, article){ - removeMagazine() - var mag = loadMagazine(createMagazine(title, cover, article)) - return mag -} - // XXX some things get really surprized when this is called, make things // work with the mag cleared... @@ -1134,169 +1118,5 @@ function removeMagazine(){ -/************************************************* editor: article ***/ - -function createArticleBefore(article, title){ - if(article == null){ - article = $('.current.page').parents('.article') - } - // XXX fill the data... - var res = createArticle().insertBefore(article) - setCurrentPage() - $('.viewer').trigger('articleCreated', res) - return res -} -function createArticleAfter(article, title){ - if(article == null){ - article = $('.current.page').parents('.article') - } - // XXX fill the data... - var res = createArticle().insertAfter(article) - setCurrentPage() - $('.viewer').trigger('articleCreated', res) - return res -} - - -// XXX TEST! -function shiftArticleLeft(article){ - var articles = $('.article') - var i = articles.index(article) - if(i <= 0){ - return article - } - var target = $(articles[i-1]) - article - .detach() - .insertBefore(target) - setCurrentPage() - $('.viewer').trigger('articleMoved', res) - return res -} -// XXX TEST! -function shiftArticleRight(article){ - var articles = $('.article') - var i = articles.index(article) - if(i >= articles.length){ - return article - } - var target = $(articles[i+1]) - article - .detach() - .insertAfter(target) - setCurrentPage() - $('.viewer').trigger('articleMoved', res) - return res -} - - -function removeArticle(article){ - if(article == null){ - article = $('.current.page').parents('.article') - } - article.remove() - setCurrentPage() - $('.viewer').trigger('articleRemoved', res) - return res -} - - - -/*************************************************** editor: pages ***/ - -function createPageIn(article, template){ - if(article == null){ - article = $('.current.page').parents('.article') - } - // no article - if(article.length == 0){ - return - } - var res = createPage(template).appendTo(article) - $('.viewer').trigger('pageCreated', res) - return res -} - - -// XXX the next two are almost identical... -// XXX prevent this from working outside of an article.... -function createPageAfter(page, template){ - if(page == null){ - page = $('.current.page') - } - var res = createPage(template).insertAfter(page) - $('.viewer').trigger('pageCreated', res) - return res -} -// XXX prevent this from working outside of an article.... -function createPageBefore(page, template){ - if(page == null){ - page = $('.current.page') - } - var res = createPage(template).insertBefore(page) - $('.viewer').trigger('pageCreated', res) - return res -} - - -// NOTE: on negative position this will position the element after the -// target, e.g. position -1 is the last element, etc. -// XXX at this point there is no way to move something to either an -// article or a magazine that do not contain any pages directly... -// ...add special cases: -// - if we are moving the page in the direction of an empty article -// push the page into the article... -// - if we are moving page 0 left and the magazine has no cover -// push it to the magazine... -function movePageTo(page, position){ - if(page == null){ - page = $('.current.page') - } - if(position >= $('.page').length){ - position = -1 - } - var target = getPageAt(position) - page.detach() - if(position >= 0){ - page.insertBefore(target) - } else { - page.insertAfter(target) - } - setCurrentPage() - $('.viewer').trigger('pageMoved', page) - return page -} - - -function shiftPageLeft(page){ - if(page == null){ - page = $('.current.page') - } - movePageTo(page, getPageNumber(page)-1) - return page -} -function shiftPageRight(page){ - if(page == null){ - page = $('.current.page') - } - movePageTo(page, getPageNumber(page)+2) - return page -} - - -function removePage(page){ - if(page == null){ - page = $('.current.page') - } - - var cur = getPageNumber() - page.remove() - setCurrentPage(cur) - $('.viewer').trigger('pageRemoved', page) - return page -} - - - /*********************************************************************/ // vim:set ts=4 sw=4 : diff --git a/navigator.js b/navigator.js index 4360936..13b734b 100755 --- a/navigator.js +++ b/navigator.js @@ -2,6 +2,8 @@ * * Navigator * +* TODO make indicator dragable +* TODO make the bar (indicator) clickable -- go to this point. * **********************************************************************/ // NOTE: the navigator is not live and will need to get regenerated on