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.
266 lines
11 KiB
266 lines
11 KiB
{% 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>
|
|
|