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:
@@ -1066,7 +1066,7 @@ textarea:-moz-placeholder {/* for FF */
|
|||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
}
|
}
|
||||||
#send-msg-popup,
|
#send-msg-popup,
|
||||||
#user-info-popup {
|
.top-info-popup {
|
||||||
background:#fff;
|
background:#fff;
|
||||||
border:1px solid #ddd;
|
border:1px solid #ddd;
|
||||||
box-shadow:0 0 5px #ccc;
|
box-shadow:0 0 5px #ccc;
|
||||||
@@ -1079,25 +1079,33 @@ textarea:-moz-placeholder {/* for FF */
|
|||||||
padding:18px;
|
padding:18px;
|
||||||
top:35px;
|
top:35px;
|
||||||
}
|
}
|
||||||
#user-info-popup {
|
.top-info-popup {
|
||||||
width:200px;
|
width:200px;
|
||||||
text-align:left;
|
text-align:left;
|
||||||
top:48px;
|
top:48px;
|
||||||
font-size:13px;
|
font-size:13px;
|
||||||
}
|
}
|
||||||
#user-info-popup .item {
|
#top-nav-grp-info {
|
||||||
|
top:40px;
|
||||||
|
}
|
||||||
|
.top-info-popup .item {
|
||||||
display:block;
|
display:block;
|
||||||
padding:8px 18px;
|
padding:8px 18px;
|
||||||
border-top:1px solid #ddd;
|
border-top:1px solid #ddd;
|
||||||
}
|
}
|
||||||
#user-info-popup a.item {
|
.top-info-popup a.item {
|
||||||
color:#333;
|
color:#333;
|
||||||
font-weight:normal;
|
font-weight:normal;
|
||||||
}
|
}
|
||||||
#user-info-popup a.item:hover {
|
.top-info-popup a.item:hover {
|
||||||
background:#fafafa;
|
background:#fafafa;
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
}
|
}
|
||||||
|
#top-nav-grp-info .avatar {
|
||||||
|
border-radius:1000px;
|
||||||
|
margin-right:5px;
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
#msg-file-share {
|
#msg-file-share {
|
||||||
margin-top:8px;
|
margin-top:8px;
|
||||||
position:relative;
|
position:relative;
|
||||||
@@ -1140,24 +1148,24 @@ textarea:-moz-placeholder {/* for FF */
|
|||||||
padding-top:8px;
|
padding-top:8px;
|
||||||
font-size:15px;
|
font-size:15px;
|
||||||
}
|
}
|
||||||
#header .nav li {
|
#header .nav-item {
|
||||||
float: left;
|
float: left;
|
||||||
height:21px;
|
height:21px;
|
||||||
margin:0 14px;
|
margin:0 14px;
|
||||||
}
|
}
|
||||||
.ru #header .nav li {
|
.ru #header .nav-item {
|
||||||
margin:0 11px;
|
margin:0 11px;
|
||||||
}
|
}
|
||||||
#header .nav a,
|
#header .nav .a,
|
||||||
#header .nav a:visited {
|
#header .nav .a:visited {
|
||||||
color:#8A948F;
|
color:#8A948F;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
}
|
}
|
||||||
#header .nav a.cur {
|
#header .nav .a.cur {
|
||||||
color:#000;
|
color:#000;
|
||||||
}
|
}
|
||||||
#header .nav a:hover {
|
#header .nav .a:hover {
|
||||||
color: #ff9933;
|
color: #ff9933;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
{% load seahub_tags avatar_tags group_avatar_tags i18n %}
|
{% load seahub_tags avatar_tags group_avatar_tags i18n %}
|
||||||
|
|
||||||
{% block sub_title %}{{group.group_name}} - {% endblock %}
|
{% block sub_title %}{{group.group_name}} - {% endblock %}
|
||||||
{% block nav_group_class %}class="cur"{% endblock %}
|
{% block cur_group %}cur{% endblock %}
|
||||||
|
|
||||||
{% block left_panel %}
|
{% block left_panel %}
|
||||||
<div class="side-tabnav">
|
<div class="side-tabnav">
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
{% load url from future %}
|
{% load url from future %}
|
||||||
|
|
||||||
{% block sub_title %}{% trans "Groups" %} - {% endblock %}
|
{% block sub_title %}{% trans "Groups" %} - {% endblock %}
|
||||||
{% block nav_group_class %}class="cur"{% endblock %}
|
{% block cur_group %}cur{% endblock %}
|
||||||
|
|
||||||
{% block left_panel %}
|
{% block left_panel %}
|
||||||
{% include "group/groups_left_panel.html" %}
|
{% include "group/groups_left_panel.html" %}
|
||||||
|
@@ -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 %}
|
|
@@ -1,7 +1,7 @@
|
|||||||
{% extends "myhome_base.html" %}
|
{% extends "myhome_base.html" %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
{% block nav_help_class %}class="cur"{% endblock %}
|
{% block cur_help %}cur{% endblock %}
|
||||||
{% block left_panel %}
|
{% block left_panel %}
|
||||||
<div class="side-textnav">
|
<div class="side-textnav">
|
||||||
<h3 class="hd">{% trans "Client" context "help" %}</h2>
|
<h3 class="hd">{% trans "Client" context "help" %}</h2>
|
||||||
|
@@ -57,7 +57,7 @@
|
|||||||
<div id="my-info" data-url="{% url 'space_and_traffic' %}">
|
<div id="my-info" data-url="{% url 'space_and_traffic' %}">
|
||||||
{% avatar request.user 36 %} <span class="icon-caret-down vam"></span>
|
{% avatar request.user 36 %} <span class="icon-caret-down vam"></span>
|
||||||
</div>
|
</div>
|
||||||
<div id="user-info-popup" class="hide">
|
<div id="user-info-popup" class="top-info-popup hide">
|
||||||
<div class="item ovhd">
|
<div class="item ovhd">
|
||||||
{% avatar request.user 36 %}
|
{% avatar request.user 36 %}
|
||||||
<div class="txt">
|
<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/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');
|
||||||
|
$('#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,6 +1,6 @@
|
|||||||
{% extends "myhome_base.html" %}
|
{% extends "myhome_base.html" %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block nav_myhome_class %}class="cur"{% endblock %}
|
{% block cur_myhome %}cur{% endblock %}
|
||||||
|
|
||||||
{% block left_panel %}
|
{% block left_panel %}
|
||||||
<div class="side-tabnav">
|
<div class="side-tabnav">
|
||||||
|
@@ -3,19 +3,26 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block nav %}
|
{% block nav %}
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li>
|
<li class="nav-item">
|
||||||
<a href="{{ SITE_ROOT }}home/my/" {% block nav_myhome_class %}{% endblock %}>{% trans "My Home" %}</a>
|
<a href="{{ SITE_ROOT }}home/my/" class="a {% block cur_myhome %}{% endblock %}">{% trans "My Home" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li style="position:relative;" class="nav-item">
|
||||||
<a href="{{ SITE_ROOT }}groups/" {% block nav_group_class %}{% endblock %}>{% trans "Groups" %}</a>
|
<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>
|
</li>
|
||||||
{% if not cloud_mode %}
|
{% if not cloud_mode %}
|
||||||
<li>
|
<li class="nav-item">
|
||||||
<a href="{% url 'pubrepo' %}" {% block nav_pubinfo_class %}{% endblock %}>{% trans "Organization" %}</a>
|
<a href="{% url 'pubrepo' %}" class="a {% block cur_pubinfo %}{% endblock %}">{% trans "Organization" %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li>
|
<li class="nav-item">
|
||||||
<a href="{{ SITE_ROOT }}help/" {% block nav_help_class %}{% endblock %}>{% trans "Help" %}</a>
|
<a href="{{ SITE_ROOT }}help/" class="a {% block cur_help %}{% endblock %}">{% trans "Help" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
{% load url from future %}
|
{% load url from future %}
|
||||||
|
|
||||||
{% block sub_title %}{% trans "Organization" %} - {% endblock %}
|
{% block sub_title %}{% trans "Organization" %} - {% endblock %}
|
||||||
{% block nav_pubinfo_class %}class="cur"{% endblock %}
|
{% block cur_pubinfo %}class="cur"{% endblock %}
|
||||||
|
|
||||||
{% block left_panel %}
|
{% block left_panel %}
|
||||||
<div class="side-tabnav">
|
<div class="side-tabnav">
|
||||||
|
11
seahub/templates/snippets/groups.html
Normal file
11
seahub/templates/snippets/groups.html
Normal 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>
|
@@ -148,6 +148,7 @@ 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,7 +15,8 @@ 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
|
||||||
@@ -1209,3 +1210,16 @@ 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