1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-01 07:01:12 +00:00

add 'updateGroups' for side-nav, and other improvement

This commit is contained in:
llj
2016-01-09 14:35:16 +08:00
parent e1981509c6
commit ec6679e448
7 changed files with 58 additions and 29 deletions

View File

@@ -552,11 +552,15 @@
<a href="#"><span class="sf2-icon-group"></span>{% trans "Groups" %}<span class="toggle-icon icon-caret-down fright"></span></a> <a href="#"><span class="sf2-icon-group"></span>{% trans "Groups" %}<span class="toggle-icon icon-caret-down fright"></span></a>
<ul class="grp-list"> <ul class="grp-list">
<li<% if (cur_group_tab == 'groups') { %> class="tab-cur"<% }%>><a href="{% url 'group_list' %}"><span class="sharp">#</span>{% trans "All Groups" %}</a></li> <li<% if (cur_group_tab == 'groups') { %> class="tab-cur"<% }%>><a href="{% url 'group_list' %}"><span class="sharp">#</span>{% trans "All Groups" %}</a></li>
{% for grp in grps %} <% for (var i = 0, len = groups.length; i < len; i++) { %>
<li<% if (cur_group_id == '{{ grp.id }}') { %> class="tab-cur"<% }%>> <% if (cur_group_id == groups[i].id) { %>
<a class="ellipsis" href="{{SITE_ROOT}}#group/{{ grp.id }}/" title="{{ grp.group_name }}"><span class="sharp">#</span>{{ grp.group_name }}</a> <li class="tab-cur">
<% } else { %>
<li>
<% } %>
<a class="ellipsis" href="{{SITE_ROOT}}#group/<%= groups[i].id %>/" title="<%- groups[i].name %>"><span class="sharp">#</span><%- groups[i].name %></a>
</li> </li>
{% endfor %} <% } %>
</ul> </ul>
</li> </li>
<% } else { %> <% } else { %>
@@ -571,11 +575,11 @@
<li> <li>
<a href="{% url 'group_list' %}"><span class="sharp">#</span>{% trans "All Groups" %}</a> <a href="{% url 'group_list' %}"><span class="sharp">#</span>{% trans "All Groups" %}</a>
</li> </li>
{% for grp in grps %} <% for (var i = 0, len = groups.length; i < len; i++) { %>
<li> <li>
<a class="ellipsis" href="{{SITE_ROOT}}#group/{{ grp.id }}/" title="{{ grp.group_name }}"><span class="sharp">#</span>{{ grp.group_name }}</a> <a class="ellipsis" href="{{SITE_ROOT}}#group/<%= groups[i].id %>/" title="<%- groups[i].name %>"><span class="sharp">#</span><%- groups[i].name %></a>
</li> </li>
{% endfor %} <% } %>
</ul> </ul>
</li> </li>
<% } %> <% } %>
@@ -640,11 +644,9 @@
{% endif %} {% endif %}
<div class="fright"> <div class="fright">
<span class="sf2-icon-cog1 op-icon" title="{% trans "Settings" %}" id="group-settings-icon"></span> <span class="sf2-icon-cog1 op-icon" title="{% trans "Settings" %}" id="group-settings-icon"></span>
<span class="sf2-icon-user2 op-icon" title="{% trans "Members" %}" id="group-members-icon"></span> <span class="sf2-icon-user2 op-icon" title="{% trans "Members" %}" id="group-members-icon"></span>
<% if (!is_pub) { %> <span class="sf2-icon-msgs2 op-icon" title="{% trans "Discussion" %}"></span>
<span class="sf2-icon-msgs2 op-icon" title="{% trans "Discussion" %}"></span>
<% } %>
</div> </div>
</div> </div>
</script> </script>

View File

