mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-12 13:24:52 +00:00
[top nav] improved 'groups' nav
This commit is contained in:
@@ -16,6 +16,14 @@ if ($('.messages')[0]) {
|
|||||||
setTimeout(function() { $('.messages').addClass('hide'); }, 10000);
|
setTimeout(function() { $('.messages').addClass('hide'); }, 10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$('#top-nav-grp').click(function() {
|
||||||
|
var grp_nav = $(this),
|
||||||
|
popup = $('#top-nav-grp-info');
|
||||||
|
popup.css({'right': (grp_nav.outerWidth() - popup.outerWidth())/2});
|
||||||
|
popup.toggleClass('hide');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
var msg_ct = $("#msg-count");
|
var msg_ct = $("#msg-count");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@@ -36,12 +44,6 @@ $('#msg-count').click(function() {
|
|||||||
(function () {
|
(function () {
|
||||||
var my_info = $('#my-info');
|
var my_info = $('#my-info');
|
||||||
var popup = $('#user-info-popup');
|
var popup = $('#user-info-popup');
|
||||||
|
|
||||||
$(window).load(function() {
|
|
||||||
if (my_info.length > 0) { // before login, no 'my_info'
|
|
||||||
popup.css({'right': my_info.parent().width() - my_info.position().left - my_info.outerWidth()});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
my_info.click(function() {
|
my_info.click(function() {
|
||||||
var loading_tip = $('.loading-tip', popup);
|
var loading_tip = $('.loading-tip', popup);
|
||||||
if (popup.hasClass('hide')) {
|
if (popup.hasClass('hide')) {
|
||||||
@@ -62,14 +64,15 @@ $('#msg-count').click(function() {
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
$(document).click(function(e) {
|
$(document).click(function(e) {
|
||||||
var target = e.target || event.srcElement,
|
var target = e.target || event.srcElement;
|
||||||
popup = $('#user-info-popup'),
|
var closePopup = function(popup, popup_switch) {
|
||||||
popup_switch = $('#my-info');
|
if (!popup.hasClass('hide') && !popup.is(target) && !popup.find('*').is(target) && !popup_switch.is(target) && !popup_switch.find('*').is(target) ) {
|
||||||
if (!popup.hasClass('hide') && !popup.is(target) && !popup.find('*').is(target) && !popup_switch.is(target) && !popup_switch.find('*').is(target) ) {
|
popup.addClass('hide');
|
||||||
popup.addClass('hide');
|
}
|
||||||
}
|
};
|
||||||
|
closePopup($('#user-info-popup'), $('#my-info'));
|
||||||
|
closePopup($('#top-nav-grp-info'), $('#top-nav-grp'));
|
||||||
});
|
});
|
||||||
|
|
||||||
// search: disable submit when input nothing
|
// search: disable submit when input nothing
|
||||||
|
@@ -11,6 +11,7 @@ from seahub.settings import SEAFILE_VERSION, SITE_TITLE, SITE_NAME, SITE_BASE, \
|
|||||||
SHOW_REPO_DOWNLOAD_BUTTON, REPO_PASSWORD_MIN_LENGTH
|
SHOW_REPO_DOWNLOAD_BUTTON, REPO_PASSWORD_MIN_LENGTH
|
||||||
from seahub.views.modules import get_enabled_mods_by_user, \
|
from seahub.views.modules import get_enabled_mods_by_user, \
|
||||||
get_available_mods_by_user
|
get_available_mods_by_user
|
||||||
|
from seaserv import get_personal_groups_by_user
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from seahub.settings import SEACLOUD_MODE
|
from seahub.settings import SEACLOUD_MODE
|
||||||
@@ -44,6 +45,9 @@ def base(request):
|
|||||||
mods_available = get_available_mods_by_user(username)
|
mods_available = get_available_mods_by_user(username)
|
||||||
mods_enabled = get_enabled_mods_by_user(username)
|
mods_enabled = get_enabled_mods_by_user(username)
|
||||||
|
|
||||||
|
# get groups
|
||||||
|
grps = get_personal_groups_by_user(username)[:4]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'seafile_version': SEAFILE_VERSION,
|
'seafile_version': SEAFILE_VERSION,
|
||||||
'site_title': SITE_TITLE,
|
'site_title': SITE_TITLE,
|
||||||
@@ -65,4 +69,5 @@ def base(request):
|
|||||||
'events_enabled': EVENTS_ENABLED,
|
'events_enabled': EVENTS_ENABLED,
|
||||||
'mods_available': mods_available,
|
'mods_available': mods_available,
|
||||||
'mods_enabled': mods_enabled,
|
'mods_enabled': mods_enabled,
|
||||||
|
'grps': grps,
|
||||||
}
|
}
|
||||||
|
@@ -129,26 +129,6 @@
|
|||||||
<script type="text/javascript" src="{{ MEDIA_URL }}js/base.js?t=1392877560"></script>
|
<script type="text/javascript" src="{{ MEDIA_URL }}js/base.js?t=1392877560"></script>
|
||||||
<script type="text/javascript" src="{{ MEDIA_URL }}js/select2.min.js?t=1392877560"></script>
|
<script type="text/javascript" src="{{ MEDIA_URL }}js/select2.min.js?t=1392877560"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$('#top-nav-grp').click(function() {
|
|
||||||
var grp_nav = $(this);
|
|
||||||
var popup = $('#top-nav-grp-info');
|
|
||||||
var loading_tip = $('.loading-tip', popup);
|
|
||||||
if (popup.hasClass('hide')) {
|
|
||||||
popup.removeClass('hide');
|
|
||||||
loading_tip.removeClass('hide');
|
|
||||||
$.ajax({
|
|
||||||
url: grp_nav.attr('href'),
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(data) {
|
|
||||||
loading_tip.addClass('hide');
|
|
||||||
$('#top-nav-grp-list').html(data['html']);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
popup.addClass('hide');
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
function ajaxErrorHandler(xhr, textStatus, errorThrown) {
|
function ajaxErrorHandler(xhr, textStatus, errorThrown) {
|
||||||
if (xhr.responseText) {
|
if (xhr.responseText) {
|
||||||
feedback(jQuery.parseJSON(xhr.responseText).error, 'error');
|
feedback(jQuery.parseJSON(xhr.responseText).error, 'error');
|
||||||
|
@@ -1,20 +1,29 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load url from future %}
|
{% load url from future %}
|
||||||
{% load i18n %}
|
{% load i18n group_avatar_tags %}
|
||||||
{% block nav %}
|
{% block nav %}
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="{{ SITE_ROOT }}home/my/" class="a {% block cur_myhome %}{% endblock %}">{% trans "My Home" %}</a>
|
<a href="{{ SITE_ROOT }}home/my/" class="a {% block cur_myhome %}{% endblock %}">{% trans "My Home" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li style="position:relative;" class="nav-item">
|
<li class="nav-item" {% if grps %}style="position:relative;"{% endif %}>
|
||||||
<a href="{% url "groups" %}" class="a {% block cur_group %}{% endblock %}" id="top-nav-grp">{% trans "Groups" %} <span class="icon-caret-down"></span></a>
|
<a href="{% url 'group_list' %}" class="a {% block cur_group %}{% endblock %}" {% if grps %}id="top-nav-grp"{% endif %}>{% trans "Groups" %}{% if grps %} <span class="icon-caret-down"></span>{% endif %}</a>
|
||||||
|
{% if grps %}
|
||||||
<div id="top-nav-grp-info" class="top-info-popup hide">
|
<div id="top-nav-grp-info" class="top-info-popup hide">
|
||||||
<div id="top-nav-grp-list">
|
<ul id="top-nav-grp-list">
|
||||||
<img src="{{MEDIA_URL}}img/loading-icon.gif" alt="" class="loading-tip" />
|
{% for grp in grps %}
|
||||||
</div>
|
<li>
|
||||||
|
<a href="{% url "group_info" grp.id %}" class="item" title="{{ grp.group_name }}">
|
||||||
|
{% grp_avatar grp.id 36 %} <span class="vam">{{ grp.group_name|truncatechars:14 }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
<a href="{% url 'group_list' %}" class="item">{% trans "Group List" %}</a>
|
<a href="{% url 'group_list' %}" class="item">{% trans "Group List" %}</a>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{% if not cloud_mode %}
|
{% if not cloud_mode %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="{% url 'pubrepo' %}" class="a {% block cur_pubinfo %}{% endblock %}">{% trans "Organization" %}</a>
|
<a href="{% url 'pubrepo' %}" class="a {% block cur_pubinfo %}{% endblock %}">{% trans "Organization" %}</a>
|
||||||
|
@@ -1,11 +0,0 @@
|
|||||||
{% load seahub_tags group_avatar_tags i18n %}
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
{% for grp in groups %}
|
|
||||||
<li>
|
|
||||||
<a href="{% url "group_info" grp.id %}" class="item" title="{{ grp.group_name }}">
|
|
||||||
{% grp_avatar grp.id 36 %} <span class="vam">{{ grp.group_name|truncatechars:14 }}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
@@ -148,7 +148,6 @@ urlpatterns = patterns('',
|
|||||||
url(r'^ajax/upload-file-done/$', upload_file_done, name='upload_file_done'),
|
url(r'^ajax/upload-file-done/$', upload_file_done, name='upload_file_done'),
|
||||||
url(r'^ajax/unseen-notices-count/$', unseen_notices_count, name='unseen_notices_count'),
|
url(r'^ajax/unseen-notices-count/$', unseen_notices_count, name='unseen_notices_count'),
|
||||||
url(r'^ajax/space_and_traffic/$', space_and_traffic, name='space_and_traffic'),
|
url(r'^ajax/space_and_traffic/$', space_and_traffic, name='space_and_traffic'),
|
||||||
url(r'^ajax/groups/$', groups, name='groups'),
|
|
||||||
|
|
||||||
### Apps ###
|
### Apps ###
|
||||||
(r'^api2/', include('seahub.api2.urls')),
|
(r'^api2/', include('seahub.api2.urls')),
|
||||||
|
@@ -15,8 +15,7 @@ import seaserv
|
|||||||
from seaserv import seafile_api, seafserv_rpc, \
|
from seaserv import seafile_api, seafserv_rpc, \
|
||||||
get_related_users_by_repo, get_related_users_by_org_repo, \
|
get_related_users_by_repo, get_related_users_by_org_repo, \
|
||||||
is_org_repo_owner, CALC_SHARE_USAGE, seafserv_threaded_rpc, \
|
is_org_repo_owner, CALC_SHARE_USAGE, seafserv_threaded_rpc, \
|
||||||
get_user_quota_usage, get_user_share_usage, \
|
get_user_quota_usage, get_user_share_usage
|
||||||
get_personal_groups_by_user
|
|
||||||
from pysearpc import SearpcError
|
from pysearpc import SearpcError
|
||||||
|
|
||||||
from seahub.auth.decorators import login_required
|
from seahub.auth.decorators import login_required
|
||||||
@@ -1210,16 +1209,3 @@ def space_and_traffic(request):
|
|||||||
html = render_to_string('snippets/space_and_traffic.html', ctx,
|
html = render_to_string('snippets/space_and_traffic.html', ctx,
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
return HttpResponse(json.dumps({"html": html}), content_type=content_type)
|
return HttpResponse(json.dumps({"html": html}), content_type=content_type)
|
||||||
|
|
||||||
def groups(request):
|
|
||||||
if not request.is_ajax():
|
|
||||||
raise Http404
|
|
||||||
|
|
||||||
content_type = 'application/json; charset=utf-8'
|
|
||||||
|
|
||||||
username = request.user.username
|
|
||||||
joined_groups = get_personal_groups_by_user(username)
|
|
||||||
|
|
||||||
html = render_to_string('snippets/groups.html', {"groups": joined_groups[:4],},
|
|
||||||
context_instance=RequestContext(request))
|
|
||||||
return HttpResponse(json.dumps({"html": html}), content_type=content_type)
|
|
||||||
|
Reference in New Issue
Block a user