【问题标题】:How can I make workflow task tables sortable in DSpace?如何使工作流任务表在 DSpace 中可排序?
【发布时间】:2017-07-02 22:55:12
【问题描述】:

在具有 Mirage 2 主题的 DSpace XMLUI 中,我希望提交页面上的“池中的任务”和“您拥有的任务”表是可排序和可过滤的。我该怎么做?

【问题讨论】:

    标签: dspace


    【解决方案1】:

    在使用传统 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>");
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2019-02-15
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      相关资源
      最近更新 更多