@@ -42,11 +42,16 @@ define([
Common.initNoticePopup(); Common.initNoticePopup();
this.sideNavView = new SideNavView(); this.sideNavView = new SideNavView();
app.ui = {
sideNavView: this.sideNavView
};
this.dirView = new DirView(); this.dirView = new DirView();
this.myHomeView = new MyHomeView({dirView: this.dirView}); this.myHomeView = new MyHomeView({dirView: this.dirView});
this.groupView = new GroupView({dirView: this.dirView}); this.groupView = new GroupView({
dirView: this.dirView
});
this.orgView = new OrgView({dirView: this.dirView}); this.orgView = new OrgView({dirView: this.dirView});
this.groupsView = new GroupsView(); this.groupsView = new GroupsView();

View File

@@ -16,6 +16,8 @@ define([
importMembersTemplate: _.template($('#group-import-members-form-tmpl').html()), importMembersTemplate: _.template($('#group-import-members-form-tmpl').html()),
initialize: function(options) { initialize: function(options) {
this.groupView = options.groupView;
// group basic info // group basic info
this.group = {}; this.group = {};
@@ -65,7 +67,7 @@ define([
}), }),
cache: false, cache: false,
dataType: 'json', dataType: 'json',
success: function (data) { success: function(data) {
_this.group = data; // {id, name, owner, created_at, avatar_url, admins} _this.group = data; // {id, name, owner, created_at, avatar_url, admins}
var username = app.pageOptions.username; var username = app.pageOptions.username;
@@ -170,9 +172,8 @@ define([
}, },
success: function() { success: function() {
$.modal.close(); $.modal.close();
// TODO: improve app.ui.sideNavView.updateGroups();
//app.router.navigate('group/' + _this.group_id + '/', {trigger: true, replace: true}); _this.groupView.renderGroupTop();
location.reload(true);
}, },
error: function(xhr) { error: function(xhr) {
var error_msg; var error_msg;
@@ -307,9 +308,8 @@ define([
dataType: 'json', dataType: 'json',
beforeSend: Common.prepareCSRFToken, beforeSend: Common.prepareCSRFToken,
success: function() { success: function() {
app.ui.sideNavView.updateGroups();
app.router.navigate('groups/', {trigger: true}); app.router.navigate('groups/', {trigger: true});
// TO update side nav - 'group list'
location.reload(true); // improve it ??
}, },
error: function(xhr) { error: function(xhr) {
var error_msg; var error_msg;
@@ -343,9 +343,8 @@ define([
dataType: 'json', dataType: 'json',
beforeSend: Common.prepareCSRFToken, beforeSend: Common.prepareCSRFToken,
success: function() { success: function() {
app.ui.sideNavView.updateGroups();
app.router.navigate('groups/', {trigger: true}); app.router.navigate('groups/', {trigger: true});
// TO update side nav - 'group list'
location.reload(true); // improve it ??
}, },
error: function(xhr) { error: function(xhr) {
var err_msg; var err_msg;

View File

@@ -41,7 +41,10 @@ define([
this.dirView = options.dirView; this.dirView = options.dirView;
this.membersView = new GroupMembersView(); this.membersView = new GroupMembersView();
this.settingsView = new GroupSettingsView(); this.settingsView = new GroupSettingsView({
sideNavView: options.sideNavView,
groupView: this
});
}, },
addOne: function(repo, collection, options) { addOne: function(repo, collection, options) {
@@ -76,13 +79,13 @@ define([
} }
}, },
renderGroupTop: function(group_id) { renderGroupTop: function() {
var _this = this; var _this = this;
var $groupTop = $('#group-top'); var $groupTop = $('#group-top');
$.ajax({ $.ajax({
url: Common.getUrl({ url: Common.getUrl({
'name': 'group_basic_info', 'name': 'group',
'group_id': group_id 'group_id': this.group_id
}), }),
cache: false, cache: false,
dataType: 'json', dataType: 'json',
@@ -92,7 +95,7 @@ define([
error: function(xhr) { error: function(xhr) {
var err_msg; var err_msg;
if (xhr.responseText) { if (xhr.responseText) {
err_msg = $.parseJSON(xhr.responseText).error; err_msg = $.parseJSON(xhr.responseText).error_msg;
} else { } else {
err_msg = gettext("Please check the network."); err_msg = gettext("Please check the network.");
} }
@@ -105,7 +108,7 @@ define([
this.group_id = group_id; this.group_id = group_id;
this.dirView.hide(); this.dirView.hide();
this.$emptyTip.hide(); this.$emptyTip.hide();
this.renderGroupTop(group_id); this.renderGroupTop();
this.$tabs.show(); this.$tabs.show();
this.$table.hide(); this.$table.hide();
var $loadingTip = this.$loadingTip; var $loadingTip = this.$loadingTip;

View File

@@ -110,6 +110,7 @@ define([
if (groups.length == 1) { if (groups.length == 1) {
_this.reset(); _this.reset();
} }
app.ui.sideNavView.updateGroups();
}, },
error: function(collection, response, options) { error: function(collection, response, options) {
var err_msg; var err_msg;

View File

@@ -17,6 +17,7 @@ define([
this.data = { this.data = {
'cur_tab': this.default_cur_tab, 'cur_tab': this.default_cur_tab,
'show_group_list': false, // when cur_tab is not 'group' 'show_group_list': false, // when cur_tab is not 'group'
'groups': app.pageOptions.groups,
'mods_enabled': app.pageOptions.user_mods_enabled, 'mods_enabled': app.pageOptions.user_mods_enabled,
'can_add_repo': app.pageOptions.can_add_repo, 'can_add_repo': app.pageOptions.can_add_repo,
}; };
@@ -85,13 +86,32 @@ define([
}); });
}, },
setCurTab: function (cur_tab, options) { setCurTab: function(cur_tab, options) {
this.data.cur_tab = cur_tab || this.default_cur_tab; this.data.cur_tab = cur_tab || this.default_cur_tab;
if (options) { if (options) {
$.extend(this.data, options); $.extend(this.data, options);
} }
this.data.show_group_list = $('#group-nav .grp-list:visible').length ? true : false; this.data.show_group_list = $('#group-nav .grp-list:visible').length ? true : false;
this.render(); this.render();
},
updateGroups: function() {
var _this = this;
$.ajax({
url: Common.getUrl({name: 'groups'}),
type: 'GET',
dataType: 'json',
cache: false,
success: function(data) {
data.sort(function(a, b) {
return Common.compareTwoWord(a.name, b.name);
});
_this.data.groups = data;
_this.render();
},
error: function() {
}
});
} }
}); });

View File

@@ -108,7 +108,6 @@ define([
case 'group_member': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/members/' + options.email + '/'; case 'group_member': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/members/' + options.email + '/';
case 'group_member_bulk': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/members/bulk/'; case 'group_member_bulk': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/members/bulk/';
case 'group_repos': return siteRoot + 'api2/groups/' + options.group_id + '/repos/'; case 'group_repos': return siteRoot + 'api2/groups/' + options.group_id + '/repos/';
case 'group_basic_info': return siteRoot + 'ajax/group/' + options.group_id + '/basic-info/';
case 'toggle_group_modules': return siteRoot + 'ajax/group/' + options.group_id + '/toggle-modules/'; case 'toggle_group_modules': return siteRoot + 'ajax/group/' + options.group_id + '/toggle-modules/';
case 'toggle_personal_modules': return siteRoot + 'ajax/toggle-personal-modules/'; case 'toggle_personal_modules': return siteRoot + 'ajax/toggle-personal-modules/';
case 'ajax_unset_inner_pub_repo': return siteRoot + 'ajax/unset-inner-pub-repo/' + options.repo_id + '/'; case 'ajax_unset_inner_pub_repo': return siteRoot + 'ajax/unset-inner-pub-repo/' + options.repo_id + '/';