1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-17 15:53:28 +00:00

Update wiki

This commit is contained in:
zhengxie
2013-03-15 20:47:26 +08:00
parent d1039e16d5
commit 4f47828d64
4 changed files with 28 additions and 10 deletions

View File

@@ -34,9 +34,9 @@
<form id="wiki-create-form" action="" method="post" class="hide"> <form id="wiki-create-form" action="" method="post" class="hide">
<h3>{% trans "Create Wiki"%}</h3> <h3>{% trans "Create Wiki"%}</h3>
<label>{% trans "Name"%}</label><br/> <label>{% trans "Name"%}</label><br/>
<input id="repo-name" type="text" name="repo_name" value="" maxlength="{{max_file_name}}"/><br /> <input id="repo-name" type="text" name="repo_name" value="{{group.group_name}}-wiki" maxlength="{{max_file_name}}"/><br />
<label>{% trans "Description"%}</label><br/> <label>{% trans "Description"%}</label><br/>
<textarea id="repo-desc" name="repo_desc"></textarea><br/> <textarea id="repo-desc" name="repo_desc">Wiki Pages</textarea><br/>
<p class="error hide"></p> <p class="error hide"></p>
<input type="submit" id="wiki-create-submit" value="{% trans "Submit"%}" class="submit" /> <input type="submit" id="wiki-create-submit" value="{% trans "Submit"%}" class="submit" />
</form> </form>
@@ -47,7 +47,7 @@
<button id="page-delete" class="op-btn" data-url="{% url 'group_wiki_page_delete' group.id page %}">{% trans "Delete Page" %}</button> <button id="page-delete" class="op-btn" data-url="{% url 'group_wiki_page_delete' group.id page %}">{% trans "Delete Page" %}</button>
<button id="page-edit" class="op-btn">{% trans "Edit Page" %}</button> <button id="page-edit" class="op-btn">{% trans "Edit Page" %}</button>
<ul class="wiki-nav fleft"> <ul class="wiki-nav fleft">
<li class="item">{% trans "Home" %}</li> <li class="item"><a href="{% url 'group_wiki' group.id %}" class="link">{% trans "Home" %}</a></li>
<li class="item"><a href="{% url 'group_wiki_pages' group.id %}" class="link">{% trans "Pages" %}</a></li> <li class="item"><a href="{% url 'group_wiki_pages' group.id %}" class="link">{% trans "Pages" %}</a></li>
</ul> </ul>
</div> </div>
@@ -55,6 +55,7 @@
<div id="wiki-area" class="article"> <div id="wiki-area" class="article">
<h1>{{ page|capfirst }}</h1> <h1>{{ page|capfirst }}</h1>
<div id="wiki-content"></div><!--content will be offered by js--> <div id="wiki-content"></div><!--content will be offered by js-->
<p id="wiki-last-modified">Last modified by {{ latest_contributor|email2nickname}}, {{last_modified|translate_seahub_time}}</p>
</div> </div>
<form id="page-create-form" action="{% url 'group_wiki_page_new' group.id %}" method="post" class="hide"> <form id="page-create-form" action="{% url 'group_wiki_page_new' group.id %}" method="post" class="hide">

View File

@@ -24,7 +24,7 @@
<button id="page-create" class="op-btn">{% trans "New Page" %}</button> <button id="page-create" class="op-btn">{% trans "New Page" %}</button>
<ul class="wiki-nav fleft"> <ul class="wiki-nav fleft">
<li class="item"><a href="{% url 'group_wiki' group.id %}" class="link">{% trans "Home" %}</a></li> <li class="item"><a href="{% url 'group_wiki' group.id %}" class="link">{% trans "Home" %}</a></li>
<li class="item">{% trans "Pages" %}</li> <li class="item"><a href="{% url 'group_wiki_pages' group.id %}" class="link">{% trans "Pages" %}</a></li>
</ul> </ul>
</div> </div>

View File

