Просмотр исходного кода

Fix issue #7 : ajout du mode endless

Marien Fressinaud 13 лет назад
Родитель
Сommit
567d19a989

+ 1 - 0
app/controllers/indexController.php

@@ -5,6 +5,7 @@ class indexController extends ActionController {
 		View::appendScript (Url::display ('/scripts/smoothscroll.js'));
 		View::appendScript (Url::display ('/scripts/shortcut.js'));
 		View::appendScript (Url::display (array ('c' => 'javascript', 'a' => 'main')));
+		View::appendScript (Url::display ('/scripts/endless_mode.js'));
 		
 		$entryDAO = new EntryDAO ();
 		$catDAO = new CategoryDAO ();

+ 1 - 1
app/views/index/index.phtml

@@ -14,7 +14,7 @@
 	<?php $this->entryPaginator->render ('pagination.phtml', 'page'); ?>
 	
 	<?php foreach ($items as $item) { ?>
-	<div class="post flux<?php echo !$item->isRead () ? ' not_read' : ''; ?><?php echo $item->isFavorite () ? ' favorite' : ''; ?>">
+	<div class="post flux<?php echo !$item->isRead () ? ' not_read' : ''; ?><?php echo $item->isFavorite () ? ' favorite' : ''; ?>" id="flux_<?php echo $item->id (); ?>">
 		<?php $author = $item->author (); ?>
 		<div class="before">
 			<?php $feed = $item->feed (true); ?>

+ 11 - 2
app/views/javascript/main.phtml

@@ -32,6 +32,11 @@ function slide (new_active, old_active) {
 			offset: new_active.position ().top + 25
 		});
 	}
+	
+	// si le dernier post est actif, on charge les suivants
+	if (new_active.attr ("id") == $(".post.flux:last").attr ("id")) {
+		load_more_posts ();
+	}
 }
 
 function add_not_read (nb) {
@@ -103,9 +108,9 @@ function mark_favorite (active) {
 	});
 }
 
-$(document).ready (function () {
+function init_posts () {
 	if (hide_posts) {
-		$(".post.flux .content").slideToggle ();
+		$(".post.flux:not(.active) .content").slideUp ();
 	}
 	
 	$(".post.flux").click (function () {
@@ -134,6 +139,10 @@ $(document).ready (function () {
 	$(".post.flux .content a").click (function () {
 		$(this).attr ('target', '_blank');
 	});
+}
+
+$(document).ready (function () {
+	init_posts ();
 
 	// Touches de manipulation
 	shortcut.add("<?php echo $s['mark_read']; ?>", function () {

+ 1 - 0
lib/lib_rss.php

@@ -186,6 +186,7 @@ function good_bye_extra ($element) {
 	$element->style = null;
 	$element->class = null;
 	$element->id = null;
+	$element->onload = null;
 }
 /* permet de récupérer le contenu d'un article pour un flux qui n'est pas complet */
 function get_content_by_parsing ($url, $path) {

+ 28 - 0
public/scripts/endless_mode.js

@@ -0,0 +1,28 @@
+var url = "";
+
+function load_more_posts () {
+	$.get (url, function (data) {
+		$("#load_more").before ($("#stream .post", data));
+		
+		url = $(".pagination:last li.pager-next a", data).attr ("href");
+		if (url === undefined) {
+			$("#load_more").html ("Il n'y a plus rien à charger");
+			$("#load_more").addClass ("disable");
+		}
+		
+		init_posts ();
+	});
+}
+
+$(document).ready (function () {
+	url = $(".pagination:last li.pager-next a").attr ("href");
+	$(".pagination").remove ();
+	
+	$("#stream").append ("<a id=\"load_more\" href=\"#\">Charger plus d'articles</a>");
+	
+	$("#load_more").click (function () {
+		load_more_posts ();
+		
+		return false;
+	});
+});

+ 16 - 0
public/theme/base.css

@@ -336,6 +336,22 @@ form {
 			display: block;
 			color: #F09600;
 			}
+a#load_more {
+	display: block;
+	width: 90%;
+	height: 50px;
+	margin: 0 auto;
+	background: #eee;
+	border-radius: 5px;
+	box-shadow: 0 0 3px #aaa;
+	line-height: 50px;
+	text-align: center;
+	font-weight: bold;
+}
+	a#load_more.disable {
+		text-decoration: none !important;
+		color: #666;
+	}
 
 /*** NOTIFICATION ***/
 #notification {