<%-- CDDL HEADER START The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. See LICENSE.txt included in this distribution for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at LICENSE.txt. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] CDDL HEADER END Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved. Portions Copyright (c) 2019, Krystof Tulinger . --%> <%@ taglib tagdir="/WEB-INF/tags" prefix="opengrok" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@page import="java.util.Iterator"%> <%@page import="java.util.LinkedList"%> <%@page import="java.util.Set"%> <%@page import="java.util.TreeSet"%> <%@page import="org.opengrok.indexer.configuration.Group"%> <%@page import="org.opengrok.indexer.configuration.Project"%> <%@page import="org.opengrok.web.PageConfig"%> <%@page import="org.opengrok.web.ProjectHelper"%> <%@ page import="static org.opengrok.indexer.web.messages.MessagesUtils.printMessages" %> <%@ page import="static org.opengrok.indexer.web.messages.MessagesUtils.messagesToJson" %> <% { PageConfig cfg = PageConfig.get(request); pageContext.setAttribute("pageConfig", cfg); cfg.addScript("repos"); String messages; printMessages(out, cfg.getMessages()); ProjectHelper pHelper = cfg.getProjectHelper(); if (pHelper.getAllProjects().size() > 0) { Set groups = pHelper.getGroups(); if (groups.size() > 0) { // recursively print all groups %>
<% LinkedList stack = new LinkedList<>(); for ( Group x : groups ) { if (x.getParent() == null && (pHelper.hasAllowedSubgroup(x) || cfg.isAllowed(x))) { // the flag here represents the state of the group - open/close x.setFlag(0); stack.addLast(x); } } while (!stack.isEmpty()) { Group group = stack.element(); if (group.getFlag() > 0) { // already processed stack.pollFirst(); %>
<% continue; } stack.element().setFlag(1); Set subgroups = new TreeSet<>(pHelper.getSubgroups(group)); for (Iterator it = subgroups.iterator(); it.hasNext();) { Group x = it.next(); if (cfg.isAllowed(x) || pHelper.hasAllowedSubgroup(x)) { x.setFlag(0); } else { it.remove(); } } // add all the subgroups to the beginning respecting the order stack.addAll(0, subgroups); %>

<%= Util.htmlize(group.getName())%> <% if (!(messages = MessagesUtils.messagesToJson(group)).isEmpty()) { %> ! <% } %> [select all] (<%= pHelper.getSubgroups(group).size() %> + <%= pHelper.getAllGrouped(group).size() %>) ">

0 && pHelper.getAllGrouped(group).size() <= cfg.getGroupsCollapseThreshold())) { %>data-accordion-visible="true"<% } %>> <% if (pHelper.getAllGrouped(group).size() > 0) { %>
<% } else if ( pHelper.getAllGrouped(group).size() <= 0 && !pHelper.hasAllowedSubgroup(group) ) { %>No projects<% } } %>
<% } // print the rest of projects which don't have a group Set projects = pHelper.getAllUngrouped(); if (projects.size() > 0) { %>
<% if (groups.size() > 0) { %> <% } %>
<% if (groups.size() > 0) {%>

Other <% if (!(messages = messagesToJson("other")).isEmpty()) { %> important-note important-note-rounded" data-messages='<%= messages %>'>! <% } %> [select all] (<%= projects.size() %>) ">

<% } %>
0 && projects.size() <= cfg.getGroupsCollapseThreshold())) { %>data-accordion-visible="true"<% } %>>
<% } } } %>