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