From 1faa06132162586e1cde3a5314f62ebda54ade32 Mon Sep 17 00:00:00 2001 From: C_Q Date: Thu, 30 Aug 2018 11:35:56 +0800 Subject: [PATCH] Update wiki (#2313) * [wiki] show all files * [wiki]update choose repo as wiki --- .../src/components/tree-view/tree-node-view.js | 2 -- frontend/src/wiki.js | 4 ++++ seahub/api2/endpoints/wikis.py | 15 ++++++++++++--- seahub/templates/wiki/wiki_list.html | 11 ++++++++--- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/tree-view/tree-node-view.js b/frontend/src/components/tree-view/tree-node-view.js index e4eda3bc2f..f0dbcec8e2 100644 --- a/frontend/src/components/tree-view/tree-node-view.js +++ b/frontend/src/components/tree-view/tree-node-view.js @@ -100,8 +100,6 @@ class TreeNodeView extends React.Component { paddingLeft: this.props.paddingLeft }; var l = node.children.sort(sortByType); - l = l.filter((node) => { return node.type == "dir" || node.isMarkdown(); }) - /* the `key` property is needed. Otherwise there is a warning in the console */ diff --git a/frontend/src/wiki.js b/frontend/src/wiki.js index d366a8077e..3e18e95765 100644 --- a/frontend/src/wiki.js +++ b/frontend/src/wiki.js @@ -122,6 +122,10 @@ class Wiki extends Component { onFileClick = (e, node) => { if (node.isMarkdown()) { this.loadFile(node.path); + } else { + const w=window.open('about:blank'); + const url = serviceUrl + '/lib/' + repoID + '/file' + node.path; + w.location.href = url; } } diff --git a/seahub/api2/endpoints/wikis.py b/seahub/api2/endpoints/wikis.py index 3416cd710c..511eb106b5 100644 --- a/seahub/api2/endpoints/wikis.py +++ b/seahub/api2/endpoints/wikis.py @@ -22,6 +22,7 @@ from seahub.wiki.models import Wiki, DuplicateWikiNameError from seahub.wiki.utils import is_valid_wiki_name, slugfy_wiki_name from seahub.utils import is_org_context, get_user_repos from seahub.views import check_folder_permission +from seahub.share.utils import is_repo_admin logger = logging.getLogger(__name__) @@ -126,10 +127,18 @@ class WikisView(APIView): return api_error(status.HTTP_400_BAD_REQUEST, msg) repo = seafile_api.get_repo(repo_id) + if not repo: + error_msg = 'Library %s not found.' % repo_id + return api_error(status.HTTP_404_NOT_FOUND, error_msg) + + is_owner = seafile_api.is_repo_owner(username, repo_id) + is_admin = is_repo_admin(username, repo_id) + + if not is_owner: + if not is_admin: + error_msg = _('Permission denied.') + return api_error(status.HTTP_403_FORBIDDEN, error_msg) - if check_folder_permission(request, repo_id, '/') != 'rw': - error_msg = _('Permission denied.') - return api_error(status.HTTP_403_FORBIDDEN, error_msg) try: wiki = Wiki.objects.add(wiki_name=repo.repo_name, username=username, repo_id=repo.repo_id, org_id=org_id) diff --git a/seahub/templates/wiki/wiki_list.html b/seahub/templates/wiki/wiki_list.html index 28f7526624..79bbd85746 100644 --- a/seahub/templates/wiki/wiki_list.html +++ b/seahub/templates/wiki/wiki_list.html @@ -464,12 +464,17 @@ var NewWikiController = { clickToNewWikiByOwnlib: function(event) { var _this = this; $.ajax({ - url: "{{SITE_ROOT}}api2/repos/?type=mine", + url: "{{SITE_ROOT}}api2/repos/", cache: false, dataType: 'json', success: function(data) { - if (data && data.length) { - _this.chooseEl.append($(_this.chooseWikiTmpl(data))); + var repos = data.filter(function(i) { + return i['encrypted'] !== true; + } + ) + + if (repos && repos.length) { + _this.chooseEl.append($(_this.chooseWikiTmpl(repos))); $('#new-wiki-by-existing-form').modal(); $('#simplemodal-container').css({'width':'auto', 'height':'auto'}) }