mangadex/templates/bootstrap4/index.tpl.php

379 lines
16 KiB
PHP
Raw Normal View History

2021-03-19 16:06:32 -04:00
<?php
$env = (defined('DEBUG') && DEBUG) ? 'dev' : 'prod';
?>
2021-03-14 17:31:55 -04:00
<!DOCTYPE html>
<html lang="en">
2021-03-19 16:06:32 -04:00
2021-03-14 17:31:55 -04:00
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="robots" content="index,follow" />
<meta name="author" content="MangaDex" />
<meta name="description" content="<?= $templateVar['og']['description'] ?>" />
<meta name="keywords" itemprop="keywords" content="<?= $templateVar['og']['keywords'] ?>" />
<meta name="theme-color" content="#<?= ($templateVar['user']->style == 1) ? 'eeeeee' : '272b30' ?>">
<meta property="og:site_name" content="<?= TITLE ?>" />
<meta property="og:title" content="<?= $templateVar['og']['title'] ?>" />
<meta property="og:image" content="<?= $templateVar['og']['image'] ?>" />
<meta property="og:url" content="<?= "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]" ?>" />
<meta property="og:description" content="<?= $templateVar['og']['description'] ?>" />
<meta property="og:type" content="website" />
2021-03-19 16:06:32 -04:00
<meta name="twitter:site" content="@mangadex" />
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png?1">
2021-03-14 17:31:55 -04:00
<link rel="icon" type="image/png" sizes="192x192" href="/favicon-192x192.png?1">
2021-03-19 16:06:32 -04:00
<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
<link rel="search" type="application/opensearchdescription+xml" title="MangaDex Quick Search" href="/opensearch.xml">
2021-03-14 17:31:55 -04:00
<?= $templateVar['og']['canonical'] ?>
<title><?= $templateVar['og']['title'] ?></title>
<!-- Google Tag Manager -->
2021-03-19 16:06:32 -04:00
<script>
(function(w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-TS59XX9');
</script>
2021-03-14 17:31:55 -04:00
<!-- End Google Tag Manager -->
<!-- Google fonts -->
<link href="https://fonts.googleapis.com/css?family=Ubuntu:regular,regularitalic,bold" rel="stylesheet">
2021-03-19 16:06:32 -04:00
<?php if ($templateVar['page'] == 'drama') { ?>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:regular,regularitalic,bold" rel="stylesheet">
<?php } ?>
2021-03-14 17:31:55 -04:00
<!-- Bootstrap core CSS -->
<link href="/bootstrap/css/bootstrap.css?<?= @filemtime(ABSPATH . '/bootstrap/css/bootstrap.css') ?>" rel="stylesheet" />
<!-- Bootstrap select CSS -->
<link href="/bootstrap/css/bootstrap-select.min.css" rel="stylesheet" />
<!-- OWL CSS -->
<link href="/scripts/owl/assets/owl.carousel.min.css" rel="stylesheet" />
2021-03-19 16:06:32 -04:00
<link href="/scripts/owl/assets/owl.theme.default.min.css" rel="stylesheet" />
2021-03-14 17:31:55 -04:00
<!-- Fontawesone glyphicons -->
<link href="/fontawesome/css/all.css" rel="stylesheet" />
<!-- lightbox CSS -->
<link href="/scripts/lightbox2/css/lightbox.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="/scripts/css/theme.css?<?= @filemtime(ABSPATH . '/scripts/css/theme.css') ?>" rel="stylesheet" />
<link href="/scripts/css/<?= THEMES[$templateVar['theme_id']] ?>.css?<?= @filemtime(ABSPATH . "/scripts/css/" . THEMES[$templateVar['user']->style] . ".css") ?>" rel="stylesheet" />
<?php if (in_array($templateVar['page'], ['chapter', 'chapter_test']) && (!isset($_GET['mode']) || $_GET['mode'] == 'chapter') && !$templateVar['user']->reader) { ?>
<meta name="app" content="MangaDex" data-guest="<?= $templateVar['user']->user_id ? 0 : 1 ?>" data-chapter-id="<?= $_GET['id'] ?? '' ?>" data-page="<?= isset($_GET['p']) ? $_GET['p'] : 1 ?>" />
<?php }
2021-03-19 16:06:32 -04:00
if (in_array($templateVar['page'], ['chapter']) && (!isset($_GET['mode']) || $_GET['mode'] == 'chapter') && !$templateVar['user']->reader) { ?>
2021-03-14 17:31:55 -04:00
<link href="/scripts/css/reader.css?<?= @filemtime(ABSPATH . "/scripts/css/reader.css") ?>" rel="stylesheet" />
<?php } ?>
2021-03-19 16:06:32 -04:00
<script type="module" src="/dist/js/bundle.<?= $env ?>.js?<?= @filemtime(ABSPATH . "/dist/js/bundle.$env.js") ?>"></script>
2021-03-14 17:31:55 -04:00
</head>
<body>
<!-- Google Tag Manager (noscript) -->
2021-03-19 16:06:32 -04:00
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TS59XX9" height="0" width="0" style="display:none; visibility:hidden"></iframe></noscript>
2021-03-14 17:31:55 -04:00
<!-- End Google Tag Manager (noscript) -->
<!-- Fixed navbar -->
<?= parse_template('partials/navbar', $templateVar) ?>
<div class="container" role="main" id="content">
<?php if (!$templateVar['user']->activated && $templateVar['user']->user_id)
print display_alert("warning", "Warning", "Your account is currently unactivated. Please enter your activation code <a href='/activation'>here</a> for access to all of " . TITLE . "'s features."); ?>
2021-03-19 16:06:32 -04:00
<?php if (is_array($templateVar['announcement']) && count($templateVar['announcement']) > 0 && !$templateVar['user']->read_announcement && !in_array($templateVar['page'], ['chapter', 'list'])) { ?>
<div id="announcement" class="alert alert-success <?= $templateVar['user']->user_id ? 'alert-dismissible ' : '' ?>fade show text-center" role="alert">
<?php if ($templateVar['user']->user_id) { ?>
<button id="read_announcement_button" type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<?php } ?>
<?php foreach ($templateVar['announcement'] as $idx => $row) { ?>
<strong>Announcement (<?= date('M-d', $row->timestamp) ?>):</strong> <?= $row->thread_name ?> <a title="Go to forum thread" href="/thread/<?= $row->thread_id ?>"><?= display_fa_icon('external-link-alt', 'Forum thread') ?></a>
<?php if ($idx < count($templateVar['announcement']) - 1) { ?>
<hr style="margin-right: -<?= $templateVar['user']->user_id ? 4 : 1.25 ?>rem; margin-left: -1.25rem;" />
<?php } ?>
<?php } ?>
</div>
2021-03-14 17:31:55 -04:00
<?php } ?>
<?php
2021-03-19 16:06:32 -04:00
/** Print page content */
print $templateVar['page_html'];
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
if (validate_level($templateVar['user'], 'admin') && $templateVar['page'] != 'chapter')
print_r($templateVar['sql']->debug());
2021-03-14 17:31:55 -04:00
?>
</div> <!-- /container -->
<!-- message_container -->
<div id="message_container" class="display-none"></div>
<!-- /container -->
<!-- Modal -->
<div class="modal fade" id="homepage_settings_modal" tabindex="-1" role="dialog" aria-labelledby="homepage_settings_label" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
2021-03-19 16:06:32 -04:00
<h5 class="modal-title" id="homepage_settings_label"><?= display_fa_icon('cog') ?> MangaDex settings</h5>
2021-03-14 17:31:55 -04:00
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form method="post" id="homepage_settings_form">
<div class="form-group row">
<label for="language" class="col-lg-3 col-form-label-modal">Site theme:</label>
<div class="col-lg-9">
<select class="form-control selectpicker" id="theme_id" name="theme_id">
<?php
foreach (THEMES as $key => $theme) {
$selected = ($templateVar['theme_id'] == $key) ? 'selected' : '';
print "<option $selected value='$key'>$theme</option>";
}
?>
</select>
</div>
</div>
<div class="form-group row">
<label for="default_lang_ids" class="col-lg-3 col-form-label-modal">Filter chapter languages:</label>
<div class="col-lg-9">
<select multiple class="form-control selectpicker show-tick" data-actions-box="true" data-selected-text-format="count > 5" data-size="10" id="default_lang_ids" name="default_lang_ids[]" title="All langs">
<?= display_languages_select($templateVar['lang_id_filter_array']) ?>
</select>
</div>
</div>
<div class="form-group row">
<label for="display_language" class="col-lg-3 col-form-label-modal">User interface language:</label>
<div class="col-lg-9">
<select class="form-control selectpicker" id="display_lang_id" name="display_lang_id" data-size="10">
<?= display_languages_select([$templateVar['ui_lang']->lang_id]) ?>
</select>
</div>
</div>
<?php if ($templateVar['user']->hentai_mode) { ?>
2021-03-19 16:06:32 -04:00
<div class="form-group row">
<label class="col-lg-3 col-form-label-modal" for="hentai_mode">Hentai:</label>
<div class="col-lg-9">
<select class="form-control selectpicker show-tick" id="hentai_mode" name="hentai_mode">
<option value="0" <?= (!$templateVar['hentai_toggle']) ? 'selected' : '' ?> data-content="<?= $templateVar['hentai_options'][0] ?>">Hide H</option>
<option value="1" <?= ($templateVar['hentai_toggle'] == 1) ? 'selected' : '' ?> data-content="<?= $templateVar['hentai_options'][1] ?>">All</option>
<option value="2" <?= ($templateVar['hentai_toggle'] == 2) ? 'selected' : '' ?> data-content="<?= $templateVar['hentai_options'][2] ?>">Only H</option>
</select>
</div>
2021-03-14 17:31:55 -04:00
</div>
<?php } ?>
<div class="form-group row">
2021-03-19 16:06:32 -04:00
<div class="col-lg-3 text-right">
<button type="submit" class="btn btn-secondary" id="homepage_settings_button"><?= display_fa_icon('save') ?> Save</button>
</div>
<div class="col-lg-9 text-left">
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
</div>
2021-03-14 17:31:55 -04:00
</div>
</form>
</div>
<div class="modal-footer">
<?php if (!$templateVar['user']->user_id) {
print display_alert('info mx-auto', 'Info', "These settings are temporary. Please " . display_fa_icon('pencil-alt') . " <a href='/signup'>make an account</a> to remember these permanently.");
} else { ?>
<a class="btn btn-secondary mx-auto" role="button" href="/settings"><?= display_fa_icon('cog') ?> More settings</a>
<?php } ?>
</div>
2021-03-19 16:06:32 -04:00
</div>
2021-03-14 17:31:55 -04:00
</div>
</div>
<?= parse_template('partials/report_modal', $templateVar); ?>
<footer class="footer">
2021-03-19 16:06:32 -04:00
<p class="m-0 text-center text-muted">&copy; <?= date('Y') ?> <a href="/" title="<?php print_r($templateVar['memcached']->get($templateVar['ip'])) ?>">MangaDex</a> | <a href="https://path.net/" target="_blank" title="Provider of DDoS mitigation services">Path Network</a> | <a href="https://sdbx.moe/" target="_blank" title="seedbox provider">sdbx.moe</a> | <a href="https://ddos-guard.net?affiliate=119953" target="_blank" title="ddos-guard">DDoS Protection by DDoS-GUARD</a> | <a href="https://onramper.com/" target="_blank" title="Crypto Widget">Onramper</a></p>
2021-03-14 17:31:55 -04:00
</footer>
<?php
if (!isset($templateVar['user']->navigation) || $templateVar['user']->navigation) {
print parse_template('partials/mobile_menus', $templateVar);
}
?>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
2021-03-19 16:06:32 -04:00
<script nomodule src="/dist/js/polyfills.prod.js?<?= @filemtime(ABSPATH . "/dist/js/polyfills.prod.js") ?>"></script>
<script nomodule src="/dist/js/bundle.prod.js?<?= @filemtime(ABSPATH . "/dist/js/bundle.prod.js") ?>"></script>
<script src="/scripts/jquery.min.js?<?= @filemtime(ABSPATH . "/scripts/jquery.min.js") ?>"></script>
2021-03-14 17:31:55 -04:00
<script src="/scripts/jquery.touchSwipe.min.js"></script>
<script src="/bootstrap/js/popper.min.js"></script>
<script src="/bootstrap/js/bootstrap.min.js?1"></script>
<script src="/bootstrap/js/bootstrap-select.min.js?1"></script>
<script src="/scripts/lightbox2/js/lightbox.js"></script>
<script src="/scripts/chart.min.js"></script>
2021-03-19 16:06:32 -04:00
<?php if ($templateVar['page'] == 'home') { ?>
<script src="/scripts/owl/owl.carousel.js"></script>
2021-03-14 17:31:55 -04:00
<?php } ?>
2021-03-19 16:06:32 -04:00
<script>
if (!('URL' in window) || !('URLSearchParams' in window)) {
document.head.appendChild(Object.assign(document.createElement("script"), {
"src": "/dist/js/polyfills.prod.js?<?= @filemtime(ABSPATH . "/dist/js/polyfills.prod.js") ?>",
"async": true,
}))
}
</script>
<?php if ($templateVar['page'] == 'chapter' && (!isset($_GET['mode']) || $_GET['mode'] == 'chapter') && !$templateVar['user']->reader) { ?>
2021-03-14 17:31:55 -04:00
<script src="/scripts/modernizr-custom.js"></script>
2021-03-19 16:06:32 -04:00
<script async src="/dist/js/reader.<?= $env ?>.js?<?= @filemtime(ABSPATH . "/dist/js/reader.$env.js") ?>"></script>
<?php if ($env !== 'prod') { ?>
<script nomodule src="/dist/js/reader.prod.js?<?= @filemtime(ABSPATH . "/dist/js/reader.prod.js") ?>"></script>
<?php } ?>
2021-03-14 17:31:55 -04:00
<?php } ?>
2021-03-19 16:06:32 -04:00
<script src="/scripts/js/reporting.js"></script>
2021-03-14 17:31:55 -04:00
<script type="text/javascript">
2021-03-19 16:06:32 -04:00
<?php if (defined('INCLUDE_JS_REDIRECT') && INCLUDE_JS_REDIRECT) : ?>
var t = 'mang';
t = t + 'adex.org';
var w = 'www.mangadex.org';
if (window.location.hostname != t && window.location.hostname != w) {
window.location = 'https://' + t;
}
<?php endif; ?>
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
var $ = jQuery;
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
$(document).on('change', '.btn-file :file', function() {
var input = $(this),
numFiles = input.get(0).files ? input.get(0).files.length : 1,
label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
input.trigger('fileselect', [numFiles, label]);
});
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
2021-03-14 17:31:55 -04:00
}
2021-03-19 16:06:32 -04:00
function commaMultipleSelect(id) {
var list = document.getElementById(id);
var selected = new Array();
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
for (i = 0; i < list.options.length; i++) {
if (list.options[i].selected) {
selected.push(list.options[i].value);
}
2021-03-14 17:31:55 -04:00
}
2021-03-19 16:06:32 -04:00
return selected.join(',');
2021-03-14 17:31:55 -04:00
}
2021-03-19 16:06:32 -04:00
function commaMultipleCheckbox(name) {
var list = document.getElementsByName(name);
var selected = new Array();
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
for (i = 0; i < list.length; i++) {
if (list[i].checked) {
selected.push(list[i].value);
}
}
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
return selected.join(',');
}
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
$(document).ready(function() {
var query = location.search;
<?php if (!isset($templateVar['user']->navigation) || $templateVar['user']->navigation) : ?>
$("#left_swipe_area").swipe({
swipeRight: function(event, direction, distance, duration, fingerCount) {
$('#left_modal').modal('toggle');
},
threshold: 50
});
$("#right_swipe_area").swipe({
swipeLeft: function(event, direction, distance, duration, fingerCount) {
$('#right_modal').modal('toggle');
},
threshold: 50
});
$("#right_modal").swipe({
swipeRight: function(event, direction, distance, duration, fingerCount) {
$('#right_modal').modal('toggle');
},
threshold: 50
});
$("#left_modal").swipe({
swipeLeft: function(event, direction, distance, duration, fingerCount) {
$('#left_modal').modal('toggle');
},
threshold: 50
});
<?php endif; ?>
$("#read_announcement_button").click(function(event) {
$.ajax({
url: "/ajax/actions.ajax.php?function=read_announcement",
type: 'GET',
success: function(data) {
$("#announcement").hide();
},
cache: false,
contentType: false,
processData: false
});
event.preventDefault();
2021-03-14 17:31:55 -04:00
});
2021-03-19 16:06:32 -04:00
$(".logout").click(function(event) {
$.ajax({
type: "POST",
url: "/ajax/actions.ajax.php?function=logout",
success: function(data) {
$("#message_container").html(data).show().delay(1500).fadeOut();
location.reload();
}
});
event.preventDefault();
2021-03-14 17:31:55 -04:00
});
2021-03-19 16:06:32 -04:00
function highlightPost(node) {
if (node) {
Array.from(document.querySelectorAll('.highlighted')).forEach(function(n) {
n.classList.remove('highlighted')
});
node.classList.add('highlighted')
}
}
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
if (location.hash)
highlightPost(document.querySelector(location.hash + ' .postbody'));
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
$('a.permalink').click(function(event) {
highlightPost(event.target.closest('.post').querySelector('.postbody'))
});
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
<?= $templateVar['page_scripts'] ?>
2021-03-14 17:31:55 -04:00
2021-03-19 16:06:32 -04:00
});
2021-03-14 17:31:55 -04:00
</script>
</body>
2021-03-19 16:06:32 -04:00
2021-03-14 17:31:55 -04:00
</html>