A free, self-hostable aggregator…
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

285 lines
6.4 KiB

<?php if ($this->conf->displayPosts () == 'no') { ?>
var hide_posts = true;
<?php } else { ?>
var hide_posts = false;
<?php } ?>
<?php
$s = $this->conf->shortcuts ();
$mark = $this->conf->markWhen ();
?>
function redirect (url, new_tab) {
if (url) {
if (new_tab) {
window.open (url);
} else {
location.href = url;
}
}
}
function toggleContent (new_active, old_active) {
old_active.removeClass ("active");
if (old_active[0] != new_active[0]) {
new_active.addClass ("active");
}
if (hide_posts) {
old_active.children (".flux_content").toggle (0);
if (old_active[0] != new_active[0]) {
new_active.children (".flux_content").toggle (0, function () {
$("html,body").scrollTop (new_active.position ().top);
});
}
} else {
$("html,body").scrollTop (new_active.position ().top);
}
<?php if ($mark['article'] == 'yes') { ?>
mark_read(new_active, true);
<?php } ?>
}
var load = false;
function mark_read (active, only_not_read) {
if (active[0] === undefined || (
only_not_read === true && !active.hasClass("not_read")) ||
load === true) {
return false;
}
load = true;
url = active.find ("a.read").attr ("href");
if (url === undefined) {
load = false;
return false;
}
$.ajax ({
type: 'POST',
url: url,
data : { ajax: true }
}).done (function (data) {
res = jQuery.parseJSON(data);
active.find ("a.read").attr ("href", res.url);
if (active.hasClass ("not_read")) {
active.removeClass ("not_read");
} else {
active.addClass ("not_read");
}
load = false;
});
}
function mark_favorite (active) {
if (active[0] === undefined ||
load === true) {
return false;
}
load = true;
url = active.find ("a.bookmark").attr ("href");
if (url === undefined) {
load = false;
return false;
}
$.ajax ({
type: 'POST',
url: url,
data : { ajax: true }
}).done (function (data) {
res = jQuery.parseJSON(data);
active.find ("a.bookmark").attr ("href", res.url);
if (active.hasClass ("favorite")) {
active.removeClass ("favorite");
} else {
active.addClass ("favorite");
}
load = false;
});
}
function init_img () {
$(".flux .content img").each (function () {
if ($(this).width () > ($("#stream .content").width()) / 2) {
$(this).addClass("big");
}
});
}
function init_posts () {
<?php if ($mark['page'] == 'yes') { ?>
if ($(".flux.not_read")[0] != undefined) {
url = $(".nav_menu a.read_all").attr ("href");
redirect (url, false);
}
<?php } ?>
init_img ();
if (hide_posts) {
$(".flux:not(.active) .flux_content").hide ();
}
$(".flux_header .item.title, .flux_header .item.date").click (function () {
old_active = $(".flux.active");
new_active = $(this).parent ().parent ();
toggleContent (new_active, old_active);
});
$(".flux a.read").click (function () {
active = $(this).parents (".flux");
mark_read (active, false);
return false;
});
$(".flux a.bookmark").click (function () {
active = $(this).parents (".flux");
mark_favorite (active);
return false;
});
$(".flux .content a").click (function () {
$(this).attr ('target', '_blank');
});
<?php if ($mark['site'] == 'yes') { ?>
$(".flux .link a").click (function () {
mark_read($(this).parent().parent().parent(), true);
});
<?php } ?>
}
function init_column_categories () {
$(".category").addClass ("stick");
$(".categories .category .btn:first-child").width ("160px");
$(".category").append ("<a class=\"btn dropdown-toggle\" href=\"#\"><i class=\"icon i_down\"></i></a>");
$(".category + .feeds").not(".active").hide();
$(".category.active a.dropdown-toggle i").toggleClass ("i_up");
$(".category a.dropdown-toggle").click (function () {
$(this).children ().toggleClass ("i_up");
$(this).parent ().next (".feeds").slideToggle();
return false;
});
}
function init_shortcuts () {
// Touches de manipulation
shortcut.add("<?php echo $s['mark_read']; ?>", function () {
// on marque comme lu ou non lu
active = $(".flux.active");
mark_read (active, false);
}, {
'disable_in_input':true
});
shortcut.add("shift+<?php echo $s['mark_read']; ?>", function () {
// on marque tout comme lu
url = $(".nav_menu a.read_all").attr ("href");
redirect (url, false);
}, {
'disable_in_input':true
});
shortcut.add("<?php echo $s['mark_favorite']; ?>", function () {
// on marque comme favori ou non favori
active = $(".flux.active");
mark_favorite (active);
}, {
'disable_in_input':true
});
// Touches de navigation
shortcut.add("<?php echo $s['prev_entry']; ?>", function () {
old_active = $(".flux.active");
last_active = $(".flux:last");
new_active = old_active.prevAll (".flux:first");
if (new_active.hasClass("flux")) {
toggleContent (new_active, old_active);
} else if (old_active[0] === undefined &&
new_active[0] === undefined) {
toggleContent (last_active, old_active);
}
}, {
'disable_in_input':true
});
shortcut.add("shift+<?php echo $s['prev_entry']; ?>", function () {
old_active = $(".flux.active");
first = $(".flux:first");
if (first.hasClass("flux")) {
toggleContent (first, old_active);
}
}, {
'disable_in_input':true
});
shortcut.add("<?php echo $s['next_entry']; ?>", function () {
old_active = $(".flux.active");
first_active = $(".flux:first");
new_active = old_active.nextAll (".flux:first");
if (new_active.hasClass("flux")) {
toggleContent (new_active, old_active);
} else if (old_active[0] === undefined &&
new_active[0] === undefined) {
toggleContent (first_active, old_active);
}
}, {
'disable_in_input':true
});
shortcut.add("shift+<?php echo $s['next_entry']; ?>", function () {
old_active = $(".flux.active");
last = $(".flux:last");
if (last.hasClass("flux")) {
toggleContent (last, old_active);
}
}, {
'disable_in_input':true
});
shortcut.add("<?php echo $s['next_page']; ?>", function () {
url = $(".pager-next a").attr ("href");
redirect (url, false);
}, {
'disable_in_input':true
});
shortcut.add("<?php echo $s['prev_page']; ?>", function () {
url = $(".pager-previous a").attr ("href");
redirect (url, false);
}, {
'disable_in_input':true
});
shortcut.add("<?php echo $s['go_website']; ?>", function () {
url = $(".flux.active .link a").attr ("href");
<?php if ($mark['site'] == 'yes') { ?>
$(".flux.active").each (function () {
mark_read($(this), true);
});
<?php } ?>
redirect (url, true);
}, {
'disable_in_input':true
});
}
$(document).ready (function () {
init_posts ();
init_column_categories ();
init_shortcuts ();
});