some refactoring and revision...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2013-01-31 18:19:33 +04:00
parent 7c7c729f2e
commit 3222454ed5

View File

@ -902,18 +902,18 @@ function buildJSONState(export_bookmarks, export_position){
function loadJSONState(data){ function loadJSONState(data){
function _build(block, elem){ function _build(block, elem){
if(elem.type == 'page'){ if(elem.type == 'page'){
_createPage(elem.content) createPage(elem.content)
.addClass(elem['class']) .addClass(elem['class'])
.appendTo(block) .appendTo(block)
} else if(elem.type == 'cover'){ } else if(elem.type == 'cover'){
_createCoverPage(elem.content) createCoverPage(elem.content)
.addClass(elem['class']) .addClass(elem['class'])
.appendTo(block) .appendTo(block)
} else if(elem.type == 'article') { } else if(elem.type == 'article') {
// buiold an article... // buiold an article...
var article = _createEmptyArticle() var article = createEmptyArticle()
.addClass(elem['class']) .addClass(elem['class'])
.appendTo(block) .appendTo(block)
// populate article with pages... // populate article with pages...
@ -922,7 +922,7 @@ function loadJSONState(data){
}) })
} }
} }
var mag = _createEmptyMagazine(data.title) var mag = createEmptyMagazine(data.title)
$(data.pages).each(function(_, e){ $(data.pages).each(function(_, e){
_build(mag, e) _build(mag, e)
}) })
@ -956,78 +956,91 @@ function resetState(){
/********************************************************** editor ***/ /***************************************************** constructor ***/
// These function will construct detached magazine building blocks...
// basic constructors... // basic constructors...
function _createEmptyMagazine(title){ function createEmptyMagazine(title){
return $('<div/>') return $('<div/>')
.addClass('magazine') .addClass('magazine')
.attr({ .attr({
title: title title: title
}) })
} }
function _createMagazine(title, magazine_cover, article_cover){ function createMagazine(title, magazine_cover, article_cover){
if(magazine_cover == null){ if(magazine_cover == null){
magazine_cover = title magazine_cover = title
} }
if(article_cover == null){ if(article_cover == null){
article_cover = 'Article' article_cover = 'Article'
} }
return _createEmptyMagazine(title) return createEmptyMagazine(title)
// a magazine by default has a cover... // a magazine by default has a cover...
.append(_createCoverPage(magazine_cover)) .append(createCoverPage(magazine_cover))
.append(_createArticle(article_cover)) .append(createArticle(article_cover))
} }
// XXX do we need a title here??? // XXX do we need a title here???
function _createEmptyArticle(){ function createEmptyArticle(){
return $('<div/>') return $('<div/>')
.addClass('article') .addClass('article')
} }
function _createArticle(template){ function createArticle(template){
return _createEmptyArticle() return createEmptyArticle()
.append(_createCoverPage(template)) .append(createCoverPage(template))
} }
function _createPage(template){ function createPage(template){
return $('<div/>') return $('<div/>')
.addClass('page') .addClass('page')
.append($('<div/>') .append($('<div/>')
.addClass('content') .addClass('content')
.html(template)) .html(template))
} }
function _createCoverPage(template){ function createCoverPage(template){
return _createPage(template).addClass('cover') return createPage(template).addClass('cover')
} }
/************************************************ editor: magazine ***/
// XXX setup event handlers... // XXX setup event handlers...
function loadMagazine(mag, position, bookmarks){ function loadMagazine(mag, position, bookmarks){
clearMagazine() removeMagazine()
return mag.appendTo($('.aligner')) mag.appendTo($('.aligner'))
setCurrentPage(position) setCurrentPage(position)
loadBookmarks(bookmarks != null ? bookmarks : []) loadBookmarks(bookmarks != null ? bookmarks : [])
setupNavigator() setupNavigator()
// XXX is this the right place for this?
setupBookmarkTouchZones()
return mag
} }
// XXX create magazine... // XXX create magazine...
// - magazine // - magazine
// - cover // - cover
// - article // - article
// - cover // - cover
function createMagazine(title, cover, article){ function createBaseMagazine(title, cover, article){
clearMagazine() removeMagazine()
var mag = loadMagazine(_createMagazine(title, cover, article)) var mag = loadMagazine(createMagazine(title, cover, article))
return mag return mag
} }
// XXX some things get really surprized when this is called, make things // XXX some things get really surprized when this is called, make things
// work with the mag cleared... // work with the mag cleared...
function clearMagazine(){ // XXX do we need to clear the event handlers here?
// XXX do we remove the whole magazine or only it's contents? function removeMagazine(){
$('.magazine').remove() $('.magazine').remove()
clearNavigator() clearNavigator()
} }
/************************************************* editor: article ***/
// XXX create article (magazine, title, position)... // XXX create article (magazine, title, position)...
// - article // - article
// - cover // - cover
@ -1036,7 +1049,7 @@ function createArticleBefore(article, title){
article = $('.current.page').parents('.article') article = $('.current.page').parents('.article')
} }
// XXX fill the data... // XXX fill the data...
var res = _createArticle().insertBefore(article) var res = createArticle().insertBefore(article)
setCurrentPage() setCurrentPage()
$('.viewer').trigger('articleCreated', res) $('.viewer').trigger('articleCreated', res)
return res return res
@ -1046,20 +1059,13 @@ function createArticleAfter(article, title){
article = $('.current.page').parents('.article') article = $('.current.page').parents('.article')
} }
// XXX fill the data... // XXX fill the data...
var res = _createArticle().insertAfter(article) var res = createArticle().insertAfter(article)
setCurrentPage() setCurrentPage()
$('.viewer').trigger('articleCreated', res) $('.viewer').trigger('articleCreated', res)
return res return res
} }
function removeArticle(article){
if(article == null){
article = $('.current.page').parents('.article')
}
article.remove()
setCurrentPage()
$('.viewer').trigger('articleRemoved', res)
return res
}
function shiftArticleLeft(article){ function shiftArticleLeft(article){
// XXX // XXX
setCurrentPage() setCurrentPage()
@ -1074,6 +1080,20 @@ function shiftArticleRight(article){
} }
function removeArticle(article){
if(article == null){
article = $('.current.page').parents('.article')
}
article.remove()
setCurrentPage()
$('.viewer').trigger('articleRemoved', res)
return res
}
/*************************************************** editor: pages ***/
// XXX create page (article, template, position)... // XXX create page (article, template, position)...
// - page // - page
// - content // - content
@ -1085,17 +1105,19 @@ function createPageIn(article, template){
if(article.length == 0){ if(article.length == 0){
return return
} }
var res = _createPage(template).appendTo(article) var res = createPage(template).appendTo(article)
$('.viewer').trigger('pageCreated', res) $('.viewer').trigger('pageCreated', res)
return res return res
} }
// XXX the next two are almost identical... // XXX the next two are almost identical...
// XXX prevent this from working outside of an article.... // XXX prevent this from working outside of an article....
function createPageAfter(page, template){ function createPageAfter(page, template){
if(page == null){ if(page == null){
page = $('.current.page') page = $('.current.page')
} }
var res = _createPage(template).insertAfter(page) var res = createPage(template).insertAfter(page)
$('.viewer').trigger('pageCreated', res) $('.viewer').trigger('pageCreated', res)
return res return res
} }
@ -1104,21 +1126,11 @@ function createPageBefore(page, template){
if(page == null){ if(page == null){
page = $('.current.page') page = $('.current.page')
} }
var res = _createPage(template).insertBefore(page) var res = createPage(template).insertBefore(page)
$('.viewer').trigger('pageCreated', res) $('.viewer').trigger('pageCreated', res)
return res return res
} }
function removePage(page){
if(page == null){
page = $('.current.page')
}
var cur = getPageNumber()
page.remove()
setCurrentPage(cur)
$('.viewer').trigger('pageRemoved', page)
return page
}
// NOTE: on negative position this will position the element after the // NOTE: on negative position this will position the element after the
// target, e.g. position -1 is the last element, etc. // target, e.g. position -1 is the last element, etc.
@ -1147,6 +1159,8 @@ function movePageTo(page, position){
$('.viewer').trigger('pageMoved', page) $('.viewer').trigger('pageMoved', page)
return page return page
} }
function shiftPageLeft(page){ function shiftPageLeft(page){
if(page == null){ if(page == null){
page = $('.current.page') page = $('.current.page')
@ -1163,6 +1177,19 @@ function shiftPageRight(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 : // vim:set ts=4 sw=4 :