source: trunk/www/include/menu.jsp @ 3021

Last change on this file since 3021 was 3021, checked in by Martin Svensson, 15 years ago

Replaced 'Most recent' in the menu bar with an icon

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 34.1 KB
Line 
1<%-- $Id: menu.jsp 3021 2006-12-12 09:00:14Z martin $
2  ------------------------------------------------------------------
3  Copyright (C) Authors contributing to this file.
4
5  This file is part of BASE - BioArray Software Environment.
6  Available at http://base.thep.lu.se/
7
8  BASE is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License
10  as published by the Free Software Foundation; either version 2
11  of the License, or (at your option) any later version.
12
13  BASE is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place - Suite 330,
21  Boston, MA  02111-1307, USA.
22  ------------------------------------------------------------------
23
24  This page is included from the <base:page> taglib to display the
25  meny.
26
27  @param name
28    The name of the menu to display:
29    - standard: The standard menu for a logged in user
30    - login: The menu used on pages where no user is logged in
31    - exception: Used on error pages, does not display a menu at all
32    - auto: Will display either the "standard" or "login" menu
33
34  @author Nicklas
35  @version 2.0
36--%>
37<%@ page session="false"
38  import="net.sf.basedb.core.SessionControl"
39  import="net.sf.basedb.core.DbControl"
40  import="net.sf.basedb.core.BasicItem"
41  import="net.sf.basedb.core.Nameable"
42  import="net.sf.basedb.core.Permission"
43  import="net.sf.basedb.core.Item"
44  import="net.sf.basedb.core.ItemContext"
45  import="net.sf.basedb.core.User"
46  import="net.sf.basedb.core.Project"
47  import="net.sf.basedb.core.Client"
48  import="net.sf.basedb.core.StringUtil"
49  import="net.sf.basedb.core.ItemQuery"
50  import="net.sf.basedb.core.Include"
51  import="net.sf.basedb.core.ItemResultList"
52  import="net.sf.basedb.core.query.Orders"
53  import="net.sf.basedb.core.query.Hql"
54  import="net.sf.basedb.clients.web.Base"
55  import="net.sf.basedb.clients.web.util.HTML"
56  import="net.sf.basedb.util.Values"
57  import="java.util.HashMap"
58  import="java.util.ArrayList"
59%>
60<%@ taglib prefix="m" uri="/WEB-INF/menu.tld" %>
61<%
62final SessionControl sc = Base.getSessionControl(pageContext, false);
63final String ID = sc == null ? "" : sc.getId();
64final String name = Values.getString(request.getParameter("name"), "login");
65final String root = request.getContextPath()+"/";
66if ("exception".equals(name))
67{
68}
69else if ("login".equals(name))
70{
71}
72else if ("recentItems".equals(name) && sc != null && sc.isLoggedIn())
73{
74  // Recently used items menu
75  String mostRecent = Values.getString(sc.getUserClientSetting("menu.mostRecent"), 
76    "EXPERIMENT:BIOASSAYSET:TRANSFORMATION");
77  boolean loadNames = Values.getBoolean(sc.getUserClientSetting("menu.mostRecent.loadNames"), 
78    false);
79  DbControl dc = loadNames ? sc.newDbControl() : null;
80  try
81  {
82    %>
83    <m:menu
84      id="mostRecent"
85      style="display: none;"
86      >
87      <%
88      int numItems = 0;
89      for (String recentItem : mostRecent.split(":"))
90      {
91        Item itemType = Item.valueOf(recentItem);
92        ItemContext cc = sc.getCurrentContext(itemType);
93        if (cc.getId() != 0)
94        {
95          String shortName = "";
96          String fullName = "";
97          if (loadNames)
98          {
99            try
100            {
101              BasicItem item = itemType.getById(dc, cc.getId());
102              fullName = ((Nameable)item).getName();
103              shortName = ": " + StringUtil.trimString(fullName, 20);
104            }
105            catch (Throwable t)
106            {}
107          }
108          else
109          {
110            fullName = itemType.toString() + "; id=" + cc.getId();
111          }
112          numItems++;
113          %>
114          <m:menuitem
115            title="<%=itemType.toString()+HTML.encodeTags(shortName)%>"
116            onclick="<%="Main.viewOrEditItem('" + ID + "', '" + itemType.name() + "', " + cc.getId() + ")"%>"
117            tooltip="<%="Go to " + HTML.encodeTags(fullName)%>"
118          />
119          <%
120          if (itemType == Item.BIOASSAYSET)
121          {
122            // Add menu for Experiment explorer as well
123            %>
124            <m:menuitem
125              title="<%="Experiment explorer"+HTML.encodeTags(shortName)%>"
126              onclick="<%="location.href = '"+root+"views/experiments/explorer/view/index.jsp?ID=" + ID + "&bioassayset_id="+cc.getId()+"'"%>"
127              tooltip="Go to experiment explorer"
128            />
129            <%
130          }
131        }
132      }
133      if (numItems == 0)
134      {
135        %>
136        <m:menuitem 
137          title="<i>- no recent items -</i>"
138          enabled="false"
139        />
140        <%
141      }
142      %>
143      <m:menuseparator />
144      <m:menuitem 
145        title="Options&hellip;" 
146        onclick="<%="Main.openPopup('"+root+"my_base/user/preferences.jsp?ID="+ID+"&page=mostRecent', 'Preferences', 500, 400);"%>"
147        tooltip="Change options for this menu" 
148      />
149    </m:menu>
150    <%
151  }
152  finally
153  {
154    if (dc != null) dc.close();
155  }
156}
157else if ("standard".equals(name))
158{
159  final DbControl dc = sc.newDbControl(); 
160  ItemResultList<Project> projects = null;
161  StringBuilder fillText = new StringBuilder();
162  try
163  {
164    fillText.append("<a href=\"javascript:void(0)\" title=\"Refresh current page\"");
165    fillText.append(" onclick=\"location.reload()\">");
166    fillText.append("<img src=\""+root+"images/refresh.gif\" border=\"0\"></a><span class=\"menuseparator\">&nbsp;&nbsp;</span>");
167   
168    fillText.append("<a href=\"javascript:void(0)\" title=\"Go to the most recently viewed item\"");
169    fillText.append(" onclick=\"Menu.toggleTopMenu(document.getElementById('mostRecent'), event.clientX-20, event.clientY); event.cancelBubble = true;\">");
170    fillText.append(" <img src=\""+root+"images/recent.png\" border=\"0\"><img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a><span class=\"menuseparator\">&nbsp;&nbsp;</span>");
171   
172    Project activeProject = sc.getActiveProjectId() == 0 ? null : Project.getById(dc, sc.getActiveProjectId());
173    fillText.append("<img src=\""+root+"images/project.gif\" border=\"0\"> <a href=\"javascript:void(0)\" title=\"Switch project\"");
174    fillText.append(" onclick=\"Menu.toggleTopMenu(document.getElementById('projects'), event.clientX-100, event.clientY); event.cancelBubble = true;\">");
175    fillText.append(activeProject == null ? "<i>- none -</i>" : HTML.encodeTags(activeProject.getName()));
176    fillText.append(" <img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a><span class=\"menuseparator\">&nbsp;&nbsp;</span>");
177   
178    User user = User.getById(dc, sc.getLoggedInUserId());
179    String userPrompt = sc.isImpersonated() ? "Impersonated" : "User";
180    fillText.append("<img src=\""+root+"images/take_ownership.png\" border=\"0\"> <a href=\"javascript:void(0)\" title=\"Switch user/logout\"");
181    fillText.append(" onclick=\"javascript:Menu.toggleTopMenu(document.getElementById('switchuser'), event.clientX-100, event.clientY); event.cancelBubble = true;\">");
182    fillText.append(HTML.encodeTags(user.getLogin()));
183    fillText.append(" (").append(user.getName()).append(") <img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a>");
184    %>
185    <%
186    // Permission settings
187    final boolean hasFiles              = !sc.hasPermission(Permission.DENIED, Item.FILE);
188    final boolean createFiles           =  sc.hasPermission(Permission.CREATE, Item.FILE);
189
190    final boolean hasProjects           = !sc.hasPermission(Permission.DENIED, Item.PROJECT); 
191    final boolean createProjects        =  sc.hasPermission(Permission.CREATE, Item.PROJECT); 
192
193    final boolean hasMessages           = !sc.hasPermission(Permission.DENIED, Item.MESSAGE); 
194    final boolean createMessages        =  sc.hasPermission(Permission.CREATE, Item.MESSAGE); 
195
196    final boolean hasLabels             = !sc.hasPermission(Permission.DENIED, Item.LABEL); 
197    final boolean createLabels          =  sc.hasPermission(Permission.CREATE, Item.LABEL); 
198
199    final boolean hasBioSources         = !sc.hasPermission(Permission.DENIED, Item.BIOSOURCE); 
200    final boolean createBioSources      =  sc.hasPermission(Permission.CREATE, Item.BIOSOURCE); 
201
202    final boolean hasSamples            = !sc.hasPermission(Permission.DENIED, Item.SAMPLE); 
203    final boolean createSamples         =  sc.hasPermission(Permission.CREATE, Item.SAMPLE);
204
205    final boolean hasExtracts           = !sc.hasPermission(Permission.DENIED, Item.EXTRACT); 
206    final boolean createExtracts        =  sc.hasPermission(Permission.CREATE, Item.EXTRACT); 
207
208    final boolean hasLabeledExtracts    = !sc.hasPermission(Permission.DENIED, Item.LABELEDEXTRACT); 
209    final boolean createLabeledExtracts =  sc.hasPermission(Permission.CREATE, Item.LABELEDEXTRACT); 
210
211    final boolean hasHybridizations     = !sc.hasPermission(Permission.DENIED, Item.HYBRIDIZATION); 
212    final boolean createHybridizations  =  sc.hasPermission(Permission.CREATE, Item.HYBRIDIZATION); 
213
214    final boolean hasScans              = !sc.hasPermission(Permission.DENIED, Item.SCAN); 
215    final boolean createScans           =  sc.hasPermission(Permission.CREATE, Item.SCAN); 
216    final boolean hasRawBioAssays       = !sc.hasPermission(Permission.DENIED, Item.RAWBIOASSAY); 
217    final boolean createRawBioAssays    =  sc.hasPermission(Permission.CREATE, Item.RAWBIOASSAY); 
218    final boolean hasExperiments        = !sc.hasPermission(Permission.DENIED, Item.EXPERIMENT); 
219    final boolean createExperiments     =  sc.hasPermission(Permission.CREATE, Item.EXPERIMENT); 
220    final boolean hasFormulas           = !sc.hasPermission(Permission.DENIED, Item.FORMULA); 
221    final boolean createFormulas        =  sc.hasPermission(Permission.CREATE, Item.FORMULA); 
222   
223    final boolean hasReporters          = !sc.hasPermission(Permission.DENIED, Item.REPORTER); 
224    final boolean hasReporterLists      = !sc.hasPermission(Permission.DENIED, Item.REPORTERLIST); 
225    final boolean createReporters       =  sc.hasPermission(Permission.CREATE, Item.REPORTER); 
226    final boolean hasJobs               = !sc.hasPermission(Permission.DENIED, Item.JOB); 
227    final boolean hasSessions           = !sc.hasPermission(Permission.DENIED, Item.SESSION); 
228    %>
229    <m:menu
230      id="view"
231      style="display: none"
232      >
233      <m:menuitem
234        title="Home" 
235        onclick="<%="Menu.openUrl('"+root+"my_base/index.jsp?ID="+ID+"')"%>" 
236      />
237      <m:menuitem
238        title="All items"
239        tooltip="View all items that you are the owner of"
240        onclick="<%="Menu.openUrl('"+root+"views/items/index.jsp?ID="+ID+"')"%>"
241      />
242      <m:menuitem
243        title="Trashcan"
244        tooltip="View all items that have been marked for deletion"
245        onclick="<%="Menu.openUrl('"+root+"views/trashcan/index.jsp?ID="+ID+"')"%>"
246      />
247      <m:menuseparator />
248      <m:menuitem 
249        title="Files" 
250        onclick="<%="Menu.openUrl('"+root+"filemanager/index.jsp?ID="+ID+"')"%>" 
251        tooltip="<%=hasFiles ? "Manage files" : "You do not have permission to manage files"%>" 
252        enabled="<%=hasFiles%>"
253      />
254      <m:menuitem
255        title="Projects"
256        onclick="<%="Menu.openUrl('"+root+"my_base/projects/index.jsp?ID="+ID+"')"%>"
257        tooltip="Manage projects"
258        enabled="<%=hasProjects%>"
259      />
260      <m:menuitem 
261        title="Messages" 
262        onclick="<%="Menu.openUrl('"+root+"my_base/messages/index.jsp?ID="+ID+"')"%>" 
263        tooltip="<%=hasMessages ? "Read your messages" : "You do not have permission to read messages"%>" 
264        enabled="<%=hasMessages%>"
265      />
266      <m:menuitem 
267        title="Jobs" 
268        onclick="<%="Menu.openUrl('"+root+"views/jobs/index.jsp?ID="+ID+"')"%>" 
269        tooltip="<%=hasJobs ? "Check the status of your jobs" : "You do not have permission to access jobs"%>" 
270        enabled="<%=hasJobs%>"
271      />
272      <m:menuitem 
273        title="Sessions" 
274        onclick="<%="Menu.openUrl('"+root+"views/sessions/index.jsp?ID="+ID+"')"%>" 
275        tooltip="<%=hasSessions ? "Check you login sessions" : "You do not have permission to access sessions"%>" 
276        enabled="<%=hasSessions%>"
277      />
278      <m:menuseparator />
279      <m:menuitem
280        title="Biosources"
281        onclick="<%="Menu.openUrl('"+root+"biomaterials/biosources/index.jsp?ID="+ID+"')"%>"
282        tooltip="<%=hasBioSources ? "Manage biosources" : "You do not have permission to manage biosources"%>"
283        enabled="<%=hasBioSources%>"
284      />
285      <m:menuitem
286        title="Samples"
287        onclick="<%="Menu.openUrl('"+root+"biomaterials/samples/index.jsp?ID="+ID+"')"%>"
288        tooltip="<%=hasSamples ? "Manage samples" : "You do not have permission to manage samples"%>"
289        enabled="<%=hasSamples%>"
290      />
291      <m:menuitem
292        title="Extracts"
293        onclick="<%="Menu.openUrl('"+root+"biomaterials/extracts/index.jsp?ID="+ID+"')"%>"
294        tooltip="<%=hasExtracts ? "Manage extracts" : "You do not have permission to manage extracts"%>"
295        enabled="<%=hasExtracts%>"
296      />
297      <m:menuitem
298        title="Labeled extracts"
299        onclick="<%="Menu.openUrl('"+root+"biomaterials/labeledextracts/index.jsp?ID="+ID+"')"%>"
300        tooltip="<%=hasLabeledExtracts ? "Manage labeled extracts" : "You do not have permission to manage labeled extracts"%>"
301        enabled="<%=hasLabeledExtracts%>"
302      />
303      <m:menuitem
304        title="Labels"
305        onclick="<%="Menu.openUrl('"+root+"biomaterials/labels/index.jsp?ID="+ID+"')"%>"
306        tooltip="<%=hasLabels ? "Manage labels" : "You do not have permission to manage labels"%>"
307        enabled="<%=hasLabels%>"
308      />
309      <m:menuseparator />
310      <m:menuitem
311        title="Hybridizations"
312        onclick="<%="Menu.openUrl('"+root+"views/hybridizations/index.jsp?ID="+ID+"')"%>"
313        tooltip="<%=hasHybridizations ? "Manage hybridizations" : "You do not have permission to manage hybridizations"%>"
314        enabled="<%=hasHybridizations%>"
315      />
316      <m:menuitem
317        title="Scans"
318        onclick="<%="Menu.openUrl('"+root+"views/scans/index.jsp?ID="+ID+"')"%>"
319        tooltip="<%=hasScans ? "Manage scans" : "You do not have permission to manage scans"%>"
320        enabled="<%=hasScans%>"
321      />
322      <m:menuitem
323        title="Raw bioassays"
324        onclick="<%="Menu.openUrl('"+root+"views/rawbioassays/index.jsp?ID="+ID+"')"%>"
325        tooltip="<%=hasRawBioAssays ? "Manage raw bioassays" : "You do not have permission to manage raw bioassays"%>"
326        enabled="<%=hasRawBioAssays%>"
327      />
328      <m:menuitem
329        title="Experiments"
330        onclick="<%="Menu.openUrl('"+root+"views/experiments/index.jsp?ID="+ID+"')"%>"
331        tooltip="<%=hasExperiments ? "Manage experiments" : "You do not have permission to manage experiments"%>"
332        enabled="<%=hasExperiments%>"
333      />
334      <m:menuitem
335        title="Formulas"
336        onclick="<%="Menu.openUrl('"+root+"views/formulas/index.jsp?ID="+ID+"')"%>"
337        tooltip="<%=hasFormulas ? "Manage formulas" : "You do not have permission to manage formulas"%>"
338        enabled="<%=hasFormulas%>"
339      />
340      <m:menuseparator />
341      <m:menuitem
342        title="Reporters"
343        onclick="<%="Menu.openUrl('"+root+"views/reporters/index.jsp?ID="+ID+"')"%>"
344        tooltip="<%=hasReporters ? "Manage reporters" : "You do not have permission to manage reporters"%>"
345        enabled="<%=hasReporters%>"
346      />
347      <m:menuitem
348        title="Reporter lists"
349        onclick="<%="Menu.openUrl('"+root+"views/reporterlists/index.jsp?ID="+ID+"')"%>"
350        tooltip="<%=hasReporterLists ? "Manage reporter lists" : "You do not have permission to manage reporter lists"%>"
351        enabled="<%=hasReporterLists%>"
352      />
353
354    </m:menu>
355
356
357    <m:menu 
358      id="file" 
359      style="display: none"
360      >
361      <m:submenu 
362        subid="projects" 
363        title="Select project"
364        enabled="<%=hasProjects%>"
365      />
366      <m:menuseparator />
367      <m:menuitem 
368        title="Contact information&hellip;" 
369        onclick="<%="Main.openPopup('"+root+"my_base/user/settings.jsp?ID="+ID+"&page=contact', 'Settings', 500, 360);"%>" 
370        tooltip="Set your address, phone, email, etc." 
371      />
372      <m:menuitem 
373        title="Change password&hellip;" 
374        onclick="<%="Main.openPopup('"+root+"my_base/user/settings.jsp?ID="+ID+"&page=password', 'Settings', 500, 360);"%>" 
375        tooltip="Set your password" 
376      />
377      <m:menuitem 
378        title="Other information&hellip;" 
379        onclick="<%="Main.openPopup('"+root+"my_base/user/settings.jsp?ID="+ID+"&page=other', 'Settings', 500, 360);"%>" 
380        tooltip="Other user-related information" 
381      />
382      <m:menuseparator />
383      <m:menuitem 
384        title="Preferences&hellip;" 
385        onclick="<%="Main.openPopup('"+root+"my_base/user/preferences.jsp?ID="+ID+"', 'Preferences', 500, 400);"%>" 
386        tooltip="Change font sizes, etc." 
387      />
388      <m:menuitem 
389        title="Reload permissions" 
390        onclick="<%="Main.openPopup('"+root+"my_base/user/submit_user.jsp?ID="+ID+"&cmd=ReloadPermissions', 'ReloadPermissions', 300, 200);"%>" 
391        tooltip="Reload permissions" 
392      />
393      <m:menuseparator />
394      <m:menuitem 
395        title="Logout&hellip;" 
396        onclick="<%="Main.openPopup('"+root+"logout.jsp?ID="+ID+"', 'Logout', 360, 200);"%>"
397        tooltip="Exit from BASE" 
398      />
399    </m:menu>
400    <%
401    // Projects menu
402    int activeProjectId = sc.getActiveProjectId();
403    final ItemQuery<Project> projectQuery = Project.getQuery();
404    projectQuery.include(Include.MINE, Include.SHARED);
405    projectQuery.order(Orders.asc(Hql.property("name")));
406    projectQuery.setCacheResult(true);
407    %>
408    <m:menu 
409      id="projects"
410      style="display: none"
411      >
412      <m:menuitem
413        title="<i>- no active project -</i>"
414        onclick="<%="Main.openPopup('"+root+"my_base/projects/set_active.jsp?ID="+ID+"', 'ActivateProject', 300, 140)"%>"
415        icon="<%=activeProjectId == 0 ? "checkedmenu.gif" : null%>"
416        enabled="<%=activeProjectId != 0%>"
417        tooltip="<%=activeProjectId == 0 ? "No project is active" : "Disable the currently active project"%>"
418      />
419      <%
420      projects = projectQuery.list(dc);
421      for (Project p : projects)
422      {
423        int projectId = p.getId();
424        boolean active = activeProjectId == projectId;
425        %>
426        <m:menuitem
427          title="<%=HTML.encodeTags(p.getName())%>"
428          style="<%=active ? "color: #000000; font-weight: bold;" : null %>"
429          onclick="<%="Main.openPopup('"+root+"my_base/projects/set_active.jsp?ID="+ID+"&project_id="+p.getId()+"', 'ActivateProject', 300, 140)"%>"
430          icon="<%=active ? "checkedmenu.gif" : null%>"
431          enabled="<%=!active%>"
432          tooltip="<%=active ? "This is the active project" : "Set this project to the active project"%>"
433        />
434        <%
435      }
436      %>
437    </m:menu>
438   
439    <%
440    // Array LIMS - menu
441    final boolean hasPlateGeometries = sc.hasPermission(Permission.READ, Item.PLATEGEOMETRY);
442    final boolean hasPlateTypes = !sc.hasPermission(Permission.DENIED, Item.PLATETYPE);
443    final boolean hasPlates = !sc.hasPermission(Permission.DENIED, Item.PLATE);
444    final boolean hasPlateMappings = !sc.hasPermission(Permission.DENIED, Item.PLATEMAPPING);
445    final boolean hasArraySlides = !sc.hasPermission(Permission.DENIED, Item.ARRAYSLIDE);
446    final boolean hasArrayBatches = !sc.hasPermission(Permission.DENIED, Item.ARRAYBATCH);
447    final boolean hasArrayDesigns = !sc.hasPermission(Permission.DENIED, Item.ARRAYDESIGN);
448    final boolean hasLims = hasPlateGeometries || hasPlateTypes || hasPlates || hasPlateMappings || 
449      hasArraySlides || hasArrayBatches || hasArrayDesigns;
450    if (hasLims)
451    {
452      %>
453      <m:menu 
454        id="lims" 
455        style="display: none"
456        >
457        <m:menuitem 
458          title="Plate geometries" 
459          onclick="<%="Menu.openUrl('"+root+"lims/geometries/index.jsp?ID="+ID+"')"%>" 
460          tooltip="<%=hasPlateGeometries ? "Manage plate geometries" : "You do not have permission to manage plate geometries"%>" 
461          enabled="<%=hasPlateGeometries%>"
462        />
463        <m:menuitem 
464          title="Plate types" 
465          onclick="<%="Menu.openUrl('"+root+"lims/platetypes/index.jsp?ID="+ID+"')"%>" 
466          tooltip="<%=hasPlateTypes ? "Manage plate types" : "You do not have permission to manage plate types"%>" 
467          enabled="<%=hasPlateTypes%>"
468        />
469        <m:menuitem 
470          title="Plates" 
471          onclick="<%="Menu.openUrl('"+root+"lims/plates/index.jsp?ID="+ID+"')"%>" 
472          tooltip="<%=hasPlates ? "Manage plates" : "You do not have permission to manage plates"%>" 
473          enabled="<%=hasPlates%>"
474        />
475        <m:menuitem 
476          title="Plate mappings" 
477          onclick="<%="Menu.openUrl('"+root+"lims/platemappings/index.jsp?ID="+ID+"')"%>" 
478          tooltip="<%=hasPlateTypes ? "Manage plate mappings" : "You do not have permission to manage plate mappings"%>" 
479          enabled="<%=hasPlateTypes%>"
480        />
481        <m:menuseparator />
482        <m:menuitem 
483          title="Array designs" 
484          onclick="<%="Menu.openUrl('"+root+"lims/arraydesigns/index.jsp?ID="+ID+"')"%>" 
485          tooltip="<%=hasArrayDesigns ? "Manage array designs" : "You do not have permission to manage array designs"%>" 
486          enabled="<%=hasArrayDesigns%>"
487        />
488        <m:menuitem 
489          title="Array batches" 
490          onclick="<%="Menu.openUrl('"+root+"lims/arraybatches/index.jsp?ID="+ID+"')"%>" 
491          tooltip="<%=hasArrayBatches ? "Manage array batches" : "You do not have permission to manage array batches"%>" 
492          enabled="<%=hasArrayBatches%>"
493        />
494        <m:menuitem 
495          title="Array slides" 
496          onclick="<%="Menu.openUrl('"+root+"lims/arrayslides/index.jsp?ID="+ID+"')"%>" 
497          tooltip="<%=hasArraySlides ? "Manage array slides" : "You do not have permission to manage array slides"%>" 
498          enabled="<%=hasArraySlides%>"
499        />
500      </m:menu>
501      <%
502    }
503    %>
504    <%
505    // Administrate -> Types menu
506    final boolean hasQuotaTypes = sc.hasPermission(Permission.READ, Item.QUOTATYPE);
507    final boolean hasProtocolTypes = sc.hasPermission(Permission.READ, Item.PROTOCOLTYPE);
508    final boolean hasFileTypes = sc.hasPermission(Permission.READ, Item.FILETYPE);
509    final boolean hasMimeTypes = sc.hasPermission(Permission.READ, Item.MIMETYPE);
510    final boolean hasHardwareTypes = sc.hasPermission(Permission.READ, Item.HARDWARETYPE);
511    final boolean hasSoftwareTypes = sc.hasPermission(Permission.READ, Item.SOFTWARETYPE);
512    final boolean hasAnnotationTypeCategories = !sc.hasPermission(Permission.DENIED, Item.ANNOTATIONTYPECATEGORY);   
513    final boolean hasAnnotationTypes = !sc.hasPermission(Permission.DENIED, Item.ANNOTATIONTYPE);
514    final boolean hasReporterTypes = !sc.hasPermission(Permission.DENIED, Item.REPORTERTYPE);
515    final boolean hasExtraValueTypes = !sc.hasPermission(Permission.DENIED, Item.EXTRAVALUETYPE);
516    final boolean hasTypes = hasFileTypes || hasProtocolTypes || hasMimeTypes || hasQuotaTypes || 
517      hasSoftwareTypes || hasHardwareTypes || hasAnnotationTypeCategories || hasAnnotationTypes || 
518      hasReporterTypes || hasExtraValueTypes;
519    if (hasTypes)
520    {
521      %>
522      <m:menu 
523        id="types" 
524        style="display: none"
525        >
526        <m:menuitem 
527          title="Quota types" 
528          onclick="<%="Menu.openUrl('"+root+"admin/quotatypes/index.jsp?ID="+ID+"')"%>" 
529          tooltip="<%=hasQuotaTypes ? "Administrate quota types" : "You do not have permission to administrate quota types"%>" 
530          enabled="<%=hasQuotaTypes%>"
531        />
532        <m:menuitem 
533          title="Protocol types" 
534          onclick="<%="Menu.openUrl('"+root+"admin/protocoltypes/index.jsp?ID="+ID+"')"%>" 
535          tooltip="<%=hasProtocolTypes ? "Administrate protocol types" : "You do not have permission to administrate protocol types"%>" 
536          enabled="<%=hasProtocolTypes%>"
537        />
538        <m:menuitem 
539          title="File types" 
540          onclick="<%="Menu.openUrl('"+root+"admin/filetypes/index.jsp?ID="+ID+"')"%>" 
541          tooltip="<%=hasFileTypes ? "Administrate file types" : "You do not have permission to administrate file types"%>" 
542          enabled="<%=hasFileTypes%>"
543        />
544        <m:menuitem 
545          title="MIME types" 
546          onclick="<%="Menu.openUrl('"+root+"admin/mimetypes/index.jsp?ID="+ID+"')"%>" 
547          tooltip="<%=hasMimeTypes ? "Administrate MIME types" : "You do not have permission to administrate mime types"%>" 
548          enabled="<%=hasMimeTypes%>"
549        />
550        <m:menuitem 
551          title="Software types" 
552          onclick="<%="Menu.openUrl('"+root+"admin/softwaretypes/index.jsp?ID="+ID+"')"%>" 
553          tooltip="<%=hasSoftwareTypes ? "Administrate software types" : "You do not have permission to administrate software types"%>" 
554          enabled="<%=hasSoftwareTypes%>"
555        />
556        <m:menuitem 
557          title="Hardware types" 
558          onclick="<%="Menu.openUrl('"+root+"admin/hardwaretypes/index.jsp?ID="+ID+"')"%>" 
559          tooltip="<%=hasHardwareTypes ? "Administrate hardware types" : "You do not have permission to administrate hardware types"%>" 
560          enabled="<%=hasHardwareTypes%>"
561        />
562        <m:menuitem 
563          title="Annotation type categories" 
564          onclick="<%="Menu.openUrl('"+root+"admin/annotationtypecategories/index.jsp?ID="+ID+"')"%>" 
565          tooltip="<%=hasAnnotationTypeCategories ? "Administrate annotation type categories" : "You do not have permission to administrate annotation types categories"%>" 
566          enabled="<%=hasAnnotationTypeCategories%>"
567        />
568        <m:menuitem 
569          title="Annotation types" 
570          onclick="<%="Menu.openUrl('"+root+"admin/annotationtypes/index.jsp?ID="+ID+"')"%>" 
571          tooltip="<%=hasAnnotationTypes ? "Administrate annotation types" : "You do not have permission to administrate annotation types"%>" 
572          enabled="<%=hasAnnotationTypes%>"
573        />
574        <m:menuitem 
575          title="Reporter types" 
576          onclick="<%="Menu.openUrl('"+root+"admin/reportertypes/index.jsp?ID="+ID+"')"%>" 
577          tooltip="<%=hasReporterTypes ? "Administrate reporter types" : "You do not have permission to administrate reporter types"%>" 
578          enabled="<%=hasReporterTypes%>"
579        />
580        <m:menuitem 
581          title="Extra value types" 
582          onclick="<%="Menu.openUrl('"+root+"admin/extravaluetypes/index.jsp?ID="+ID+"')"%>" 
583          tooltip="<%=hasReporterTypes ? "Administrate extra value types" : "You do not have permission to administrate extra value types"%>" 
584          enabled="<%=hasExtraValueTypes%>"
585        />
586      </m:menu>
587      <%
588    }
589    %>
590   
591    <%
592    // Plugins menu
593    final boolean hasPluginTypes = !sc.hasPermission(Permission.DENIED, Item.PLUGINTYPE);
594    final boolean hasPluginDefinitions = !sc.hasPermission(Permission.DENIED, Item.PLUGINDEFINITION);
595    final boolean hasPluginConfigurations = !sc.hasPermission(Permission.DENIED, Item.PLUGINCONFIGURATION);
596    final boolean hasJobAgents = sc.hasPermission(Permission.READ, Item.JOBAGENT);
597    final boolean hasPlugins = hasPluginTypes || hasPluginDefinitions || 
598      hasPluginConfigurations || hasJobAgents;
599   
600    if (hasPlugins)
601    {
602      %>
603      <m:menu 
604        id="plugins" 
605        style="display: none"
606        >
607        <m:menuitem 
608          title="Types" 
609          onclick="<%="Menu.openUrl('"+root+"admin/plugintypes/index.jsp?ID="+ID+"')"%>" 
610          tooltip="<%=hasPluginDefinitions ? "Administrate plugin types" : "You do not have permission to administrate plugin types"%>"
611          enabled="<%=hasPluginTypes%>"
612        />
613        <m:menuitem 
614          title="Definitions" 
615          onclick="<%="Menu.openUrl('"+root+"admin/plugindefinitions/index.jsp?ID="+ID+"')"%>" 
616          tooltip="<%=hasPluginDefinitions ? "Administrate plugin definitions" : "You do not have permission to administrate plugin definitions"%>"
617          enabled="<%=hasPluginDefinitions%>"
618        />
619        <m:menuitem 
620          title="Configurations" 
621          onclick="<%="Menu.openUrl('"+root+"admin/pluginconfigurations/index.jsp?ID="+ID+"')"%>" 
622          tooltip="<%=hasPluginConfigurations ? "Administrate plugin configurations" : "You do not have permission to administrate plugin configurations"%>"
623          enabled="<%=hasPluginConfigurations%>"
624        />
625        <m:menuseparator />
626        <m:menuitem 
627          title="Job agents" 
628          onclick="<%="Menu.openUrl('"+root+"admin/jobagents/index.jsp?ID="+ID+"')"%>" 
629          tooltip="<%=hasJobAgents ? "Administrate job agents" : "You do not have permission to administrate job agents"%>"
630          enabled="<%=hasJobAgents%>"
631        />
632      </m:menu>
633      <%
634    }
635    %>
636 
637    <%
638    // Administrate menu
639    final boolean hasUsers = sc.hasPermission(Permission.READ, Item.USER);
640    final boolean hasGroups = sc.hasPermission(Permission.READ, Item.GROUP);
641    final boolean hasRoles = sc.hasPermission(Permission.READ, Item.ROLE);
642    final boolean hasQuota = sc.hasPermission(Permission.READ, Item.QUOTA);
643    final boolean hasSoftware = !sc.hasPermission(Permission.DENIED, Item.SOFTWARE);
644    final boolean hasHardware = !sc.hasPermission(Permission.DENIED, Item.HARDWARE);
645    final boolean hasProtocols = !sc.hasPermission(Permission.DENIED, Item.PROTOCOL);
646    final boolean hasClients = sc.hasPermission(Permission.READ, Item.CLIENT);
647    final boolean hasNews = sc.hasPermission(Permission.READ, Item.NEWS);
648    final boolean hasDiskUsage = sc.hasPermission(Permission.READ, Item.DISKUSAGE);
649    final Client currentClient = Client.getById(dc, sc.getClientId());
650    final boolean hasServer = currentClient.hasPermission(Permission.WRITE);
651
652    final boolean hasAdministrate = 
653      hasUsers || hasGroups || hasRoles || hasQuota || hasTypes || hasPlugins ||
654      hasSoftware || hasHardware || hasProtocols || hasClients || hasNews ||
655      hasDiskUsage || hasServer;
656
657    if (hasAdministrate)
658    {
659      %>
660      <m:menu 
661        id="administrate" 
662        style="display: none"
663        >
664        <m:menuitem 
665          title="Users" 
666          onclick="<%="Menu.openUrl('"+root+"admin/users/index.jsp?ID="+ID+"')"%>" 
667          tooltip="<%=hasUsers ? "Administrate users" : "You do not have permission to administrate users"%>"
668          enabled="<%=hasUsers%>"
669        />
670        <m:menuitem 
671          title="Groups" 
672          onclick="<%="Menu.openUrl('"+root+"admin/groups/index.jsp?ID="+ID+"')"%>" 
673          tooltip="<%=hasGroups ? "Administrate groups" : "You do not have permission to administrate groups"%>" 
674          enabled="<%=hasGroups%>"
675        />
676        <m:menuitem 
677          title="Roles" 
678          onclick="<%="Menu.openUrl('"+root+"admin/roles/index.jsp?ID="+ID+"')"%>" 
679          tooltip="<%=hasRoles ? "Administrate roles" : "You do not have permission to administrate roles"%>" 
680          enabled="<%=hasRoles%>"
681        />
682        <m:menuseparator />
683        <m:submenu 
684          subid="plugins" 
685          title="Plugins"
686          tooltip="Administrate plugin definitions and configurations"
687          enabled="<%=hasPlugins%>"
688        />
689        <m:menuseparator />
690        <m:menuitem 
691          title="Quota" 
692          onclick="<%="Menu.openUrl('"+root+"admin/quota/index.jsp?ID="+ID+"')"%>" 
693          tooltip="<%=hasQuota ? "Administrate quota" : "You do not have permission to administrate quota"%>" 
694          enabled="<%=hasQuota%>"
695        />
696        <m:menuitem 
697          title="Software" 
698          onclick="<%="Menu.openUrl('"+root+"admin/software/index.jsp?ID="+ID+"')"%>" 
699          tooltip="<%=hasSoftware ? "Administrate software" : "You do not have permission to administrate software"%>" 
700          enabled="<%=hasSoftware%>"
701        />
702        <m:menuitem 
703          title="Hardware" 
704          onclick="<%="Menu.openUrl('"+root+"admin/hardware/index.jsp?ID="+ID+"')"%>" 
705          tooltip="<%=hasHardware ? "Administrate hardware" : "You do not have permission to administrate hardware"%>" 
706          enabled="<%=hasHardware%>"
707        />
708        <m:menuitem 
709          title="Protocols" 
710          onclick="<%="Menu.openUrl('"+root+"admin/protocols/index.jsp?ID="+ID+"')"%>" 
711          tooltip="<%=hasProtocols ? "Administrate protocols" : "You do not have permission to administrate protocols"%>" 
712          enabled="<%=hasProtocols%>"
713        />
714        <m:menuitem 
715          title="Clients" 
716          onclick="<%="Menu.openUrl('"+root+"admin/clients/index.jsp?ID="+ID+"')"%>" 
717          tooltip="<%=hasClients ? "Administrate client applications" : "You do not have permission to administrate client applications"%>" 
718          enabled="<%=hasClients%>"
719        />
720        <m:menuitem 
721          title="News" 
722          onclick="<%="Menu.openUrl('"+root+"admin/news/index.jsp?ID="+ID+"')"%>" 
723          tooltip="<%=hasNews ? "Administrate news" : "You do not have permission to administrate news"%>" 
724          enabled="<%=hasNews%>"
725        />
726        <m:menuseparator />
727        <m:submenu 
728          subid="types" 
729          title="Types"
730          tooltip="Administrate quota, file, hardware and software types"
731          enabled="<%=hasTypes%>"
732        />
733        <m:menuseparator />
734        <m:menuitem 
735          title="Disk usage" 
736          onclick="<%="Menu.openUrl('"+root+"admin/diskusage/index.jsp?ID="+ID+"')"%>" 
737          tooltip="<%=hasDiskUsage ? "Check disk usage" : "You do not have permission to check disk usage"%>" 
738          enabled="<%=hasDiskUsage%>"
739        />
740        <m:menuitem 
741          title="Server settings&hellip;"
742          onclick="<%="Main.openPopup('"+root+"admin/server/configure.jsp?ID="+ID+"', 'ServerSettings', 500, 400);"%>"
743          tooltip="<%=hasServer ? "Configure the server" : "You do not have permission to configure the server"%>"
744          enabled="<%=hasServer%>"
745        />
746        <m:menuitem
747          title="Restart BASE&hellip;"
748          onclick="<%="Main.openPopup('"+root+"admin/server/restart.jsp?ID="+ID+"', 'RestartServer', 360, 200);"%>"
749          tooltip="<%=hasServer ? "Restart the server" : "You do not have permission to restart the server"%>"
750          enabled="<%=hasServer%>"
751        />
752      </m:menu>
753      <%
754    }
755    %>
756    <%
757    // Help menu
758    final String helplink = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.help"));
759    final String faqlink = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.faq"));
760    final String reportbuglink = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.reportbug"));
761    %>
762    <m:menu id="help" style="display: none">
763      <m:menuitem
764        visible="<%=HTML.isValidUrl(helplink)%>"
765        title="Help&hellip"
766        onclick="<%="window.open('"+helplink+"','Help')"%>"
767      />
768      <m:menuitem
769        visible="<%=HTML.isValidUrl(faqlink)%>"
770        title="FAQ&hellip"
771        onclick="<%="window.open('"+faqlink+"','FAQ')"%>"
772      />
773      <m:menuseparator />
774
775      <m:menuitem
776        title="About&hellip;"
777        onclick="<%="Main.openPopup('"+root+"info/about.jsp?ID="+ID+"&page=about', 'About', 500, 350)"%>"
778      />
779
780      <m:menuitem
781        title="License&hellip;"
782        onclick="<%="Main.openPopup('"+root+"info/about.jsp?ID="+ID+"&page=license', 'About', 500, 350)"%>"
783
784      />
785      <m:menuitem
786        visible="<%=HTML.isValidUrl(reportbuglink)%>"
787        title="Report a bug&hellip"
788        onclick="<%="window.open('"+reportbuglink+"','Reportbug')"%>"
789      />
790      <m:menuseparator />
791      <m:menuitem
792        title="Base project site" onclick="<%="Menu.openUrl('http://base.thep.lu.se', 'basesite')"%>"
793      />
794    </m:menu>
795   
796    <%
797    //Switch user/logout menu
798    final boolean hasImpersonate = 
799      !sc.isImpersonated() && sc.hasSystemPermission(Permission.ACT_AS_ANOTHER_USER);
800    %>
801    <m:menu
802      id="switchuser"
803      style="display: none;"
804      >
805      <m:menuitem 
806        title="Switch user&hellip;" 
807        onclick="<%="Main.openPopup('"+root+"switch.jsp?ID="+ID+"', 'Switch', 360, 200);"%>"
808        tooltip="Login as another user" 
809      />
810      <m:menuitem 
811        title="Impersonate&hellip;" 
812        onclick="<%="Main.openPopup('"+root+"impersonate.jsp?ID="+ID+"', 'Impersonate', 480, 240);"%>"
813        tooltip="Login as another user without knowing the password" 
814        visible="<%=hasImpersonate%>"
815      />
816      <m:menuitem 
817        title="Logout&hellip;" 
818        onclick="<%="Main.openPopup('"+root+"logout.jsp?ID="+ID+"', 'Logout', 360, 200);"%>"
819        tooltip="Exit from BASE" 
820      />
821    </m:menu>
822    <%
823    // Main menu
824    %>
825    <m:menu
826      type="horizontal"
827      clazz="menu_horizontal"
828      id="menubar"
829      style="top: 10px; left: 8px; width: 98%"
830      open="click"
831      filltext="<%=fillText.toString()%>"
832      >
833
834      <m:submenu
835        subid="file"
836        title="File"
837      />
838      <m:submenu
839        subid="view"
840        title="View"
841      />
842      <m:submenu
843        subid="lims"
844        title="Array LIMS"
845      />
846      <m:submenu
847        subid="administrate"
848        title="Administrate"
849        visible="<%=hasAdministrate%>"
850      />
851      <m:submenu
852        subid="help"
853        title="Help"
854      />
855    </m:menu>
856    <br><br>
857    <%
858  }
859  finally
860  {
861    if (dc != null) dc.close();
862  }
863
864}
865%>
866
867
868
Note: See TracBrowser for help on using the repository browser.