1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-24 04:48:03 +00:00

added top-info-popup for 'group' in top nav

This commit is contained in:
llj
2014-01-25 15:18:00 +08:00
parent fd633e6e21
commit 652f1d8a8f
12 changed files with 87 additions and 85 deletions

View File

@@ -1066,7 +1066,7 @@ textarea:-moz-placeholder {/* for FF */
text-decoration:none;
}
#send-msg-popup,
#user-info-popup {
.top-info-popup {
background:#fff;
border:1px solid #ddd;
box-shadow:0 0 5px #ccc;
@@ -1079,25 +1079,33 @@ textarea:-moz-placeholder {/* for FF */
padding:18px;
top:35px;
}
#user-info-popup {
.top-info-popup {
width:200px;
text-align:left;
top:48px;
font-size:13px;
}
#user-info-popup .item {
#top-nav-grp-info {
top:40px;
}
.top-info-popup .item {
display:block;
padding:8px 18px;
border-top:1px solid #ddd;
}
#user-info-popup a.item {
.top-info-popup a.item {
color:#333;
font-weight:normal;
}
#user-info-popup a.item:hover {
.top-info-popup a.item:hover {
background:#fafafa;
text-decoration:none;
}
#top-nav-grp-info .avatar {
border-radius:1000px;
margin-right:5px;
vertical-align:middle;
}
#msg-file-share {
margin-top:8px;
position:relative;
@@ -1140,24 +1148,24 @@ textarea:-moz-placeholder {/* for FF */
padding-top:8px;
font-size:15px;
}
#header .nav li {
#header .nav-item {
float: left;
height:21px;
margin:0 14px;
}
.ru #header .nav li {
.ru #header .nav-item {
margin:0 11px;
}
#header .nav a,
#header .nav a:visited {
#header .nav .a,
#header .nav .a:visited {
color:#8A948F;
font-weight:bold;
text-decoration:none;
}
#header .nav a.cur {
#header .nav .a.cur {
color:#000;
}
#header .nav a:hover {
#header .nav .a:hover {
color: #ff9933;
text-decoration: underline;
}

View File

@@ -3,7 +3,7 @@
{% load seahub_tags avatar_tags group_avatar_tags i18n %}
{% block sub_title %}{{group.group_name}} - {% endblock %}
{% block nav_group_class %}class="cur"{% endblock %}
{% block cur_group %}cur{% endblock %}
{% block left_panel %}
<div class="side-tabnav">

View File

@@ -3,7 +3,7 @@
{% load url from future %}
{% block sub_title %}{% trans "Groups" %} - {% endblock %}
{% block nav_group_class %}class="cur"{% endblock %}
{% block cur_group %}cur{% endblock %}
{% block left_panel %}
{% include "group/groups_left_panel.html" %}

View File

@@ -1,59 +0,0 @@
{% extends "myhome_base.html" %}
{% load seahub_tags avatar_tags %}
{% block nav_group_class %}class="cur"{% endblock %}
{% block main_panel %}
<div class="main fleft">
<h2>留言</h2>
<div>
<span>{% avatar msg.from_email 48 %}</span>
<div class="info">
<span class="from">{{ msg.from_email }}</span>
<span class="ts">{{ msg.timestamp|date:"Y-m-d H:i" }}</span>
</div>
<div class="reply">
<span class="msg">{{ msg.message }}</span>
</div>
</div>
<div id="reply">
<form action="" method="post">{% csrf_token %}
<textarea name="message" id="message">{{ form.data.message }}</textarea><br />
<input type="submit" value="回复" class="submit" />
{% for error in form.message.errors %}
<span class="error">{{ error|escape }}</span>
{% endfor %}
</form>
</div>
</div>
{% endblock %}
{% block extra_script %}
<script type="text/javascript">
$("table tr:gt(0)").hover(
function() {
$(this).find('img').css('cursor', 'pointer').removeClass('vh');
},
function() {
$(this).find('img').addClass('vh');
}
);
$('.download').click(function() {
window.open($(this).attr('data'));
});
$('.reply').each(function() {
$(this).click(function() {
var reply_to = $(this).attr('data');
$('#to_email').val(reply_to);
$('#message').text("回复" + reply_to + "");
$('#message').focus();
});
});
</script>
{% endblock %}

View File

@@ -1,7 +1,7 @@
{% extends "myhome_base.html" %}
{% load i18n %}
{% block nav_help_class %}class="cur"{% endblock %}
{% block cur_help %}cur{% endblock %}
{% block left_panel %}
<div class="side-textnav">
<h3 class="hd">{% trans "Client" context "help" %}</h2>

