如何使工作流任务表在 DSpace 中可排序?
How can I make workflow task tables sortable in DSpace?
在带有 Mirage 2 主题的 DSpace XMLUI 中,我希望提交页面上的 "tasks in the pool" 和 "tasks you own" 表格可以排序和过滤。我该怎么做?
使用传统 DSpace 工作流还是使用可配置工作流的策略略有不同。
以下答案适用于 DSpace 5;对于其他 DSpace 版本,更改可能需要略有不同。
任务的唯一 ID tables(仅限传统 DSpace 工作流程)
要解决的第一个问题是两个 table 具有相同的 ID。更改 dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/xmlworkflow/Submissions.java
为两个 table 创建不同的 ID。
// Tasks you own
- Table table = workflow.addTable("workflow-tasks",ownedItems.size() + 2,5);
+ Table table = workflow.addTable("workflow-tasks-owned",ownedItems.size() + 2,5);
table.setHead(T_w_head2);
对于同一文件中池中的任务同样如此。
修正table结构
添加一些模板以确保 table 具有 thead
/ tbody
/ tfoot
结构。
<xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']">
<xsl:apply-templates select="dri:head"/>
<div class="table-responsive">
<table>
<xsl:call-template name="standardAttributes">
<xsl:with-param name="class">ds-table table table-striped table-hover</xsl:with-param>
</xsl:call-template>
<xsl:apply-templates select="dri:row[1]"/>
<tbody>
<xsl:apply-templates select="dri:row[position()!=1 and position()!=last()]"/>
</tbody>
<xsl:apply-templates select="dri:row[last()]"/>
</table>
</div>
</xsl:template>
<xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']/dri:row[@role='header']">
<thead>
<tr class="ds-table-header-row">
<xsl:apply-templates select="dri:cell"/>
</tr>
</thead>
</xsl:template>
<xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']/dri:row[last()]">
<tfoot>
<tr>
<xsl:apply-templates select="dri:cell"/>
</tr>
</tfoot>
</xsl:template>
修复 JavaScript/CSS 路径
dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
中的导入不太正确。像这样修复它们:
index bc58570..95444c7 100644
--- a/dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
+++ b/dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
@@ -31,8 +31,8 @@
@import "classic_mirage_color_scheme/vocabulary-support";
@import "classic_mirage_color_scheme/jquery_ui";
-@import "classic_mirage_color_scheme/dataTables.bootstrap";
+//@import "classic_mirage_color_scheme/dataTables.bootstrap";
@import "shared/dspace-bootstrap-tweaks";
@import "../vendor/jquery-ui/themes/base/jquery-ui.css";
-@import "../vendor/datatables/media/css/jquery.dataTables.min.css";
+@import "../vendor/datatables/media/css/dataTables.bootstrap.css";
@import "style";
激活数据table功能
然后,通过将以下内容添加到 theme.js
来激活 datatables 功能。交换适合您的配置——以下更改将
- 当 table 中至少有 5 个项目时启用分页和过滤;
- 允许按除第一列(包含复选框)以外的所有列排序;
- 默认禁用排序;和
- 进行一些语言调整。
如果您使用的是传统工作流程,则需要调整 ID。
$(function() {
var poolTable = $('#aspect_xmlworkflow_Submissions_table_workflow-tasks-pooled');
poolTable.DataTable({
"paging": poolTable.find("tbody tr").size() >= 5,
"autoWidth": true,
"info": false,
"searching": poolTable.find("tbody tr").size() >= 5,
"columnDefs": [
{ targets: 0, orderable: false, searchable: false }
],
"order": [],
"oLanguage" : {
"sSearch": "Filter tasks:"
}
});
poolTable.closest(".dataTables_wrapper").before("<p class='help'>Click on a column header to sort the table by that column.</p>");
var ownedTable = $('#aspect_xmlworkflow_Submissions_table_workflow-tasks-owned');
ownedTable.DataTable({
"paging": ownedTable.find("tbody tr").size() >= 5,
"autoWidth": true,
"info": false,
"searching": ownedTable.find("tbody tr").size() >= 5,
"columnDefs": [
{ targets: 0, orderable: false, searchable: false }
],
"order": []
});
ownedTable.closest(".dataTables_wrapper").before("<p class='help'>Click on a column header to sort the table by that column.</p>");
});
在带有 Mirage 2 主题的 DSpace XMLUI 中,我希望提交页面上的 "tasks in the pool" 和 "tasks you own" 表格可以排序和过滤。我该怎么做?
使用传统 DSpace 工作流还是使用可配置工作流的策略略有不同。
以下答案适用于 DSpace 5;对于其他 DSpace 版本,更改可能需要略有不同。
任务的唯一 ID tables(仅限传统 DSpace 工作流程)
要解决的第一个问题是两个 table 具有相同的 ID。更改 dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/xmlworkflow/Submissions.java
为两个 table 创建不同的 ID。
// Tasks you own
- Table table = workflow.addTable("workflow-tasks",ownedItems.size() + 2,5);
+ Table table = workflow.addTable("workflow-tasks-owned",ownedItems.size() + 2,5);
table.setHead(T_w_head2);
对于同一文件中池中的任务同样如此。
修正table结构
添加一些模板以确保 table 具有 thead
/ tbody
/ tfoot
结构。
<xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']">
<xsl:apply-templates select="dri:head"/>
<div class="table-responsive">
<table>
<xsl:call-template name="standardAttributes">
<xsl:with-param name="class">ds-table table table-striped table-hover</xsl:with-param>
</xsl:call-template>
<xsl:apply-templates select="dri:row[1]"/>
<tbody>
<xsl:apply-templates select="dri:row[position()!=1 and position()!=last()]"/>
</tbody>
<xsl:apply-templates select="dri:row[last()]"/>
</table>
</div>
</xsl:template>
<xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']/dri:row[@role='header']">
<thead>
<tr class="ds-table-header-row">
<xsl:apply-templates select="dri:cell"/>
</tr>
</thead>
</xsl:template>
<xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']/dri:row[last()]">
<tfoot>
<tr>
<xsl:apply-templates select="dri:cell"/>
</tr>
</tfoot>
</xsl:template>
修复 JavaScript/CSS 路径
dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
中的导入不太正确。像这样修复它们:
index bc58570..95444c7 100644
--- a/dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
+++ b/dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
@@ -31,8 +31,8 @@
@import "classic_mirage_color_scheme/vocabulary-support";
@import "classic_mirage_color_scheme/jquery_ui";
-@import "classic_mirage_color_scheme/dataTables.bootstrap";
+//@import "classic_mirage_color_scheme/dataTables.bootstrap";
@import "shared/dspace-bootstrap-tweaks";
@import "../vendor/jquery-ui/themes/base/jquery-ui.css";
-@import "../vendor/datatables/media/css/jquery.dataTables.min.css";
+@import "../vendor/datatables/media/css/dataTables.bootstrap.css";
@import "style";
激活数据table功能
然后,通过将以下内容添加到 theme.js
来激活 datatables 功能。交换适合您的配置——以下更改将
- 当 table 中至少有 5 个项目时启用分页和过滤;
- 允许按除第一列(包含复选框)以外的所有列排序;
- 默认禁用排序;和
- 进行一些语言调整。
如果您使用的是传统工作流程,则需要调整 ID。
$(function() {
var poolTable = $('#aspect_xmlworkflow_Submissions_table_workflow-tasks-pooled');
poolTable.DataTable({
"paging": poolTable.find("tbody tr").size() >= 5,
"autoWidth": true,
"info": false,
"searching": poolTable.find("tbody tr").size() >= 5,
"columnDefs": [
{ targets: 0, orderable: false, searchable: false }
],
"order": [],
"oLanguage" : {
"sSearch": "Filter tasks:"
}
});
poolTable.closest(".dataTables_wrapper").before("<p class='help'>Click on a column header to sort the table by that column.</p>");
var ownedTable = $('#aspect_xmlworkflow_Submissions_table_workflow-tasks-owned');
ownedTable.DataTable({
"paging": ownedTable.find("tbody tr").size() >= 5,
"autoWidth": true,
"info": false,
"searching": ownedTable.find("tbody tr").size() >= 5,
"columnDefs": [
{ targets: 0, orderable: false, searchable: false }
],
"order": []
});
ownedTable.closest(".dataTables_wrapper").before("<p class='help'>Click on a column header to sort the table by that column.</p>");
});