mirror of
				https://github.com/flynx/PortableMag.git
				synced 2025-10-31 12:00:11 +00:00 
			
		
		
		
	added basic persistent bookmarks ...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									1110c1d195
								
							
						
					
					
						commit
						a022c11743
					
				
							
								
								
									
										18
									
								
								magazine.css
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								magazine.css
									
									
									
									
									
								
							| @ -271,8 +271,8 @@ body { | ||||
| .navigator .bar .indicator { | ||||
| 	position: absolute; | ||||
| 	/* set this to the percentage of a page from magazine length */ | ||||
| 	width: 1%; | ||||
| 	min-width: 10px; | ||||
| 	width: 1%; | ||||
| 	height: 100%; | ||||
| } | ||||
| .navigator .bar .article { | ||||
| @ -301,6 +301,22 @@ body { | ||||
| 	-ms-transition: none;	 | ||||
| 	transition: none; | ||||
| } | ||||
| .navigator .bar .bookmark { | ||||
| 	position: absolute; | ||||
| 	font-size: 0px; | ||||
| 	width: 5px; | ||||
| 	height: 5px; | ||||
| 
 | ||||
| 	top: -250%; | ||||
| 
 | ||||
| 	background: red; | ||||
| 
 | ||||
| 	-webkit-transform: rotate(45deg); | ||||
| 	-moz-transform: rotate(45deg); | ||||
| 	-o-transform: rotate(45deg); | ||||
| 	-ms-transform: rotate(45deg); | ||||
| 	transform: rotate(45deg); | ||||
| } | ||||
| 
 | ||||
| /* splash screen. used to hide loading and aligning elements */ | ||||
| .splash { | ||||
|  | ||||
							
								
								
									
										67
									
								
								magazine.js
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								magazine.js
									
									
									
									
									
								
							| @ -78,6 +78,9 @@ function getPageNumber(page){ | ||||
| 	return $('.page').index(page)  | ||||
| } | ||||
| 
 | ||||
| function getPageAt(n){ | ||||
| 	return $($('.page')[n]) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /************************************************** event handlers ***/ | ||||
| @ -315,7 +318,7 @@ function setCurrentPage(n, offset, width){ | ||||
| 		var cur = $('.current.page') | ||||
| 		n = $('.page').index(cur)  | ||||
| 	} else if(typeof(n) == typeof(1)) { | ||||
| 		var cur = $($('.page')[n]) | ||||
| 		var cur = getPageAt(n) | ||||
| 	} else { | ||||
| 		var cur = $(n) | ||||
| 		n = $('.page').index(cur)  | ||||
| @ -504,10 +507,14 @@ function saveURLState(){ | ||||
| 
 | ||||
| // local storage state managers...
 | ||||
| function loadStorageState(){ | ||||
| 	return parseInt($.jStorage.get('current_page', 0)) | ||||
| 	return { | ||||
| 		current_page: parseInt($.jStorage.get('current_page', 0)), | ||||
| 		bookmarks: $.jStorage.get('bookmarks', []) | ||||
| 	} | ||||
| } | ||||
| function saveStorageState(){ | ||||
| 	$.jStorage.set('current_page', getPageNumber()) | ||||
| 	$.jStorage.set('bookmarks', getBookmarkList()) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @ -526,11 +533,13 @@ function dumpJSONState(){ | ||||
| // generic state managers...
 | ||||
| function loadState(){ | ||||
| 	var n = loadURLState() | ||||
| 	var state = loadStorageState()  | ||||
| 	if(n != null){ | ||||
| 		setCurrentPage(n) | ||||
| 	} else { | ||||
| 		setCurrentPage(loadStorageState()) | ||||
| 		setCurrentPage(state.current_page) | ||||
| 	} | ||||
| 	loadBookmarks(state.bookmarks) | ||||
| } | ||||
| function saveState(){ | ||||
| 	saveURLState() | ||||
| @ -562,7 +571,7 @@ function _makeArticleIndicator(i, article, width){ | ||||
| function setupArticleIndicators(W){ | ||||
| 	var articles = $('.magazine .article') | ||||
| 	// cleanup...
 | ||||
| 	$('.indicator .bar .article').remove() | ||||
| 	$('.navigator .bar .article').remove() | ||||
| 	// set article indicator positions...
 | ||||
| 	articles.each(function(i, e){ | ||||
| 		return _makeArticleIndicator(i, e, W) | ||||
| @ -626,6 +635,56 @@ function updateNavigator(n){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // XXX store bookmarks in a seporate place...
 | ||||
| // NOTE: this depends on the indicator bar...
 | ||||
| function makeBookmarkIndicator(n){ | ||||
| 	if(n == null){ | ||||
| 		n = getPageNumber() | ||||
| 	} else if(typeof(n) != typeof(1)){ | ||||
| 		n = getPageNumber(n) | ||||
| 	} | ||||
| 	var bar = $('.navigator .bar') | ||||
| 	var pages = $('.page').length | ||||
| 	var width = bar.width()/pages | ||||
| 	var res = $('<div/>') | ||||
| 		.prependTo($('.navigator .bar')) | ||||
| 		.addClass('bookmark') | ||||
| 		.css({ | ||||
| 			left: width*n | ||||
| 		}) | ||||
| 		.attr({ | ||||
| 			page: n | ||||
| 		}) | ||||
| 		.click(function(){ | ||||
| 			setCurrentPage(n) | ||||
| 		}) | ||||
| 
 | ||||
| 	// XXX should this be here???
 | ||||
| 	saveState() | ||||
| 
 | ||||
| 	return res | ||||
| } | ||||
| 
 | ||||
| function loadBookmarks(lst){ | ||||
| 	$(lst).each(function(i, e){makeBookmarkIndicator(e)}) | ||||
| } | ||||
| function getBookmarkList(){ | ||||
| 	var res = [] | ||||
| 	$('.navigator .bar .bookmark').each(function(_, e){res.push(parseInt($(e).attr('page')))}) | ||||
| 	return res | ||||
| } | ||||
| function clearBookmarkIndicators(){ | ||||
| 	$('.navigator .bar .bookmark').remove() | ||||
| } | ||||
| 
 | ||||
| // XXX move this to actions...
 | ||||
| function nextBookmark(){ | ||||
| 	// XXX
 | ||||
| } | ||||
| function prevBookmark(){ | ||||
| 	// XXX
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /********************************************************** editor ***/ | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user