mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-03 07:55:36 +00:00
[system admin] admin logs: fix
This commit is contained in:
@@ -22,7 +22,8 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
SEACLOUD_MODE = False
|
SEACLOUD_MODE = False
|
||||||
|
|
||||||
from seahub.utils import HAS_FILE_SEARCH, EVENTS_ENABLED, TRAFFIC_STATS_ENABLED
|
from seahub.utils import HAS_FILE_SEARCH, EVENTS_ENABLED, TRAFFIC_STATS_ENABLED, \
|
||||||
|
is_pro_version
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from seahub.settings import ENABLE_PUBFILE
|
from seahub.settings import ENABLE_PUBFILE
|
||||||
@@ -85,4 +86,5 @@ def base(request):
|
|||||||
'FILE_SERVER_ROOT': file_server_root,
|
'FILE_SERVER_ROOT': file_server_root,
|
||||||
'enable_guest_invitation': ENABLE_GUEST_INVITATION,
|
'enable_guest_invitation': ENABLE_GUEST_INVITATION,
|
||||||
'enable_terms_and_conditions': dj_settings.ENABLE_TERMS_AND_CONDITIONS,
|
'enable_terms_and_conditions': dj_settings.ENABLE_TERMS_AND_CONDITIONS,
|
||||||
|
'is_pro': True if is_pro_version() else False,
|
||||||
}
|
}
|
||||||
|
@@ -67,9 +67,11 @@
|
|||||||
<a href="{{ SITE_ROOT }}sys/termsadmin/"><span class="sf2-icon-wiki"></span>{% trans "Terms and Conditions" %}</a>
|
<a href="{{ SITE_ROOT }}sys/termsadmin/"><span class="sf2-icon-wiki"></span>{% trans "Terms and Conditions" %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<% if (app.pageOptions.is_pro) { %>
|
||||||
<li class="tab<% if (cur_tab == 'admin-logs') { %> tab-cur<% } %>">
|
<li class="tab<% if (cur_tab == 'admin-logs') { %> tab-cur<% } %>">
|
||||||
<a href="{{ SITE_ROOT }}sysadmin/#admin-logs/"><span class="sf2-icon-clock"></span>{% trans "Admin Logs" %}</a>
|
<a href="{{ SITE_ROOT }}sysadmin/#admin-logs/"><span class="sf2-icon-clock"></span>{% trans "Admin Logs" %}</a>
|
||||||
</li>
|
</li>
|
||||||
|
<% } %>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
<% if (cur_tab == 'libraries') { %>
|
<% if (cur_tab == 'libraries') { %>
|
||||||
@@ -845,11 +847,11 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/template" id="admin-logs-tmpl">
|
<script type="text/template" id="admin-logs-tmpl">
|
||||||
<div class="hd ovhd">
|
<div class="hd">
|
||||||
<h3 class="fleft">{% trans "Admin Logs" %}</h3>
|
<h3>{% trans "Admin Logs" %}</h3>
|
||||||
</div>
|
</div>
|
||||||
<span class="loading-icon loading-tip"></span>
|
<span class="loading-icon loading-tip"></span>
|
||||||
<table>
|
<table class="hide">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th width="20%">{% trans "Email" %}</th>
|
<th width="20%">{% trans "Email" %}</th>
|
||||||
@@ -861,57 +863,18 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="empty-tips hide">
|
|
||||||
<h2 class="alc">{% trans "No Admin Logs" %}</h2>
|
|
||||||
</div>
|
|
||||||
<div id="paginator">
|
<div id="paginator">
|
||||||
<a class="prev js-previous hide" href="#">{% trans "Previous" %}</a>
|
<a class="prev js-previous hide" href="#">{% trans "Previous" %}</a>
|
||||||
<a class="next js-next hide" href="#">{% trans "Next" %}</a>
|
<a class="next js-next hide" href="#">{% trans "Next" %}</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="empty-tips hide">
|
||||||
|
<h2 class="alc">{% trans "No Admin Logs" %}</h2>
|
||||||
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/template" id="admin-log-item-tmpl">
|
<script type="text/template" id="admin-log-item-tmpl">
|
||||||
<td><a href="{{ SITE_ROOT }}useradmin/info/<% print(encodeURIComponent(email)); %>/"><%- email %></a></td>
|
<td><a href="<%= admin_user_url %>"><%- email %></a></td>
|
||||||
|
<td><%= op_title %></td>
|
||||||
<% if (operation=='repo_delete') { %>
|
<td><%= op_details %></td>
|
||||||
<td>{% trans "Delete Library" %}</td>
|
|
||||||
<td>{% trans "Delete library" %} <strong title="<%- detail['id'] %>"><%- detail['name'] %></strong></td>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<% if (operation=='repo_transfer') { %>
|
|
||||||
<td>{% trans "Transfer Library" %}</td>
|
|
||||||
<% if (app.pageOptions.is_pro && app.pageOptions.enable_sys_admin_view_repo) { %>
|
|
||||||
<td>{% trans "Transfer library" %} <a href="#libs/<%- detail['id'] %>/"><%- detail['name'] %></a> {% trans "from" %} <a href="{{ SITE_ROOT }}useradmin/info/<%- detail['from'] %>/"><%- detail['from'] %></a> {% trans "to" %} <a href="{{ SITE_ROOT }}useradmin/info/<%- detail['to'] %>/"><%- detail['to'] %></a></td>
|
|
||||||
<% } else { %>
|
|
||||||
<td>{% trans "Transfer library" %} <%- detail['name'] %> {% trans "from" %} <a href="{{ SITE_ROOT }}useradmin/info/<%- detail['from'] %>/"><%- detail['from'] %></a> {% trans "to" %} <a href="{{ SITE_ROOT }}useradmin/info/<%- detail['to'] %>/"><%- detail['to'] %></a></td>
|
|
||||||
<% } %>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<% if (operation=='group_create') { %>
|
|
||||||
<td>{% trans "Create Group" %}</td>
|
|
||||||
<td>{% trans "Create group" %} <span><a href="#groups/<%- detail['id'] %>/"><%- detail['name'] %></span></td>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<% if (operation=='group_transfer') { %>
|
|
||||||
<td>{% trans "Transfer Group" %}</td>
|
|
||||||
|
|
||||||
<td>{% trans "Transfer group" %} <a href="#groups/<%- detail['id'] %>/"><%- detail['name'] %></a> {% trans "from" %} <a href="{{ SITE_ROOT }}useradmin/info/<%- detail['from'] %>/"><%- detail['from'] %></a> {% trans "to" %} <a href="{{ SITE_ROOT }}useradmin/info/<%- detail['to'] %>/"><%- detail['to'] %></a></td>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<% if (operation=='group_delete') { %>
|
|
||||||
<td>{% trans "Delete Group" %}</td>
|
|
||||||
<td>{% trans "Delete group" %} <strong title="<%- detail['id'] %>"><%- detail['name'] %></strong></td>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<% if (operation=='user_add') { %>
|
|
||||||
<td>{% trans "Add User" %}</td>
|
|
||||||
<td>{% trans "Add user" %} <span><a href="{{ SITE_ROOT }}useradmin/info/<%- detail['email'] %>/"><%- detail['email'] %></a></span></td>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<% if (operation=='user_delete') { %>
|
|
||||||
<td>{% trans "Delete User" %}</td>
|
|
||||||
<td>{% trans "Delete user" %} <strong><%- detail['email'] %></strong></td>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<td><time title="<%- time %>"><%- time_from_now %></time></td>
|
<td><time title="<%- time %>"><%- time_from_now %></time></td>
|
||||||
</script>
|
</script>
|
||||||
|
@@ -73,9 +73,11 @@
|
|||||||
<a href="{{ SITE_ROOT }}sys/termsadmin/"><span class="sf2-icon-wiki"></span>{% trans "Terms and Conditions" %}</a>
|
<a href="{{ SITE_ROOT }}sys/termsadmin/"><span class="sf2-icon-wiki"></span>{% trans "Terms and Conditions" %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if is_pro %}
|
||||||
<li class="tab">
|
<li class="tab">
|
||||||
<a href="{{ SITE_ROOT }}sysadmin/#admin-logs/"><span class="sf2-icon-clock"></span>{% trans "Admin Logs" %}</a>
|
<a href="{{ SITE_ROOT }}sysadmin/#admin-logs/"><span class="sf2-icon-clock"></span>{% trans "Admin Logs" %}</a>
|
||||||
</li>
|
</li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -179,7 +179,6 @@ define([
|
|||||||
case 'admin-trash-library': return siteRoot + 'api/v2.1/admin/trash-libraries/' + options.repo_id + '/';
|
case 'admin-trash-library': return siteRoot + 'api/v2.1/admin/trash-libraries/' + options.repo_id + '/';
|
||||||
case 'admin_shares': return siteRoot + 'api/v2.1/admin/shares/';
|
case 'admin_shares': return siteRoot + 'api/v2.1/admin/shares/';
|
||||||
case 'sys_group_admin_export_excel': return siteRoot + 'sys/groupadmin/export-excel/';
|
case 'sys_group_admin_export_excel': return siteRoot + 'sys/groupadmin/export-excel/';
|
||||||
|
|
||||||
case 'admin-logs': return siteRoot + 'api/v2.1/admin/admin-logs/';
|
case 'admin-logs': return siteRoot + 'api/v2.1/admin/admin-logs/';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@@ -16,16 +16,15 @@ define([
|
|||||||
|
|
||||||
state: {
|
state: {
|
||||||
firstPage: 1,
|
firstPage: 1,
|
||||||
pageSize: 100,
|
pageSize: 100
|
||||||
},
|
},
|
||||||
|
|
||||||
// Setting `null` as the value of any mapping
|
// Setting a parameter mapping value to null removes it from the query string
|
||||||
// will remove it from the query string.
|
|
||||||
queryParams: {
|
queryParams: {
|
||||||
currentPage: "page",
|
currentPage: "page",
|
||||||
pageSize: "per_page",
|
pageSize: "per_page",
|
||||||
totalPages: null,
|
totalPages: null,
|
||||||
totalRecords: null,
|
totalRecords: null
|
||||||
},
|
},
|
||||||
|
|
||||||
parseState: function (resp) {
|
parseState: function (resp) {
|
||||||
|
@@ -21,12 +21,71 @@ define([
|
|||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
var data = this.model.toJSON(),
|
var data = {'email': this.model.get('email')},
|
||||||
created_at = Moment(data['datetime']);
|
created_at = Moment(this.model.get('datetime'));
|
||||||
|
|
||||||
data['time'] = created_at.format('LLLL');
|
data['time'] = created_at.format('LLLL');
|
||||||
data['time_from_now'] = Common.getRelativeTimeStr(created_at);
|
data['time_from_now'] = Common.getRelativeTimeStr(created_at);
|
||||||
|
|
||||||
|
var detail = this.model.get('detail');
|
||||||
|
|
||||||
|
var user_url = function(user_id) {
|
||||||
|
return app.config.siteRoot + 'useradmin/info/' + encodeURIComponent(user_id) + '/';
|
||||||
|
};
|
||||||
|
|
||||||
|
data.admin_user_url = user_url(data.email);
|
||||||
|
|
||||||
|
switch(this.model.get('operation')) {
|
||||||
|
case 'repo_delete':
|
||||||
|
data.op_title = gettext("Delete Library");
|
||||||
|
data.op_details = gettext("Deleted library {library_name}")
|
||||||
|
.replace('{library_name}', '<span class="bold" title="' + detail.id + '">' + Common.HTMLescape(detail.name) + '</span>');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'repo_transfer':
|
||||||
|
data.op_title = gettext("Transfer Library");
|
||||||
|
data.op_details = gettext("Transferred library {library_name} from {user_from} to {user_to}")
|
||||||
|
.replace('{user_from}', '<a href="' + user_url(detail.from) + '">' + Common.HTMLescape(detail.from) + '</a>')
|
||||||
|
.replace('{user_to}', '<a href="' + user_url(detail.to) + '">' + Common.HTMLescape(detail.to) + '</a>');
|
||||||
|
if (app.pageOptions.is_pro && app.pageOptions.enable_sys_admin_view_repo) {
|
||||||
|
data.op_details = data.op_details.replace('{library_name}', '<a href="#libs/' + encodeURIComponent(detail.id) + '/">' + Common.HTMLescape(detail.name) + '</a>');
|
||||||
|
} else {
|
||||||
|
data.op_details = data.op_details.replace('{library_name}', '<span class="bold" title="' + detail.id + '">' + Common.HTMLescape(detail.name) + '</span>');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'group_create':
|
||||||
|
data.op_title = gettext("Create Group");
|
||||||
|
data.op_details = gettext("Created group {group_name}").replace('{group_name}', '<a href="#groups/' + encodeURIComponent(detail.id) + '/">' + Common.HTMLescape(detail.name) + '</a>');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'group_transfer':
|
||||||
|
data.op_title = gettext("Transfer Group");
|
||||||
|
data.op_details = gettext("Transferred group {group_name} from {user_from} to {user_to}")
|
||||||
|
.replace('{group_name}', '<a href="#groups/' + encodeURIComponent(detail.id) + '/">' + Common.HTMLescape(detail.name) + '</a>')
|
||||||
|
.replace('{user_from}', '<a href="' + user_url(detail.from) + '">' + Common.HTMLescape(detail.from) + '</a>')
|
||||||
|
.replace('{user_to}', '<a href="' + user_url(detail.to) + '">' + Common.HTMLescape(detail.to) + '</a>');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'group_delete':
|
||||||
|
data.op_title = gettext("Delete Group");
|
||||||
|
data.op_details = gettext("Deleted group {group_name}")
|
||||||
|
.replace('{group_name}', '<span class="bold" title="' + detail.id + '">' + Common.HTMLescape(detail.name) + '</span>');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'user_add':
|
||||||
|
data.op_title = gettext("Add User");
|
||||||
|
data.op_details = gettext("Added user {user}")
|
||||||
|
.replace('{user}', '<a href="' + user_url(detail.email) + '">' + Common.HTMLescape(detail.email) + '</a>');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'user_delete':
|
||||||
|
data.op_title = gettext("Delete User");
|
||||||
|
data.op_details = gettext("Deleted user {user}")
|
||||||
|
.replace('{user}', '<span class="bold">' + Common.HTMLescape(detail.email) + '</span>');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
this.$el.html(this.template(data));
|
this.$el.html(this.template(data));
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
@@ -129,6 +129,9 @@ define([
|
|||||||
err_msg = gettext("Failed. Please check the network.");
|
err_msg = gettext("Failed. Please check the network.");
|
||||||
}
|
}
|
||||||
Common.feedback(err_msg, 'error');
|
Common.feedback(err_msg, 'error');
|
||||||
|
},
|
||||||
|
complete: function() {
|
||||||
|
_this.$loadingTip.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user