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

Last change on this file since 3492 was 3492, checked in by Nicklas Nordborg, 15 years ago

Fixes #578

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