SeaFile Cloud Dark Blue Theme
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.

267 lines
11 KiB

5 years ago
{% load seahub_tags avatar_tags group_avatar_tags i18n staticfiles %}
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE }}">
<head>
<title>{% block sub_title %}{% endblock %}{{ site_title }}</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="{% trans "File Collaboration Team Organization" %}" />
{% block viewport %}
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
{% endblock %}
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<link rel="shortcut icon" href="{{ MEDIA_URL }}{{ favicon_path }}" />
{% block extra_base_style %}
<link rel="stylesheet" type="text/css" href="{% static "css/bootstrap.min.css" %}"/>
{% endblock %}
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/jstree_default_theme/style.min.css" />
<link rel="stylesheet" type="text/css" href="{% static "css/magnific-popup.css" %}" />
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/seahub.css?t=1398068110" />
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/sf_font3/iconfont.css" />
<!-- tpDEsign -->
<link href="https://fonts.googleapis.com/css2?family=Saira+Condensed:wght@300&display=swap" rel="stylesheet" />
<!-- tpDEsign -->
{% block extra_style %}{% endblock %}
{% if branding_css != '' %}<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}{{ branding_css }}" />{% endif %}
{% if enable_branding_css %}<link rel="stylesheet" type="text/css" href="{% url 'custom_css' %}" />{% endif %}
</head>
<body>
<div id="wrapper" class="{{ LANGUAGE_CODE }} d-flex fd-col h100">
{% block info_bar_message %}
{% if request.user.is_authenticated and request.cur_note %}
<div id="info-bar">
<p id="info-bar-info">{{ request.cur_note.message|urlize }}</p>
<span class="close sf2-icon-x1 op-icon" data="{{ request.cur_note.id }}" title="{% trans "Close" %}"></span>
</div>
{% endif %}
{% endblock info_bar_message %}
<div id="header" class="{% block header_css_class %}d-flex{% endblock %}">
<a href="{{ SITE_ROOT }}" id="logo">
{% if seacloud_mode %}
<img src="{{ MEDIA_URL }}img/seacloud_logo.png?t=1398068110" title="Seacloud" alt="logo" width="186" height="31" />
{% else %}
<img src="{{ MEDIA_URL }}{{ logo_path }}" title="{{ site_title }}" alt="logo" width="{{logo_width}}" height="{{logo_height}}" />
{% endif %}
</a>
<span class="sf2-icon-menu side-nav-toggle hidden-md-up hide" title="{% trans "Side Nav Menu" %}" id="js-toggle-side-nav" aria-label="{% trans "Side Nav Menu" %}"></span>
{% block header_right %}
{% if request.user.is_authenticated %}
<div class="d-flex">
{% block top_search %}
{% if has_file_search %}
{% include 'snippets/search_form.html' %}
{% endif %}
{% endblock %}
<div id="account">
<a id="my-info" href="#" class="account-toggle no-deco hidden-sm-down" aria-label="{% trans "View profile and more" %}">
{% avatar request.user 32 %} <span class="icon-caret-down vam"></span>
</a>
<span class="account-toggle sf2-icon-more mobile-icon hidden-md-up" aria-label="{% trans "View profile and more" %}"></span>
<div id="user-info-popup" class="account-popup sf-popover hide">
<div class="outer-caret up-outer-caret"><div class="inner-caret"></div></div>
<div class="sf-popover-con">
<div class="item ovhd">
{% avatar request.user 36 %}
<div class="txt">
{{ request.user.username|email2nickname }}
</div>
</div>
<span class="loading-icon loading-tip"></span>
<div id="space-traffic" class="hide" data-url="{% url 'space_and_traffic' %}"></div>
<a class="item" href="{{ SITE_ROOT }}profile/">{% trans "Settings" %}</a>
{% block admin_link %}
{% if request.user.is_staff %}
<a href="{% url 'sys_useradmin' %}" title="{% trans "System Admin" %}" class="item">{% trans "System Admin" %}</a>
{% endif %}
{% if request.user.org and request.user.org.is_staff %}
<a href="{% url 'org_user_admin'%}" title="{% trans "Admin" %}" class="item">{% trans "Organization Admin" %}</a>
{% endif %}
{% if request.user.inst_admin %}
<a href="{% url "institutions:useradmin" %}" title="{% trans "Admin" %}" class="item">{% trans "Admin" %}</a>
{% endif %}
{% endblock %}
<a href="{{ SITE_ROOT }}accounts/logout/" class="item" id="logout">{% trans "Log out" %}</a>
</div>
</div>
</div>
</div>
{% else %} {# for non-logged-in user #}
<div id="lang">
<a href="#" id="lang-context" data-lang="{{ LANGUAGE_CODE }}">{{ LANGUAGE_CODE|language_name_local|capfirst }} <span class="icon-caret-down"></span></a>
<div id="lang-context-selector" class="sf-popover hide">
<ul class="sf-popover-con">
{% for LANG in LANGUAGES %}
<li><a href="{% url 'i18n' %}?lang={{ LANG.0 }}">{{ LANG.1 }}</a></li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
{% endblock %}
</div>
<div id="main" class="container-fluid w100 flex-auto {% block main_class %}ov-auto{% endblock %}">{# since #wrapper is `d-flex`, 'w100' is necessary here. #}
{% block main_content %}
<div class="row">
<div id="main-panel" class="w100 ovhd">
{% block main_panel %}{% endblock %}
</div>
</div>
{% endblock %}
</div>
{% if messages %}
<ul class="messages hide">
{% for message in messages %}
<li class="{{ message.tags }}">
{% if 'safe' in message.tags %}
{{ message|safe }}
{% else %}
{{ message }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
<div id="confirm-popup" class="hide">
<div id="confirm-con"></div>
<button id="confirm-yes">{% trans "Yes" %}</button>
<button class="simplemodal-close">{% trans "No" %}</button>
</div>
</div><!-- wrapper -->
<script type="text/javascript">
var SEAFILE_GLOBAL = {
csrfCookieName: '{{ CSRF_COOKIE_NAME }}'
};
var app = {
ui : {
currentDropdown: false,
currentHighlightedItem: false,
freezeItemHightlight: false
}
}
</script>
<script type="text/javascript" src="{% static "scripts/lib/jquery.min.js" %}" id="jquery"></script>{# 'id="jquery"' is for pdf file view with pdf2html #}
<script type="text/javascript" src="{% static "scripts/lib/jquery.simplemodal.js" %}"></script>
<script type="text/javascript" src="{% static "scripts/lib/jstree.min.js" %}"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/jq.min.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/base.js?t=1536127546642"></script>
<script type="text/javascript">
function prepareAjaxErrorMsg(xhr) {
var error_msg;
if (xhr.responseText) {
var parsed_resp = JSON.parse(xhr.responseText);
// use `HTMLescape` for msgs which contain variable like 'path'
error_msg = HTMLescape(parsed_resp.error ||
parsed_resp.error_msg || parsed_resp.detail);
} else {
error_msg = gettext("Failed. Please check the network.");
}
return error_msg;
}
function ajaxErrorHandler(xhr, textStatus, errorThrown) {
var error_msg = prepareAjaxErrorMsg(xhr);
feedback(error_msg, 'error');
}
{% if request.user.is_authenticated %}
{% if request.cur_note %}
$('#info-bar .close').on('click', function() {
$('#info-bar').addClass('hide');
if (navigator.cookieEnabled) {
var date = new Date(),
cookies = document.cookie.split('; '),
info_id_exist = false,
new_info_id = $(this).attr('data') + '_';
date.setTime(date.getTime() + 14*24*60*60*1000);
new_info_id += '; expires=' + date.toGMTString() + '; path=' + '{{ SITE_ROOT }}';
for (var i = 0, len = cookies.length; i < len; i++) {
if (cookies[i].split('=')[0] == 'info_id') {
info_id_exist = true;
document.cookie = 'info_id=' + cookies[i].split('=')[1] + new_info_id;
break;
}
}
if (!info_id_exist) {
document.cookie = 'info_id=' + new_info_id;
}
}
});
{% endif %}
{% if has_file_search %}
{% include 'snippets/search_js.html' %}
{% endif %}
{% else %} {# for non-logged-in user #}
(function() {
var lang_context = $('#lang-context'),
lang_selector = $('#lang-context-selector');
lang_context.parent().css({'position':'relative'});
if ($('#header').is(':visible')) { // for login page
lang_selector.css({
'top': lang_context.position().top + lang_context.height() + 5,
'right': 0
});
}
var setLangSelectorMaxHeight = function() {
if ($('#header').is(':visible')) { // for login page
$('.sf-popover-con', lang_selector).css({
'max-height': $(window).height() - lang_selector.offset().top - 12
});
}
};
$(window).on('resize', function() {
if (lang_selector.is(':visible')) {
setLangSelectorMaxHeight();
}
});
lang_context.on('click', function() {
lang_selector.toggleClass('hide');
if (lang_selector.is(':visible')) {
setLangSelectorMaxHeight();
}
return false;
});
$(document).on('click', function(e) {
var element = e.target || e.srcElement;
if (element.id != 'lang-context-selector' && element.id != 'lang-context') {
lang_selector.addClass('hide');
}
});
})();
{% endif %}
if ($('.side-nav').length) {
$('#logo').addClass('hidden-sm-down');
$('#js-toggle-side-nav').removeClass('hide');
}
$('#js-toggle-side-nav').on('click', function() {
$('.side-nav').addClass('side-nav-shown');
$('').modal({
overlayClose: true,
onClose: function() {
$('.side-nav').removeClass('side-nav-shown');
$.modal.close();
}});
$('#simplemodal-container').css({'display':'none'});
return false;
});
$('.js-close-side-nav').on('click', function() {
$('.side-nav').removeClass('side-nav-shown');
return false;
});
</script>
{% block extra_script %}{% endblock %}
</body>
</html>