@@ -3,6 +3,7 @@ import logging
import os import os
import stat import stat
import simplejson as json import simplejson as json
import urllib2
from django.core.mail import send_mail from django.core.mail import send_mail
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib import messages from django.contrib import messages
@@ -12,6 +13,7 @@ from django.http import HttpResponse, HttpResponseRedirect, Http404, \
from django.shortcuts import render_to_response, redirect from django.shortcuts import render_to_response, redirect
from django.template import Context, loader, RequestContext from django.template import Context, loader, RequestContext
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils.hashcompat import md5_constructor
from django.utils.http import urlquote from django.utils.http import urlquote
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.utils.translation import ungettext from django.utils.translation import ungettext
@@ -44,7 +46,8 @@ from seahub.settings import SITE_ROOT, SITE_NAME, MEDIA_URL
from seahub.shortcuts import get_first_object_or_none from seahub.shortcuts import get_first_object_or_none
from seahub.utils import render_error, render_permission_error, \ from seahub.utils import render_error, render_permission_error, \
validate_group_name, string2list, check_and_get_org_by_group, \ validate_group_name, string2list, check_and_get_org_by_group, \
check_and_get_org_by_repo, gen_file_get_url, get_file_type_and_ext check_and_get_org_by_repo, gen_file_get_url, get_file_type_and_ext, \
get_file_contributors
from seahub.utils.slugify import slugify from seahub.utils.slugify import slugify
from seahub.views import is_registered_user from seahub.views import is_registered_user
from seahub.forms import RepoCreateForm, SharedRepoCreateForm from seahub.forms import RepoCreateForm, SharedRepoCreateForm
@@ -1095,19 +1098,18 @@ def get_file_url(repo_id, path, filename):
access_token = seafserv_rpc.web_get_access_token(repo_id, obj_id, access_token = seafserv_rpc.web_get_access_token(repo_id, obj_id,
'view', '') 'view', '')
url = gen_file_get_url(access_token, filename) url = gen_file_get_url(access_token, filename)
return url return url, obj_id
def get_wiki_page(request, group, page_name): def get_wiki_page(request, group, page_name):
import urllib2
repo = find_wiki_repo(request, group) repo = find_wiki_repo(request, group)
if not repo: if not repo:
raise WikiDoesNotExist raise WikiDoesNotExist
path = "/" + page_name + ".md" path = "/" + page_name + ".md"
filename = page_name + ".md" filename = page_name + ".md"
url = get_file_url(repo.id, path, filename) url, obj_id = get_file_url(repo.id, path, filename)
file_response = urllib2.urlopen(url) file_response = urllib2.urlopen(url)
content = file_response.read() content = file_response.read()
return content, repo.id return content, repo.id, obj_id
def convert_wiki_link(content, group, repo_id, username): def convert_wiki_link(content, group, repo_id, username):
import re import re
@@ -1158,8 +1160,9 @@ def group_wiki(request, group, page_name="home"):
username = request.user.username username = request.user.username
content = '' content = ''
wiki_exists = True wiki_exists = True
last_modified, latest_contributor = None, None
try: try:
content, repo_id = get_wiki_page(request, group, page_name) content, repo_id, obj_id = get_wiki_page(request, group, page_name)
except WikiDoesNotExist: except WikiDoesNotExist:
wiki_exists = False wiki_exists = False
except WikiPageMissing: except WikiPageMissing:
@@ -1172,6 +1175,13 @@ def group_wiki(request, group, page_name="home"):
else: else:
content = convert_wiki_link(content, group, repo_id, username) content = convert_wiki_link(content, group, repo_id, username)
# fetch file latest contributor and last modified
path = '/' + page_name + '.md'
file_path_hash = md5_constructor(urllib2.quote(path.encode('utf-8'))).hexdigest()[:12]
contributors, last_modified, last_commit_id = get_file_contributors(\
repo_id, path.encode('utf-8'), file_path_hash, obj_id)
latest_contributor = contributors[0] if contributors else None
return render_to_response("group/group_wiki.html", { return render_to_response("group/group_wiki.html", {
"group_id": group.id, "group_id": group.id,
"group" : group, "group" : group,
@@ -1179,6 +1189,8 @@ def group_wiki(request, group, page_name="home"):
"content": content, "content": content,
"page": page_name, "page": page_name,
"wiki_exists": wiki_exists, "wiki_exists": wiki_exists,
"last_modified": last_modified,
"latest_contributor": latest_contributor,
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))
@login_required @login_required

View File

@@ -2036,6 +2036,11 @@ textarea:-moz-placeholder {/* for FF */
#wiki-area { #wiki-area {
padding: 0 0; padding: 0 0;
} }
#wiki-last-modified {
margin-top: 10px;
font-size:12px;
color: #666;
}
#wiki-pages { #wiki-pages {
list-style-type:disc; list-style-type:disc;
padding-left:2em; padding-left:2em;