如何在DSpace中对工作流任务表进行排序?

时间:2017-07-02 22:55:13

标签: dspace

在具有Mirage 2主题的DSpace XMLUI中,我想要池中的"任务"和#34;你拥有的任务"提交页面上的表格是可排序和可过滤的。我该怎么做?

1 个答案:

答案 0 :(得分:0)

该策略在使用传统DSpace工作流程与可配置工作流程方面略有不同。

以下答案适用于DSpace 5;其他DSpace版本的更改可能需要略有不同。

任务表的唯一ID(仅限传统DSpace工作流程)

要解决的第一个问题是两个表具有相同的ID。更改dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/xmlworkflow/Submissions.java以为这两个表创建不同的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);

同样对于池中的任务,在同一个文件中进一步向下。

修复表格结构

添加一些模板以确保表格具有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";

激活数据表功能

然后,通过将以下内容添加到theme.js来激活datatables功能。交换适合您的配置 - 以下更改

  • 当表格中至少有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>");
});