213 lines
8 KiB
HTML
213 lines
8 KiB
HTML
{% extends "base.html" %}
|
|
{% block title_row %}{% endblock %}
|
|
{% block title_ruler %}{% endblock %}
|
|
|
|
{% block media %}
|
|
<style>
|
|
@media(min-width: 800px) {
|
|
#content {
|
|
width: 98%;
|
|
margin-left: 0;
|
|
}
|
|
.middle-right-content {
|
|
display: inline-flex;
|
|
}
|
|
}
|
|
@media(max-width: 799px) {
|
|
#content {
|
|
width: 100%;
|
|
margin-left: 0;
|
|
}
|
|
.middle-right-content {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
/* TODO: remove this */
|
|
#three-col-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block js_media %}
|
|
<script type="text/javascript">
|
|
// TODO: remove this
|
|
function onWindowReady() {
|
|
// http://stackoverflow.com/a/1060034/1090657
|
|
var hidden = 'hidden';
|
|
|
|
// Standards:
|
|
if (hidden in document)
|
|
document.addEventListener('visibilitychange', onchange);
|
|
else if ((hidden = 'mozHidden') in document)
|
|
document.addEventListener('mozvisibilitychange', onchange);
|
|
else if ((hidden = 'webkitHidden') in document)
|
|
document.addEventListener('webkitvisibilitychange', onchange);
|
|
else if ((hidden = 'msHidden') in document)
|
|
document.addEventListener('msvisibilitychange', onchange);
|
|
// IE 9 and lower:
|
|
else if ('onfocusin' in document)
|
|
document.onfocusin = document.onfocusout = onchange;
|
|
// All others:
|
|
else
|
|
window.onpageshow = window.onpagehide
|
|
= window.onfocus = window.onblur = onchange;
|
|
|
|
function onchange(evt) {
|
|
var v = 'window-visible', h = 'window-hidden', evtMap = {
|
|
focus: v, focusin: v, pageshow: v, blur: h, focusout: h, pagehide: h
|
|
};
|
|
|
|
evt = evt || window.event;
|
|
if (evt.type in evtMap)
|
|
document.body.className = evtMap[evt.type];
|
|
else
|
|
document.body.className = this[hidden] ? 'window-hidden' : 'window-visible';
|
|
|
|
if ('$' in window)
|
|
$(window).trigger('dmoj:' + document.body.className);
|
|
}
|
|
|
|
$('.tabs').each(function () {
|
|
var $this = $(this), $h2 = $(this).find('h2'), $ul = $(this).find('ul');
|
|
var cutoff = ($h2.textWidth() || 400) + 20, handler;
|
|
$ul.children().each(function () {
|
|
cutoff += $(this).width();
|
|
});
|
|
$(window).resize(handler = function () {
|
|
$this.toggleClass('tabs-no-flex', $this.width() < cutoff);
|
|
});
|
|
handler();
|
|
});
|
|
|
|
// set the initial state (but only if browser supports the Page Visibility API)
|
|
if (document[hidden] !== undefined)
|
|
onchange({type: document[hidden] ? 'blur' : 'focus'});
|
|
|
|
$("a.close").click(function () {
|
|
var $closer = $(this);
|
|
$closer.parent().fadeOut(200);
|
|
});
|
|
|
|
register_time($('.time-with-rel'));
|
|
|
|
if (typeof window.orientation !== 'undefined') {
|
|
$(window).resize(function () {
|
|
var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
|
|
// $('#viewport').attr('content', width > 480 ? 'initial-scale=1' : 'width=480');
|
|
});
|
|
}
|
|
|
|
$.ajaxSetup({
|
|
beforeSend: function (xhr, settings) {
|
|
if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type)) && !this.crossDomain)
|
|
xhr.setRequestHeader('X-CSRFToken', $.cookie('csrftoken'));
|
|
}
|
|
});
|
|
|
|
setTimeout(() => {
|
|
$("[data-src]img").each(function() {
|
|
$(this).attr("src", $(this).attr("data-src"));
|
|
})
|
|
$("[data-src]iframe").each(function() {
|
|
$(this).attr("src", $(this).attr("data-src"));
|
|
})
|
|
}, "100");
|
|
|
|
$('form').submit(function (evt) {
|
|
// Prevent multiple submissions of forms, see #565
|
|
$("input[type='submit']").prop('disabled', true);
|
|
});
|
|
|
|
registerPopper($('#nav-lang-icon'), $('#lang-dropdown'));
|
|
registerPopper($('#user-links'), $('#userlink_dropdown'));
|
|
$('.lang-dropdown-item').click(function() {
|
|
$('select[name="language"]').val($(this).attr('value'));
|
|
$('#form-lang').submit();
|
|
})
|
|
$('#logout').on('click', () => $('#logout-form').submit());
|
|
}
|
|
|
|
function navigateTo($elem) {
|
|
var url = $elem.attr('data-href') || $elem.attr('href');
|
|
|
|
if (url === '#') return;
|
|
$('.left-sidebar-item').removeClass('active');
|
|
$elem.addClass('active');
|
|
$('.middle-right-content').html(loading_page);
|
|
$.get(url, function(data) {
|
|
var reload_content = $(data).find('.middle-right-content');
|
|
|
|
if (reload_content.length) {
|
|
window.history.pushState("", "", url);
|
|
$('.middle-right-content').html(reload_content.first().html());
|
|
MathJax.typeset($('.middle-right-content')[0]);
|
|
onWindowReady();
|
|
$('.xdsoft_datetimepicker').hide();
|
|
}
|
|
else {
|
|
window.location.href = url;
|
|
}
|
|
});
|
|
}
|
|
|
|
$(function () {
|
|
window.addEventListener('popstate', (e) => {
|
|
window.location.href = e.currentTarget.location.href;
|
|
});
|
|
|
|
$('.left-sidebar-item').on('click', function() {
|
|
navigateTo($(this));
|
|
});
|
|
$('.blog-box').on('click', function() {
|
|
var $description = $(this).children('.blog-description');
|
|
var max_height = $description.css('max-height');
|
|
if (max_height !== 'fit-content') {
|
|
$description.css('max-height', 'fit-content');
|
|
$(this).css('cursor', 'auto');
|
|
$(this).removeClass('pre-expand-blog');
|
|
}
|
|
})
|
|
$('.blog-box').each(function() {
|
|
if ($(this).prop('scrollHeight') > $(this).height() ) {
|
|
$(this).addClass('pre-expand-blog');
|
|
$(this).css('cursor', 'pointer');
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
{% endblock %}
|
|
|
|
{% macro make_tab_item(name, fa, url, text) %}
|
|
<div class="left-sidebar-item {% if page_type == name %}active{% endif %}" data-href="{{ url }}" id="{{ name }}-tab">
|
|
<span class="sidebar-icon"><i class="{{ fa }}"></i></span>
|
|
<span>{{ text }}</span>
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% block body %}
|
|
{% block before_posts %}{% endblock %}
|
|
<div id="three-col-container">
|
|
{% block left_sidebar %}{% endblock %}
|
|
<div class="middle-right-content">
|
|
{% block three_col_media %}{% endblock %}
|
|
{% block three_col_js %}{% endblock %}
|
|
<div class="middle-content">
|
|
{% block middle_title %}{% endblock %}
|
|
{% block middle_content %}{% endblock %}
|
|
</div>
|
|
{% block right_sidebar %}{% endblock %}
|
|
</div>
|
|
</div>
|
|
{% block after_posts %}{% endblock %}
|
|
{% endblock %}
|
|
|
|
{% block bodyend %}
|
|
{{ super() }}
|
|
{% if REQUIRE_JAX %}
|
|
{% include "mathjax-load.html" %}
|
|
{% endif %}
|
|
{% include "comments/math.html" %}
|
|
{% endblock %}
|