mirror of
				https://github.com/flynx/PortableMag.git
				synced 2025-10-31 20:10:13 +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