diff --git a/src/java/fr/paris/lutece/plugins/workflow/web/WorkflowJspBean.java b/src/java/fr/paris/lutece/plugins/workflow/web/WorkflowJspBean.java index c78c4e8..5f5dda2 100644 --- a/src/java/fr/paris/lutece/plugins/workflow/web/WorkflowJspBean.java +++ b/src/java/fr/paris/lutece/plugins/workflow/web/WorkflowJspBean.java @@ -41,7 +41,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; @@ -52,6 +51,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import fr.paris.lutece.portal.web.constants.Parameters; +import fr.paris.lutece.util.sort.AttributeComparator; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.iterators.EntrySetMapIterator; import org.apache.commons.fileupload.FileItem; @@ -264,6 +265,7 @@ public class WorkflowJspBean extends PluginAdminPageJspBean private static final String MARK_LIST_PREREQUISITE = "listPrerequisite"; private static final String MARK_MDGRAPH = "mdgraph"; private static final String MARK_SHOW_TASKS = "showTasks"; + private static final String MARK_SORT_SEARCH_ATTRIBUTE = "sort_search_attribute"; // MESSAGES private static final String MESSAGE_ERROR_INVALID_SECURITY_TOKEN = "workflow.message.error.invalidSecurityToken"; @@ -289,6 +291,7 @@ public class WorkflowJspBean extends PluginAdminPageJspBean private static final String PANE_STATES = "pane-states"; private static final String PANE_ACTIONS = "pane-actions"; private static final String PANE_DEFAULT = PANE_STATES; + private static final String SORT_SEARCH_ATTRIBUTE_DEFAULT = "name"; private static final String LOG_ACTION_NOT_FOUND = "Action not found for ID "; private static final String LOG_WORKFLOW_NOT_FOUND = "Workflow not found for ID "; @@ -305,6 +308,8 @@ public class WorkflowJspBean extends PluginAdminPageJspBean private int _nItemsPerPageAction; private int _nIsEnabled = -1; private String _strWorkGroup = AdminWorkgroupService.ALL_GROUPS; + private String _strSortedAttributeName = SORT_SEARCH_ATTRIBUTE_DEFAULT; + private boolean _bIsAscSort = false; private IWorkflowService _workflowService = SpringContextService.getBean( WorkflowService.BEAN_SERVICE ); private IStateService _stateService = SpringContextService.getBean( StateService.BEAN_SERVICE ); private IActionService _actionService = SpringContextService.getBean( ActionService.BEAN_SERVICE ); @@ -351,7 +356,19 @@ public String getManageWorkflow( HttpServletRequest request ) List listWorkflow = _workflowService.getListWorkflowsByFilter( filter ); listWorkflow = (List) AdminWorkgroupService.getAuthorizedCollection( listWorkflow, (User) getUser( ) ); - Collections.sort( listWorkflow, Comparator.comparing( Workflow::getName ) ); + + // SORT + String strSortedAttributeName = request.getParameter( Parameters.SORTED_ATTRIBUTE_NAME ); + String strAscSort = null; + + if ( strSortedAttributeName != null ) + { + _strSortedAttributeName = strSortedAttributeName; + strAscSort = request.getParameter( Parameters.SORTED_ASC ); + _bIsAscSort = Boolean.parseBoolean( strAscSort ); + } + + Collections.sort( listWorkflow, new AttributeComparator( _strSortedAttributeName, _bIsAscSort ) ); LocalizedPaginator paginator = new LocalizedPaginator<>( listWorkflow, _nItemsPerPageWorkflow, getJspManageWorkflow( request ), PARAMETER_PAGE_INDEX, _strCurrentPageIndexWorkflow, getLocale( ) ); @@ -361,6 +378,7 @@ public String getManageWorkflow( HttpServletRequest request ) Map model = new HashMap<>( ); + model.put( MARK_SORT_SEARCH_ATTRIBUTE, _strSortedAttributeName ); model.put( MARK_PAGINATOR, paginator ); model.put( MARK_NB_ITEMS_PER_PAGE, WorkflowUtils.EMPTY_STRING + _nItemsPerPageWorkflow ); model.put( MARK_USER_WORKGROUP_REF_LIST, AdminWorkgroupService.getUserWorkgroups( getUser( ), getLocale( ) ) ); diff --git a/webapp/WEB-INF/templates/admin/plugins/workflow/manage_workflow.html b/webapp/WEB-INF/templates/admin/plugins/workflow/manage_workflow.html index 1fb39cb..9ebf6f6 100644 --- a/webapp/WEB-INF/templates/admin/plugins/workflow/manage_workflow.html +++ b/webapp/WEB-INF/templates/admin/plugins/workflow/manage_workflow.html @@ -3,7 +3,7 @@ <#macro manageWorkflowFilters type='' class=''> <@tform align='left' class='${class}'> <@formGroup formStyle="inline" labelFor='is_enabled' labelKey='#i18n{workflow.manage_workflow.label_active}' hideLabel=['all']> - <@select name='is_enabled' items=active_list default_value='active_selected' size='' /> + <@select name='is_enabled' items=active_list default_value=active_selected?string!'' size='' /> <@formGroup formStyle="inline" labelFor='workgroup' labelKey='#i18n{workflow.manage_workflow.label_workgroup}' hideLabel=['all']> <@inputGroup> @@ -31,7 +31,9 @@ <@manageWorkflowFilters class='d-md-none mb-3' /> <@table responsive=false class='mb-3'> <@tr> - <@th>#i18n{workflow.manage_workflow.row_name} + <@th hide=['xs']>#i18n{workflow.manage_workflow.row_name} + <@sort jsp_url="jsp/admin/plugins/workflow/ManageWorkflow.jsp" attribute="name" /> + <@th>#i18n{workflow.manage_workflow.row_actions} <#list workflow_list as workflow>