1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-25 06:33:48 +00:00

Add repo share feature

This commit is contained in:
xiez
2012-04-24 14:21:52 +08:00
parent be712e3a8e
commit f4002df715
5 changed files with 122 additions and 1 deletions

View File

@@ -25,6 +25,7 @@
<td>{{ repo.props.id }}</td>
<td>{{ repo.props.desc }}</td>
<td>
<button data="{{ repo.props.id }}" class="repo-share-btn">共享</button>
<button data="{{ SITE_ROOT }}repo/remove/{{ repo.props.id }}/" class="repo-delete-btn">删除</button>
</td>
</tr>
@@ -58,10 +59,24 @@
{% else %}
<p>暂无</p>
{% endif %}
<form id="repo-share-form" action="/repo/addshare/" method="post" name="repo-share-form" class="hide">
<label>邮箱</label><br />
<input id="to_email" type="text" name="to_email" value="" maxlength="40" /><br/>
<input id="share_repo_id" type="hidden" name="share_repo_id" value="" />
<input type="submit" value="提交" />
</form>
{% endblock %}
{% block extra_script %}
<script type="text/javascript">
$(".repo-share-btn").click(function() {
repo_id = $(this).attr("data");
$("#share_repo_id").val(repo_id);
$("#repo-share-form").modal({appendTo: "#main", containerCss:{padding:18}});
});
addConfirmTo($('.repo-delete-btn'));
</script>
{% endblock %}

View File

@@ -4,6 +4,10 @@
<li>
<a href="{{ SITE_ROOT }}home/my/" {% block nav_home_class %}{% endblock %}>我的页面</a>
</li>
<li>
<a href="{{ SITE_ROOT }}shareadmin/" {% block nav_shareadmin_class %}{% endblock %}>共享管理</a>
</li>
{% if request.user.is_staff %}
<li>
<a href="{{ SITE_ROOT }}seafadmin/" {% block nav_seafadmin_class %}{% endblock %}>目录管理</a>

View File

@@ -0,0 +1,63 @@
{% extends "myhome_base.html" %}
{% block nav_shareadmin_class %}class="cur"{% endblock %}
{% block right_panel %}
<h3>我共享的同步目录</h3>
{% if out_repos %}
<table class="repo-list">
<tr>
<th width="12%">名字</th>
<th width="33%">邮箱</th>
<th width="40%">描述</th>
<th width="15%">操作</th>
</tr>
{% for repo in out_repos %}
<tr>
<td><a href="{{ SITE_ROOT }}repo/{{ repo.props.id }}">{{ repo.props.name }}</a></td>
<td>{{ repo.props.shared_email }}</td>
<td>{{ repo.props.desc }}</td>
<td>
<a href="{{ SITE_ROOT }}shareadmin/remove/{{ repo.props.id }}/{{ repo.props.shared_email }}/">取消共享</a>
</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>暂无</p>
{% endif %}
<h3>共享给我的同步目录</h3>
{% if in_repos %}
<table class="repo-list">
<tr>
<th width="12%">名字</th>
<th width="33%">邮箱</th>
<th width="40%">描述</th>
<th width="15%">操作</th>
</tr>
{% for repo in in_repos %}
<tr>
<td><a href="{{ SITE_ROOT }}repo/{{ repo.props.id }}">{{ repo.props.name }}</a></td>
<td>{{ repo.props.shared_email }}</td>
<td>{{ repo.props.desc }}</td>
<td>
<a href="#">下载</a>
</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>暂无</p>
{% endif %}
{% endblock %}
{% block extra_script %}
<script type="text/javascript">
addConfirmTo($('.repo-delete-btn'));
</script>
{% endblock %}

View File

@@ -6,7 +6,8 @@ from seahub.views import root, peers, groups, myhome, \
repo, group, modify_token, remove_repo, seafadmin, useradmin, \
role_add, role_remove, activate_user, user_add, user_remove, \
ownerhome, remove_fetched_repo, repo_set_public, repo_unset_public, \
repo_list_dir, user_info, repo_set_access_property, repo_operation_file
repo_list_dir, user_info, repo_set_access_property, repo_operation_file, \
repo_add_share, repo_list_share, repo_remove_share
# Uncomment the next two lines to enable the admin:
#from django.contrib import admin
@@ -28,6 +29,10 @@ urlpatterns = patterns('',
(r'^$', root),
url(r'^home/my/$', myhome, name='myhome'),
url(r'^home/owner/(?P<owner_name>[^/]+)/$', ownerhome, name='ownerhome'),
url(r'^repo/addshare/$', repo_add_share, name='repo_add_share'),
url(r'^shareadmin/$', repo_list_share, name='repo_list_share'),
(r'^shareadmin/remove/(?P<repo_id>[^/]+)/(?P<to_email>[^/]+)/$', repo_remove_share),
(r'^download/$', direct_to_template, { 'template': 'download.html' } ),
(r'^repo/(?P<repo_id>[^/]+)/$', repo),
(r'^repo/token/modify/(?P<repo_id>[^/]+)/$', modify_token),

View File

@@ -330,7 +330,41 @@ def repo_operation_file(request, op, repo_id, obj_id, file_name):
(http_server_root,
repo_id, obj_id,
file_name, op, token))
@login_required
def repo_add_share(request):
if request.method == 'POST':
from_email = request.user.username
repo_id = request.POST.get('share_repo_id', '')
to_email = request.POST.get('to_email', '')
if validate_owner(request, repo_id):
seafserv_threaded_rpc.add_share(repo_id, from_email, to_email, 'rw')
return HttpResponseRedirect(request.META['HTTP_REFERER'])
@login_required
def repo_list_share(request):
username = request.user.username
out_repos = seafserv_threaded_rpc.list_share_repos(username, 'from_email', -1, -1)
in_repos = seafserv_threaded_rpc.list_share_repos(username, 'to_email', -1, -1)
return render_to_response('share_repos.html', {
"out_repos": out_repos,
"in_repos": in_repos,
}, context_instance=RequestContext(request))
@login_required
def repo_remove_share(request, repo_id, to_email):
if not validate_owner(request, repo_id):
raise Http404
from_email = request.user.username
seafserv_threaded_rpc.remove_share(repo_id, from_email, to_email)
return HttpResponseRedirect(request.META['HTTP_REFERER'])
@login_required
def mypeers(request):
cid = get_user_cid(request.user)