source: trunk/www/admin/extensions/wizard.jsp @ 5949

Last change on this file since 5949 was 5949, checked in by Nicklas Nordborg, 10 years ago

References #1655: GUI improvements

  • Use correct width/height (1050/700) of popups for selecting items from a list.
  • Got rid of the <tbl:columns> tag.
File size: 6.6 KB
Line 
1<%-- $Id:manual_scan.jsp 4187 2008-03-20 11:15:25Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2005 Nicklas Nordborg
4  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg
5  Copyright (C) 2007 Martin Svensson
6
7  This file is part of BASE - BioArray Software Environment.
8  Available at http://base.thep.lu.se/
9
10  BASE is free software; you can redistribute it and/or
11  modify it under the terms of the GNU General Public License
12  as published by the Free Software Foundation; either version 3
13  of the License, or (at your option) any later version.
14
15  BASE is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU General Public License for more details.
19
20  You should have received a copy of the GNU General Public License
21  along with BASE. If not, see <http://www.gnu.org/licenses/>.
22  ------------------------------------------------------------------
23
24  @author Nicklas
25  @version 2.0
26--%>
27<%@ page pageEncoding="UTF-8" session="false"
28  import="net.sf.basedb.core.Application"
29  import="net.sf.basedb.core.SessionControl"
30  import="net.sf.basedb.core.DbControl"
31  import="net.sf.basedb.core.Item"
32  import="net.sf.basedb.core.Permission"
33  import="net.sf.basedb.core.plugin.About"
34  import="net.sf.basedb.clients.web.Base"
35  import="net.sf.basedb.clients.web.WebException"
36  import="net.sf.basedb.util.Values"
37  import="net.sf.basedb.clients.web.util.HTML"
38  import="net.sf.basedb.util.extensions.ExtensionPoint"
39  import="net.sf.basedb.util.extensions.Extension"
40  import="net.sf.basedb.util.extensions.manager.ExtensionsManager"
41  import="net.sf.basedb.util.extensions.manager.ExtensionsFile"
42  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
43  import="java.util.List"
44%>
45<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
46<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
47<%
48final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
49final String ID = sc.getId();
50final float scale = Base.getScale(sc);
51DbControl dc = null;
52try
53{
54  dc = sc.newDbControl();
55  ExtensionsControl ec = ExtensionsControl.get(dc);
56  ec.checkPermission(Permission.WRITE);
57  ec.scanForChanges();
58  List<ExtensionsFile> xtFiles = ec.getFiles();
59  %>
60  <base:page type="popup" title="Extensions and plug-ins installation wizard">
61  <base:head scripts="table.js" styles="table.css">
62    <script language="JavaScript">
63   
64    // Submit the form
65    function startManualScan()
66    {
67      var frm = document.forms['scan'];
68      frm.submit();
69    }
70   
71    function installOnClick(name)
72    {
73      var frm = document.forms['scan'];
74      if (frm[name+'.install'].checked)
75      {
76        if (frm[name+'.uninstall']) frm[name+'.uninstall'].checked = false;
77      }
78    }
79
80    function uninstallOnClick(name)
81    {
82      var frm = document.forms['scan'];
83      if (frm[name+'.uninstall'].checked)
84      {
85        if (frm[name+'.install']) frm[name+'.install'].checked = false;
86      }
87    }
88    </script>
89  </base:head>
90  <base:body>
91  <h1>Extensions and plug-ins installation wizard <base:help helpid="extensions.install-wizard" /></h1>
92 
93  <form action="index.jsp?ID=<%=ID%>" method="post" name="scan" onsubmit="return false;">
94  <input type=hidden name="cmd" value="DoManualScan">
95 
96  <div class="content bottomborder">
97  <tbl:table id="extensions" subclass="fulltable">
98    <tbl:columndef id="file" title="File" />
99    <tbl:columndef id="status" title="Status" />
100    <tbl:columndef id="install" title="Install" />
101    <tbl:columndef id="uninstall" title="Uninstall" />
102    <tbl:columndef id="about" title="About" />
103 
104    <tbl:data style="top: 0px; margin-top: 0px;">
105      <tbl:headers>
106        <tbl:headerrow>
107          <tbl:columnheaders />
108        </tbl:headerrow>
109      </tbl:headers>
110      <tbl:rows>
111      <%
112      for (ExtensionsFile xtFile : xtFiles)
113      {
114        if (xtFile.getFile() == null) continue; // We skip internal extensions/plug-ins files
115       
116        About about = xtFile.getAbout(); 
117        Throwable error = null;
118        String name = xtFile.getName();
119        String status = "";
120        String icon = "";
121        boolean allowInstall = false;
122        boolean allowUninstall = false;
123        boolean checkInstall = false;
124        boolean checkUninstall = false;
125        if (!xtFile.exists())
126        {
127          status = "Deleted";
128          allowUninstall = true;
129          checkUninstall = true;
130        }
131        else if (!xtFile.isValid())
132        {
133          status = "Invalid";
134          error = xtFile.getValidationError();
135          if (xtFile.isInstalled())
136          {
137            allowUninstall = true;
138            checkUninstall = true;
139          }
140        }
141        else if (xtFile.isNew())
142        {
143          status = "New";
144          allowInstall = true;
145          checkInstall = true;
146        }
147        else if (xtFile.checkModified())
148        {
149          status = "Modified";
150          allowInstall = true;
151          allowUninstall = true;
152          checkInstall = true;
153        }
154        else
155        {
156          status = "Already installed";
157          allowInstall = true;
158          allowUninstall = true;
159        }
160        %>
161        <tbl:row>
162          <tbl:cell column="file"><%=name%></tbl:cell>
163          <tbl:cell column="status"><%=status%></tbl:cell>
164          <tbl:cell column="install"  style="text-align: center;">
165            <%
166            if (allowInstall)
167            {
168              %>
169              <input type="checkbox" name="<%=name%>.install" value="1" <%=checkInstall ? "checked" : "" %>
170                onclick="installOnClick('<%=name%>')">
171              <%
172            }
173            %>
174          </tbl:cell>
175          <tbl:cell column="uninstall" style="text-align: center;">
176            <%
177            if (allowUninstall)
178            {
179              %>
180              <input type="checkbox" name="<%=name%>.uninstall" value="1" <%=checkUninstall ? "checked" : "" %>
181                onclick="uninstallOnClick('<%=name%>')">
182              <%
183            }
184            %>
185          </tbl:cell>
186          <tbl:cell column="about">
187            <%
188            if (about != null)
189            {
190              %>
191              <b><%=about.getName()%></b> <%=about.getVersion() == null ? "" : "(v" + about.getVersion() + ")"%><br>
192              <%=HTML.encodeTags(about.getDescription())%><br>
193              <%=HTML.niceFormat(about.getUrl())%>
194              <%
195            }
196            if (error != null)
197            {
198              %>
199              <div class="messagecontainer error">
200              <%=error.getClass().getSimpleName()%>: <%=HTML.encodeTags(error.getMessage())%>
201              </div>
202              <%
203            }
204            %>
205          </tbl:cell>
206         
207        </tbl:row>
208        <%
209      }
210      %>
211      </tbl:rows>
212    </tbl:data>
213  </tbl:table>
214  </div>
215  </form>
216
217  <base:buttongroup subclass="dialogbuttons">
218    <base:button onclick="startManualScan();" title="Next" />
219    <base:button onclick="window.close();" title="Cancel" />
220  </base:buttongroup>
221 
222  </base:body>
223  </base:page>
224  <%
225}
226finally
227{
228  if (dc != null) dc.close();
229}
230%>
Note: See TracBrowser for help on using the repository browser.