Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
ea11aa4a
Commit
ea11aa4a
authored
Jul 18, 2019
by
八千流
Committed by
老广
Jul 18, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Bugfix] 修改排序,去掉标签 (#2982)
* [Update] 修改排序,去掉标签 * [Bugfix] 修改排序 * [Bugfix] 修改小问题 * [Bugfix] 修改小问题
parent
1af40b6c
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
54 additions
and
47 deletions
+54
-47
admin_user_list.html
apps/assets/templates/assets/admin_user_list.html
+1
-1
cmd_filter_list.html
apps/assets/templates/assets/cmd_filter_list.html
+2
-2
cmd_filter_rule_list.html
apps/assets/templates/assets/cmd_filter_rule_list.html
+2
-2
domain_detail.html
apps/assets/templates/assets/domain_detail.html
+1
-1
domain_gateway_list.html
apps/assets/templates/assets/domain_gateway_list.html
+1
-1
domain_list.html
apps/assets/templates/assets/domain_list.html
+2
-2
label_list.html
apps/assets/templates/assets/label_list.html
+1
-1
ftp_log_list.html
apps/audits/templates/audits/ftp_log_list.html
+2
-1
task_adhoc.html
apps/ops/templates/ops/task_adhoc.html
+2
-2
task_history.html
apps/ops/templates/ops/task_history.html
+2
-2
task_list.html
apps/ops/templates/ops/task_list.html
+7
-1
asset_permission_asset.html
apps/perms/templates/perms/asset_permission_asset.html
+4
-4
asset_permission_detail.html
apps/perms/templates/perms/asset_permission_detail.html
+4
-4
asset_permission_list.html
apps/perms/templates/perms/asset_permission_list.html
+3
-3
asset_permission_user.html
apps/perms/templates/perms/asset_permission_user.html
+4
-4
remote_app_permission_detail.html
apps/perms/templates/perms/remote_app_permission_detail.html
+2
-2
remote_app_permission_remote_app.html
...rms/templates/perms/remote_app_permission_remote_app.html
+2
-2
remote_app_permission_user.html
apps/perms/templates/perms/remote_app_permission_user.html
+2
-2
command_list.html
apps/terminal/templates/terminal/command_list.html
+2
-2
session_list.html
apps/terminal/templates/terminal/session_list.html
+5
-5
terminal_list.html
apps/terminal/templates/terminal/terminal_list.html
+1
-1
user_group_list.html
apps/users/templates/users/user_group_list.html
+2
-2
No files found.
apps/assets/templates/assets/admin_user_list.html
View file @
ea11aa4a
...
...
@@ -117,7 +117,7 @@ function initTable() {
columns
:
[
{
data
:
function
(){
return
""
}},
{
data
:
"name"
},
{
data
:
"username"
},
{
data
:
"assets_amount"
,
orderable
:
false
},
{
#
{
data
:
"connectivity_amount"
},
{
data
:
"connectivity_amount"
},
{
data
:
"connectivity_amount"
},
#
}
{
data
:
"comment"
},
{
data
:
"id"
}
{
data
:
"comment"
},
{
data
:
"id"
,
orderable
:
false
}
]
};
admin_user_table
=
jumpserver
.
initServerSideDataTable
(
options
);
...
...
apps/assets/templates/assets/cmd_filter_list.html
View file @
ea11aa4a
...
...
@@ -62,8 +62,8 @@ function initTable() {
],
ajax_url
:
'{% url "api-assets:cmd-filter-list" %}'
,
columns
:
[
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
"rules"
},
{
data
:
"system_users"
},
{
data
:
"comment"
},
{
data
:
"id"
}
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
"rules"
,
orderable
:
false
},
{
data
:
"system_users"
,
orderable
:
false
},
{
data
:
"comment"
},
{
data
:
"id"
,
orderable
:
false
}
],
op_html
:
$
(
'#actions'
).
html
()
};
...
...
apps/assets/templates/assets/cmd_filter_rule_list.html
View file @
ea11aa4a
...
...
@@ -90,8 +90,8 @@ function initTable() {
],
ajax_url
:
'{% url "api-assets:cmd-filter-rule-list" filter_pk=object.id %}'
,
columns
:
[
{
data
:
"id"
},
{
data
:
"type.display"
},
{
data
:
'content'
},
{
data
:
'priority'
},
{
data
:
'action.display'
},
{
data
:
"comment"
},
{
data
:
"id"
}
{
data
:
"id"
},
{
data
:
"type.display"
,
orderable
:
false
},
{
data
:
'content'
},
{
data
:
'priority'
},
{
data
:
'action.display'
,
orderable
:
false
},
{
data
:
"comment"
},
{
data
:
"id"
,
orderable
:
false
}
],
op_html
:
$
(
'#actions'
).
html
()
};
...
...
apps/assets/templates/assets/domain_detail.html
View file @
ea11aa4a
...
...
@@ -31,7 +31,7 @@
</ul>
</div>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
9
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<span
class=
"label"
><b>
{{ object.name }}
</b></span>
...
...
apps/assets/templates/assets/domain_gateway_list.html
View file @
ea11aa4a
...
...
@@ -106,7 +106,7 @@ function initTable() {
ajax_url
:
'{% url "api-assets:gateway-list" %}?domain={{ object.id }}'
,
columns
:
[
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
'ip'
},
{
data
:
'port'
},
{
data
:
"protocol"
},
{
data
:
"username"
},
{
data
:
"comment"
},
{
data
:
"id"
}
{
data
:
"protocol"
,
orderable
:
false
},
{
data
:
"username"
},
{
data
:
"comment"
},
{
data
:
"id"
,
orderable
:
false
}
],
op_html
:
$
(
'#actions'
).
html
()
};
...
...
apps/assets/templates/assets/domain_list.html
View file @
ea11aa4a
...
...
@@ -58,8 +58,8 @@ function initTable() {
],
ajax_url
:
'{% url "api-assets:domain-list" %}'
,
columns
:
[
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
"asset_count"
},
{
data
:
"gateway_count"
},
{
data
:
"comment"
},
{
data
:
"id"
}
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
"asset_count"
,
orderable
:
false
},
{
data
:
"gateway_count"
,
orderable
:
false
},
{
data
:
"comment"
},
{
data
:
"id"
,
orderable
:
false
}
],
op_html
:
$
(
'#actions'
).
html
()
};
...
...
apps/assets/templates/assets/label_list.html
View file @
ea11aa4a
...
...
@@ -44,7 +44,7 @@ function initTable() {
ajax_url
:
'{% url "api-assets:label-list" %}?sort=name'
,
columns
:
[
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
"value"
},
{
data
:
"asset_count"
},
{
data
:
"id"
}
{
data
:
"asset_count"
,
orderable
:
false
},
{
data
:
"id"
,
orderable
:
false
}
],
op_html
:
$
(
'#actions'
).
html
()
};
...
...
apps/audits/templates/audits/ftp_log_list.html
View file @
ea11aa4a
...
...
@@ -113,7 +113,8 @@
"searching"
:
false
,
"paging"
:
false
,
"bInfo"
:
false
,
"order"
:
[]
"order"
:
[],
"columnDefs"
:
[{
"targets"
:
6
,
"orderable"
:
false
}]
});
$
(
'.select2'
).
select2
({
dropdownAutoWidth
:
true
,
...
...
apps/ops/templates/ops/task_adhoc.html
View file @
ea11aa4a
...
...
@@ -120,8 +120,8 @@ $(document).ready(function () {
}}
],
ajax_url
:
'{% url "api-ops:adhoc-list" %}?task={{ object.pk }}'
,
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"short_id"
},
{
data
:
"hosts"
},
{
data
:
"pattern"
},
{
data
:
"run_as"
},
{
data
:
"become"
},
{
data
:
"date_created"
},
{
data
:
"id"
}]
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"short_id"
},
{
data
:
"hosts"
,
orderable
:
false
},
{
data
:
"pattern"
,
orderable
:
false
},
{
data
:
"run_as"
},
{
data
:
"become"
,
orderable
:
false
},
{
data
:
"date_created"
},
{
data
:
"id"
,
orderable
:
false
}]
};
jumpserver
.
initDataTable
(
options
);
}).
on
(
'click'
,
'.celery-task-log'
,
function
()
{
...
...
apps/ops/templates/ops/task_history.html
View file @
ea11aa4a
...
...
@@ -140,8 +140,8 @@ function initTable() {
}}
],
ajax_url
:
'{% url "api-ops:history-list" %}?task={{ object.pk }}'
,
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"date_start"
},
{
data
:
"stat"
},
{
data
:
"stat"
},
{
data
:
"is_finished"
},
{
data
:
"is_success"
},
{
data
:
"timedelta"
},
{
data
:
'adhoc_short_id'
},
{
data
:
"id"
}]
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"date_start"
},
{
data
:
"stat"
,
orderable
:
false
},
{
data
:
"stat"
,
orderable
:
false
},
{
data
:
"is_finished"
},
{
data
:
"is_success"
},
{
data
:
"timedelta"
},
{
data
:
'adhoc_short_id'
},
{
data
:
"id"
,
orderable
:
false
}]
};
jumpserver
.
initDataTable
(
options
);
}
...
...
apps/ops/templates/ops/task_list.html
View file @
ea11aa4a
...
...
@@ -75,7 +75,13 @@ $(document).ready(function() {
"searching"
:
false
,
"paging"
:
false
,
"bInfo"
:
false
,
"order"
:
[]
"order"
:
[],
"columnDefs"
:
[
{
"targets"
:
0
,
"orderable"
:
false
},
{
"targets"
:
4
,
"orderable"
:
false
},
{
"targets"
:
5
,
"orderable"
:
false
},
{
"targets"
:
8
,
"orderable"
:
false
}
]
});
$
(
'.select2'
).
select2
({
dropdownAutoWidth
:
true
,
...
...
apps/perms/templates/perms/asset_permission_asset.html
View file @
ea11aa4a
...
...
@@ -19,17 +19,17 @@
</li>
<li>
<a
href=
"{% url 'perms:asset-permission-user-list' pk=asset_permission.id %}"
class=
"text-center"
>
<i
class=
"fa fa-
bar-chart-o
"
></i>
{% trans 'Users and user groups' %}
<i
class=
"fa fa-
group
"
></i>
{% trans 'Users and user groups' %}
</a>
</li>
<li
class=
"active"
>
<a
href=
"{% url 'perms:asset-permission-asset-list' pk=asset_permission.id %}"
class=
"text-center"
>
<i
class=
"fa fa-
bar-chart-o
"
></i>
{% trans 'Assets and node' %}
</a>
<i
class=
"fa fa-
inbox
"
></i>
{% trans 'Assets and node' %}
</a>
</li>
</ul>
</div>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
7
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<span
style=
"float: left"
>
{% trans 'Asset list of ' %}
<b>
{{ asset_permission.name }}
</b></span>
...
...
@@ -64,7 +64,7 @@
</div>
</div>
</div>
<div
class=
"col-sm-
5
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"col-sm-
4
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Add asset to this permission' %}
...
...
apps/perms/templates/perms/asset_permission_detail.html
View file @
ea11aa4a
...
...
@@ -19,12 +19,12 @@
</li>
<li>
<a
href=
"{% url 'perms:asset-permission-user-list' pk=object.id %}"
class=
"text-center"
>
<i
class=
"fa fa-
bar-chart-o
"
></i>
{% trans 'Users and user groups' %}
<i
class=
"fa fa-
group
"
></i>
{% trans 'Users and user groups' %}
</a>
</li>
<li>
<a
href=
"{% url 'perms:asset-permission-asset-list' pk=object.id %}"
class=
"text-center"
>
<i
class=
"fa fa-
bar-chart-o
"
></i>
{% trans 'Assets and node' %}
</a>
<i
class=
"fa fa-
inbox
"
></i>
{% trans 'Assets and node' %}
</a>
</li>
<li
class=
"pull-right"
>
<a
class=
"btn btn-outline btn-default"
href=
"{% url 'perms:asset-permission-update' pk=object.id %}"
><i
class=
"fa fa-edit"
></i>
{% trans 'Update' %}
</a>
...
...
@@ -37,7 +37,7 @@
</ul>
</div>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
7
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<span
class=
"label"
><b>
{{ object.name }}
</b></span>
...
...
@@ -108,7 +108,7 @@
</div>
</div>
<div
class=
"col-sm-
5
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"col-sm-
4
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Quick update' %}
...
...
apps/perms/templates/perms/asset_permission_list.html
View file @
ea11aa4a
...
...
@@ -182,9 +182,9 @@ function initTable() {
],
ajax_url
:
'{% url "api-perms:asset-permission-list" %}?display=1'
,
columns
:
[
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
"users"
},
{
data
:
"user_groups"
},
{
data
:
"assets"
},
{
data
:
"nodes"
},
{
data
:
"system_users"
},
{
data
:
"id"
},
{
data
:
"name"
},
{
data
:
"users"
,
orderable
:
false
},
{
data
:
"user_groups"
,
orderable
:
false
},
{
data
:
"assets"
,
orderable
:
false
},
{
data
:
"nodes"
,
orderable
:
false
},
{
data
:
"system_users"
,
orderable
:
false
},
{
data
:
"is_valid"
,
orderable
:
false
},
{
data
:
"id"
,
orderable
:
false
}
],
select
:
{},
...
...
apps/perms/templates/perms/asset_permission_user.html
View file @
ea11aa4a
...
...
@@ -19,17 +19,17 @@
</li>
<li
class=
"active"
>
<a
href=
"{% url 'perms:asset-permission-user-list' pk=asset_permission.id %}"
class=
"text-center"
>
<i
class=
"fa fa-
bar-chart-o
"
></i>
{% trans 'Users and user groups' %}
<i
class=
"fa fa-
group
"
></i>
{% trans 'Users and user groups' %}
</a>
</li>
<li>
<a
href=
"{% url 'perms:asset-permission-asset-list' pk=asset_permission.id %}"
class=
"text-center"
>
<i
class=
"fa fa-
bar-chart-o
"
></i>
{% trans 'Assets and node' %}
</a>
<i
class=
"fa fa-
inbox
"
></i>
{% trans 'Assets and node' %}
</a>
</li>
</ul>
</div>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
7
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<span
style=
"float: left"
>
{% trans 'User list of ' %}
<b>
{{ asset_permission.name }}
</b></span>
...
...
@@ -74,7 +74,7 @@
</div>
</div>
</div>
<div
class=
"col-sm-
5
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"col-sm-
4
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Add user to asset permission' %}
...
...
apps/perms/templates/perms/remote_app_permission_detail.html
View file @
ea11aa4a
...
...
@@ -37,7 +37,7 @@
</ul>
</div>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
7
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<span
class=
"label"
><b>
{{ object.name }}
</b></span>
...
...
@@ -100,7 +100,7 @@
</div>
</div>
<div
class=
"col-sm-
5
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"col-sm-
4
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Quick update' %}
...
...
apps/perms/templates/perms/remote_app_permission_remote_app.html
View file @
ea11aa4a
...
...
@@ -28,7 +28,7 @@
</ul>
</div>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
7
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<span
style=
"float: left"
>
{% trans 'RemoteApp list of ' %}
<b>
{{ remote_app_permission.name }}
</b></span>
...
...
@@ -73,7 +73,7 @@
</div>
</div>
</div>
<div
class=
"col-sm-
5
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"col-sm-
4
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Add RemoteApp to this permission' %}
...
...
apps/perms/templates/perms/remote_app_permission_user.html
View file @
ea11aa4a
...
...
@@ -28,7 +28,7 @@
</ul>
</div>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
7
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<span
style=
"float: left"
>
{% trans 'User list of ' %}
<b>
{{ remote_app_permission.name }}
</b></span>
...
...
@@ -73,7 +73,7 @@
</div>
</div>
</div>
<div
class=
"col-sm-
5
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"col-sm-
4
"
style=
"padding-left: 0;padding-right: 0"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Add user to this permission' %}
...
...
apps/terminal/templates/terminal/command_list.html
View file @
ea11aa4a
...
...
@@ -199,8 +199,8 @@ function initTable() {
ajax_url
:
commandListUrl
,
columns
:
[
{
data
:
"id"
},
{
data
:
"input"
,
orderable
:
false
},
{
data
:
"user"
,
orderable
:
false
},
{
data
:
"asset"
},
{
data
:
"system_user"
},
{
data
:
"session"
},
{
data
:
"timestamp"
,
width
:
"160px"
},
{
data
:
"asset"
,
orderable
:
false
},
{
data
:
"system_user"
,
orderable
:
false
},
{
data
:
"session"
,
orderable
:
false
},
{
data
:
"timestamp"
,
width
:
"160px"
,
orderable
:
false
},
],
select
:
{},
op_html
:
$
(
'#actions'
).
html
(),
...
...
apps/terminal/templates/terminal/session_list.html
View file @
ea11aa4a
...
...
@@ -155,11 +155,11 @@ function initTable() {
],
ajax_url
:
sessionListUrl
,
columns
:
[
{
data
:
"id"
},
{
data
:
"id"
},
{
data
:
"user"
,
orderable
:
false
},
{
data
:
"asset"
,
orderable
:
false
},
{
data
:
"system_user"
,
orderable
:
false
},
{
data
:
"remote_addr"
},
{
data
:
"protocol"
},
{
data
:
"login_from_display"
},
{
data
:
"command_amount"
},
{
data
:
"date_start"
},
{
data
:
"date_end"
},
{
data
:
"id"
},
{
data
:
"id"
},
{
data
:
"id"
,
orderable
:
false
},
{
data
:
"user"
},
{
data
:
"asset"
},
{
data
:
"system_user"
},
{
data
:
"remote_addr"
},
{
data
:
"protocol"
},
{
data
:
"login_from_display"
,
orderable
:
false
},
{
data
:
"command_amount"
,
orderable
:
false
},
{
data
:
"date_start"
},
{
data
:
"date_end"
,
orderable
:
false
},
{
data
:
"id"
,
orderable
:
false
},
],
op_html
:
$
(
'#actions'
).
html
(),
fb_html
:
$
(
"#daterange"
).
html
(),
...
...
apps/terminal/templates/terminal/terminal_list.html
View file @
ea11aa4a
...
...
@@ -90,7 +90,7 @@ function initTable() {
],
ajax_url
:
'{% url "api-terminal:terminal-list" %}'
,
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"name"
},
{
data
:
"remote_addr"
},
{
data
:
"session_online"
},
{
data
:
"is_active"
},
{
data
:
'is_alive'
},
{
data
:
"id"
}],
{
data
:
"session_online"
,
orderable
:
false
},
{
data
:
"is_active"
,
orderable
:
false
},
{
data
:
'is_alive'
},
{
data
:
"id"
,
orderable
:
false
}],
op_html
:
$
(
'#actions'
).
html
()
};
jumpserver
.
initDataTable
(
options
);
...
...
apps/users/templates/users/user_group_list.html
View file @
ea11aa4a
...
...
@@ -80,8 +80,8 @@ function initTable() {
}}
],
ajax_url
:
'{% url "api-users:user-group-list" %}?display=1'
,
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"name"
},
{
data
:
"users"
},
{
data
:
"comment"
},
{
data
:
"id"
}],
columns
:
[{
data
:
function
(){
return
""
}},
{
data
:
"name"
},
{
data
:
"users"
,
orderable
:
false
},
{
data
:
"comment"
},
{
data
:
"id"
,
orderable
:
false
}],
order
:
[],
op_html
:
$
(
'#actions'
).
html
()
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment