www/my_base/projects/list_projects.jsp

Code
Comments
Other
Rev Date Author Line
1895 02 Feb 06 nicklas 1 <%-- $Id$
1895 02 Feb 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell
1895 02 Feb 06 nicklas 5
2304 22 May 06 jari 6   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 7   Available at http://base.thep.lu.se/
1895 02 Feb 06 nicklas 8
1895 02 Feb 06 nicklas 9   BASE is free software; you can redistribute it and/or
1895 02 Feb 06 nicklas 10   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
1895 02 Feb 06 nicklas 12   of the License, or (at your option) any later version.
1895 02 Feb 06 nicklas 13
1895 02 Feb 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1895 02 Feb 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1895 02 Feb 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1895 02 Feb 06 nicklas 17   GNU General Public License for more details.
1895 02 Feb 06 nicklas 18
1895 02 Feb 06 nicklas 19   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1895 02 Feb 06 nicklas 21   ------------------------------------------------------------------
1895 02 Feb 06 nicklas 22
1895 02 Feb 06 nicklas 23   @author Nicklas
1895 02 Feb 06 nicklas 24   @version 2.0
1895 02 Feb 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1895 02 Feb 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1895 02 Feb 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1895 02 Feb 06 nicklas 29   import="net.sf.basedb.core.Item"
1895 02 Feb 06 nicklas 30   import="net.sf.basedb.core.Project"
7199 17 Oct 16 nicklas 31   import="net.sf.basedb.core.AnnotationType"
1895 02 Feb 06 nicklas 32   import="net.sf.basedb.core.ItemQuery"
1895 02 Feb 06 nicklas 33   import="net.sf.basedb.core.Include"
1895 02 Feb 06 nicklas 34   import="net.sf.basedb.core.ItemResultIterator"
1895 02 Feb 06 nicklas 35   import="net.sf.basedb.core.ItemResultList"
1895 02 Feb 06 nicklas 36   import="net.sf.basedb.core.ItemContext"
1895 02 Feb 06 nicklas 37   import="net.sf.basedb.core.Permission"
1895 02 Feb 06 nicklas 38   import="net.sf.basedb.core.PluginDefinition"
1895 02 Feb 06 nicklas 39   import="net.sf.basedb.core.query.Hql"
1895 02 Feb 06 nicklas 40   import="net.sf.basedb.core.query.Restrictions"
1895 02 Feb 06 nicklas 41   import="net.sf.basedb.core.query.Expressions"
1895 02 Feb 06 nicklas 42   import="net.sf.basedb.core.plugin.GuiContext"
1895 02 Feb 06 nicklas 43   import="net.sf.basedb.core.plugin.Plugin"
7199 17 Oct 16 nicklas 44   import="net.sf.basedb.core.snapshot.AnnotationLoaderUtil"
7199 17 Oct 16 nicklas 45   import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
7199 17 Oct 16 nicklas 46   import="net.sf.basedb.core.snapshot.SnapshotManager"
1895 02 Feb 06 nicklas 47   import="net.sf.basedb.util.Enumeration"
1895 02 Feb 06 nicklas 48   import="net.sf.basedb.clients.web.Base"
1895 02 Feb 06 nicklas 49   import="net.sf.basedb.clients.web.ModeInfo"
2401 21 Jun 06 martin 50   import="net.sf.basedb.clients.web.PermissionUtil"
1895 02 Feb 06 nicklas 51   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 52   import="net.sf.basedb.util.Values"
4698 10 Dec 08 nicklas 53   import="net.sf.basedb.util.formatter.Formatter"
4698 10 Dec 08 nicklas 54   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4887 06 Apr 09 nicklas 55   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4887 06 Apr 09 nicklas 56   import="net.sf.basedb.clients.web.extensions.JspContext"
4887 06 Apr 09 nicklas 57   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 58   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4887 06 Apr 09 nicklas 59   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 60   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6040 30 Mar 12 nicklas 61   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
7337 12 Apr 17 nicklas 62   import="net.sf.basedb.clients.web.util.ProjectSpecificInfoFilter"
4887 06 Apr 09 nicklas 63   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
4698 10 Dec 08 nicklas 64   import="java.util.Date"
7199 17 Oct 16 nicklas 65   import="java.util.ArrayList"
1895 02 Feb 06 nicklas 66   import="java.util.List"
1895 02 Feb 06 nicklas 67   import="java.util.Map"
1895 02 Feb 06 nicklas 68 %>
1895 02 Feb 06 nicklas 69 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1895 02 Feb 06 nicklas 70 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
4887 06 Apr 09 nicklas 71 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1895 02 Feb 06 nicklas 72 <%!
1895 02 Feb 06 nicklas 73   private static final Item itemType = Item.PROJECT;
1895 02 Feb 06 nicklas 74   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
1895 02 Feb 06 nicklas 75 %>
1895 02 Feb 06 nicklas 76 <%
1895 02 Feb 06 nicklas 77 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
1895 02 Feb 06 nicklas 78 final String ID = sc.getId();
1895 02 Feb 06 nicklas 79 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
1895 02 Feb 06 nicklas 80 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1895 02 Feb 06 nicklas 81
1895 02 Feb 06 nicklas 82 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
1895 02 Feb 06 nicklas 83 final String callback = request.getParameter("callback");
1895 02 Feb 06 nicklas 84 final String title = mode.generateTitle("project", "projects");
7954 12 May 21 nicklas 85 final DbControl dc = sc.newDbControl(":List "+itemType);
1895 02 Feb 06 nicklas 86 ItemResultIterator<Project> projects = null;
7199 17 Oct 16 nicklas 87 List<AnnotationLoaderUtil> annotationLoaders = new ArrayList<AnnotationLoaderUtil>();
1895 02 Feb 06 nicklas 88 try
1895 02 Feb 06 nicklas 89 {
1895 02 Feb 06 nicklas 90   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7199 17 Oct 16 nicklas 91
7199 17 Oct 16 nicklas 92   ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
7199 17 Oct 16 nicklas 93   SnapshotManager manager = new SnapshotManager();
7337 12 Apr 17 nicklas 94   ProjectSpecificInfoFilter psInfo = new ProjectSpecificInfoFilter();
7199 17 Oct 16 nicklas 95   for (AnnotationType at : annotationTypeQuery.list(dc))
7199 17 Oct 16 nicklas 96   {
7199 17 Oct 16 nicklas 97     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
7199 17 Oct 16 nicklas 98   }
7199 17 Oct 16 nicklas 99   
7914 23 Feb 21 nicklas 100   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
2029 20 Feb 06 nicklas 101   try
2029 20 Feb 06 nicklas 102   {
7914 23 Feb 21 nicklas 103     final ItemQuery<Project> query = Base.getConfiguredQuery(dc, cc, jspContext, true, Project.getQuery(), mode);
2029 20 Feb 06 nicklas 104     projects = query.iterate(dc);
2029 20 Feb 06 nicklas 105   }
2029 20 Feb 06 nicklas 106   catch (Throwable t)
2029 20 Feb 06 nicklas 107   {
2029 20 Feb 06 nicklas 108     cc.setMessage(t.getMessage());
2029 20 Feb 06 nicklas 109   }
7199 17 Oct 16 nicklas 110   
1895 02 Feb 06 nicklas 111   int numListed = 0;
4698 10 Dec 08 nicklas 112   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
7604 25 Feb 19 nicklas 113   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 114   ExtensionsInvoker<ListColumnAction<Project,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
1895 02 Feb 06 nicklas 115   %>
6307 15 Aug 13 nicklas 116   <base:page title="<%=title==null ? "Projects" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6307 15 Aug 13 nicklas 117   <base:head scripts="table.js,~projects.js" styles="table.css,toolbar.css">
4887 06 Apr 09 nicklas 118     <ext:scripts context="<%=jspContext%>" />
4887 06 Apr 09 nicklas 119     <ext:stylesheets context="<%=jspContext%>" />
1895 02 Feb 06 nicklas 120   </base:head>
1895 02 Feb 06 nicklas 121   
1895 02 Feb 06 nicklas 122   <base:body>
5952 10 Feb 12 nicklas 123     <h1><%=title==null ? "Projects" : title%></h1>
5952 10 Feb 12 nicklas 124     <div class="content">
1895 02 Feb 06 nicklas 125     <tbl:table 
1895 02 Feb 06 nicklas 126       id="projects" 
1895 02 Feb 06 nicklas 127       columns="<%=cc.getSetting("columns")%>"
1895 02 Feb 06 nicklas 128       sortby="<%=cc.getSortProperty()%>" 
1895 02 Feb 06 nicklas 129       direction="<%=cc.getSortDirection()%>"
1895 02 Feb 06 nicklas 130       action="index.jsp"
1895 02 Feb 06 nicklas 131       sc="<%=sc%>"
1895 02 Feb 06 nicklas 132       item="<%=itemType%>"
6703 02 Feb 15 nicklas 133       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 134       subclass="fulltable"
7982 14 Jun 21 nicklas 135       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
1895 02 Feb 06 nicklas 136       >
1895 02 Feb 06 nicklas 137       <tbl:hidden 
1895 02 Feb 06 nicklas 138         name="mode" 
1895 02 Feb 06 nicklas 139         value="<%=mode.getName()%>" 
1895 02 Feb 06 nicklas 140       />
1895 02 Feb 06 nicklas 141       <tbl:hidden 
1895 02 Feb 06 nicklas 142         name="callback" 
1895 02 Feb 06 nicklas 143         value="<%=callback%>" 
1895 02 Feb 06 nicklas 144         skip="<%=callback == null%>" 
1895 02 Feb 06 nicklas 145       />
1895 02 Feb 06 nicklas 146       <tbl:columndef 
1895 02 Feb 06 nicklas 147         id="name"
1895 02 Feb 06 nicklas 148         property="name"
1895 02 Feb 06 nicklas 149         datatype="string"
1895 02 Feb 06 nicklas 150         title="Name"
1895 02 Feb 06 nicklas 151         sortable="true" 
1895 02 Feb 06 nicklas 152         filterable="true"
1895 02 Feb 06 nicklas 153         exportable="true"
1895 02 Feb 06 nicklas 154         show="always" 
1895 02 Feb 06 nicklas 155       />
1895 02 Feb 06 nicklas 156       <tbl:columndef 
4332 12 Jun 08 martin 157         id="id"
4387 11 Aug 08 nicklas 158         clazz="uniquecol"
4332 12 Jun 08 martin 159         property="id"
4332 12 Jun 08 martin 160         datatype="int"
4332 12 Jun 08 martin 161         title="ID"
4332 12 Jun 08 martin 162         sortable="true"
4332 12 Jun 08 martin 163         filterable="true"
4332 12 Jun 08 martin 164         exportable="true"
4332 12 Jun 08 martin 165       />
4332 12 Jun 08 martin 166       <tbl:columndef 
1895 02 Feb 06 nicklas 167         id="owner"
1895 02 Feb 06 nicklas 168         property="owner.name"
1895 02 Feb 06 nicklas 169         datatype="string"
1895 02 Feb 06 nicklas 170         title="Owner"
1895 02 Feb 06 nicklas 171         sortable="true" 
1895 02 Feb 06 nicklas 172         filterable="true"
1895 02 Feb 06 nicklas 173         exportable="true"
1895 02 Feb 06 nicklas 174       />
1895 02 Feb 06 nicklas 175       <tbl:columndef 
5370 23 Jun 10 nicklas 176         id="permissionTemplate"
5370 23 Jun 10 nicklas 177         property="permissionTemplate.name"
5370 23 Jun 10 nicklas 178         datatype="string"
5370 23 Jun 10 nicklas 179         title="Default permissions"
5370 23 Jun 10 nicklas 180         sortable="true" 
5370 23 Jun 10 nicklas 181         filterable="true"
5370 23 Jun 10 nicklas 182         exportable="true"
5370 23 Jun 10 nicklas 183       />
5370 23 Jun 10 nicklas 184       <tbl:columndef 
4698 10 Dec 08 nicklas 185         id="entryDate"
4698 10 Dec 08 nicklas 186         property="entryDate"
4698 10 Dec 08 nicklas 187         datatype="date"
4698 10 Dec 08 nicklas 188         title="Registered"
4698 10 Dec 08 nicklas 189         sortable="true" 
4698 10 Dec 08 nicklas 190         filterable="true"
4698 10 Dec 08 nicklas 191         exportable="true"
4698 10 Dec 08 nicklas 192         formatter="<%=dateFormatter%>"
4698 10 Dec 08 nicklas 193       />
4698 10 Dec 08 nicklas 194       <tbl:columndef 
1895 02 Feb 06 nicklas 195         id="description"
1895 02 Feb 06 nicklas 196         property="description"
1895 02 Feb 06 nicklas 197         datatype="string"
1895 02 Feb 06 nicklas 198         title="Description" 
1895 02 Feb 06 nicklas 199         sortable="true" 
1895 02 Feb 06 nicklas 200         filterable="true" 
1895 02 Feb 06 nicklas 201         exportable="true"
1895 02 Feb 06 nicklas 202       />
7199 17 Oct 16 nicklas 203       <%
7199 17 Oct 16 nicklas 204       for (AnnotationLoaderUtil loader : annotationLoaders)
7199 17 Oct 16 nicklas 205       {
7199 17 Oct 16 nicklas 206         AnnotationType at = loader.getAnnotationType();
7199 17 Oct 16 nicklas 207         Enumeration<String, String> annotationEnum = null;
7605 26 Feb 19 nicklas 208         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
7199 17 Oct 16 nicklas 209         if (at.isEnumeration())
7199 17 Oct 16 nicklas 210         {
7199 17 Oct 16 nicklas 211           annotationEnum = new Enumeration<String, String>();
7199 17 Oct 16 nicklas 212           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
7199 17 Oct 16 nicklas 213           List<?> values = at.getValues();
7199 17 Oct 16 nicklas 214           for (Object value : values)
7199 17 Oct 16 nicklas 215           {
7199 17 Oct 16 nicklas 216             String encoded = formatter.format(value);
7199 17 Oct 16 nicklas 217             annotationEnum.add(encoded, encoded);
7199 17 Oct 16 nicklas 218           }
7199 17 Oct 16 nicklas 219         }
7199 17 Oct 16 nicklas 220         %>
7199 17 Oct 16 nicklas 221         <tbl:columndef 
7199 17 Oct 16 nicklas 222           id="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+at.getId()%>"
7199 17 Oct 16 nicklas 223           title="<%=HTML.encodeTags(at.getName())+(loader.isSearchingInheritedAnnotations() ? " [I]" : " [A]")%>" 
7199 17 Oct 16 nicklas 224           property="<%=(loader.isSearchingInheritedAnnotations() ? "##" : "#")+at.getId()%>"
7199 17 Oct 16 nicklas 225           annotation="true"
7199 17 Oct 16 nicklas 226           datatype="<%=at.getValueType().getStringValue()%>"
7199 17 Oct 16 nicklas 227           enumeration="<%=annotationEnum%>"
7199 17 Oct 16 nicklas 228           smartenum="<%=at.getDisplayAsList() %>"
7199 17 Oct 16 nicklas 229           sortable="<%=at.getMultiplicity() == 1 && !loader.isSearchingInheritedAnnotations()%>" 
7199 17 Oct 16 nicklas 230           filterable="true" 
7199 17 Oct 16 nicklas 231           exportable="true"
7199 17 Oct 16 nicklas 232           formatter="<%=formatter%>"
7199 17 Oct 16 nicklas 233           unit="<%=at.getDefaultUnit()%>"
7199 17 Oct 16 nicklas 234         />
7199 17 Oct 16 nicklas 235         <%
7199 17 Oct 16 nicklas 236       }
7199 17 Oct 16 nicklas 237       %>
1895 02 Feb 06 nicklas 238       <tbl:columndef
1895 02 Feb 06 nicklas 239         id="actions"
1895 02 Feb 06 nicklas 240         title="Actions"
1895 02 Feb 06 nicklas 241         show="always"
1895 02 Feb 06 nicklas 242       />
2401 21 Jun 06 martin 243       <tbl:columndef
2401 21 Jun 06 martin 244         id="permission"
2401 21 Jun 06 martin 245         title="Permission"
2401 21 Jun 06 martin 246       />
6040 30 Mar 12 nicklas 247       <tbl:columndef 
6040 30 Mar 12 nicklas 248         id="xt-columns" 
6040 30 Mar 12 nicklas 249         extensions="<%=columnsInvoker%>" 
6040 30 Mar 12 nicklas 250         jspcontext="<%=jspContext%>" 
6040 30 Mar 12 nicklas 251       />
6604 18 Nov 14 nicklas 252       <div class="panelgroup bg-filled-50 bottomborder">
5952 10 Feb 12 nicklas 253         <tbl:toolbar
5952 10 Feb 12 nicklas 254           subclass="bottomborder"
5952 10 Feb 12 nicklas 255           visible="<%=mode.hasToolbar()%>"
5952 10 Feb 12 nicklas 256           >
5952 10 Feb 12 nicklas 257           <tbl:button 
6307 15 Aug 13 nicklas 258             id="btnNewItem"
5952 10 Feb 12 nicklas 259             disabled="<%=!createPermission%>" 
5952 10 Feb 12 nicklas 260             image="new.png" 
5952 10 Feb 12 nicklas 261             title="New&hellip;" 
5952 10 Feb 12 nicklas 262             tooltip="<%=createPermission ? "Create new project" : "You do not have permission to create projects"%>" 
5952 10 Feb 12 nicklas 263           />
5952 10 Feb 12 nicklas 264           <tbl:button 
6307 15 Aug 13 nicklas 265             id="btnDeleteItems"
5952 10 Feb 12 nicklas 266             image="delete.png"
5952 10 Feb 12 nicklas 267             title="Delete" 
5952 10 Feb 12 nicklas 268             tooltip="Delete the selected items" 
5952 10 Feb 12 nicklas 269           />
5952 10 Feb 12 nicklas 270           <tbl:button 
6307 15 Aug 13 nicklas 271             id="btnRestoreItems"
5952 10 Feb 12 nicklas 272             image="restore.png"
5952 10 Feb 12 nicklas 273             title="Restore" 
5952 10 Feb 12 nicklas 274             tooltip="Restore the selected (deleted) items"
5952 10 Feb 12 nicklas 275           />
5952 10 Feb 12 nicklas 276           <tbl:button 
6307 15 Aug 13 nicklas 277             id="btnSetOwner"
5952 10 Feb 12 nicklas 278             image="take_ownership.png"
5952 10 Feb 12 nicklas 279             title="Set owner&hellip;"
5952 10 Feb 12 nicklas 280             tooltip="Change owner of the selected items"
5952 10 Feb 12 nicklas 281           />
5952 10 Feb 12 nicklas 282           <tbl:button 
6307 15 Aug 13 nicklas 283             id="btnColumns"
5952 10 Feb 12 nicklas 284             image="columns.png" 
5952 10 Feb 12 nicklas 285             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 286             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 287           />
5952 10 Feb 12 nicklas 288           <tbl:button 
6307 15 Aug 13 nicklas 289             id="btnImport"
6307 15 Aug 13 nicklas 290             data-plugin-type="IMPORT"
5952 10 Feb 12 nicklas 291             image="import.png" 
5952 10 Feb 12 nicklas 292             title="Import&hellip;" 
5952 10 Feb 12 nicklas 293             tooltip="Import data" 
5952 10 Feb 12 nicklas 294             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5952 10 Feb 12 nicklas 295           />
5952 10 Feb 12 nicklas 296           <tbl:button 
6307 15 Aug 13 nicklas 297             id="btnExport"
6307 15 Aug 13 nicklas 298             data-plugin-type="EXPORT"
5952 10 Feb 12 nicklas 299             image="export.png" 
5952 10 Feb 12 nicklas 300             title="Export&hellip;" 
5952 10 Feb 12 nicklas 301             tooltip="Export data" 
5952 10 Feb 12 nicklas 302             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5952 10 Feb 12 nicklas 303           />
5952 10 Feb 12 nicklas 304           <tbl:button 
6307 15 Aug 13 nicklas 305             id="btnRunPlugin"
6307 15 Aug 13 nicklas 306             data-plugin-type="OTHER"
5952 10 Feb 12 nicklas 307             image="runplugin.png" 
5952 10 Feb 12 nicklas 308             title="Run plugin&hellip;" 
5952 10 Feb 12 nicklas 309             tooltip="Run a plugin" 
5952 10 Feb 12 nicklas 310             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5952 10 Feb 12 nicklas 311           />
5952 10 Feb 12 nicklas 312           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 313             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5952 10 Feb 12 nicklas 314         </tbl:toolbar>
5952 10 Feb 12 nicklas 315         <tbl:panel>
6182 23 Oct 12 nicklas 316           <tbl:presetselector />
5952 10 Feb 12 nicklas 317           <tbl:navigator
5952 10 Feb 12 nicklas 318             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 319             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 320             totalrows="<%=projects == null ? 0 : projects.getTotalCount()%>" 
5952 10 Feb 12 nicklas 321             visible="<%=mode.hasNavigator()%>"
5952 10 Feb 12 nicklas 322           />
5952 10 Feb 12 nicklas 323         </tbl:panel>
5952 10 Feb 12 nicklas 324       </div>
1895 02 Feb 06 nicklas 325       <tbl:data>
5948 08 Feb 12 nicklas 326         <tbl:headers>
5948 08 Feb 12 nicklas 327           <tbl:headerrow>
7943 04 May 21 nicklas 328             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 329             <tbl:columnheaders />
5948 08 Feb 12 nicklas 330           </tbl:headerrow>
6703 02 Feb 15 nicklas 331           <%
6703 02 Feb 15 nicklas 332           int numFilters = cc.getNumPropertyFilters();
6703 02 Feb 15 nicklas 333           int numRows = cc.getFilterRows();
6703 02 Feb 15 nicklas 334           for (int filterNo = 0; filterNo < numRows; filterNo++)
6703 02 Feb 15 nicklas 335           {
6703 02 Feb 15 nicklas 336             boolean lastRow = filterNo == numRows-1;
6703 02 Feb 15 nicklas 337             %>
6703 02 Feb 15 nicklas 338             <tbl:headerrow>
7943 04 May 21 nicklas 339               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 340                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 341                   <div class="index"></div>
7943 04 May 21 nicklas 342                   <div class="check">
7943 04 May 21 nicklas 343                     <base:icon 
7943 04 May 21 nicklas 344                       subclass="link table-check"
7943 04 May 21 nicklas 345                       image="check_uncheck.png" 
7943 04 May 21 nicklas 346                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 347                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 348                     />
7943 04 May 21 nicklas 349                   </div>
7943 04 May 21 nicklas 350                   <div class="icons">
7943 04 May 21 nicklas 351                     <base:icon
7943 04 May 21 nicklas 352                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 353                       image="add.png"
7943 04 May 21 nicklas 354                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 355                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 356                     /><base:icon
7943 04 May 21 nicklas 357                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 358                       image="remove.png"
7943 04 May 21 nicklas 359                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 360                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 361                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 362                     />
7943 04 May 21 nicklas 363                   </div>
7943 04 May 21 nicklas 364                 </div>
6703 02 Feb 15 nicklas 365               </tbl:header>
6703 02 Feb 15 nicklas 366               <tbl:propertyfilter row="<%=filterNo%>" />
6703 02 Feb 15 nicklas 367             </tbl:headerrow>
6703 02 Feb 15 nicklas 368             <%
6703 02 Feb 15 nicklas 369           }
6703 02 Feb 15 nicklas 370           %>
7913 22 Feb 21 nicklas 371           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 372         </tbl:headers>
5948 08 Feb 12 nicklas 373         <tbl:rows>
1895 02 Feb 06 nicklas 374           <%
5952 10 Feb 12 nicklas 375           if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 376           {
5952 10 Feb 12 nicklas 377             %>
6604 18 Nov 14 nicklas 378             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 379               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 380             </tbl:panel>
5952 10 Feb 12 nicklas 381             <%
5952 10 Feb 12 nicklas 382             cc.setMessage(null);
5952 10 Feb 12 nicklas 383           }
1895 02 Feb 06 nicklas 384           int index = cc.getPage()*cc.getRowsPerPage();
1895 02 Feb 06 nicklas 385           int selectedItemId = Values.getInt(request.getParameter("item_id"));
2029 20 Feb 06 nicklas 386           if (projects != null)
1895 02 Feb 06 nicklas 387           {
2029 20 Feb 06 nicklas 388             while (projects.hasNext())
2029 20 Feb 06 nicklas 389             {
2029 20 Feb 06 nicklas 390               Project item = projects.next();
2029 20 Feb 06 nicklas 391               int itemId = item.getId();
2029 20 Feb 06 nicklas 392               String name = HTML.encodeTags(item.getName());
2503 09 Aug 06 martin 393               boolean writePermission = item.hasPermission(Permission.WRITE);
6221 10 Jan 13 nicklas 394               
4003 26 Nov 07 nicklas 395               boolean deletePermission = item.hasPermission(Permission.DELETE);
2503 09 Aug 06 martin 396               String tooltip = mode.isSelectionMode() ?
2503 09 Aug 06 martin 397                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2029 20 Feb 06 nicklas 398               index++;
2029 20 Feb 06 nicklas 399               numListed++;
2029 20 Feb 06 nicklas 400               %>
2029 20 Feb 06 nicklas 401               <tbl:row>
7943 04 May 21 nicklas 402                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 403                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 404                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 405                     <div class="check">
7943 04 May 21 nicklas 406                       <base:input
7943 04 May 21 nicklas 407                         type="checkbox" 
7943 04 May 21 nicklas 408                         name="<%=itemId%>" 
7943 04 May 21 nicklas 409                         value="<%=itemId%>" 
7943 04 May 21 nicklas 410                         title="<%=name%>" 
7943 04 May 21 nicklas 411                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 412                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 413                       />
7943 04 May 21 nicklas 414                       <base:input 
7943 04 May 21 nicklas 415                         type="radio" 
7943 04 May 21 nicklas 416                         name="item_id" 
7943 04 May 21 nicklas 417                         value="<%=itemId%>" 
7943 04 May 21 nicklas 418                         title="<%=name%>" 
7943 04 May 21 nicklas 419                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 420                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 421                       />
7943 04 May 21 nicklas 422                     </div>
7943 04 May 21 nicklas 423                     <div class="icons">
7943 04 May 21 nicklas 424                       <base:icon 
7943 04 May 21 nicklas 425                         image="deleted.png"
7943 04 May 21 nicklas 426                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 427                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 428                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 429                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 430                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 431                       />
7943 04 May 21 nicklas 432                     </div>
7943 04 May 21 nicklas 433                   </div>
7943 04 May 21 nicklas 434                 </tbl:header>
6307 15 Aug 13 nicklas 435                 <tbl:cell column="name"><div
6307 15 Aug 13 nicklas 436                   class="link table-item"
6307 15 Aug 13 nicklas 437                   data-item-id="<%=itemId%>"
6307 15 Aug 13 nicklas 438                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6307 15 Aug 13 nicklas 439                   tabindex="0"
2433 27 Jun 06 nicklas 440                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4332 12 Jun 08 martin 441                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
2354 07 Jun 06 martin 442                 <tbl:cell column="owner"
2354 07 Jun 06 martin 443                   ><base:propertyvalue 
2354 07 Jun 06 martin 444                     item="<%=item%>" 
2354 07 Jun 06 martin 445                     property="owner"
2354 07 Jun 06 martin 446                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 447                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 448                   /></tbl:cell>
5370 23 Jun 10 nicklas 449                 <tbl:cell column="permissionTemplate"
5370 23 Jun 10 nicklas 450                   ><base:propertyvalue 
5370 23 Jun 10 nicklas 451                     item="<%=item%>" 
5370 23 Jun 10 nicklas 452                     property="permissionTemplate"
5370 23 Jun 10 nicklas 453                     enableEditLink="<%=mode.hasEditLink()%>" 
5370 23 Jun 10 nicklas 454                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
7214 19 Oct 16 nicklas 455                     nulltext="<%=PermissionUtil.getFullPermissionNames(item.getAutoPermission(), "Annotate")%>"
5370 23 Jun 10 nicklas 456                   /></tbl:cell>
4698 10 Dec 08 nicklas 457                 <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
2029 20 Feb 06 nicklas 458                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
7199 17 Oct 16 nicklas 459                 <%
7199 17 Oct 16 nicklas 460                 if (item.isAnnotated())
7199 17 Oct 16 nicklas 461                 {
7199 17 Oct 16 nicklas 462                   AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, item.getAnnotationSet().getId());
7199 17 Oct 16 nicklas 463                   for (AnnotationLoaderUtil loader : annotationLoaders)
7199 17 Oct 16 nicklas 464                   {
7199 17 Oct 16 nicklas 465                     %>
7199 17 Oct 16 nicklas 466                     <tbl:cell 
7199 17 Oct 16 nicklas 467                       column="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+loader.getId()%>"
7199 17 Oct 16 nicklas 468                       ><%
7337 12 Apr 17 nicklas 469                       if (loader.find(snapshot, psInfo.reset())) 
7199 17 Oct 16 nicklas 470                       {
7199 17 Oct 16 nicklas 471                         %><tbl:cellvalue 
7199 17 Oct 16 nicklas 472                           list="<%=loader.getValues()%>"
8160 07 Jun 23 nicklas 473                           bulletlist="<%=loader.useBulletList() %>"
7199 17 Oct 16 nicklas 474                           suffix="<%=loader.getUnitSymbol()%>"
8083 20 Oct 22 nicklas 475                           clazz="<%=psInfo.hasProjectSpecificAnnotation() ? "ps-annotation" : null%>"
7199 17 Oct 16 nicklas 476                         /><%
7199 17 Oct 16 nicklas 477                       }
7199 17 Oct 16 nicklas 478                       %></tbl:cell>
7199 17 Oct 16 nicklas 479                     <%
7199 17 Oct 16 nicklas 480                   }
7199 17 Oct 16 nicklas 481                 }
7199 17 Oct 16 nicklas 482                 %>
6307 15 Aug 13 nicklas 483                 <tbl:cell column="actions"><span class="link auto-init" data-auto-init="set-active" data-item-id="<%=itemId%>">Set active</span></tbl:cell>
2401 21 Jun 06 martin 484                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
6040 30 Mar 12 nicklas 485                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6040 30 Mar 12 nicklas 486                   <tbl:cell column="xt-columns" />
6040 30 Mar 12 nicklas 487                 </tbl:xt-cells>
2029 20 Feb 06 nicklas 488               </tbl:row>
2029 20 Feb 06 nicklas 489               <%
2029 20 Feb 06 nicklas 490               }
1895 02 Feb 06 nicklas 491             }
5952 10 Feb 12 nicklas 492           if (numListed == 0)
5952 10 Feb 12 nicklas 493           {
5952 10 Feb 12 nicklas 494             %>
6604 18 Nov 14 nicklas 495             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 496               <div class="messagecontainer note">
5952 10 Feb 12 nicklas 497               <%=projects == null || projects.getTotalCount() == 0 ? "No projects were found" : "No projects on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 498               </div>
5952 10 Feb 12 nicklas 499             </tbl:panel>
5952 10 Feb 12 nicklas 500             <%
5952 10 Feb 12 nicklas 501           }
1895 02 Feb 06 nicklas 502           %>
5952 10 Feb 12 nicklas 503         </tbl:rows>
1895 02 Feb 06 nicklas 504       </tbl:data>
1895 02 Feb 06 nicklas 505     </tbl:table>
5952 10 Feb 12 nicklas 506     </div>
5952 10 Feb 12 nicklas 507     
5951 09 Feb 12 nicklas 508     <base:buttongroup subclass="dialogbuttons">
6307 15 Aug 13 nicklas 509       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6307 15 Aug 13 nicklas 510       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6307 15 Aug 13 nicklas 511       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
1895 02 Feb 06 nicklas 512     </base:buttongroup>
5951 09 Feb 12 nicklas 513     
1895 02 Feb 06 nicklas 514   </base:body>
1895 02 Feb 06 nicklas 515   </base:page>
1895 02 Feb 06 nicklas 516   <%
1895 02 Feb 06 nicklas 517 }
1895 02 Feb 06 nicklas 518 finally
1895 02 Feb 06 nicklas 519 {
1895 02 Feb 06 nicklas 520   if (projects != null) projects.close();
1895 02 Feb 06 nicklas 521   if (dc != null) dc.close();
1895 02 Feb 06 nicklas 522 }
3675 16 Aug 07 jari 523 %>