mirror of
				https://github.com/flynx/PortableMag.git
				synced 2025-10-31 03:50:16 +00:00 
			
		
		
		
	added page construction and moving + added more defaults to setCurrentPage(..)...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									ca6302ae4b
								
							
						
					
					
						commit
						bac9d68f34
					
				| @ -47,6 +47,10 @@ $(document).ready(function(){ | |||||||
| 		.on('bookmarkAdded', function(_, n){makeBookmarkIndicator(n)}) | 		.on('bookmarkAdded', function(_, n){makeBookmarkIndicator(n)}) | ||||||
| 		.on('bookmarkRemoved', function(_, n){removeBookmarkIndicator(n)}) | 		.on('bookmarkRemoved', function(_, n){removeBookmarkIndicator(n)}) | ||||||
| 
 | 
 | ||||||
|  | 		// editor specific events... | ||||||
|  | 		.on('pageCreated articleCreated magazineCreated', resetNavigator) | ||||||
|  | 		.on('pageMoved articleMoved', resetNavigator) | ||||||
|  | 
 | ||||||
| 		// user interactions... | 		// user interactions... | ||||||
| 		.swipe({ | 		.swipe({ | ||||||
| 			swipeStatus: swipeHandler, | 			swipeStatus: swipeHandler, | ||||||
| @ -170,7 +174,7 @@ CKEDITOR.on('instanceCreated', function(evt){ | |||||||
| 
 | 
 | ||||||
| 	<div class="top-toolbar"> | 	<div class="top-toolbar"> | ||||||
| 		<div class="left-set"> | 		<div class="left-set"> | ||||||
| 			<div class="button cover title"><a href="#home">PortableMag</a></div> | 			<div class="button cover title"><a href="#home">PortableMag Editor</a></div> | ||||||
| 		</div> | 		</div> | ||||||
| 		<div class="right-set"> | 		<div class="right-set"> | ||||||
| 			<div class="button prev-bookmark"> | 			<div class="button prev-bookmark"> | ||||||
|  | |||||||
							
								
								
									
										124
									
								
								magazine.js
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								magazine.js
									
									
									
									
									
								
							| @ -87,8 +87,13 @@ function getPageNumber(page){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | // NOTE: negative values will yield results from the tail...
 | ||||||
| function getPageAt(n){ | function getPageAt(n){ | ||||||
| 	return $($('.page')[n]) | 	var page = $('.page') | ||||||
|  | 	if(n < 0){ | ||||||
|  | 		n = page.length + n | ||||||
|  | 	} | ||||||
|  | 	return $(page[n]) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -327,11 +332,36 @@ function fitNPages(n, fit_to_content){ | |||||||
| // 		- page element
 | // 		- page element
 | ||||||
| // NOTE: this will fire a 'pageChanged(n)' event on the viewer each time 
 | // NOTE: this will fire a 'pageChanged(n)' event on the viewer each time 
 | ||||||
| // 		it is called...
 | // 		it is called...
 | ||||||
|  | // NOTE: this now supports negative indexes to count pages from the end...
 | ||||||
| function setCurrentPage(n, offset, width){ | function setCurrentPage(n, offset, width){ | ||||||
|  | 	var page = $('.page') | ||||||
| 	if(n == null){ | 	if(n == null){ | ||||||
| 		var cur = $('.current.page') | 		var cur = $('.current.page') | ||||||
| 		n = $('.page').index(cur)  | 		// no current page...
 | ||||||
|  | 		// try to land on the magazine cover...
 | ||||||
|  | 		if(cur.length == 0){ | ||||||
|  | 			cur = $('.magazine > .cover') | ||||||
|  | 		} | ||||||
|  | 		// try the first cover...
 | ||||||
|  | 		if(cur.length == 0){ | ||||||
|  | 			cur = $('.cover.page') | ||||||
|  | 		} | ||||||
|  | 		// try first page...
 | ||||||
|  | 		if(cur.length == 0){ | ||||||
|  | 			cur = page.first() | ||||||
|  | 		} | ||||||
|  | 		// no pages to work with...
 | ||||||
|  | 		if(cur.length == 0){ | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		n = page.index(cur)  | ||||||
| 	} else if(typeof(n) == typeof(1)) { | 	} else if(typeof(n) == typeof(1)) { | ||||||
|  | 		// invalid n...
 | ||||||
|  | 		if(n >= page.length){ | ||||||
|  | 			n = page.length-1 | ||||||
|  | 		} else if(-n > page.length){ | ||||||
|  | 			n = 0 | ||||||
|  | 		} | ||||||
| 		var cur = getPageAt(n) | 		var cur = getPageAt(n) | ||||||
| 	} else { | 	} else { | ||||||
| 		var cur = $(n) | 		var cur = $(n) | ||||||
| @ -576,6 +606,11 @@ function setupNavigator(){ | |||||||
| 
 | 
 | ||||||
| 	updateNavigator() | 	updateNavigator() | ||||||
| 
 | 
 | ||||||
|  | 	// need to reconstruct indicators...
 | ||||||
|  | 	$('.magazine .page .bookmark').each(function(_, e){ | ||||||
|  | 		makeBookmarkIndicator($(e).parents('.page')) | ||||||
|  | 	}) | ||||||
|  | 	 | ||||||
| 	// setup event handlers...
 | 	// setup event handlers...
 | ||||||
| 	$('.viewer') | 	$('.viewer') | ||||||
| 		.on('pageChanged', function(e, n){updateNavigator(n)}) | 		.on('pageChanged', function(e, n){updateNavigator(n)}) | ||||||
| @ -583,11 +618,17 @@ function setupNavigator(){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function clearNavigator(){ | function clearNavigator(){ | ||||||
|  | 	// XXX this needs to unbind events...
 | ||||||
| 	$('.navigator .indicator').hide() | 	$('.navigator .indicator').hide() | ||||||
| 	clearBookmarkIndicators() | 	clearBookmarkIndicators() | ||||||
| 	clearArticleIndicators() | 	clearArticleIndicators() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function resetNavigator(){ | ||||||
|  | 	clearNavigator() | ||||||
|  | 	setupNavigator() | ||||||
|  | } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| function updateNavigator(n){ | function updateNavigator(n){ | ||||||
| 	var mag = $('.magazine') | 	var mag = $('.magazine') | ||||||
| @ -854,7 +895,10 @@ function createMagazine(){ | |||||||
| // XXX create article (magazine, title, position)...
 | // XXX create article (magazine, title, position)...
 | ||||||
| // 		- article
 | // 		- article
 | ||||||
| // 		- cover
 | // 		- cover
 | ||||||
| function createArticle(magazine, title){ | function createArticleBefore(article, title){ | ||||||
|  | 	// XXX
 | ||||||
|  | } | ||||||
|  | function createArticleAfter(article, title){ | ||||||
| 	// XXX
 | 	// XXX
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -862,8 +906,80 @@ function createArticle(magazine, title){ | |||||||
| // XXX create page (article, template, position)...
 | // XXX create page (article, template, position)...
 | ||||||
| // 		- page
 | // 		- page
 | ||||||
| // 		- content
 | // 		- content
 | ||||||
| function createPage(article, template){ | function createPageIn(article, template){ | ||||||
| 	// XXX
 | 	// XXX
 | ||||||
|  | 	$('.viewer').trigger('pageCreated', 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 = $('<div/>') | ||||||
|  | 		.addClass('page') | ||||||
|  | 		.append($('<div/>') | ||||||
|  | 				.addClass('content') | ||||||
|  | 				.text('Page')) | ||||||
|  | 		.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 = $('<div/>') | ||||||
|  | 		.addClass('page') | ||||||
|  | 		.append($('<div/>') | ||||||
|  | 				.addClass('content') | ||||||
|  | 				.text('Page')) | ||||||
|  | 		.insertBefore(page) | ||||||
|  | 
 | ||||||
|  | 	$('.viewer').trigger('pageCreated', res) | ||||||
|  | 
 | ||||||
|  | 	return res | ||||||
|  | } | ||||||
|  | // XXX make this push pages between articles...
 | ||||||
|  | function pushPageLeft(page){ | ||||||
|  | 	if(page == null){ | ||||||
|  | 		page = $('.current.page') | ||||||
|  | 	} | ||||||
|  | 	var prev = page.prev() | ||||||
|  | 	if(prev.length == 0){ | ||||||
|  | 		return page | ||||||
|  | 	} | ||||||
|  | 	page | ||||||
|  | 		.detach() | ||||||
|  | 		.insertBefore(prev) | ||||||
|  | 	setCurrentPage() | ||||||
|  | 
 | ||||||
|  | 	$('.viewer').trigger('pageMoved', page) | ||||||
|  | 
 | ||||||
|  | 	return page | ||||||
|  | } | ||||||
|  | // XXX make this push pages between articles...
 | ||||||
|  | function pushPageRight(page){ | ||||||
|  | 	if(page == null){ | ||||||
|  | 		page = $('.current.page') | ||||||
|  | 	} | ||||||
|  | 	var next = page.next() | ||||||
|  | 	if(next.length == 0){ | ||||||
|  | 		return page | ||||||
|  | 	} | ||||||
|  | 	page | ||||||
|  | 		.detach() | ||||||
|  | 		.insertAfter(next) | ||||||
|  | 	setCurrentPage() | ||||||
|  | 
 | ||||||
|  | 	$('.viewer').trigger('pageMoved', page) | ||||||
|  | 
 | ||||||
|  | 	return page | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user