1
0
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:
llj
2014-02-08 14:44:44 +08:00
parent 4dfddf6150
commit 37a65f2890
7 changed files with 37 additions and 66 deletions

View File

@@ -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

View File

@@ -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,
} }

View File

@@ -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');

View File

@@ -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>

View File

@@ -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>

View File

@@ -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')),

View File

@@ -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)