menu.jspf revision d8d744ec4741226cba1ed387037d5f8dafc3d813
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%--
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering$Id$
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringCDDL HEADER START
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringThe contents of this file are subject to the terms of the
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringCommon Development and Distribution License (the "License").
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringYou may not use this file except in compliance with the License.
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringSee LICENSE.txt included in this distribution for the specific
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringlanguage governing permissions and limitations under the License.
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringWhen distributing Covered Code, include this CDDL HEADER in each
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringfile and include the License file at LICENSE.txt.
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringIf applicable, add the following below this CDDL HEADER, with the
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringfields enclosed by brackets "[]" replaced with your own identifying
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringinformation: Portions Copyright [yyyy] [name of copyright owner]
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringCDDL HEADER END
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart PoetteringCopyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
b4bbcaa9c44260e88402cb8f9a5fb8ac7f35e123Thomas Hindoe Paaboel AndersenPortions Copyright 2011 Jens Elkner.
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering--%><%@page import="org.json.simple.JSONArray"%>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%@page import="org.opensolaris.opengrok.configuration.RuntimeEnvironment"%>
b5efdb8af40ea759a1ea584c1bc44ecc81dd00ceLennart Poettering<%@page import="org.opensolaris.opengrok.configuration.messages.Message"%>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%@page import="java.util.TreeSet"%>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%@page import="java.util.Set"%>
cf0fbc49e67b55f8d346fc94de28c90113505297Thomas Hindoe Paaboel Andersen<%@page import="java.util.LinkedList"%>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering<%@page import="org.opensolaris.opengrok.configuration.Group"%>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering<%@page import="org.opensolaris.opengrok.web.ProjectHelper"%>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%@page import="org.opensolaris.opengrok.web.SearchHelper"%>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering<%@page import="java.util.Map"%>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%@page import="
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringjava.util.SortedSet,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringjava.util.TreeMap,
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poetteringjava.util.Map.Entry,
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poetteringjava.util.List,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringjava.util.HashMap,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringjava.util.ArrayList,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringorg.opensolaris.opengrok.configuration.Project,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringorg.opensolaris.opengrok.search.QueryBuilder,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringorg.opensolaris.opengrok.web.PageConfig,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringorg.opensolaris.opengrok.web.Prefix,
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poetteringorg.opensolaris.opengrok.web.Util"
dbe81cbd2a93088236a2e4e41eeb33378940f7b9Martin Pitt%><%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering/* ---------------------- menu.jspf start --------------------- */
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering{
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering // PageConfig cfg = PageConfig.get(request);
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering ProjectHelper ph = ProjectHelper.getInstance(cfg);
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering Set<Project> projects = ph.getAllProjects();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering if (projects == null) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering projects = new TreeSet<>();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering }
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering int projectsSize = ph.getAllUngrouped().size();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering if (ph.getGroups().size() > 0 && ph.getAllUngrouped().size() > 0)
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering projectsSize++;
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering for (Group group : ph.getGroups()) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering projectsSize++;
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering projectsSize += ph.getAllGrouped(group).size();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering }
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering TreeMap<String, String> pMap = new TreeMap<>();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering QueryBuilder queryParams = cfg.getQueryBuilder();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering if (projects.size() != 0) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering for (Project p : projects) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering String name = p.getDescription();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering String esc = Util.formQuoteEscape(p.getDescription());
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering pMap.put(name, esc);
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering }
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering StringBuilder jsProjects = new StringBuilder(64);
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering jsProjects.append('\'');
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering for (String name : cfg.getRequestedProjects()) {
933f9caeeb2b3c1b951d330e04beb04226e5a890Daniel Mack jsProjects.append(name).append("','");
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering }
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering if (jsProjects.length() > 1) {
dbe81cbd2a93088236a2e4e41eeb33378940f7b9Martin Pitt jsProjects.setLength(jsProjects.length()-2);
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering } else {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering jsProjects.setLength(0);
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering }
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering%>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<script type="text/javascript">/* <![CDATA[ */
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering document.projects = [ <%= Util.encode(jsProjects.toString())
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %> ];document.xrefPath = '<%= request.getContextPath() + Prefix.XREF_P
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %>';document.domReady.push(function() { domReadyMenu(); });
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering/* ]]> */
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering</script><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering%>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering<form action="search" id="sbox">
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering<div id="qtbl">
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering<table>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tr>
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering <td><label for="s1" title="The text token(s) or other fields to be found (lucene query, this is not full text!)">Full&nbsp;Search</label></td>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <td><input tabindex="1" class="q" name="q" id="q" type="text" value="<%=
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering Util.formQuoteEscape(queryParams.getFreetext()) %>"/></td>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering </tr>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <tr>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <td><label for="s2" title="Definition of function/variable/class">Definition</label></td>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <td><input class="q" tabindex="2" name="defs" id="defs" type="text" value="<%=
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering Util.formQuoteEscape(queryParams.getDefs()) %>"/></td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering </tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><label for="s3" title="Usage of function/variable/class">Symbol</label></td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><input class="q" tabindex="3" name="refs" id="refs" type="text" value="<%=
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering Util.formQuoteEscape(queryParams.getRefs()) %>"/></td>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering </tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><label for="s4" title="path or parts of it, no need to use dividers">File&nbsp;Path</label></td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><input class="q" tabindex="4" name="path" id="path" type="text" value="<%=
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering Util.formQuoteEscape(queryParams.getPath()) %>"/></td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering </tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><label for="s5" title="Search in log messages">History</label></td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><input class="q" tabindex="5" name="hist" id="hist" type="text" value="<%=
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering Util.formQuoteEscape(queryParams.getHist()) %>"/></td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering </tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><label for="s5">Type</label></td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td><select class="q" tabindex="6" name="type" id="type"><%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering String selection = queryParams.getType();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <option value="">Any</option><%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering for (Map.Entry<String, String> d : SearchHelper.getFileTypeDescriptions()) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <option value="<%= Util.formQuoteEscape(d.getKey()) %>"<%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (d.getKey().equals(selection)) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %> selected="selected"<%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering }
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %>><%= Util.htmlize(d.getValue()) %></option><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering </select>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering </td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering </tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%-- TODO Bug 11749
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering<%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering if (projects.size() != 0) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering String imgDir = cfg.getCssDir() + "/img/";
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td>Project(s)</td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <table class="combo_table" id="combotable">
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tbody>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <tr>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering <td class="combo_td1"><div class="combo_div4"
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering style="background: transparent url(<%=
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering imgDir %>transparent_pixel.gif)
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering repeat scroll 0% 0%;"><input
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering class="combo_input1 combo_input" id="project"
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering name="project" size="25"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering value="<%= cfg.getRequestedProjectsAsString()
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %>"/></div>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering </td>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <td valign="top" align="left" class="combo_td2"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering id="combotable_button"><a
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering onclick='javascript: $("#project").click();
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering $("#project").click();'/><img style="display: none;"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering alt="" src="<%= imgDir %>button2.png"/>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering </td>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering </tr>
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering </tbody>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering </table></td>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering </tr><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering%>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering--%>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering</table>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering<div id="form-controls">
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <input tabindex="9" class="submit" type="submit" value="Search"/>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <input tabindex="10" class="submit" onclick="javascript: clearSearchFrom();"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering type="button" value="Clear"/>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <a href="help.jsp" target="_blank" class="help btn" title="Help" tabindex="11" />Help</a>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering</div>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering</div><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (projects.size() != 0) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering%>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering<div id="ptbl">
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <p><label for="project">In Project(s)</label>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <button tabindex="6" type="button"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering onclick="javascript: selectAllProjects(); return false;"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering >select all</button>&nbsp;<button tabindex="7" type="button"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering onclick="javascript: invertAllProjects(); return false;"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering >invert selection</button>&nbsp;<button tabindex="8" type="button"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering onclick="javascript: deselectAllProjects(); return false;"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering >clear</button></p>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <select tabindex="8" class="q" id="project"
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering name="project" multiple="multiple" size="<%=
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering Math.min(15, projectsSize) %>"><%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering SortedSet<String> pRequested = cfg.getRequestedProjects();
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering for ( Group group : ph.getGroups() ) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering Set<Project> groupProjects = ph.getAllGrouped(group);
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering if ( groupProjects.size() > 0) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering %><optgroup label="<%= group.getName() %>"><%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering for (Project p : groupProjects) {
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering // TODO below "selected" has no effect if one refreshes the page
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering // with F5
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %><option value="<%= p.getDescription() %>"<%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (pRequested.contains(p.getDescription())) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %> selected="selected"<%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering JSONArray messages = Util.messagesToJson(p.getDescription());
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (!messages.isEmpty()) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %> data-messages='<%= messages %>' <%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %>><%= Util.formQuoteEscape(p.getDescription()) %></option><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %></optgroup><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (ph.getGroups().size() > 0 && ph.getAllUngrouped().size() > 0) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %><optgroup label="Other"><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering for ( Project p : ph.getAllUngrouped()) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %><option value="<%= p.getDescription() %>"<%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (pRequested.contains(p.getDescription())) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %> selected="selected"<%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering JSONArray messages = Util.messagesToJson(p.getDescription());
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (!messages.isEmpty()) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %> data-messages='<%= messages %>' <%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %>><%= Util.formQuoteEscape(p.getDescription()) %></option><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering if (ph.getGroups().size() > 0 && ph.getAllUngrouped().size() > 0) {
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %></optgroup><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %></select>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering</div><%
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering }
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering %>
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering<div id="ltbl">
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering <!-- filled with javascript -->
f6d6bad1461a8f545a80955fadd7ee0c10db15bbLennart Poettering</div>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering</form>
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering<div class="clearfix"></div>
4afd3348c7506dd1d36305b7bcb9feb8952b9d6bLennart Poettering<%
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering}
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering/* ---------------------- menu.jspf end --------------------- */
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering%>
9a2a5625bfd395033a0767d1685f725ca8293dd9Lennart Poettering