View File

@@ -57,7 +57,7 @@
<div id="my-info" data-url="{% url 'space_and_traffic' %}">
{% avatar request.user 36 %} <span class="icon-caret-down vam"></span>
</div>
<div id="user-info-popup" class="hide">
<div id="user-info-popup" class="top-info-popup hide">
<div class="item ovhd">
{% avatar request.user 36 %}
<div class="txt">
@@ -129,6 +129,26 @@
<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">
$('#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');
$('#grp-list').html(data['html']);
}
});
} else {
popup.addClass('hide');
}
return false;
});
function ajaxErrorHandler(xhr, textStatus, errorThrown) {
if (xhr.responseText) {
feedback(jQuery.parseJSON(xhr.responseText).error, 'error');

View File

@@ -1,6 +1,6 @@
{% extends "myhome_base.html" %}
{% load i18n %}
{% block nav_myhome_class %}class="cur"{% endblock %}
{% block cur_myhome %}cur{% endblock %}
{% block left_panel %}
<div class="side-tabnav">

View File

@@ -3,19 +3,26 @@
{% load i18n %}
{% block nav %}
<ul class="nav">
<li>
<a href="{{ SITE_ROOT }}home/my/" {% block nav_myhome_class %}{% endblock %}>{% trans "My Home" %}</a>
<li class="nav-item">
<a href="{{ SITE_ROOT }}home/my/" class="a {% block cur_myhome %}{% endblock %}">{% trans "My Home" %}</a>
</li>
<li>
<a href="{{ SITE_ROOT }}groups/" {% block nav_group_class %}{% endblock %}>{% trans "Groups" %}</a>
<li style="position:relative;" class="nav-item">
<a href="{% url "groups" %}" class="a {% block cur_group %}{% endblock %}" id="top-nav-grp">{% trans "Groups" %} <span class="icon-caret-down"></span></a>
<div id="top-nav-grp-info" class="top-info-popup hide">
<div id="grp-list">
<img src="{{MEDIA_URL}}img/loading-icon.gif" alt="" class="loading-tip" />
</div>
<a href="{% url 'group_list' %}" class="item">{% trans "Group List" %}</a>
<span class="item"><span class="icon-plus-sign-alt"></span> {% trans "New Group" %}</span>
</div>
</li>
{% if not cloud_mode %}
<li>
<a href="{% url 'pubrepo' %}" {% block nav_pubinfo_class %}{% endblock %}>{% trans "Organization" %}</a>
<li class="nav-item">
<a href="{% url 'pubrepo' %}" class="a {% block cur_pubinfo %}{% endblock %}">{% trans "Organization" %}</a>
</li>
{% endif %}
<li>
<a href="{{ SITE_ROOT }}help/" {% block nav_help_class %}{% endblock %}>{% trans "Help" %}</a>
<li class="nav-item">
<a href="{{ SITE_ROOT }}help/" class="a {% block cur_help %}{% endblock %}">{% trans "Help" %}</a>
</li>
</ul>
{% endblock %}

View File

@@ -3,7 +3,7 @@
{% load url from future %}
{% block sub_title %}{% trans "Organization" %} - {% endblock %}
{% block nav_pubinfo_class %}class="cur"{% endblock %}
{% block cur_pubinfo %}class="cur"{% endblock %}
{% block left_panel %}
<div class="side-tabnav">

View File

@@ -0,0 +1,11 @@
{% load seahub_tags group_avatar_tags i18n %}
<ul>
{% for grp in groups %}
<li>
<a href="{% url "group_info" grp.id %}" class="item">
{% grp_avatar grp.id 48 %} <span class="vam">{{ grp.group_name }}</span>
</a>
</li>
{% endfor %}
</ul>

View File

@@ -148,6 +148,7 @@ urlpatterns = patterns('',
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/space_and_traffic/$', space_and_traffic, name='space_and_traffic'),
url(r'^ajax/groups/$', groups, name='groups'),
### Apps ###
(r'^api2/', include('seahub.api2.urls')),

View File

@@ -15,7 +15,8 @@ import seaserv
from seaserv import seafile_api, seafserv_rpc, \
get_related_users_by_repo, get_related_users_by_org_repo, \
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 seahub.auth.decorators import login_required
@@ -1209,3 +1210,16 @@ def space_and_traffic(request):
html = render_to_string('snippets/space_and_traffic.html', ctx,
context_instance=RequestContext(request))
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)