mirror of
				https://github.com/flynx/PortableMag.git
				synced 2025-10-31 12:00:11 +00:00 
			
		
		
		
	more work on the editor...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									f09c16d58d
								
							
						
					
					
						commit
						c1c99487d6
					
				
							
								
								
									
										16
									
								
								TODO.otl
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								TODO.otl
									
									
									
									
									
								
							| @ -1,4 +1,4 @@ | |||||||
| [_] 30% Priority work | [_] 28% Priority work | ||||||
| 	[_] 0% TouchSwipe issues... | 	[_] 0% TouchSwipe issues... | ||||||
| 		[_] BUG: swipe-back does not cancel a swipe... (TouchSwipe) | 		[_] BUG: swipe-back does not cancel a swipe... (TouchSwipe) | ||||||
| 		| ...unless the finger is return to within the threshold of the  | 		| ...unless the finger is return to within the threshold of the  | ||||||
| @ -183,20 +183,20 @@ | |||||||
| 			[_] 0% issue download | 			[_] 0% issue download | ||||||
| 				[_] whole edition dowload and update (primary mode) | 				[_] whole edition dowload and update (primary mode) | ||||||
| 				[_] seporate issue download (secondary) | 				[_] seporate issue download (secondary) | ||||||
| 	[_] 46% stage 4 - editor and templating | 	[_] 33% stage 4 - editor and templating | ||||||
| 		[_] % template engine | 		[_] 0% template engine | ||||||
| 		[_] 46% edition editor / publisher | 		[_] 66% edition editor / publisher | ||||||
| 			[X] create/delete magazine | 			[X] create/delete magazine | ||||||
| 			[X] cover | 			[X] cover | ||||||
| 			[_] 33% article | 			[_] 33% article | ||||||
| 				[X] add | 				[X] add | ||||||
| 				[_] delete | 				[_] delete | ||||||
| 				[_] move | 				[_] move | ||||||
| 			[_] 0% page | 			[X] 100% page | ||||||
| 				[_] add | 				[X] add | ||||||
| 				| from template | 				| from template | ||||||
| 				[_] delete | 				[X] delete | ||||||
| 				[_] move | 				[X] move | ||||||
| 			[_] 0% fill template field | 			[_] 0% fill template field | ||||||
| 				[_] image | 				[_] image | ||||||
| 				[_] text | 				[_] text | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								magazine.css
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								magazine.css
									
									
									
									
									
								
							| @ -179,6 +179,10 @@ body { | |||||||
| 	vertical-align: bottom; | 	vertical-align: bottom; | ||||||
| 	top: 50%; | 	top: 50%; | ||||||
| 
 | 
 | ||||||
|  | 	min-width: 200px; | ||||||
|  | 	/* can we avoid setting the sizes in so many places? */ | ||||||
|  | 	height: 600px; | ||||||
|  | 
 | ||||||
| 	/* this is minus half the page width */ | 	/* this is minus half the page width */ | ||||||
| 	/* XXX change to relative units... */ | 	/* XXX change to relative units... */ | ||||||
| 	margin-left: -400px; | 	margin-left: -400px; | ||||||
| @ -189,6 +193,10 @@ body { | |||||||
| 	-ms-transition: all 0.2s ease;	 | 	-ms-transition: all 0.2s ease;	 | ||||||
| 	transition: all 0.2s ease; | 	transition: all 0.2s ease; | ||||||
| } | } | ||||||
|  | /* XXX does not appear to work... (likely because :before/:after mess things up) */ | ||||||
|  | .magazine:empty { | ||||||
|  | 	background: silver; | ||||||
|  | } | ||||||
| .dragging .magazine { | .dragging .magazine { | ||||||
| 	-webkit-transition: none; | 	-webkit-transition: none; | ||||||
| 	-moz-transition: none; | 	-moz-transition: none; | ||||||
| @ -203,7 +211,8 @@ body { | |||||||
| 	display: inline-block; | 	display: inline-block; | ||||||
| 	text-align: center; | 	text-align: center; | ||||||
| 
 | 
 | ||||||
| 	top: -50%; | 	/*top: -50%;*/ | ||||||
|  | 	top: -25%; | ||||||
| 
 | 
 | ||||||
| 	height: 300px; | 	height: 300px; | ||||||
| 	width: 600px; | 	width: 600px; | ||||||
| @ -240,6 +249,10 @@ body { | |||||||
| 	overflow: visible; | 	overflow: visible; | ||||||
| 	white-space: nowrap; | 	white-space: nowrap; | ||||||
| 	font-size: 0px; | 	font-size: 0px; | ||||||
|  | 	min-width: 200px; | ||||||
|  | } | ||||||
|  | .article:empty { | ||||||
|  | 	color: silver; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .article > .cover { | .article > .cover { | ||||||
|  | |||||||
							
								
								
									
										87
									
								
								magazine.js
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								magazine.js
									
									
									
									
									
								
							| @ -946,25 +946,42 @@ function createArticleBefore(article, title){ | |||||||
| 	if(article == null){ | 	if(article == null){ | ||||||
| 		article = $('.current.page').parents('.article') | 		article = $('.current.page').parents('.article') | ||||||
| 	} | 	} | ||||||
| 	// XXX
 | 	// XXX fill the data...
 | ||||||
|  | 	var res = _createArticle().insertBefore(article) | ||||||
|  | 	setCurrentPage() | ||||||
|  | 	$('.viewer').trigger('articleCreated', res) | ||||||
|  | 	return res | ||||||
| } | } | ||||||
| function createArticleAfter(article, title){ | function createArticleAfter(article, title){ | ||||||
| 	if(article == null){ | 	if(article == null){ | ||||||
| 		article = $('.current.page').parents('.article') | 		article = $('.current.page').parents('.article') | ||||||
| 	} | 	} | ||||||
| 	// XXX
 | 	// XXX fill the data...
 | ||||||
|  | 	var res = _createArticle().insertAfter(article) | ||||||
|  | 	setCurrentPage() | ||||||
|  | 	$('.viewer').trigger('articleCreated', res) | ||||||
|  | 	return res | ||||||
| } | } | ||||||
| function removeArticle(article){ | function removeArticle(article){ | ||||||
| 	// XXX
 | 	if(article == null){ | ||||||
|  | 		article = $('.current.page').parents('.article') | ||||||
|  | 	} | ||||||
|  | 	article.remove() | ||||||
|  | 	setCurrentPage() | ||||||
| 	$('.viewer').trigger('articleRemoved', res) | 	$('.viewer').trigger('articleRemoved', res) | ||||||
|  | 	return res | ||||||
| } | } | ||||||
| function shiftArticleLeft(article){ | function shiftArticleLeft(article){ | ||||||
| 	// XXX
 | 	// XXX
 | ||||||
|  | 	setCurrentPage() | ||||||
| 	$('.viewer').trigger('articleMoved', res) | 	$('.viewer').trigger('articleMoved', res) | ||||||
|  | 	return res | ||||||
| } | } | ||||||
| function shiftArticleRight(article){ | function shiftArticleRight(article){ | ||||||
| 	// XXX
 | 	// XXX
 | ||||||
|  | 	setCurrentPage() | ||||||
| 	$('.viewer').trigger('articleMoved', res) | 	$('.viewer').trigger('articleMoved', res) | ||||||
|  | 	return res | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -981,7 +998,6 @@ function createPageIn(article, template){ | |||||||
| 	} | 	} | ||||||
| 	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...
 | ||||||
| @ -990,11 +1006,8 @@ 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 | ||||||
| } | } | ||||||
| // XXX prevent this from working outside of an article....
 | // XXX prevent this from working outside of an article....
 | ||||||
| @ -1002,11 +1015,8 @@ 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){ | function removePage(page){ | ||||||
| @ -1017,56 +1027,49 @@ function removePage(page){ | |||||||
| 	var cur = getPageNumber() | 	var cur = getPageNumber() | ||||||
| 	page.remove() | 	page.remove() | ||||||
| 	setCurrentPage(cur) | 	setCurrentPage(cur) | ||||||
| 
 |  | ||||||
| 	$('.viewer').trigger('pageRemoved', page) | 	$('.viewer').trigger('pageRemoved', page) | ||||||
| 
 |  | ||||||
| 	return page | 	return page | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // XXX should this move to before or after???
 | // 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){ | function movePageTo(page, position){ | ||||||
| 	// XXX
 | 	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) | 	$('.viewer').trigger('pageMoved', page) | ||||||
| 	return page | 	return page | ||||||
| } | } | ||||||
| // XXX make this push pages between articles...
 |  | ||||||
| // 		or should it be a seporate method...
 |  | ||||||
| // XXX should this contain a number of steps?
 |  | ||||||
| function shiftPageLeft(page){ | function shiftPageLeft(page){ | ||||||
| 	if(page == null){ | 	if(page == null){ | ||||||
| 		page = $('.current.page') | 		page = $('.current.page') | ||||||
| 	} | 	} | ||||||
| 	var prev = page.prev() | 	movePageTo(page, getPageNumber(page)-1) | ||||||
| 	if(prev.length == 0){ |  | ||||||
| 	return page | 	return page | ||||||
| } | } | ||||||
| 	page |  | ||||||
| 		.detach() |  | ||||||
| 		.insertBefore(prev) |  | ||||||
| 	setCurrentPage() |  | ||||||
| 
 |  | ||||||
| 	$('.viewer').trigger('pageMoved', page) |  | ||||||
| 
 |  | ||||||
| 	return page |  | ||||||
| } |  | ||||||
| // XXX make this push pages between articles...
 |  | ||||||
| // 		or should it be a seporate method...
 |  | ||||||
| // XXX should this contain a number of steps?
 |  | ||||||
| function shiftPageRight(page){ | function shiftPageRight(page){ | ||||||
| 	if(page == null){ | 	if(page == null){ | ||||||
| 		page = $('.current.page') | 		page = $('.current.page') | ||||||
| 	} | 	} | ||||||
| 	var next = page.next() | 	movePageTo(page, getPageNumber(page)+2) | ||||||
| 	if(next.length == 0){ |  | ||||||
| 		return page |  | ||||||
| 	} |  | ||||||
| 	page |  | ||||||
| 		.detach() |  | ||||||
| 		.insertAfter(next) |  | ||||||
| 	setCurrentPage() |  | ||||||
| 
 |  | ||||||
| 	$('.viewer').trigger('pageMoved', page) |  | ||||||
| 
 |  | ||||||
| 	return page | 	return page | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user