mirror of
https://github.com/flynx/PortableMag.git
synced 2025-12-22 11:31:49 +00:00
some refactoring and revision...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
7c7c729f2e
commit
3222454ed5
123
magazine.js
123
magazine.js
@ -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 :
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user