mirror of
				https://github.com/flynx/PortableMag.git
				synced 2025-10-31 03:50:16 +00:00 
			
		
		
		
	split off the editor functions into it's own file...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									348b0269b9
								
							
						
					
					
						commit
						58418a1bff
					
				| @ -15,6 +15,8 @@ | |||||||
| 
 | 
 | ||||||
| <script src="jli.js"></script> | <script src="jli.js"></script> | ||||||
| <script src="magazine.js"></script> | <script src="magazine.js"></script> | ||||||
|  | <script src="navigator.js"></script> | ||||||
|  | <script src="editor.js"></script> | ||||||
| 
 | 
 | ||||||
| <!-- configuration, keep this last... --> | <!-- configuration, keep this last... --> | ||||||
| <script src="keybindings.js"></script> | <script src="keybindings.js"></script> | ||||||
|  | |||||||
							
								
								
									
										197
									
								
								editor.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										197
									
								
								editor.js
									
									
									
									
									
										Executable file
									
								
							| @ -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 :
 | ||||||
| @ -14,6 +14,7 @@ | |||||||
| <script src="jli.js"></script> | <script src="jli.js"></script> | ||||||
| <script src="magazine.js"></script> | <script src="magazine.js"></script> | ||||||
| <script src="navigator.js"></script> | <script src="navigator.js"></script> | ||||||
|  | <!--script src="editor.js"></script--> | ||||||
| 
 | 
 | ||||||
| <!-- configuration, keep this last... --> | <!-- configuration, keep this last... --> | ||||||
| <script src="keybindings.js"></script> | <script src="keybindings.js"></script> | ||||||
|  | |||||||
							
								
								
									
										188
									
								
								magazine.js
									
									
									
									
									
								
							
							
						
						
									
										188
									
								
								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
 | // NOTE: for these to be self-aplicable they must only replace the content
 | ||||||
| // 		of the matched elements and not touch the element itself.
 | // 		of the matched elements and not touch the element itself.
 | ||||||
| @ -1080,8 +1080,7 @@ function runMagazineTemplates(){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | /******************************************* basic magazine editor ***/ | ||||||
| /************************************************ editor: magazine ***/ |  | ||||||
| 
 | 
 | ||||||
| // load the data...
 | // load the data...
 | ||||||
| function loadMagazineData(mag){ | function loadMagazineData(mag){ | ||||||
| @ -1089,6 +1088,8 @@ function loadMagazineData(mag){ | |||||||
| 	mag.appendTo($('.aligner')) | 	mag.appendTo($('.aligner')) | ||||||
| 	return mag | 	return mag | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // load chrome elements like bookmarks and navigator....
 | // load chrome elements like bookmarks and navigator....
 | ||||||
| function loadMagazineChrome(position, bookmarks){ | function loadMagazineChrome(position, bookmarks){ | ||||||
| 	setupBookmarkTouchZones() | 	setupBookmarkTouchZones() | ||||||
| @ -1104,23 +1105,6 @@ function loadMagazineChrome(position, bookmarks){ | |||||||
| 	updateView() | 	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 
 | // XXX some things get really surprized when this is called, make things 
 | ||||||
| // 		work with the mag cleared...
 | // 		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 :
 | // vim:set ts=4 sw=4 :
 | ||||||
|  | |||||||
| @ -2,6 +2,8 @@ | |||||||
| *  | *  | ||||||
| * Navigator  | * 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
 | // NOTE: the navigator is not live and will need to get regenerated on
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user