Have arrowkey nav use HTML next/prev links
This commit is contained in:
parent
015a597027
commit
13f4de8c14
@ -84,15 +84,15 @@ class BaseThemelet
|
|||||||
$body = $this->build_paginator($page_number, $total_pages, $base, $query, $show_random);
|
$body = $this->build_paginator($page_number, $total_pages, $base, $query, $show_random);
|
||||||
$page->add_block(new Block(null, $body, "main", 90, "paginator"));
|
$page->add_block(new Block(null, $body, "main", 90, "paginator"));
|
||||||
|
|
||||||
$page->add_html_header("<link rel='first' href='".make_link($base.'/1', $query)."'>");
|
$page->add_html_header("<link rel='first' href='".make_http(make_link($base.'/1', $query))."'>");
|
||||||
if ($page_number < $total_pages) {
|
if ($page_number < $total_pages) {
|
||||||
$page->add_html_header("<link rel='prefetch' href='".make_link($base.'/'.($page_number+1), $query)."'>");
|
$page->add_html_header("<link rel='prefetch' href='".make_http(make_link($base.'/'.($page_number+1), $query))."'>");
|
||||||
$page->add_html_header("<link rel='next' href='".make_link($base.'/'.($page_number+1), $query)."'>");
|
$page->add_html_header("<link rel='next' href='".make_http(make_link($base.'/'.($page_number+1), $query))."'>");
|
||||||
}
|
}
|
||||||
if ($page_number > 1) {
|
if ($page_number > 1) {
|
||||||
$page->add_html_header("<link rel='previous' href='".make_link($base.'/'.($page_number-1), $query)."'>");
|
$page->add_html_header("<link rel='previous' href='".make_http(make_link($base.'/'.($page_number-1), $query))."'>");
|
||||||
}
|
}
|
||||||
$page->add_html_header("<link rel='last' href='".make_link($base.'/'.$total_pages, $query)."'>");
|
$page->add_html_header("<link rel='last' href='".make_http(make_link($base.'/'.$total_pages, $query))."'>");
|
||||||
}
|
}
|
||||||
|
|
||||||
private function gen_page_link(string $base_url, ?string $query, int $page, string $name): string
|
private function gen_page_link(string $base_url, ?string $query, int $page, string $name): string
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
class ArrowkeyNavigationInfo extends ExtensionInfo
|
|
||||||
{
|
|
||||||
public const KEY = "arrowkey_navigation";
|
|
||||||
|
|
||||||
public $key = self::KEY;
|
|
||||||
public $name = "Arrow Key Navigation";
|
|
||||||
public $url = "http://www.drudexsoftware.com/";
|
|
||||||
public $authors = ["Drudex Software"=>"support@drudexsoftware.com"];
|
|
||||||
public $license = self::LICENSE_GPLV2;
|
|
||||||
public $description = "Allows viewers no navigate between images using the left & right arrow keys.";
|
|
||||||
public $documentation =
|
|
||||||
"Simply enable this extension in the extension manager to enable arrow key navigation.";
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
class ArrowkeyNavigation extends Extension
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Adds functionality for post/view on images.
|
|
||||||
*/
|
|
||||||
public function onDisplayingImage(DisplayingImageEvent $event)
|
|
||||||
{
|
|
||||||
$prev_url = make_http(make_link("post/prev/".$event->image->id));
|
|
||||||
$next_url = make_http(make_link("post/next/".$event->image->id));
|
|
||||||
$this->add_arrowkeys_code($prev_url, $next_url);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds functionality for post/list.
|
|
||||||
*/
|
|
||||||
public function onPageRequest(PageRequestEvent $event)
|
|
||||||
{
|
|
||||||
if ($event->page_matches("post/list")) {
|
|
||||||
$pageinfo = $this->get_list_pageinfo($event);
|
|
||||||
$prev_url = make_http(make_link("post/list/".$pageinfo["prev"]));
|
|
||||||
$next_url = make_http(make_link("post/list/".$pageinfo["next"]));
|
|
||||||
$this->add_arrowkeys_code($prev_url, $next_url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds the javascript to the page with the given urls.
|
|
||||||
*/
|
|
||||||
private function add_arrowkeys_code(string $prev_url, string $next_url)
|
|
||||||
{
|
|
||||||
global $page;
|
|
||||||
|
|
||||||
$page->add_html_header("<script type=\"text/javascript\">
|
|
||||||
(function($){
|
|
||||||
$(document).keyup(function(e) {
|
|
||||||
if($(e.target).is('input', 'textarea')){ return; }
|
|
||||||
if (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) { return; }
|
|
||||||
if (e.keyCode == 37) { window.location.href = '{$prev_url}'; }
|
|
||||||
else if (e.keyCode == 39) { window.location.href = '{$next_url}'; }
|
|
||||||
});
|
|
||||||
})(jQuery);
|
|
||||||
</script>", 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns info about the current page number.
|
|
||||||
*/
|
|
||||||
private function get_list_pageinfo(PageRequestEvent $event): array
|
|
||||||
{
|
|
||||||
global $config, $database;
|
|
||||||
|
|
||||||
// get the amount of images per page
|
|
||||||
$images_per_page = $config->get_int(IndexConfig::IMAGES);
|
|
||||||
|
|
||||||
if ($event->count_args() > 1) {
|
|
||||||
// if there are tags, use pages with tags
|
|
||||||
$prefix = url_escape($event->get_arg(0)) . "/";
|
|
||||||
$page_number = $event->try_page_num(1);
|
|
||||||
$total_pages = ceil($database->get_one(
|
|
||||||
"SELECT count FROM tags WHERE tag=:tag",
|
|
||||||
["tag"=>$event->get_arg(0)]
|
|
||||||
) / $images_per_page);
|
|
||||||
} else {
|
|
||||||
// if there are no tags, use default
|
|
||||||
$prefix = "";
|
|
||||||
$page_number = $event->try_page_num(0);
|
|
||||||
$total_pages = ceil($database->get_one(
|
|
||||||
"SELECT COUNT(*) FROM images"
|
|
||||||
) / $images_per_page);
|
|
||||||
}
|
|
||||||
|
|
||||||
// creates previous & next values
|
|
||||||
// When previous first page, go to last page
|
|
||||||
if ($page_number <= 1) {
|
|
||||||
$prev = $total_pages;
|
|
||||||
} else {
|
|
||||||
$prev = $page_number-1;
|
|
||||||
}
|
|
||||||
if ($page_number >= $total_pages) {
|
|
||||||
$next = 1;
|
|
||||||
} else {
|
|
||||||
$next = $page_number+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create return array
|
|
||||||
return [
|
|
||||||
"prev" => $prefix.$prev,
|
|
||||||
"next" => $prefix.$next,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
@ -32,6 +32,7 @@ $(document).ready(function() {
|
|||||||
/** Setup tablesorter **/
|
/** Setup tablesorter **/
|
||||||
$("table.sortable").tablesorter();
|
$("table.sortable").tablesorter();
|
||||||
|
|
||||||
|
/** Setup sidebar toggle **/
|
||||||
try {
|
try {
|
||||||
var sidebar_hidden = (Cookies.get("ui-sidebar-hidden") || "").split("|");
|
var sidebar_hidden = (Cookies.get("ui-sidebar-hidden") || "").split("|");
|
||||||
for(var i in sidebar_hidden) {
|
for(var i in sidebar_hidden) {
|
||||||
@ -53,7 +54,7 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (var i in sidebar_hidden) {
|
for (var i in sidebar_hidden) {
|
||||||
if (sidebar_hidden[i] === tid) {
|
if (sidebar_hidden[i] === tid) {
|
||||||
sidebar_hidden.splice(i, 1);
|
sidebar_hidden.splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,6 +63,7 @@ $(document).ready(function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** setup unlocker buttons **/
|
||||||
$(".shm-unlocker").each(function(idx, elm) {
|
$(".shm-unlocker").each(function(idx, elm) {
|
||||||
var tid = $(elm).data("unlock-sel");
|
var tid = $(elm).data("unlock-sel");
|
||||||
var tob = $(tid);
|
var tob = $(tid);
|
||||||
@ -70,4 +72,16 @@ $(document).ready(function() {
|
|||||||
tob.attr("disabled", false);
|
tob.attr("disabled", false);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** setup arrow key bindings **/
|
||||||
|
$(document).keyup(function(e) {
|
||||||
|
if($(e.target).is('input', 'textarea')){ return; }
|
||||||
|
if (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) { return; }
|
||||||
|
if (e.keyCode == 37 && $("[rel='prev']").length) {
|
||||||
|
window.location.href = $("[rel='pref']").attr("href");
|
||||||
|
}
|
||||||
|
else if (e.keyCode == 39 && $("[rel='next']").length) {
|
||||||
|
window.location.href = $("[rel='next']").attr("href");
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user