Changeset 5918
- Timestamp:
- Dec 21, 2011, 11:43:35 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 50 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/clients/web/net/sf/basedb/clients/web/extensions/toolbar/ToolbarButtonRenderer.java
r4871 r5918 119 119 if (displayIcon && btn.getIcon() != null) 120 120 { 121 sb.append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr>");121 sb.append("<table><tr>"); 122 122 sb.append("<td><img src=\"").append(btn.getIcon()).append("\""); 123 123 if (btn.getId() != null) sb.append(" id=\"").append(btn.getId()).append(".icon").append("\""); 124 sb.append(" border=\"0\"></td>");124 sb.append("></td>"); 125 125 sb.append("<td>"); 126 126 } -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/Body.java
r5384 r5918 316 316 throw new JspTagException(ex); 317 317 } 318 if ((page.getTitle() != null) && !page.getTitle().equals("")) sb.append("\t<h1>").append(page.getTitle()).append("</h1>\n"); 318 //if ((page.getTitle() != null) && !page.getTitle().equals("")) sb.append("\t<h1>").append(page.getTitle()).append("</h1>\n"); 319 //sb.append("<div class=\"content\">\n"); 319 320 break; 320 321 } … … 352 353 sb.append("});"); 353 354 sb.append("</script>\n"); 355 if (page.getTypeCode() == Page.PAGE_TYPE_DEFAULT) 356 { 357 //sb.append("</div>\n"); 358 } 354 359 sb.append("</body>\n"); 355 360 try -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/Icon.java
r5911 r5918 165 165 private boolean visible = true; 166 166 167 /** 168 If the icon should be enabled or not (if an onclick has been set). 169 */ 170 private boolean enabled = true; 171 167 172 public Icon() 168 173 { … … 189 194 { 190 195 return visible; 196 } 197 198 public void setEnabled(boolean enabled) 199 { 200 this.enabled = enabled; 201 } 202 public boolean isEnabled() 203 { 204 return enabled; 191 205 } 192 206 … … 224 238 StringBuilder sb = new StringBuilder(); 225 239 sb.append("<span "); 226 addIdAndStyles(sb, getOnclick() != null ? "link" : "" );240 addIdAndStyles(sb, getOnclick() != null ? "link" : "", isEnabled() ? "" : "disabled"); 227 241 if (getTooltip() != null) sb.append(" title=\"").append(getTooltip()).append("\""); 228 if (getOnclick() != null ) sb.append(" onclick=\"").append(getOnclick()).append("\"");242 if (getOnclick() != null && isEnabled()) sb.append(" onclick=\"").append(getOnclick()).append("\""); 229 243 sb.append(">"); 230 244 sb.append("<img src=\"").append(theImage).append("\">"); -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Menu.java
r4889 r5918 25 25 import javax.servlet.jsp.JspException; 26 26 import javax.servlet.jsp.JspTagException; 27 import javax.servlet.jsp.tagext.TagSupport;28 27 import javax.servlet.http.HttpServletRequest; 28 29 import net.sf.basedb.clients.web.taglib.StylableTag; 29 30 30 31 … … 44 45 type=... 45 46 clazz=... 47 subclass=... 46 48 style=... 47 49 open=... … … 132 134 @SuppressWarnings("serial") 133 135 public class Menu 134 extends TagSupport136 extends StylableTag 135 137 { 136 138 … … 140 142 private static String ROOT = null; 141 143 142 /** 143 Optional <code>class</code> attribute 144 */ 145 private String clazz = "menu_vertical"; 146 147 /** 148 Optional <code>style</code> attribute 149 */ 150 private String style = null; 151 144 152 145 /** 153 146 If it is a vertical or horizontal menu. … … 165 158 private String fillText = null; 166 159 160 public Menu() 161 { 162 super("menu"); 163 } 167 164 168 165 /* 169 166 Taglib initialization methods 170 167 */ 171 public void setClazz(String clazz)172 {173 this.clazz = clazz;174 }175 public String getClazz()176 {177 return clazz;178 }179 180 public void setStyle(String style)181 {182 this.style = style;183 }184 public String getStyle()185 {186 return style;187 }188 189 168 public void setType(String type) 190 169 { … … 244 223 StringBuilder sb = new StringBuilder(); 245 224 sb.append("<div"); 246 if (getId() != null) sb.append(" id=\"").append(getId()).append("\""); 247 if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\""); 248 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 225 addIdAndStyles(sb, isVertical() ? "vertical" : "horizontal"); 249 226 sb.append("\">\n"); 250 sb.append("<table border=0 cellspacing=0 cellpadding=0").append(isVertical() ? "" : " width=\"100%\"").append(">\n");227 sb.append("<table>\n"); 251 228 if (isVertical()) 252 229 { -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Menuitem.java
r5808 r5918 25 25 import javax.servlet.jsp.JspException; 26 26 import javax.servlet.jsp.JspTagException; 27 import javax.servlet.jsp.tagext.TagSupport; 27 28 import net.sf.basedb.clients.web.taglib.StylableTag; 28 29 29 30 /** … … 35 36 <pre> 36 37 <m:menuitem 37 id=.... 38 id=... 39 clazz=... 40 subclass=... 38 41 style=... 39 42 title=... … … 131 134 */ 132 135 public class Menuitem 133 extends TagSupport136 extends StylableTag 134 137 { 135 138 /** … … 144 147 145 148 /** 146 Optional <code>style</code> attribute147 */148 private String style = null;149 150 /**151 149 The title of the menu item. 152 150 */ … … 177 175 */ 178 176 private String icon = null; 179 180 181 private boolean iconAbsolute = false; 177 178 public Menuitem() 179 { 180 super("menuitem"); 181 } 182 182 183 183 /* 184 184 Taglib initialization methods 185 185 */ 186 public void setStyle(String style)187 {188 this.style = style;189 }190 public String getStyle()191 {192 return style;193 }194 195 186 public void setTitle(String title) 196 187 { … … 247 238 } 248 239 249 public void setIconabsolute(boolean absolute)250 {251 this.iconAbsolute = absolute;252 }253 254 public boolean isIconabsolute()255 {256 return iconAbsolute;257 }258 240 259 241 public int doStartTag() … … 266 248 267 249 StringBuilder sb = new StringBuilder(); 268 sb.append("<div class=\"menuitem "+(isEnabled() ? "enabled" : " disabled")+"\""); 269 if (getId() != null) sb.append(" id=\"").append(getId()).append("\""); 270 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 250 sb.append("<div"); 251 addIdAndStyles(sb, isEnabled() ? "enabled" : " disabled"); 271 252 if (isEnabled()) 272 253 { … … 279 260 { 280 261 String theIcon = getIcon() == null ? "padding.gif" : getIcon(); 281 if (! isIconabsolute())262 if (!theIcon.startsWith("/")) 282 263 { 283 264 // The icon is in the 'images' directory 284 265 theIcon = menu.getRoot() + "images/" + theIcon; 285 266 } 286 sb.append("<img src=\"").append(theIcon).append("\" alt=\"\" style=\"padding-left: 4px; padding-right: 4px;\">");267 sb.append("<img src=\"").append(theIcon).append("\" alt=\"\" class=\"menuicon\">"); 287 268 } 288 String padding = menu.isVertical() ? " " : ""; 289 if (getTitle() != null) sb.append(getTitle()).append(padding).append(padding).append(padding); 269 if (getTitle() != null) sb.append(getTitle()); 290 270 sb.append("</div>"); 291 271 try -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Menuseparator.java
r4889 r5918 25 25 import javax.servlet.jsp.JspException; 26 26 import javax.servlet.jsp.JspTagException; 27 import javax.servlet.jsp.tagext.TagSupport; 27 28 import net.sf.basedb.clients.web.taglib.StylableTag; 28 29 29 30 /** … … 35 36 <pre> 36 37 <m:menuseparator 37 id=.... 38 id=... 39 clazz=... 40 subclass=... 38 41 style=... 39 42 visible=... … … 86 89 */ 87 90 public class Menuseparator 88 extends TagSupport91 extends StylableTag 89 92 { 90 93 … … 109 112 Taglib initialization methods 110 113 */ 111 public void setStyle(String style)114 public Menuseparator() 112 115 { 113 this.style = style;116 super("menuseparator"); 114 117 } 115 public String getStyle() 116 { 117 return style; 118 } 119 118 120 119 public void setVisible(boolean visible) 121 120 { … … 136 135 137 136 StringBuilder sb = new StringBuilder(); 138 sb.append("<div class=\"menuseparator\""); 139 if (getId() != null) sb.append(" id=\"").append(getId()).append("\""); 140 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 141 sb.append("><img width=1 height=1></div>"); // <img> is a fix for Internet explorer 137 sb.append("<div"); 138 addIdAndStyles(sb); 139 sb.append("></div>"); 142 140 try 143 141 { -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Submenu.java
r5808 r5918 25 25 import javax.servlet.jsp.JspException; 26 26 import javax.servlet.jsp.JspTagException; 27 import javax.servlet.jsp.tagext.TagSupport; 27 28 import net.sf.basedb.clients.web.taglib.StylableTag; 28 29 29 30 /** … … 35 36 <pre> 36 37 <m:submenu 37 id=.... 38 id=... 39 clazz=... 40 subclass=... 38 41 style=... 39 42 title=... … … 130 133 */ 131 134 public class Submenu 132 extends TagSupport135 extends StylableTag 133 136 { 134 137 /** … … 143 146 144 147 /** 145 Optional <code>style</code> attribute146 */147 private String style = null;148 149 /**150 148 The title of the menu item. 151 149 */ … … 177 175 private String icon = null; 178 176 179 private boolean iconAbsolute = false; 180 181 177 public Submenu() 178 { 179 super("menuitem"); 180 } 181 182 182 /* 183 183 Taglib initialization methods 184 184 */ 185 public void setStyle(String style)186 {187 this.style = style;188 }189 public String getStyle()190 {191 return style;192 }193 194 185 public void setTitle(String title) 195 186 { … … 244 235 { 245 236 return icon; 246 }247 public void setIconabsolute(boolean absolute)248 {249 this.iconAbsolute = absolute;250 }251 252 public boolean isIconabsolute()253 {254 return iconAbsolute;255 237 } 256 238 … … 264 246 265 247 StringBuilder sb = new StringBuilder(); 266 sb.append("<div class=\"menuitem "+(isEnabled() ? "enabled" : "disabled")+"\""); 267 if (getId() != null) sb.append(" id=\"").append(getId()).append("\""); 268 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 248 sb.append("<div"); 249 addIdAndStyles(sb, isEnabled() ? "enabled" : "disabled"); 269 250 if (isEnabled()) 270 251 { … … 283 264 if (menu.isVertical()) 284 265 { 285 sb.append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td>");266 sb.append("<table style=\"width: 100%;\"><tr><td>"); 286 267 String theIcon = getIcon() == null ? "padding.gif" : getIcon(); 287 if (! isIconabsolute())268 if (!theIcon.startsWith("/")) 288 269 { 289 270 // The icon is in the 'images' directory 290 271 theIcon = menu.getRoot() + "images/" + theIcon; 291 272 } 292 sb.append("<img src=\"").append(theIcon).append("\" alt=\"\" style=\"padding-left: 4px; padding-right: 4px;\">"); 293 } 294 String padding = menu.isVertical() ? " " : ""; 295 if (getTitle() != null) sb.append(getTitle()).append(padding).append(padding).append(padding); 273 sb.append("<img src=\"").append(theIcon).append("\" alt=\"\" class=\"menuicon\">"); 274 } 275 if (getTitle() != null) sb.append(getTitle()); 296 276 if (menu.isVertical()) 297 277 { 298 sb.append("</td><td align=\"baseline\">"); 299 sb.append("<img src=\"").append(menu.getRoot()).append("images/submenu.gif\" alt=\">\" align=\"right\" style=\"padding-right: 4px;\">"); 300 sb.append("</td></tr></table>"); 278 sb.append("</td><td class=\"submenuicon\">›</td></tr></table>"); 301 279 } 302 280 sb.append("</div>"); -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/path/Path.java
r4889 r5918 26 26 import javax.servlet.jsp.tagext.TagSupport; 27 27 import javax.servlet.http.HttpServletRequest; 28 29 import net.sf.basedb.clients.web.taglib.StylableTag; 28 30 29 31 /** … … 94 96 */ 95 97 public class Path 96 extends TagSupport98 extends StylableTag 97 99 { 98 100 … … 107 109 private static String ROOT = null; 108 110 109 /** 110 Optional <code>class</code> attribute 111 */ 112 private String clazz = "path"; 113 114 /** 115 Optional <code>style</code> attribute 116 */ 117 private String style = null; 118 111 119 112 /** 120 113 Keeps track of the number of path elements so separators can be added. … … 122 115 private int numElements; 123 116 117 public Path() 118 { 119 super("path"); 120 } 121 124 122 /* 125 123 Taglib initialization methods 126 124 */ 127 public void setClazz(String clazz)128 {129 this.clazz = clazz;130 }131 public String getClazz()132 {133 return clazz;134 }135 136 public void setStyle(String style)137 {138 this.style = style;139 }140 public String getStyle()141 {142 return style;143 }144 125 145 126 String getRoot() … … 148 129 } 149 130 150 private String separator = null;131 private String separator = ""; 151 132 152 133 String getSeparator() … … 155 136 if (separator == null) 156 137 { 157 separator = "<td class=\"separator\"><img src=\""+getRoot()+"images/pathseparator.gif\"></td>";138 //separator = "<img class=\"separator\" src=\""+getRoot()+"images/pathseparator.gif\">"; 158 139 } 159 140 return numElements > 1 ? separator : ""; … … 167 148 168 149 StringBuilder sb = new StringBuilder(); 169 sb.append("<div"); 170 if (getId() != null) sb.append(" id=\"").append(getId()).append("\""); 171 if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\""); 172 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 173 sb.append("\">\n"); 174 sb.append("<table border=\"0\" cellspaing=\"0\" cellpadding=\"0\"><tr>\n"); 150 sb.append("<h1"); 151 addIdAndStyles(sb); 152 sb.append(">"); 175 153 176 154 try … … 189 167 { 190 168 StringBuilder sb = new StringBuilder(); 191 sb.append("</tr></table>"); 192 sb.append("</div>\n"); 169 sb.append("</h1>\n"); 193 170 try 194 171 { -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/path/PathElement.java
r4889 r5918 25 25 import javax.servlet.jsp.JspTagException; 26 26 import javax.servlet.jsp.tagext.TagSupport; 27 28 import net.sf.basedb.clients.web.taglib.StylableTag; 27 29 28 30 /** … … 117 119 */ 118 120 public class PathElement 119 extends TagSupport121 extends StylableTag 120 122 { 121 123 /** … … 129 131 private Path path = null; 130 132 131 /**132 Optional <code>class</code> attribute133 */134 private String clazz = "pathelement";135 136 /**137 Optional <code>style</code> attribute138 */139 private String style = null;140 141 133 /** 142 134 The title of the menu item. … … 157 149 private boolean enabled = true; 158 150 151 public PathElement() 152 { 153 super("pathelement"); 154 } 155 159 156 /* 160 157 Taglib initialization methods 161 158 */ 162 public void setClazz(String clazz)163 {164 this.clazz = clazz;165 }166 public String getClazz()167 {168 return clazz;169 }170 171 public void setStyle(String style)172 {173 this.style = style;174 }175 public String getStyle()176 {177 return style;178 }179 180 159 public void setTitle(String title) 181 160 { … … 244 223 StringBuilder sb = new StringBuilder(); 245 224 sb.append(path.getSeparator()); 246 sb.append("<td "); 247 if (getId() != null) sb.append(" id=\"").append(getId()).append("\""); 248 if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\""); 249 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 225 sb.append("<span"); 226 addIdAndStyles(sb); 250 227 sb.append(">"); 251 228 if (getHref() != null && isEnabled()) … … 259 236 sb.append(getTitle()); 260 237 } 261 sb.append("</ td>");238 sb.append("</span>"); 262 239 try 263 240 { -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Button.java
r5384 r5918 25 25 import net.sf.basedb.clients.web.extensions.toolbar.ButtonAction; 26 26 import net.sf.basedb.clients.web.extensions.toolbar.ToolbarButtonRenderer; 27 import net.sf.basedb.clients.web.taglib.StylableTag; 27 28 28 29 import javax.servlet.http.HttpServletRequest; … … 30 31 import javax.servlet.jsp.JspTagException; 31 32 import javax.servlet.jsp.JspWriter; 32 import javax.servlet.jsp.tagext.TagSupport;33 33 34 34 /** … … 43 43 id=... 44 44 clazz=... 45 subclass=... 45 46 style=... 46 47 image=... 47 imagealign=left|right (no longer supported)48 48 onclick=... 49 49 title=... … … 107 107 </tr> 108 108 <tr> 109 <td>imagealign</td>110 <td>left</td>111 <td>no</td>112 <td>113 If the image should be aligned to the left or right of the text.114 No longer supported.115 </td>116 </tr>117 <tr>118 109 <td>onclick</td> 119 110 <td>-</td> … … 165 156 */ 166 157 public class Button 167 extends TagSupport 168 implements ButtonAction 158 extends StylableTag 169 159 { 170 160 … … 175 165 176 166 /** 177 The parent <tbl:table> tag.178 */179 private Table table;180 181 /**182 167 The parent <tbl:toolbar> tag. 183 168 */ … … 185 170 186 171 /** 187 Optional <code>class</code> attribute188 */189 private String clazz = "button";190 191 /**192 Optional <code>style</code> attribute193 */194 private String style = null;195 196 /**197 172 An optional image to show in the button. 198 173 */ … … 200 175 201 176 /** 202 LEFT or RIGTH;203 */204 private String imageAlign = "left";205 206 /**207 177 A JavaScript statement that is executet when the button is clicked. 208 178 */ … … 229 199 private boolean visible = true; 230 200 201 public Button() 202 { 203 super("button"); 204 } 205 231 206 /* 232 207 Taglib initialization methods 233 208 */ 234 public void setClazz(String clazz)235 {236 this.clazz = clazz;237 }238 public String getClazz()239 {240 return disabled ? clazz + " disabled": clazz;241 }242 243 public void setStyle(String style)244 {245 this.style = style;246 }247 public String getStyle()248 {249 return style;250 }251 252 209 public void setImage(String image) 253 210 { … … 259 216 } 260 217 261 public void setImagealign(String imageAlign)262 {263 this.imageAlign = imageAlign;264 }265 public String getImagealign()266 {267 return imageAlign;268 }269 270 218 public void setOnclick(String onClick) 271 219 { … … 311 259 { 312 260 return visible; 313 }314 315 @Override316 public String getIcon()317 {318 String img = getImage();319 if (!img.startsWith("/"))320 {321 img = ((HttpServletRequest)pageContext.getRequest()).getContextPath()+"/images/" + img;322 }323 return img;324 }325 @Override326 public String getOnClick()327 {328 return getOnclick();329 }330 @Override331 public boolean isEnabled()332 {333 return !isDisabled();334 261 } 335 262 … … 343 270 if (!(getParent() instanceof Toolbar)) throw new JspTagException("Tag <tbl:button> must be inside a <tbl:toolbar> tag"); 344 271 toolbar = (Toolbar)getParent(); 345 table = toolbar.getTable();346 272 boolean displayImage = getImage() != null && toolbar.hasImages(); 347 273 boolean displayText = toolbar.hasText() || !displayImage; 348 274 349 String html = new ToolbarButtonRenderer().getHTML( this, displayText, displayImage);275 String html = new ToolbarButtonRenderer().getHTML(new ButtonActionWrapper(), displayText, displayImage); 350 276 try 351 277 { … … 360 286 } 361 287 288 289 class ButtonActionWrapper 290 implements ButtonAction 291 { 292 293 @Override 294 public String getId() 295 { 296 return Button.this.getId(); 297 } 298 299 @Override 300 public String getClazz() 301 { 302 return Button.this.getFullClass(isDisabled() ? "disabled" : ""); 303 } 304 305 @Override 306 public String getStyle() 307 { 308 return Button.this.getStyle(); 309 } 310 311 @Override 312 public String getTitle() 313 { 314 return Button.this.getTitle(); 315 } 316 317 @Override 318 public String getTooltip() 319 { 320 return Button.this.getTooltip(); 321 } 322 323 @Override 324 public String getIcon() 325 { 326 String img = Button.this.getImage(); 327 if (!img.startsWith("/")) 328 { 329 img = ((HttpServletRequest)pageContext.getRequest()).getContextPath()+"/images/" + img; 330 } 331 return img; 332 } 333 334 @Override 335 public boolean isEnabled() 336 { 337 return !Button.this.isDisabled(); 338 } 339 340 @Override 341 public boolean isVisible() 342 { 343 return Button.this.isVisible(); 344 } 345 346 @Override 347 public String getOnClick() 348 { 349 return Button.this.getOnclick(); 350 } 351 352 } 362 353 363 354 } -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Label.java
r4889 r5918 245 245 if (!(getParent() instanceof Toolbar)) throw new JspTagException("Tag <tbl:label> must be inside a <tbl:toolbar> tag"); 246 246 toolbar = (Toolbar)getParent(); 247 table = toolbar.getTable();248 247 Page page = table != null ? table.getPage() : (Page)findAncestorWithClass(this, Page.class); 249 248 -
trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Toolbar.java
r5689 r5918 25 25 import javax.servlet.jsp.JspException; 26 26 import javax.servlet.jsp.JspTagException; 27 import javax.servlet.jsp.tagext.TagSupport;28 27 29 28 import net.sf.basedb.clients.web.Base; 29 import net.sf.basedb.clients.web.taglib.StylableTag; 30 30 import net.sf.basedb.util.Values; 31 31 import net.sf.basedb.core.SessionControl; 32 32 33 33 /** 34 This tag creates a toolbar in the table. The tag must be located inside 35 a {@link Table <tbl:table>} 34 This tag creates a toolbar. 36 35 tag. 37 36 … … 42 41 id=... 43 42 clazz=... 43 subclass=... 44 44 style=... 45 45 visible=true|false … … 109 109 */ 110 110 public class Toolbar 111 extends TagSupport111 extends StylableTag 112 112 { 113 113 … … 117 117 private static final long serialVersionUID = -8719987407920036604L; 118 118 119 120 /** 121 If the toolbar should be visible or not. 122 */ 123 private boolean visible = true; 124 125 /** 126 If buttons should display images. 127 */ 128 private boolean hasImages = true; 129 130 /** 131 If buttons should display text. 132 */ 133 private boolean hasText = true; 134 119 135 /** 120 136 The parent <tbl:table> tag. 121 137 */ 122 138 private Table table; 123 124 /** 125 Optional <code>class</code> attribute 126 */ 127 private String clazz = "toolbar"; 128 129 /** 130 Optional <code>style</code> attribute 131 */ 132 private String style = null; 133 134 /** 135 If the toolbar should be visible or not. 136 */ 137 private boolean visible = true; 138 139 /** 140 If buttons should display images. 141 */ 142 private boolean hasImages = true; 143 144 /** 145 If buttons should display text. 146 */ 147 private boolean hasText = true; 139 140 public Toolbar() 141 { 142 super("toolbar"); 143 } 148 144 149 145 /* 150 146 Taglib initialization methods 151 147 */ 152 public void setClazz(String clazz)153 {154 this.clazz = clazz;155 }156 public String getClazz()157 {158 return clazz;159 }160 161 public void setStyle(String style)162 {163 this.style = style;164 }165 public String getStyle()166 {167 return style;168 }169 170 148 public void setVisible(boolean visible) 171 149 { … … 190 168 Package methods 191 169 */ 192 Table getTable()193 {194 return table;195 }196 197 170 /* 198 171 Display methods … … 201 174 throws JspException 202 175 { 203 table = (Table)findAncestorWithClass(this, Table.class);204 176 if (!isVisible()) return SKIP_BODY; 205 177 206 178 SessionControl sc = null; 207 179 StringBuilder sb = new StringBuilder(); 180 table = (Table)findAncestorWithClass(this, Table.class); 181 208 182 if (table == null) 209 183 { 184 // Standalone toolbar 210 185 sc = Base.getSessionControl(pageContext, false); 211 // Standalone toolbar 212 sb.append("<table border=0 cellspacing=0 cellpadding=0"); 213 if (getId() != null) sb.append(" id=\"").append(getId()).append("\""); 214 if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\""); 215 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 216 sb.append("><tr><td>"); 186 sb.append("<div"); 187 addIdAndStyles(sb); 188 sb.append("><table><tr>"); 189 190 217 191 } 218 192 else … … 223 197 if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\""); 224 198 if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\""); 225 sb.append(">"); 226 } 199 sb.append("><table><tr>"); 200 } 201 227 202 228 203 if (sc != null) … … 232 207 } 233 208 234 sb.append("<table border=0 cellspacing=0 cellpadding=0><tr>");235 209 try 236 210 { … … 249 223 if (!isVisible()) return EVAL_PAGE; 250 224 StringBuilder sb = new StringBuilder(); 251 sb.append("</tr></table></td></tr>"); 252 if (table == null) sb.append("</table>\n"); 225 if (table != null) 226 { 227 sb.append("</tr></table></td></tr>"); 228 } 229 else 230 { 231 sb.append("</tr></table></div>"); 232 } 253 233 try 254 234 { -
trunk/www/WEB-INF/base.tld
r5911 r5918 202 202 <rtexprvalue>true</rtexprvalue> 203 203 </attribute> 204 <attribute> 205 <name>enabled</name> 206 <required>false</required> 207 <rtexprvalue>true</rtexprvalue> 208 </attribute> 204 209 </tag> 205 210 -
trunk/www/WEB-INF/menu.tld
r4889 r5918 62 62 </attribute> 63 63 <attribute> 64 <name>subclass</name> 65 <required>false</required> 66 <rtexprvalue>true</rtexprvalue> 67 </attribute> 68 <attribute> 64 69 <name>style</name> 65 70 <required>false</required> … … 86 91 </attribute> 87 92 <attribute> 93 <name>clazz</name> 94 <required>false</required> 95 <rtexprvalue>true</rtexprvalue> 96 </attribute> 97 <attribute> 98 <name>subclass</name> 99 <required>false</required> 100 <rtexprvalue>true</rtexprvalue> 101 </attribute> 102 <attribute> 88 103 <name>style</name> 89 104 <required>false</required> … … 120 135 <rtexprvalue>true</rtexprvalue> 121 136 </attribute> 122 <attribute>123 <name>iconabsolute</name>124 <required>false</required>125 <rtexprvalue>true</rtexprvalue>126 </attribute>127 137 </tag> 128 138 <tag> -
trunk/www/WEB-INF/table.tld
r5643 r5918 409 409 </attribute> 410 410 <attribute> 411 <name>subclass</name> 412 <required>false</required> 413 <rtexprvalue>true</rtexprvalue> 414 </attribute> 415 <attribute> 411 416 <name>style</name> 412 417 <required>false</required> … … 464 469 </attribute> 465 470 <attribute> 471 <name>subclass</name> 472 <required>false</required> 473 <rtexprvalue>true</rtexprvalue> 474 </attribute> 475 <attribute> 466 476 <name>style</name> 467 477 <required>false</required> … … 470 480 <attribute> 471 481 <name>image</name> 472 <required>false</required>473 <rtexprvalue>true</rtexprvalue>474 </attribute>475 <attribute>476 <name>imagealign</name>477 482 <required>false</required> 478 483 <rtexprvalue>true</rtexprvalue> -
trunk/www/admin/extensions/details.jsp
r5903 r5918 169 169 function manualScan() 170 170 { 171 Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ManualScan', 'ManualScan', 800, 480);171 Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ManualScan', 'ManualScan', 750, 500); 172 172 } 173 173 174 174 function scanResults() 175 175 { 176 Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ScanResults', 'ScanResults', 600, 4 80);176 Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ScanResults', 'ScanResults', 600, 400); 177 177 } 178 178 … … 186 186 <base:body> 187 187 188 <tbl:toolbar> 189 188 <div class="absolutefull" onmousemove="parent.DragDrop.drag(event)" onmouseup="parent.DragDrop.endDrag(event)"> 189 190 <tbl:toolbar subclass="bottomborder"> 190 191 <% 191 192 if (ext != null) … … 273 274 </tbl:toolbar> 274 275 275 <div class="boxedbottom"> 276 277 <% 278 if (ext != null) 279 { 280 About about = ext.getAbout(); 281 if (about == null) about = new AboutBean(); 282 Throwable error = ec.getLastExtensionError(ext.getId()); 283 if (error != null) 276 <div class="bottomborder"> 277 <table class="fullform outlined"> 278 <tbody> 279 <% 280 if (ext != null) 284 281 { 282 About about = ext.getAbout(); 283 if (about == null) about = new AboutBean(); 284 Throwable error = ec.getLastExtensionError(ext.getId()); 285 if (error != null) 286 { 287 %> 288 <tr> 289 <th></th> 290 <td> 291 <div class="messagecontainer error"> 292 <base:icon image="error.png" 293 onclick="<%="toggleStacktrace(event, '" + ext.getId() + "')"%>" 294 style="float: left;" 295 tooltip="Error - click to show full stack trace" 296 /><%=error.getMessage() %> 297 <div id="stacktrace.<%=ext.getId()%>" 298 class="stacktrace" 299 style="display: none;" 300 ><%=ThrowableUtil.stackTraceToString(error)%></div> 301 </div> 302 </td> 303 </tr> 304 <% 305 } 285 306 %> 286 <div class="error"> 287 <base:icon image="error.png" 288 onclick="<%="toggleStacktrace(event, '" + ext.getId() + "')"%>" 289 style="float: left;" 290 tooltip="Error - click to show full stack trace" 291 /><%=error.getMessage() %> 292 <div id="stacktrace.<%=ext.getId()%>" 293 class="stacktrace" 294 style="display: none;" 295 ><%=ThrowableUtil.stackTraceToString(error)%></div> 296 </div> 297 <% 298 } 299 %> 300 <table class="form" cellspacing="0"> 301 <tr> 302 <td class="prompt">ID</td> 307 <tr> 308 <th>ID</th> 303 309 <td><%=ext.getId()%></td> 304 310 </tr> 305 311 <tr> 306 <t d class="prompt">Name</td>312 <th>Name</th> 307 313 <td><%=HTML.encodeTags(about.getName())%></td> 308 314 </tr> 309 315 <tr> 310 <t d class="prompt">File</td>316 <th>File</th> 311 317 <td> 312 318 <a href="javascript:showFile('<%=HTML.javaScriptEncode(extFile.getName())%>')" … … 317 323 </tr> 318 324 <tr> 319 <t d class="prompt">Version</td>325 <th>Version</th> 320 326 <td><%=HTML.encodeTags(about.getVersion())%></td> 321 327 </tr> 322 <tr >323 <t d class="prompt">Description</td>328 <tr class="big"> 329 <th>Description</th> 324 330 <td><%=HTML.niceFormat(about.getDescription())%></td> 325 331 </tr> 326 332 <tr> 327 <t d class="prompt">Copyright</td>333 <th>Copyright</th> 328 334 <td><%=HTML.encodeTags(about.getCopyright())%></td> 329 335 </tr> 330 336 <tr> 331 <t d class="prompt">Contact</td>337 <th>Contact</th> 332 338 <td><%=HTML.encodeTags(about.getContact())%></td> 333 339 </tr> 334 340 <tr> 335 <t d class="prompt">Email</td>341 <th>Email</th> 336 342 <td><%=HTML.scanForLinks(about.getEmail(), HTML.LINK_EMAIL, "_new")%></td> 337 343 </tr> 338 344 <tr> 339 <t d class="prompt">Url</td>345 <th>Url</th> 340 346 <td><%=HTML.scanForLinks(about.getUrl(), HTML.LINK_URL, "_new")%></td> 341 347 </tr> 342 </tr> 343 <tr> 344 <td class="prompt">Action factory</td> 348 <tr class="big"> 349 <th>Action factory</th> 345 350 <td><%=displayFactory(extFile, ext.getActionFactory())%></td> 346 351 </tr> 347 </tr> 348 <tr> 349 <td class="prompt">Renderer factory</td> 352 <tr class="big"> 353 <th>Renderer factory</th> 350 354 <td><%=displayFactory(extFile, ext.getRendererFactory())%></td> 351 355 </tr> 352 </table> 353 <% 354 } 355 %> 356 <% 357 if (ep != null) 358 { 359 if (ext != null) 360 { 361 %> 362 <h4>Extension point</h4> 356 </tbody> 363 357 <% 364 358 } 365 Throwable error = ec.getLastExtensionPointError(ep.getId()); 366 if (error != null) 359 if (ep != null) 367 360 { 361 if (ext != null) 362 { 363 %> 364 <tbody class="section"> 365 <tr> 366 <th colspan="2">Extension point</th> 367 </tr> 368 </tbody> 369 <% 370 } 368 371 %> 369 <div class="error"> 370 <base:icon image="error.png" 371 onclick="<%="toggleStacktrace(event, '" + ep.getId() + "')"%>" 372 style="float: left;" 373 tooltip="Error - click to show full stack trace" 374 /><%=error.getMessage() %> 375 <div id="stacktrace.<%=ep.getId()%>" 376 class="stacktrace" 377 style="display: none;" 378 ><%=ThrowableUtil.stackTraceToString(error)%></div> 379 </div> 372 <tbody> 373 <% 374 Throwable error = ec.getLastExtensionPointError(ep.getId()); 375 if (error != null) 376 { 377 %> 378 <tr> 379 <th></th> 380 <td> 381 <div class="messagecontainer error"> 382 <base:icon image="error.png" 383 onclick="<%="toggleStacktrace(event, '" + ep.getId() + "')"%>" 384 style="float: left;" 385 tooltip="Error - click to show full stack trace" 386 /><%=error.getMessage() %> 387 <div id="stacktrace.<%=ep.getId()%>" 388 class="stacktrace" 389 style="display: none;" 390 ><%=ThrowableUtil.stackTraceToString(error)%></div> 391 </div> 392 </td> 393 </tr> 380 394 <% 395 } 396 %> 397 <tr> 398 <th>ID</th> 399 <td><%=ep.getId()%></td> 400 </tr> 401 <tr> 402 <th>Name</th> 403 <td><%=HTML.encodeTags(ep.getName())%></td> 404 </tr> 405 <tr> 406 <th>File</th> 407 <td> 408 <% 409 if (epFile != null) 410 { 411 %> 412 <a href="javascript:showFile('<%=HTML.javaScriptEncode(epFile.getName())%>')" 413 ><%=epFile.getName()%></a> 414 (<%=epFile.checkModified() ? "Modified" : "Up to date" %>; 415 <%=epFile.hasError() ? "Error" : "Ok" %>) 416 <% 417 } 418 %> 419 </td> 420 </tr> 421 <tr class="big"> 422 <th>Description</th> 423 <td><%=HTML.niceFormat(ep.getDescription())%></td> 424 </tr> 425 <tr> 426 <th>Action class</th> 427 <td><%=ep.getActionClass().getName()%></td> 428 </tr> 429 <tr class="big"> 430 <th>Renderer factory</th> 431 <td><%=displayFactory(epFile, ep.getRendererFactory())%></td> 432 </tr> 433 <tr class="big"> 434 <th>Error handler factory</th> 435 <td><%=displayFactory(epFile, ep.getErrorHandlerFactory() == null ? 436 ec.getDefaultErrorHandlerFactory() : ep.getErrorHandlerFactory())%></td> 437 </tr> 438 </tbody> 439 <% 381 440 } 382 %>383 <table class="form" cellspacing="0">384 <tr>385 <td class="prompt">ID</td>386 <td><%=ep.getId()%></td>387 </tr>388 <tr>389 <td class="prompt">Name</td>390 <td><%=HTML.encodeTags(ep.getName())%></td>391 </tr>392 <tr>393 <td class="prompt">File</td>394 <td>395 <%396 if (epFile != null)397 {398 %>399 <a href="javascript:showFile('<%=HTML.javaScriptEncode(epFile.getName())%>')"400 ><%=epFile.getName()%></a>401 (<%=epFile.checkModified() ? "Modified" : "Up to date" %>;402 <%=epFile.hasError() ? "Error" : "Ok" %>)403 <%404 }405 %>406 </td>407 </tr>408 <tr>409 <td class="prompt">Description</td>410 <td><%=HTML.niceFormat(ep.getDescription())%></td>411 </tr>412 <tr>413 <td class="prompt">Action class</td>414 <td><%=ep.getActionClass().getName()%></td>415 </tr>416 <tr>417 <td class="prompt">Renderer factory</td>418 <td><%=displayFactory(epFile, ep.getRendererFactory())%></td>419 </tr>420 <tr>421 <td class="prompt">Error handler factory</td>422 <td><%=displayFactory(epFile, ep.getErrorHandlerFactory() == null ?423 ec.getDefaultErrorHandlerFactory() : ep.getErrorHandlerFactory())%></td>424 </tr>425 </table>426 <%427 }428 %>429 430 <%431 441 if (file != null) 432 442 { … … 434 444 if (about == null) about = new AboutBean(); 435 445 %> 436 <t able class="form" cellspacing="0">437 <tr> 438 <t d class="prompt">File</td>446 <tbody> 447 <tr> 448 <th>File</th> 439 449 <td><%=file.getName()%></td> 440 450 </tr> 441 451 <tr> 442 <t d class="prompt">Type</td>452 <th>Type</th> 443 453 <td><%=file.isJar() ? "JAR file" : "XML file"%></td> 444 454 </tr> 445 455 <tr> 446 <t d class="prompt">Up to date</td>456 <th>Up to date</th> 447 457 <td><%=file.checkModified() ? "No" : "Yes"%></td> 448 458 </tr> 449 <tr >450 <t d class="prompt">Errors</td>459 <tr class="big"> 460 <th>Errors</th> 451 461 <td> 452 462 <% … … 458 468 Throwable validationError = file.getValidationError(); 459 469 %> 460 <ul style="padding-left: 20px; margin: 0px; text-align: left;" class="error"> 470 <div class="messagecontainer error"> 471 <ul style="padding-left: 20px; margin: 0px; text-align: left;"> 461 472 <% 462 473 if (validationError != null) … … 474 485 %> 475 486 </ul> 487 </div> 476 488 <% 477 489 } … … 486 498 </tr> 487 499 <tr> 488 <t d class="prompt">Name</td>500 <th>Name</th> 489 501 <td><%=HTML.encodeTags(about.getName())%></td> 490 502 </tr> 491 503 <tr> 492 <t d class="prompt">Version</td>504 <th>Version</th> 493 505 <td><%=HTML.encodeTags(about.getVersion())%></td> 494 506 </tr> 495 <tr >496 <t d class="prompt">Description</td>507 <tr class="big"> 508 <th>Description</th> 497 509 <td><%=HTML.niceFormat(about.getDescription())%></td> 498 510 </tr> 499 511 <tr> 500 <t d class="prompt">Copyright</td>512 <th>Copyright</th> 501 513 <td><%=HTML.encodeTags(about.getCopyright())%></td> 502 514 </tr> 503 515 <tr> 504 <t d class="prompt">Contact</td>516 <th>Contact</th> 505 517 <td><%=HTML.encodeTags(about.getContact())%></td> 506 518 </tr> 507 519 <tr> 508 <t d class="prompt">Email</td>520 <th>Email</th> 509 521 <td><%=HTML.scanForLinks(about.getEmail(), HTML.LINK_EMAIL, "_new")%></td> 510 522 </tr> 511 523 <tr> 512 <t d class="prompt">Url</td>524 <th>Url</th> 513 525 <td><%=HTML.scanForLinks(about.getUrl(), HTML.LINK_URL, "_new")%></td> 514 526 </tr> 515 </t able>527 </tbody> 516 528 <% 517 529 } … … 523 535 Formatter dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc); 524 536 %> 525 <t able class="form" cellspacing="0">526 <tr> 527 <t d class="prompt">Last installation</td>537 <tbody> 538 <tr> 539 <th>Last installation</th> 528 540 <td><%=results.hasError() ? "Failed": "Successful" %></td> 529 541 </tr> 530 542 <tr> 531 <t d class="prompt" style="text-align: right; font-weight: normal;">- ended</td>543 <th class="subprompt">- ended</td> 532 544 <td><%=dateTimeFormatter.format(new Date(results.getEndTime())) %></td> 533 545 </tr> 534 <tr >535 <t d class="prompt" style="text-align: right; font-weight: normal;">- summary</td>546 <tr class="big"> 547 <th class="subprompt">- summary</th> 536 548 <td> 537 549 <%=HTML.niceFormat(results.getSummary())%></td> 538 550 </tr> 539 551 <tr> 540 <t d class="prompt" style="text-align: right; font-weight: normal;"><base:icon image="bullet.gif" /></td>552 <th class="subprompt"></th> 541 553 <td> 542 <a href="javascript:scanResults()" 543 title="Display detailed information about the last scan" 544 >More details…</a> 554 <table><tr><td> 555 <base:button image="bullet.gif" 556 onclick="scanResults()" 557 title="More details…" 558 tooltip="Display detailed information about the last scan" 559 /> 560 </td></tr></table> 545 561 </td> 546 562 </tr> 547 </t able>563 </tbody> 548 564 <% 549 565 } 550 566 %> 567 </div> 551 568 </div> 552 569 </base:body> -
trunk/www/admin/extensions/frameset.jsp
r5426 r5918 36 36 %> 37 37 38 <base:page type="frameset" title=""> 39 <base:head /> 40 <frameset cols="300,*" frameborder="yes" border="5" > 41 <frame name="tree" 42 src="tree.jsp?ID=<%=ID%>" 43 scrolling="auto" marginwidth="0" marginheight="0" frameborder="1"> 44 <frame name="details" 45 src="details.jsp?ID=<%=ID%>" 46 scrolling="auto" marginwidth="0" marginheight="0" frameborder="1"> 47 </frameset> 38 <base:page type="popup" title=""> 39 <base:head scripts="dragdrop.js"> 40 <script> 41 42 function repositionX(deltaX, deltaY) 43 { 44 var f1 = document.getElementById('f1'); 45 var d1 = document.getElementById('d1'); 46 var f2 = document.getElementById('f2'); 47 48 f1.style.width = (parseInt(f1.style.width) +deltaX) + 'px'; 49 d1.style.left = (parseInt(d1.style.left) + deltaX) + 'px'; 50 f2.style.left = (parseInt(f2.style.left) + deltaX) + 'px'; 51 } 52 </script> 53 </base:head> 54 55 <base:body> 56 <div class="absolutefull" onmousemove="DragDrop.drag(event)" onmouseup="DragDrop.endDrag(event)"> 57 <div id="f1" class="absolutefull" style="width: 294px;"><iframe name="tree" 58 src="tree.jsp?ID=<%=ID%>" 59 style="width: 100%; height: 100%;" 60 ></iframe></div> 61 62 <div id="d1" class="absolutefull filled leftborder rightborder" 63 style="left: 294px; width: 4px; cursor: e-resize; z-index: 99;" 64 onmousedown="DragDrop.beginDrag(event, true, false, repositionX)" 65 ></div> 66 67 <div id="f2" class="absolutefull" style="left: 300px;"><iframe name="details" 68 src="details.jsp?ID=<%=ID%>" 69 style="width: 100%; height: 100%;" 70 ></iframe></div> 71 </div> 72 </div> 73 </base:body> 48 74 </base:page> 49 75 -
trunk/www/admin/extensions/manager.jsp
r5615 r5918 37 37 38 38 %> 39 <base:page t itle="Installed extensions & plug-ins">39 <base:page type="default" title="Installed extensions & plug-ins"> 40 40 <base:head > 41 41 <script language="JavaScript"> 42 var timer = 0;43 var inCall = false;44 function adjustIFrameSize()45 {46 if (inCall) return;47 inCall = true;48 var iframeElement = document.getElementById("idManager");49 // Find the top coordinate of the IFrame50 var offsetTop = 1;51 var offsetTrail = iframeElement;52 while (offsetTrail)53 {54 offsetTop += offsetTrail.offsetTop;55 offsetTrail = offsetTrail.offsetParent;56 }57 58 // Find the browser window height59 var windowHeight = Main.getWindowHeight();60 iframeElement.height = windowHeight-offsetTop;61 62 // Adjust the height of the frames63 var iframe = window.frames['manager'];64 var tree = iframe.frames['tree'].document.getElementById('main');65 if (tree) tree.style.height = (iframeElement.height-1)+'px';66 var joust = iframe.frames['tree'].document.getElementById('joust');67 if (joust) joust.style.height = (iframeElement.height-5-30)+'px';68 var details = iframe.frames['details'].document.getElementById('main');69 if (details) details.style.height = iframeElement.height+'px';70 inCall = false;71 }72 function setTimer()73 {74 if (inCall) return;75 if (timer) clearTimeout(timer);76 timer = setTimeout('adjustIFrameSize()', 150);77 }78 42 </script> 79 43 </base:head> 80 44 <base:body attributes="onresize='setTimer();'"> 81 <iframe name="manager" id="idManager" src="frameset.jsp?ID=<%=ID%>" width="100%" 82 frameborder="0" vspace="0" hspace="0" 83 marginwidth="0" marginheight="0" scrolling="no" 84 style="overflow: visible"></iframe> 45 <h1>Installed extensions & plug-ins</h1> 46 <div class="content"> 47 <div class="absolutefull topborder"><iframe 48 name="manager" id="idManager" src="frameset.jsp?ID=<%=ID%>" 49 style="width: 100%; height: 100%;"></iframe></div> 50 </div> 85 51 </base:body> 86 52 </base:page> -
trunk/www/admin/extensions/scan_results.jsp
r5616 r5918 64 64 { 65 65 Main.showHide('details.' + detailsId); 66 var icon = document.getElementById('icon.'+detailsId) ;66 var icon = document.getElementById('icon.'+detailsId).firstChild; 67 67 if (icon) 68 68 { 69 if (icon.src.indexOf(' show') > 0)69 if (icon.src.indexOf('right') > 0) 70 70 { 71 icon.src = icon.src.replace(' show', 'hide');71 icon.src = icon.src.replace('right', 'down'); 72 72 } 73 73 else 74 74 { 75 icon.src = icon.src.replace(' hide', 'show');75 icon.src = icon.src.replace('down', 'right'); 76 76 } 77 77 } … … 80 80 </base:head> 81 81 <base:body> 82 <p> 82 <h1>Last installation results</h1> 83 84 <div class="content bottomborder"> 83 85 84 <h3 class="docked">Last installation results</h3> 85 <div class="boxedbottom" style="height: <%=(int)(scale*280)%>px; overflow: auto;"> 86 87 <table class="form"> 86 <table class="fullform outlined"> 88 87 <tr> 89 <t d class="prompt">Status</td>90 <td colspan="3"><%=results.hasError() ? "Error" : "Success" %></td>88 <th>Status</th> 89 <td><%=results.hasError() ? "Error" : "Success" %></td> 91 90 </tr> 92 91 <tr> 93 <t d class="prompt">Started</td>92 <th class="subprompt">Started</th> 94 93 <td><%=timeFormatter.format(new Date(results.getStartTime()))%></td> 95 <td class="prompt">Ended</td> 94 </tr> 95 <tr> 96 <th class="subprompt">Ended</th> 96 97 <td><%=timeFormatter.format(new Date(results.getEndTime()))%></td> 97 98 </tr> 98 99 <tr> 99 <t d class="prompt">Summary</td>100 <td colspan="3"><%=HTML.niceFormat(results.getSummary())%></td>100 <th>Summary</th> 101 <td><%=HTML.niceFormat(results.getSummary())%></td> 101 102 </tr> 102 </table>103 104 <table class="form">105 103 <% 106 104 for (FileResults fileResults : results.getAllResults()) … … 113 111 %> 114 112 <tr> 115 <t d class="prompt"><%=extFile.getName() %></td>113 <th><%=extFile.getName() %></td> 116 114 <td><%=fileResults.getStatus() %> 117 115 <base:icon 118 116 id="<%="icon." + detailsId %>" 119 image=" show_section.gif"117 image="move_right.png" 120 118 onclick="<%="showDetails('" + detailsId + "')" %>" 121 119 visible="<%=hasMessages%>" … … 128 126 %> 129 127 <tr id="details.<%=detailsId %>" style="display:none;"> 130 <t d></td><td>128 <th class="subprompt"></th><td> 131 129 <ul style="padding-left: 20px; margin: 0px; text-align: left;"> 132 130 <% … … 151 149 } 152 150 %> 151 <tr class="dynamic"> 152 <th></th> 153 <td></td> 154 </tr> 153 155 </table> 154 156 </div> 155 157 156 <p> 157 <div align=center> 158 <table align="center"> 159 <tr> 160 <td><base:button onclick="window.close();" title="Close" /></td> 161 </tr> 162 </table> 158 <base:buttongroup subclass="dialogbuttons"> 159 <base:button onclick="window.close();" title="Close" /> 160 </base:buttongroup> 163 161 164 </div>165 162 </base:body> 166 163 </base:page> -
trunk/www/admin/extensions/tree.jsp
r5821 r5918 358 358 </script> 359 359 <style> 360 .itemref { 361 font-size: 10px; 362 color: #777777; 360 .itemref 361 { 362 font-size: 0.85em; 363 color: #666666; 364 } 365 .selected .itemref 366 { 367 color: #E8E8E8; 363 368 } 364 369 </style> 365 370 </base:head> 366 371 <base:body onload="initialise()"> 367 <div id="main" class="joust " style="width:100%;">368 <div id="joust" style="overflow: auto; ">372 <div id="main" class="joust absolutefull" onmousemove="parent.DragDrop.drag(event)" onmouseup="parent.DragDrop.endDrag(event)"> 373 <div id="joust" style="overflow: auto; height: 100%; width: 100%;"> 369 374 </div> 370 375 </div> -
trunk/www/admin/extensions/wizard.jsp
r5835 r5918 89 89 </base:head> 90 90 <base:body> 91 < p>92 91 <h1>Extensions and plug-ins installation wizard <base:help helpid="extensions.install-wizard" /></h1> 92 93 93 <form action="index.jsp?ID=<%=ID%>" method="post" name="scan" onsubmit="return false;"> 94 94 <input type=hidden name="cmd" value="DoManualScan"> 95 95 96 <h3 class="docked">Extensions and plug-ins installation wizard <base:help helpid="extensions.install-wizard" /></h3> 97 <div style="max-height: <%=(int)(scale*380)%>px; overflow: auto;"> 96 <div class="content bottomborder"> 98 97 <tbl:table id="extensions" clazz="itemlist"> 99 98 <tbl:columndef id="file" title="File" /> … … 210 209 </tbl:table> 211 210 </div> 212 <p>213 <div align=center>214 <table align="center">215 <tr>216 <td width="50%"><base:button onclick="startManualScan();" title="Next" image="gonext.gif" /></td>217 <td width="50%"><base:button onclick="window.close();" title="Cancel" /></td>218 </tr>219 </table>220 221 </div>222 211 </form> 212 213 <base:buttongroup subclass="dialogbuttons"> 214 <base:button onclick="startManualScan();" title="Next" /> 215 <base:button onclick="window.close();" title="Cancel" /> 216 </base:buttongroup> 217 223 218 </base:body> 224 219 </base:page> -
trunk/www/admin/plugindefinitions/view_plugin.jsp
r5910 r5918 228 228 } 229 229 %> 230 <t:tabcontrol id="main" active="properties" notabs="<%=iFrame %>">230 <t:tabcontrol id="main" active="properties" > 231 231 <t:tab id="properties" title="Properties"> 232 232 <tbl:toolbar -
trunk/www/biomaterials/biosources/list_biosources.jsp
r5910 r5918 116 116 %> 117 117 <base:page title="<%=title==null ? "Biosources" : title%>" type="<%=mode.getPageType()%>"> 118 <base:head scripts="menu.js,table.js" styles="menu.css,table.css ">118 <base:head scripts="menu.js,table.js" styles="menu.css,table.css,toolbar.css"> 119 119 <ext:scripts context="<%=jspContext%>" /> 120 120 <ext:stylesheets context="<%=jspContext%>" /> … … 208 208 209 209 <base:body> 210 <h1><%=title==null ? "Biosources" : title%></h1> 211 <div class="content"> 210 212 <% 211 213 if (cc.getMessage() != null) … … 217 219 } 218 220 %> 219 <tbl:table 220 id="biosources" 221 clazz="itemlist" 222 columns="<%=cc.getSetting("columns")%>" 223 sortby="<%=cc.getSortProperty()%>" 224 direction="<%=cc.getSortDirection()%>" 225 title="<%=title%>" 226 action="index.jsp" 227 sc="<%=sc%>" 228 item="<%=itemType%>" 221 <tbl:toolbar 222 visible="<%=mode.hasToolbar()%>" 223 subclass="topborder" 224 > 225 <tbl:button 226 disabled="<%=createPermission ? false : true%>" 227 image="new.gif" 228 onclick="newItem()" 229 title="New…" 230 tooltip="<%=createPermission ? "Create new biosource" : "You do not have permission to create biosources"%>" 231 /> 232 <tbl:button 233 image="delete.gif" 234 onclick="deleteItems()" 235 title="Delete" 236 tooltip="Delete the selected items" 237 /> 238 <tbl:button 239 image="restore.gif" 240 onclick="restoreItems()" 241 title="Restore" 242 tooltip="Restore the selected (deleted) items" 243 /> 244 <tbl:button 245 image="share.gif" 246 onclick="shareItems()" 247 title="Share…" 248 tooltip="Share the selected items" 249 /> 250 <tbl:button 251 image="take_ownership.png" 252 onclick="setOwner()" 253 title="Set owner…" 254 tooltip="Change owner of the selected items" 255 /> 256 <tbl:button 257 image="columns.gif" 258 onclick="configureColumns()" 259 title="Columns…" 260 tooltip="Show, hide and re-order columns" 261 /> 262 <tbl:button 263 image="add.png" 264 onclick="newBioMaterialList()" 265 title="New biomaterial list…" 266 tooltip="Create a new biomaterial list from matching biosources" 267 visible="<%=sc.hasPermission(Permission.CREATE, Item.BIOMATERIALLIST)%>" 268 /> 269 <tbl:button 270 image="import.gif" 271 onclick="runPlugin('ImportItems')" 272 title="Import…" 273 tooltip="Import data" 274 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>" 275 /> 276 <tbl:button 277 image="export.gif" 278 onclick="runPlugin('ExportItems')" 279 title="Export…" 280 tooltip="Export data" 281 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>" 282 /> 283 <tbl:button 284 image="runplugin.gif" 285 onclick="runPlugin('RunListPlugin')" 286 title="Run plugin…" 287 tooltip="Run a plugin" 288 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>" 289 /> 290 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 291 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/> 292 </tbl:toolbar> 293 <tbl:table 294 id="biosources" 295 clazz="itemlist" 296 columns="<%=cc.getSetting("columns")%>" 297 sortby="<%=cc.getSortProperty()%>" 298 direction="<%=cc.getSortDirection()%>" 299 action="index.jsp" 300 sc="<%=sc%>" 301 item="<%=itemType%>" 229 302 > 230 303 <tbl:hidden … … 367 440 datatype="string" 368 441 /> 369 <tbl:toolbar370 visible="<%=mode.hasToolbar()%>"371 >372 <tbl:button373 disabled="<%=createPermission ? false : true%>"374 image="<%=createPermission ? "new.gif" : "new_disabled.gif"%>"375 onclick="newItem()"376 title="New…"377 tooltip="<%=createPermission ? "Create new biosource" : "You do not have permission to create biosources"%>"378 />379 <tbl:button380 image="delete.gif"381 onclick="deleteItems()"382 title="Delete"383 tooltip="Delete the selected items"384 />385 <tbl:button386 image="restore.gif"387 onclick="restoreItems()"388 title="Restore"389 tooltip="Restore the selected (deleted) items"390 />391 <tbl:button392 image="share.gif"393 onclick="shareItems()"394 title="Share…"395 tooltip="Share the selected items"396 />397 <tbl:button398 image="take_ownership.png"399 onclick="setOwner()"400 title="Set owner…"401 tooltip="Change owner of the selected items"402 />403 <tbl:button404 image="columns.gif"405 onclick="configureColumns()"406 title="Columns…"407 tooltip="Show, hide and re-order columns"408 />409 <tbl:button410 image="add.png"411 onclick="newBioMaterialList()"412 title="New biomaterial list…"413 tooltip="Create a new biomaterial list from matching biosources"414 visible="<%=sc.hasPermission(Permission.CREATE, Item.BIOMATERIALLIST)%>"415 />416 <tbl:button417 image="import.gif"418 onclick="runPlugin('ImportItems')"419 title="Import…"420 tooltip="Import data"421 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"422 />423 <tbl:button424 image="export.gif"425 onclick="runPlugin('ExportItems')"426 title="Export…"427 tooltip="Export data"428 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"429 />430 <tbl:button431 image="runplugin.gif"432 onclick="runPlugin('RunListPlugin')"433 title="Run plugin…"434 tooltip="Run a plugin"435 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"436 />437 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"438 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>439 </tbl:toolbar>440 442 <tbl:navigator 441 443 page="<%=cc.getPage()%>" … … 463 465 image="check_uncheck.gif" 464 466 tooltip="Check/uncheck all" 465 onclick="Forms.checkUncheck(document.forms[formId])" style="align: left;"467 onclick="Forms.checkUncheck(document.forms[formId])" 466 468 /></tbl:header> 467 469 <tbl:header … … 660 662 %> 661 663 </tbl:table> 662 <base:buttongroup clazz="fixedatbottom"> 664 </div> 665 666 <base:buttongroup subclass="dialogbuttons"> 663 667 <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" /> 664 668 <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" /> 665 669 <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" /> 666 670 </base:buttongroup> 667 <br><br><br>668 671 </base:body> 669 672 </base:page> -
trunk/www/biomaterials/biosources/view_biosource.jsp
r5910 r5918 165 165 </base:head> 166 166 <base:body> 167 <p> 168 <p:path> 169 <p:pathelement title="Biosources" href="<%="index.jsp?ID="+ID%>" /> 170 <p:pathelement title="<%=HTML.encodeTags(bioSource.getName())%>" /> 171 </p:path> 167 <p:path><p:pathelement 168 title="Biosources" href="<%="index.jsp?ID="+ID%>" /><p:pathelement 169 title="<%=HTML.encodeTags(bioSource.getName())%>" /></p:path> 172 170 173 <t:tabcontrol id="main" active="<%=tab%>" switch="switchTab" remember="false">171 <t:tabcontrol id="main" subclass="content mastertabcontrol" active="<%=tab%>" switch="switchTab" remember="false"> 174 172 <t:tab id="properties" title="Properties"> 175 173 176 <tbl:toolbar 177 > 178 <tbl:button 179 disabled="<%=writePermission ? false : true%>" 180 image="<%=writePermission ? "edit.gif" : "edit_disabled.gif"%>" 181 onclick="editItem()" 182 title="Edit…" 183 tooltip="<%=writePermission ? "Edit this biosource" : "You do not have permission to edit this biosource"%>" 184 /> 185 <tbl:button 186 disabled="<%=deletePermission ? false : true%>" 187 image="<%=deletePermission ? "delete.gif" : "delete_disabled.gif"%>" 188 onclick="deleteItem()" 189 title="Delete" 190 visible="<%=!bioSource.isRemoved()%>" 191 tooltip="<%=deletePermission ? "Delete this biosource" : "You do not have permission to delete this biosource"%>" 192 /> 193 <tbl:button 194 disabled="<%=writePermission ? false : true%>" 195 image="<%=writePermission ? "restore.gif" : "restore_disabled.gif"%>" 196 onclick="restoreItem()" 197 title="Restore" 198 visible="<%=bioSource.isRemoved()%>" 199 tooltip="<%=writePermission ? "Restore this biosource" : "You do not have permission to restore this biosource"%>" 200 /> 201 <tbl:button 202 disabled="<%=sharePermission ? false : true%>" 203 image="<%=sharePermission ? "share.gif" : "share_disabled.gif"%>" 204 onclick="shareItem()" 205 title="Share…" 206 tooltip="<%=sharePermission ? "Share this biosource to other user, groups and projects" : "You do not have permission to share this biosource"%>" 207 /> 208 <tbl:button 209 disabled="<%=setOwnerPermission ? false : true%>" 210 image="<%=setOwnerPermission ? "take_ownership.png" : "take_ownership_disabled.png"%>" 211 onclick="setOwner()" 212 title="Set owner…" 213 tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>" 214 /> 215 <tbl:button 216 image="add.png" 217 onclick="newSample()" 218 title="New sample…" 219 tooltip="Create a new sample from this biosource" 220 visible="<%=sc.hasPermission(Permission.CREATE, Item.SAMPLE) && usePermission%>" 221 /> 222 <tbl:button 223 image="import.gif" 224 onclick="runPlugin('ImportItem')" 225 title="Import…" 226 tooltip="Import data" 227 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>" 228 /> 229 <tbl:button 230 image="export.gif" 231 onclick="runPlugin('ExportItem')" 232 title="Export…" 233 tooltip="Export data" 234 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>" 235 /> 236 <tbl:button 237 image="runplugin.gif" 238 onclick="runPlugin('RunPlugin')" 239 title="Run plugin…" 240 tooltip="Run a plugin" 241 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>" 242 /> 243 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 244 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/> 245 <tbl:button 246 image="help.png" 247 onclick="<%="Main.openHelp('" + ID +"', 'biosource.view.properties')"%>" 248 title="Help…" 249 tooltip="Get help about this page" 250 /> 251 </tbl:toolbar> 252 <div class="boxedbottom"> 253 <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(bioSource)%></i></div> 254 <% 255 if (bioSource.isRemoved() || bioSource.isShared()) 256 { 257 %> 258 <div class="itemstatus"> 174 <div> 175 <table class="fullform bottomborder"> 176 <tr> 177 <th class="itemstatus"> 259 178 <base:icon 260 image="<%=deletePermanentlyPermission ? "deleted.gif" : "deleted_disabled.gif"%>" 261 onclick="<%=deletePermanentlyPermission ? "deleteItemPermanently()" : null%>" 262 tooltip="<%=deletePermanentlyPermission ? "Permanently delete this item" : null%>" 263 visible="<%=isRemoved%>"> This item has been flagged for deletion<br></base:icon> 179 image="shared.gif" 180 visible="<%=bioSource.isShared()%>" 181 tooltip="This item is shared to other users, groups and/or projects" 182 /> 183 <base:icon 184 image="deleted.gif" 185 onclick="deleteItemPermanently()" 186 tooltip="This item has been flagged for deletion. Click to delete it now." 187 enabled="<%=deletePermanentlyPermission %>" 188 visible="<%=isRemoved%>" 189 /> 264 190 <base:icon image="used.gif" 265 191 onclick="showUsingItems()" 266 tooltip="Show the items that are using this one" 267 visible="<%=isUsed%>"> This item is used by other items and can't be permanently deleted<br></base:icon> 268 <base:icon image="shared.gif" 269 visible="<%=bioSource.isShared()%>"> This item is shared to other users, groups and/or projects</base:icon> 270 </div> 271 <% 272 } 273 %> 274 <table class="form" cellspacing="0"> 275 <tr> 276 <td class="prompt">Name</td> 192 tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one" 193 visible="<%=isRemoved && isUsed%>" /> 194 </th> 195 <td style="padding: 0px;"> 196 <tbl:toolbar subclass="bottomborder"> 197 <tbl:button 198 disabled="<%=writePermission ? false : true%>" 199 image="edit.gif" 200 onclick="editItem()" 201 title="Edit…" 202 tooltip="<%=writePermission ? "Edit this biosource" : "You do not have permission to edit this biosource"%>" 203 /> 204 <tbl:button 205 disabled="<%=deletePermission ? false : true%>" 206 image="delete.gif" 207 onclick="deleteItem()" 208 title="Delete" 209 visible="<%=!bioSource.isRemoved()%>" 210 tooltip="<%=deletePermission ? "Delete this biosource" : "You do not have permission to delete this biosource"%>" 211 /> 212 <tbl:button 213 disabled="<%=writePermission ? false : true%>" 214 image="restore.gif" 215 onclick="restoreItem()" 216 title="Restore" 217 visible="<%=bioSource.isRemoved()%>" 218 tooltip="<%=writePermission ? "Restore this biosource" : "You do not have permission to restore this biosource"%>" 219 /> 220 <tbl:button 221 disabled="<%=sharePermission ? false : true%>" 222 image="share.gif" 223 onclick="shareItem()" 224 title="Share…" 225 tooltip="<%=sharePermission ? "Share this biosource to other user, groups and projects" : "You do not have permission to share this biosource"%>" 226 /> 227 <tbl:button 228 disabled="<%=setOwnerPermission ? false : true%>" 229 image="take_ownership.png" 230 onclick="setOwner()" 231 title="Set owner…" 232 tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>" 233 /> 234 <tbl:button 235 image="add.png" 236 onclick="newSample()" 237 title="New sample…" 238 tooltip="Create a new sample from this biosource" 239 visible="<%=sc.hasPermission(Permission.CREATE, Item.SAMPLE) && usePermission%>" 240 /> 241 <tbl:button 242 image="import.gif" 243 onclick="runPlugin('ImportItem')" 244 title="Import…" 245 tooltip="Import data" 246 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>" 247 /> 248 <tbl:button 249 image="export.gif" 250 onclick="runPlugin('ExportItem')" 251 title="Export…" 252 tooltip="Export data" 253 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>" 254 /> 255 <tbl:button 256 image="runplugin.gif" 257 onclick="runPlugin('RunPlugin')" 258 title="Run plugin…" 259 tooltip="Run a plugin" 260 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>" 261 /> 262 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 263 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/> 264 <tbl:button 265 image="help.png" 266 onclick="<%="Main.openHelp('" + ID +"', 'biosource.view.properties')"%>" 267 title="Help…" 268 tooltip="Get help about this page" 269 /> 270 </tbl:toolbar> 271 272 </td> 273 </tr> 274 <tr> 275 <th>Name</th> 277 276 <td><%=HTML.encodeTags(bioSource.getName())%></td> 278 277 </tr> 279 278 <tr> 280 <t d class="prompt">Type</td>279 <th>Type</th> 281 280 <td><base:propertyvalue item="<%=bioSource%>" property="itemSubtype" /></td> 282 281 </tr> 283 282 <tr> 284 <t d class="prompt">Registered</td>283 <th>Registered</th> 285 284 <td><%=dateFormatter.format(bioSource.getEntryDate())%></td> 286 285 </tr> 287 286 <tr> 288 <t d class="prompt">External ID</td>287 <th>External ID</th> 289 288 <td><%=HTML.encodeTags(bioSource.getExternalId())%></td> 290 289 </tr> 291 290 <tr> 292 <t d class="prompt">Owner</td>291 <th>Owner</th> 293 292 <td><base:propertyvalue item="<%=bioSource%>" property="owner" /></td> 294 293 </tr> 295 294 <tr> 296 <td class="prompt">Description</td> 295 <th>Permissions</th> 296 <td><%=PermissionUtil.getFullPermissionNames(bioSource)%></td> 297 </tr> 298 <tr> 299 <th>Description</th> 297 300 <td><%=HTML.niceFormat(bioSource.getDescription())%></td> 298 301 </tr> 299 302 </table> 300 303 </div> 301 304 <% 302 305 ItemQuery<Sample> sampleQuery = bioSource.getSamples(); … … 476 479 } 477 480 %> 478 479 </div>480 481 </t:tab> 481 482 482 483 <t:tab id="annotations" title="Annotations" > 483 <div class="boxed">484 484 <jsp:include page="../../common/annotations/list_annotations.jsp"> 485 485 <jsp:param name="item_type" value="<%=itemType.name()%>" /> … … 487 487 <jsp:param name="ID" value="<%=ID%>" /> 488 488 </jsp:include> 489 </div>490 489 </t:tab> 491 490 <t:tab id="overview" title="Overview" … … 521 520 </t:tab> 522 521 </t:tabcontrol> 523 524 525 522 </base:body> 526 523 </base:page> -
trunk/www/biomaterials/samples/list_samples.jsp
r5910 r5918 156 156 %> 157 157 <base:page title="<%=title==null ? "Samples" : title%>" type="<%=mode.getPageType()%>"> 158 <base:head scripts="menu.js,table.js" styles="menu.css,table.css ">158 <base:head scripts="menu.js,table.js" styles="menu.css,table.css,toolbar.css"> 159 159 <ext:scripts context="<%=jspContext%>" /> 160 160 <ext:stylesheets context="<%=jspContext%>" /> … … 260 260 261 261 <base:body> 262 <h1><%=title==null ? "Samples" : title%></h1> 263 <div class="content"> 262 264 <% 263 265 if (cc.getMessage() != null) … … 269 271 } 270 272 %> 273 <tbl:toolbar 274 visible="<%=mode.hasToolbar()%>" 275 subclass="topborder" 276 > 277 <tbl:button 278 disabled="<%=createPermission ? false : true%>" 279 image="new.gif" 280 onclick="newItem()" 281 title="New…" 282 tooltip="<%=createPermission ? "Create new sample" : "You do not have permission to create samples"%>" 283 /> 284 <tbl:button 285 disabled="<%=createPermission ? false : true%>" 286 image="new_pooled.gif" 287 onclick="newPooledItem()" 288 title="Pool…" 289 tooltip="<%=createPermission ? "Create new pooled sample" : "You do not have permission to create samples"%>" 290 /> 291 <tbl:button 292 image="delete.gif" 293 onclick="deleteItems()" 294 title="Delete" 295 tooltip="Delete the selected items" 296 /> 297 <tbl:button 298 image="restore.gif" 299 onclick="restoreItems()" 300 title="Restore" 301 tooltip="Restore the selected (deleted) items" 302 /> 303 <tbl:button 304 image="share.gif" 305 onclick="shareItems()" 306 title="Share…" 307 tooltip="Share the selected items" 308 /> 309 <tbl:button 310 image="take_ownership.png" 311 onclick="setOwner()" 312 title="Set owner…" 313 tooltip="Change owner of the selected items" 314 /> 315 <tbl:button 316 image="columns.gif" 317 onclick="configureColumns()" 318 title="Columns…" 319 tooltip="Show, hide and re-order columns" 320 /> 321 <tbl:button 322 image="add.png" 323 onclick="newBioMaterialList()" 324 title="New biomaterial list…" 325 tooltip="Create a new biomaterial list from matching samples" 326 visible="<%=sc.hasPermission(Permission.CREATE, Item.BIOMATERIALLIST)%>" 327 /> 328 <tbl:button 329 image="place_on_plate.png" 330 onclick="placeOnPlate()" 331 title="Place on plate…" 332 tooltip="Place the selected/matching samples on a bioplate" 333 /> 334 <tbl:button 335 image="import.gif" 336 onclick="runPlugin('ImportItems')" 337 title="Import…" 338 tooltip="Import data" 339 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>" 340 /> 341 <tbl:button 342 image="export.gif" 343 onclick="runPlugin('ExportItems')" 344 title="Export…" 345 tooltip="Export data" 346 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>" 347 /> 348 <tbl:button 349 image="runplugin.gif" 350 onclick="runPlugin('RunListPlugin')" 351 title="Run plugin…" 352 tooltip="Run a plugin" 353 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>" 354 /> 355 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 356 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/> 357 </tbl:toolbar> 358 359 271 360 <tbl:table 272 361 id="samples" … … 275 364 sortby="<%=cc.getSortProperty()%>" 276 365 direction="<%=cc.getSortDirection()%>" 277 title="<%=title%>"278 366 action="index.jsp" 279 367 sc="<%=sc%>" … … 530 618 datatype="string" 531 619 /> 532 <tbl:toolbar533 visible="<%=mode.hasToolbar()%>"534 >535 <tbl:button536 disabled="<%=createPermission ? false : true%>"537 image="<%=createPermission ? "new.gif" : "new_disabled.gif"%>"538 onclick="newItem()"539 title="New…"540 tooltip="<%=createPermission ? "Create new sample" : "You do not have permission to create samples"%>"541 />542 <tbl:button543 disabled="<%=createPermission ? false : true%>"544 image="<%=createPermission ? "new_pooled.gif" : "new_pooled_disabled.gif"%>"545 onclick="newPooledItem()"546 title="Pool…"547 tooltip="<%=createPermission ? "Create new pooled sample" : "You do not have permission to create samples"%>"548 />549 <tbl:button550 image="delete.gif"551 onclick="deleteItems()"552 title="Delete"553 tooltip="Delete the selected items"554 />555 <tbl:button556 image="restore.gif"557 onclick="restoreItems()"558 title="Restore"559 tooltip="Restore the selected (deleted) items"560 />561 <tbl:button562 image="share.gif"563 onclick="shareItems()"564 title="Share…"565 tooltip="Share the selected items"566 />567 <tbl:button568 image="take_ownership.png"569 onclick="setOwner()"570 title="Set owner…"571 tooltip="Change owner of the selected items"572 />573 <tbl:button574 image="columns.gif"575 onclick="configureColumns()"576 title="Columns…"577 tooltip="Show, hide and re-order columns"578 />579 <tbl:button580 image="add.png"581 onclick="newBioMaterialList()"582 title="New biomaterial list…"583 tooltip="Create a new biomaterial list from matching samples"584 visible="<%=sc.hasPermission(Permission.CREATE, Item.BIOMATERIALLIST)%>"585 />586 <tbl:button587 image="place_on_plate.png"588 onclick="placeOnPlate()"589 title="Place on plate…"590 tooltip="Place the selected/matching samples on a bioplate"591 />592 <tbl:button593 image="import.gif"594 onclick="runPlugin('ImportItems')"595 title="Import…"596 tooltip="Import data"597 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"598 />599 <tbl:button600 image="export.gif"601 onclick="runPlugin('ExportItems')"602 title="Export…"603 tooltip="Export data"604 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"605 />606 <tbl:button607 image="runplugin.gif"608 onclick="runPlugin('RunListPlugin')"609 title="Run plugin…"610 tooltip="Run a plugin"611 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"612 />613 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"614 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>615 </tbl:toolbar>616 620 <tbl:navigator 617 621 page="<%=cc.getPage()%>" … … 944 948 %> 945 949 </tbl:table> 946 <base:buttongroup clazz="fixedatbottom"> 950 </div> 951 952 <base:buttongroup subclass="dialogbuttons"> 947 953 <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" /> 948 954 <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" /> 949 955 <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" /> 950 956 </base:buttongroup> 951 <br><br><br>952 957 </base:body> 953 958 </base:page> -
trunk/www/biomaterials/samples/view_sample.jsp
r5910 r5918 188 188 </base:head> 189 189 <base:body> 190 <p> 191 <p:path> 192 <p:pathelement title="Samples" href="<%="index.jsp?ID="+ID%>" /> 193 <p:pathelement title="<%=HTML.encodeTags(sample.getName())%>" /> 194 </p:path> 190 <p:path><p:pathelement 191 title="Samples" href="<%="index.jsp?ID="+ID%>" /><p:pathelement 192 title="<%=HTML.encodeTags(sample.getName())%>" /></p:path> 195 193 196 <t:tabcontrol id="main" active="<%=tab%>" switch="switchTab" remember="false"> 194 <t:tabcontrol id="main" 195 subclass="content mastertabcontrol" 196 active="<%=tab%>" switch="switchTab" remember="false"> 197 197 <t:tab id="properties" title="Properties"> 198 198 199 <tbl:toolbar 200 > 201 <tbl:button 202 disabled="<%=writePermission ? false : true%>" 203 image="<%=writePermission ? "edit.gif" : "edit_disabled.gif"%>" 204 onclick="editItem()" 205 title="Edit…" 206 tooltip="<%=writePermission ? "Edit this sample" : "You do not have permission to edit this sample"%>" 207 /> 208 <tbl:button 209 disabled="<%=deletePermission ? false : true%>" 210 image="<%=deletePermission ? "delete.gif" : "delete_disabled.gif"%>" 211 onclick="deleteItem()" 212 title="Delete" 213 visible="<%=!sample.isRemoved()%>" 214 tooltip="<%=deletePermission ? "Delete this sample" : "You do not have permission to delete this sample"%>" 215 /> 216 <tbl:button 217 disabled="<%=writePermission ? false : true%>" 218 image="<%=writePermission ? "restore.gif" : "restore_disabled.gif"%>" 219 onclick="restoreItem()" 220 title="Restore" 221 visible="<%=sample.isRemoved()%>" 222 tooltip="<%=writePermission ? "Restore this sample" : "You do not have permission to restore this sample"%>" 223 /> 224 <tbl:button 225 disabled="<%=sharePermission ? false : true%>" 226 image="<%=sharePermission ? "share.gif" : "share_disabled.gif"%>" 227 onclick="shareItem()" 228 title="Share…" 229 tooltip="<%=sharePermission ? "Share this sample to other user, groups and projects" : "You do not have permission to share this sample"%>" 230 /> 231 <tbl:button 232 disabled="<%=setOwnerPermission ? false : true%>" 233 image="<%=setOwnerPermission ? "take_ownership.png" : "take_ownership_disabled.png"%>" 234 onclick="setOwner()" 235 title="Set owner…" 236 tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>" 237 /> 238 <tbl:button 239 image="add.png" 240 onclick="newSample()" 241 title="New child sample…" 242 tooltip="Create a new child sample from this sample" 243 visible="<%=sc.hasPermission(Permission.CREATE, Item.SAMPLE) && usePermission%>" 244 /> 245 <tbl:button 246 image="add.png" 247 onclick="newExtract()" 248 title="New child extract…" 249 tooltip="Create a new extract from this sample" 250 visible="<%=sc.hasPermission(Permission.CREATE, Item.EXTRACT) && usePermission%>" 251 /> 252 <tbl:button 253 image="import.gif" 254 onclick="runPlugin('ImportItem')" 255 title="Import…" 256 tooltip="Import data" 257 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>" 258 /> 259 <tbl:button 260 image="export.gif" 261 onclick="runPlugin('ExportItem')" 262 title="Export…" 263 tooltip="Export data" 264 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>" 265 /> 266 <tbl:button 267 image="runplugin.gif" 268 onclick="runPlugin('RunPlugin')" 269 title="Run plugin…" 270 tooltip="Run a plugin" 271 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>" 272 /> 273 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 274 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/> 275 <tbl:button 276 image="help.png" 277 onclick="<%="Main.openHelp('" + ID +"', 'sample.view.properties')"%>" 278 title="Help…" 279 tooltip="Get help about this page" 280 /> 281 </tbl:toolbar> 282 <div class="boxedbottom"> 283 <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(sample)%></i></div> 284 <% 285 if (sample.isRemoved() || sample.isShared()) 286 { 287 %> 288 <div class="itemstatus"> 199 <div> 200 <table class="fullform bottomborder"> 201 <tr> 202 <th class="itemstatus"> 289 203 <base:icon 290 image="<%=deletePermanentlyPermission ? "deleted.gif" : "deleted_disabled.gif"%>" 291 onclick="<%=deletePermanentlyPermission ? "deleteItemPermanently()" : null%>" 292 tooltip="<%=deletePermanentlyPermission ? "Permanently delete this item" : null%>" 293 visible="<%=isRemoved%>"> This item has been flagged for deletion<br></base:icon> 204 image="shared.gif" 205 visible="<%=sample.isShared()%>" 206 tooltip="This item is shared to other users, groups and/or projects" 207 /> 208 <base:icon 209 image="deleted.gif" 210 onclick="deleteItemPermanently()" 211 tooltip="This item has been flagged for deletion. Click to delete it now." 212 enabled="<%=deletePermanentlyPermission %>" 213 visible="<%=isRemoved%>" 214 /> 294 215 <base:icon image="used.gif" 295 216 onclick="showUsingItems()" 296 tooltip="Show the items that are using this one" 297 visible="<%=isUsed%>"> This item is used by other items and can't be permanently deleted<br></base:icon> 298 <base:icon image="shared.gif" 299 visible="<%=sample.isShared()%>"> This item is shared to other users, groups and/or projects</base:icon> 300 </div> 301 <% 302 } 303 %> 304 <table class="form" cellspacing="0"> 305 <tr> 306 <td class="prompt">Name</td> 217 tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one" 218 visible="<%=isRemoved && isUsed%>" /> 219 </th> 220 <td style="padding: 0px;"> 221 222 <tbl:toolbar subclass="bottomborder"> 223 <tbl:button 224 disabled="<%=writePermission ? false : true%>" 225 image="edit.gif" 226 onclick="editItem()" 227 title="Edit…" 228 tooltip="<%=writePermission ? "Edit this sample" : "You do not have permission to edit this sample"%>" 229 /> 230 <tbl:button 231 disabled="<%=deletePermission ? false : true%>" 232 image="delete.gif" 233 onclick="deleteItem()" 234 title="Delete" 235 visible="<%=!sample.isRemoved()%>" 236 tooltip="<%=deletePermission ? "Delete this sample" : "You do not have permission to delete this sample"%>" 237 /> 238 <tbl:button 239 disabled="<%=writePermission ? false : true%>" 240 image="restore.gif" 241 onclick="restoreItem()" 242 title="Restore" 243 visible="<%=sample.isRemoved()%>" 244 tooltip="<%=writePermission ? "Restore this sample" : "You do not have permission to restore this sample"%>" 245 /> 246 <tbl:button 247 disabled="<%=sharePermission ? false : true%>" 248 image="share.gif" 249 onclick="shareItem()" 250 title="Share…" 251 tooltip="<%=sharePermission ? "Share this sample to other user, groups and projects" : "You do not have permission to share this sample"%>" 252 /> 253 <tbl:button 254 disabled="<%=setOwnerPermission ? false : true%>" 255 image="take_ownership.png" 256 onclick="setOwner()" 257 title="Set owner…" 258 tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>" 259 /> 260 <tbl:button 261 image="add.png" 262 onclick="newSample()" 263 title="New child sample…" 264 tooltip="Create a new child sample from this sample" 265 visible="<%=sc.hasPermission(Permission.CREATE, Item.SAMPLE) && usePermission%>" 266 /> 267 <tbl:button 268 image="add.png" 269 onclick="newExtract()" 270 title="New child extract…" 271 tooltip="Create a new extract from this sample" 272 visible="<%=sc.hasPermission(Permission.CREATE, Item.EXTRACT) && usePermission%>" 273 /> 274 <tbl:button 275 image="import.gif" 276 onclick="runPlugin('ImportItem')" 277 title="Import…" 278 tooltip="Import data" 279 visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>" 280 /> 281 <tbl:button 282 image="export.gif" 283 onclick="runPlugin('ExportItem')" 284 title="Export…" 285 tooltip="Export data" 286 visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>" 287 /> 288 <tbl:button 289 image="runplugin.gif" 290 onclick="runPlugin('RunPlugin')" 291 title="Run plugin…" 292 tooltip="Run a plugin" 293 visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>" 294 /> 295 <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 296 wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/> 297 <tbl:button 298 image="help.png" 299 onclick="<%="Main.openHelp('" + ID +"', 'sample.view.properties')"%>" 300 title="Help…" 301 tooltip="Get help about this page" 302 /> 303 </tbl:toolbar> 304 </td> 305 </tr> 306 <tr> 307 <th>Name</th> 307 308 <td><%=HTML.encodeTags(sample.getName())%></td> 308 309 </tr> 309 310 <tr> 310 <t d class="prompt">Type</td>311 <th>Type</th> 311 312 <td><base:propertyvalue item="<%=sample%>" property="itemSubtype" /></td> 312 313 </tr> 313 314 <tr> 314 <t d class="prompt">External ID</td>315 <th>External ID</th> 315 316 <td><%=HTML.encodeTags(sample.getExternalId())%></td> 316 317 </tr> 317 318 <tr> 318 <t d class="prompt">Created</td>319 <th>Created</th> 319 320 <td><%=dateFormatter.format(creationEvent.getEventDate())%></td> 320 321 </tr> 321 322 <tr> 322 <t d class="prompt">Registered</td>323 <th>Registered</th> 323 324 <td><%=dateFormatter.format(creationEvent.getEntryDate())%></td> 324 325 </tr> 325 326 <tr> 326 <t d class="prompt">Protocol</td>327 <th>Protocol</th> 327 328 <td><base:propertyvalue item="<%=creationEvent%>" property="protocol" /></td> 328 329 </tr> 329 330 <tr> 330 <t d class="prompt">Original quantity</td>331 <th>Original quantity</th> 331 332 <td><%=Values.formatNumber(sample.getOriginalQuantity(), 2, " µg")%></td> 332 333 </tr> 333 334 <tr> 334 <t d class="prompt">Remaining quantity</td>335 <th>Remaining quantity</th> 335 336 <td><%=Values.formatNumber(sample.getRemainingQuantity(), 2, " µg")%></td> 336 337 </tr> 337 338 <tr> 338 <t d class="prompt">Bioplate</td>339 <th>Bioplate</th> 339 340 <td> 340 341 <base:propertyvalue item="<%=sample%>" property="bioWell.bioPlate" /> … … 357 358 </tr> 358 359 <tr> 359 <t d class="prompt">Owner</td>360 <th>Owner</th> 360 361 <td><base:propertyvalue item="<%=sample%>" property="owner" /></td> 361 362 </tr> 362 <tr > 363 <td class="prompt">Description</td> 363 <tr> 364 <th>Permissions</th> 365 <td><%=PermissionUtil.getFullPermissionNames(sample)%></td> 366 </tr> 367 <tr> 368 <th>Description</th> 364 369 <td><%=HTML.niceFormat(sample.getDescription())%></td> 365 370 </tr> 366 371 </table> 367 372 </div> 373 368 374 <% 369 375 SpecialQuery<BioMaterialEventSource> sourceQuery = creationEvent.getEventSources(); … … 629 635 <% 630 636 } 631 %> 632 </div> 637 %> 633 638 </t:tab> 634 639 635 640 <t:tab id="annotations" title="Annotations & parameters" 636 641 tooltip="View annotation values and protocol parameters"> 637 <div class="boxed">638 642 <jsp:include page="../../common/annotations/list_annotations.jsp"> 639 643 <jsp:param name="item_type" value="<%=itemType.name()%>" /> … … 641 645 <jsp:param name="ID" value="<%=ID%>" /> 642 646 </jsp:include> 643 </div>644 647 </t:tab> 645 648 <t:tab id="events" title="Events" /> -
trunk/www/common/overview/failures.jsp
r5903 r5918 120 120 padding-top: 2px; 121 121 padding-bottom: 2px; 122 position: fixed;123 top: 0px;122 xposition: fixed; 123 xtop: 0px; 124 124 width:100%; 125 125 background: #ffffff; … … 128 128 </base:head> 129 129 130 <base:body> 130 <base:body> 131 <div class="absolutefull" onmousemove="parent.DragDrop.drag(event)" onmouseup="parent.DragDrop.endDrag(event)" > 132 131 133 <div class="summary"> 132 134 <b> … … 201 203 } 202 204 %> 205 </div> 203 206 </base:body> 204 207 </base:page> -
trunk/www/common/overview/frameset.jsp
r5651 r5918 36 36 final String ID = sc.getId(); 37 37 final String showFailures = request.getParameter("show_failures"); 38 final String root = request.getContextPath(); 38 39 %> 39 <base:page type="frameset" title=""> 40 <base:head /> 41 <frameset cols="400,*" frameborder="yes" border="5"> 42 <frame name="tree" 43 src="tree.jsp?ID=<%=ID%>&show_failures=<%=showFailures%>" 44 scrolling="auto" marginwidth="0" marginheight="4" frameborder="1" 45 > 46 <frameset rows="*,250" framborder="yes" border="5"> 47 <frame name="info" 48 src="info.jsp?ID=<%=ID%>&show_failures=<%=showFailures%>" 49 scrolling="auto" marginwidth="0" marginheight="4" frameborder="1" 50 > 51 <frame name="failures" 52 src="failures.jsp?ID=<%=ID%>&show_failures=<%=showFailures%>" 53 scrolling="auto" marginwidth="0" marginheight="4" frameborder="1" 54 > 55 </frameset> 56 </frameset> 40 <base:page type="popup" title=""> 41 <base:head scripts="dragdrop.js"> 42 <script> 43 44 function repositionX(deltaX, deltaY) 45 { 46 var f1 = document.getElementById('f1'); 47 var d1 = document.getElementById('d1'); 48 var f2 = document.getElementById('f2'); 49 50 f1.style.width = (parseInt(f1.style.width) +deltaX) + 'px'; 51 d1.style.left = (parseInt(d1.style.left) + deltaX) + 'px'; 52 f2.style.left = (parseInt(f2.style.left) + deltaX) + 'px'; 53 } 54 function repositionY(deltaX, deltaY) 55 { 56 var f3 = document.getElementById('f3'); 57 var d2 = document.getElementById('d2'); 58 var f4 = document.getElementById('f4'); 59 60 f3.style.bottom = (parseInt(f3.style.bottom) + deltaY) + 'px'; 61 d2.style.bottom = (parseInt(d2.style.bottom) + deltaY) + 'px'; 62 f4.style.height = (parseInt(f4.style.height) + deltaY) + 'px'; 63 } 64 </script> 65 </base:head> 66 <base:body> 67 <div class="absolutefull" onmousemove="DragDrop.drag(event)" onmouseup="DragDrop.endDrag(event)"> 68 <div id="f1" class="absolutefull" style="width: 394px;"><iframe name="tree" 69 src="<%=root %>/common/overview/tree.jsp?ID=<%=ID%>&show_failures=<%=showFailures%>" 70 style="width: 100%; height: 100%;" 71 ></iframe></div> 72 73 <div id="d1" class="absolutefull filled leftborder rightborder" 74 style="left: 394px; width: 4px; cursor: e-resize; z-index: 99;" 75 onmousedown="DragDrop.beginDrag(event, true, false, repositionX)" 76 ></div> 77 78 <div id="f2" class="absolutefull" style="left: 400px;"> 79 80 <div id="f3" class="absolutefull" style="bottom: 250px;"><iframe name="info" 81 src="<%=root %>/common/overview/info.jsp?ID=<%=ID%>&show_failures=<%=showFailures%>" 82 style="width: 100%; height: 100%;" 83 ></iframe></div> 84 85 <div id="d2" class="absolutefull filled topborder bottomborder" 86 style="bottom: 244px; height: 4px; top: auto; cursor: n-resize; z-index: 99;" 87 onmousedown="DragDrop.beginDrag(event, false, true, repositionY)" 88 ></div> 89 90 <div id="f4" class="absolutefull" style="height: 244px; bottom: 0px; top: auto;"><iframe name="failures" 91 src="<%=root %>/common/overview/failures.jsp?ID=<%=ID%>&show_failures=<%=showFailures%>" 92 style="width: 100%; height: 100%;" 93 ></iframe></div> 94 </div> 95 </div> 96 </base:body> 57 97 </base:page> 58 98 -
trunk/www/common/overview/info.jsp
r5903 r5918 85 85 if (path.length() > 0) 86 86 { 87 path += "<img src=\"../../images/bullet.gif\" style=\"padding: 0px 0px 3px 0px;\" >"; 87 //path += "<img src=\"../../images/bullet.gif\" style=\"padding: 0px 0px 3px 0px;\" >"; 88 path += " <b>›</b> "; 88 89 } 89 90 path += Base.getLink(ID, parent.getTitle(), item.getType(), item.getId(), item.hasPermission(Permission.WRITE)); … … 126 127 %> 127 128 <base:page title="" type="popup"> 128 <base:head s cripts="" styles="newjoust.css">129 <base:head styles="newjoust.css"> 129 130 <script language="JavaScript"> 130 131 function editItem(itemType, itemId, extraUrl) … … 154 155 Main.viewOrEditItem('<%=ID%>', itemType, itemId, true, '&tab=datafiles'); 155 156 } 157 156 158 </script> 157 159 <style> … … 164 166 165 167 <base:body> 166 <table class="form"> 168 <div class="absolutefull" onmousemove="parent.DragDrop.drag(event)" onmouseup="parent.DragDrop.endDrag(event)"> 169 <div> 170 <table class="fullform bottomborder outlined"> 167 171 <tr> 168 <t d class="prompt">Path</td>172 <th>Path</th> 169 173 <td><%=getPath(dc, ID, node)%></td> 170 174 </tr> … … 209 213 %> 210 214 <tr> 211 <td class="prompt"> 212 <%=dft == null ? "Data file" : HTML.encodeTags(dft.getName())%> 213 </td> 215 <th><%=dft == null ? "Data file" : HTML.encodeTags(dft.getName())%></th> 214 216 <td> 215 217 <%=Base.getLinkedFile(ID, file, deniedFile, true, true, "../../")%> … … 222 224 %> 223 225 <tr> 224 <t d class="prompt"><%=HTML.encodeTags(node.getTitle())%></td>226 <th><%=HTML.encodeTags(node.getTitle())%></th> 225 227 <td> 226 228 <%=notFound ? "<i>- not found -</i>" : "<i>- denied -</i>"%> … … 251 253 %> 252 254 <tr> 253 <td class="prompt"> 254 Any-to-any link 255 </td> 255 <th>Any-to-any link</th> 256 256 <td> 257 <table border="0" cellpadding="0" cellspacing="0">257 <table> 258 258 <tr> 259 259 <td><%=Base.getLinkedName(ID, any, false, true) %></td> … … 270 270 %> 271 271 <tr> 272 <t d class="prompt"><%=node.getNodeType() == Node.Type.FOLDER ?273 "Folder" : item != null ? item.getType().toString() : "Item"%></t d>272 <th><%=node.getNodeType() == Node.Type.FOLDER ? 273 "Folder" : item != null ? item.getType().toString() : "Item"%></th> 274 274 <td> 275 275 <% … … 303 303 %> 304 304 <tr> 305 <t d class="prompt">Errors (children)</td>305 <th>Errors (children)</th> 306 306 <% 307 307 if (showFailures) … … 320 320 </tr> 321 321 <tr> 322 <t d class="prompt">Warnings (children)</td>322 <th>Warnings (children)</th> 323 323 <% 324 324 if (showFailures) … … 342 342 %> 343 343 <tr> 344 <t d class="prompt">Description</td>344 <th>Description</th> 345 345 <td><%=HTML.niceFormat(nameable.getDescription())%></td> 346 346 </tr> … … 349 349 %> 350 350 </table> 351 <p> 351 </div> 352 352 353 353 354 <% … … 594 595 } 595 596 %> 597 </div> 596 598 </base:body> 597 599 </base:page> -
trunk/www/common/overview/options.jsp
r5914 r5918 163 163 { 164 164 width: 20em; 165 max-width: 20em; 165 166 } 166 167 -
trunk/www/common/overview/overview.jsp
r5901 r5918 58 58 ExtensionsInvoker invoker = ExtensionsControl.useExtensions(jspContext, 59 59 "net.sf.basedb.clients.web.toolbar.item.overview"); 60 final String showFailures = request.getParameter("show_failures"); 60 61 %> 61 62 <base:page type="include"> … … 64 65 <ext:stylesheets context="<%=jspContext%>" /> 65 66 <script language="JavaScript"> 66 var timer = 0;67 var inCall = false;68 function adjustIFrameSize()69 {70 if (inCall) return;71 inCall = true;72 var iframeElement = document.getElementById("idOverview");73 // Find the top coordinate of the IFrame74 var offsetTop = 10;75 var offsetTrail = iframeElement;76 while (offsetTrail)77 {78 offsetTop += offsetTrail.offsetTop;79 offsetTrail = offsetTrail.offsetParent;80 }81 82 // Find the browser window height83 var windowHeight = Main.getWindowHeight();84 iframeElement.height = windowHeight-offsetTop;85 86 // Adjust the height of the frames87 var iframe = window.frames['overview'];88 var tree = iframe.frames['tree'].document.getElementById('main');89 if (tree) tree.style.height = (iframeElement.height-8)+'px';90 var joust = iframe.frames['tree'].document.getElementById('joust');91 if (joust) joust.style.height = (iframeElement.height-8)+'px';92 var info = iframe.frames['info'].document.getElementById('main');93 if (info) info.style.height = iframeElement.height+'px';94 inCall = false;95 }96 function setTimer()97 {98 if (inCall) return;99 if (timer) clearTimeout(timer);100 timer = setTimeout('adjustIFrameSize()', 150);101 }102 67 function expandAll() 103 68 { … … 126 91 function validationOptions() 127 92 { 128 frames['overview'].Main.openPopup('<%=root%>/common/overview/options.jsp?ID=<%=ID%>', 'ValidationOptions', 700, 500); 129 } 130 if (window.addEventListener) 131 { 132 window.addEventListener('resize', setTimer, false); 133 } 134 else if (window.attachEvent) 135 { 136 window.attachEvent('onresize', setTimer); 93 frames['overview'].Main.openPopup('<%=root%>/common/overview/options.jsp?ID=<%=ID%>', 'ValidationOptions', 750, 500); 137 94 } 138 95 </script> 139 <tbl:toolbar >96 <tbl:toolbar subclass="absolutefull" style="height: 2em;"> 140 97 <tbl:button image="refresh.gif" title="Reset" 141 98 onclick="reset()" tooltip="Unload all cached items and restart from the root item again." … … 152 109 onclick="<%="Main.openHelp('" + ID +"', 'item.overview')"%>" 153 110 tooltip="Get help about this page" 154 /> 155 111 /> 156 112 </tbl:toolbar> 157 <iframe name="overview" id="idOverview" 113 <div class="absolutefull topborder" style="top: 2em;"><iframe 114 name="overview" id="idOverview" 158 115 src="<%=root%>/common/overview/index.jsp?ID=<%=ID%>&cmd=Overview&item_type=<%=itemType.name()%>&item_id=<%=itemId%>" 159 frameborder="0" vspace="0" hspace="0" 160 marginwidth="0" marginheight="0" scrolling="no" 161 style="width: 100%; border: 1px solid #999999; border-top: 0px; overflow: visible"></iframe> 116 style="width: 100%; height: 100%;"></iframe></div> 162 117 163 118 </base:body> -
trunk/www/common/overview/tree.jsp
r5903 r5918 213 213 function initialise() 214 214 { 215 if (parent && parent.parent && parent.parent.adjustIFrameSize) parent.parent.adjustIFrameSize();216 215 IconStore.init(); 217 216 var path = getRoot()+'images/joust/'; … … 324 323 return childNodes.length > 0; 325 324 } 326 327 325 </script> 328 326 <style> 329 .subtitle { 330 font-size: 10px; 331 color: #777777; 332 } 333 .selected .subtitle { 334 color: #D0D0D0; 327 .subtitle 328 { 329 font-size: 0.85em; 330 color: #666666; 331 } 332 .selected .subtitle 333 { 334 color: #E8E8E8; 335 335 } 336 336 </style> … … 338 338 </base:head> 339 339 <base:body onload="initialise()"> 340 <div id="main" class="joust " style="width:100%;">341 <div id="joust" style="overflow: auto; ">340 <div id="main" class="joust absolutefull" onmousemove="parent.DragDrop.drag(event)" onmouseup="parent.DragDrop.endDrag(event)"> 341 <div id="joust" style="overflow: auto; height: 100%;"> 342 342 </div> 343 343 </div> -
trunk/www/exception/not_logged_in.jsp
r5827 r5918 51 51 final String redirect = Values.getString((String)request.getAttribute("redirect")); 52 52 %> 53 <base:page type="default" menu="exception" title=" Not logged in">53 <base:page type="default" menu="exception" title=""> 54 54 <base:head scripts="exception.js" styles="login.css"> 55 55 <script language="JavaScript"> … … 73 73 { 74 74 frm.login.focus(); 75 frm.login.select(); 75 76 } 76 77 else … … 111 112 </base:head> 112 113 <base:body onload="init()"> 113 <div align="center"> 114 114 115 <form action="<%=root%>login.jsp?again=1" method="post" name="login" target="Login" onsubmit="return false;"> 115 <input type="hidden" name="ID" value="<%=ID%>"> 116 <input type="hidden" name="redirect" value="<%=redirect%>"> 117 118 <table class="loginform" width="100%" border="0" align="center"> 119 <tr><td colspan="2" align="center"> 120 <div class="error" id="timeout" style="display: none;"> 116 <input type="hidden" name="ID" value="<%=ID%>"> 117 <input type="hidden" name="redirect" value="<%=redirect%>"> 118 119 <table style="margin: auto; width: 600px; margin-top:5em; "> 120 <tr> 121 <td> 122 123 <table style="width: 100%;"> 124 <tr> 125 <td style="background-color: #000000; border-radius: 4px 0px 0px 4px;"><img src="<%=root%>images/baselogo.png" alt="BASE logo"></td> 126 <td> 127 <div id="loginform"> 128 <table> 129 <tr> 130 <th>Login</th> 131 <td><input class="text" type="text" name="login" 132 maxlength="100" style="width: 12em;" 133 tabindex="0" 134 > 135 </td> 136 <td></td> 137 </tr> 138 <tr> 139 <th>Password</th> 140 <td> 141 <input class="text" type="password" name="password" maxlength="80" 142 onkeypress="return Forms.submitOnEnter(event, doLogin)" 143 style="width: 12em;" 144 tabindex="0" 145 > 146 </td> 147 <td> 148 <base:buttongroup> 149 <base:button image="login.png" onclick="doLogin();" title="Login" /> 150 <base:button onclick="mainPage();" title="Cancel" /> 151 </base:buttongroup> 152 </td> 153 </tr> 154 <tr> 155 <th></th> 156 <td colspan="2"> 157 <% 158 String forgotPassword = sc.getClientDefaultSetting("server.forgotten.password"); 159 String getAccount = sc.getClientDefaultSetting("server.get.account"); 160 if (forgotPassword != null) 161 { 162 %> 163 <base:icon image="bullet.gif" /> 164 <a href="javascript:Main.openPopup('info/forgot_password.jsp?ID=<%=ID%>', 'ForgotPassword', 450, 300)" title="Click here if you have forgotten your password">Forgot your password?</a> 165 <% 166 } 167 if (getAccount != null) 168 { 169 %> 170 <base:icon image="bullet.gif" /> 171 <a href="javascript:Main.openPopup('info/get_account.jsp?ID=<%=ID%>', 'GetAccount', 450, 300)" title="Click here if you want to get an account on this server">Get an account!</a> 172 <% 173 } 174 %> 175 </td> 176 </tr> 177 </table> 178 </div> 179 </td> 180 </tr> 181 </table> 182 183 <div class="messagecontainer error" id="timeout" style="display: none;"> 184 <b>Not logged in</b><br> 121 185 You have been automatically logged out due to inactivity or because the 122 server has been restarted. <br>186 server has been restarted. 123 187 You may log in again and continue your work but unsaved changes 124 188 may have been lost. 125 189 </div> 126 </td></tr> 127 <tr> 128 <td> 129 <div align="center"> 130 <img src="<%=root%>images/baselogo.png" alt="BASE logo" width=122 height=58> 131 </div> 132 </td> 133 <td> 134 <table> 135 <tr> 136 <td class="prompt">Login</td> 137 <td><input class="text" type="text" name="login" value="" size=15 maxlength=100></td> 138 </tr> 139 <tr> 140 <td class="prompt">Password</td> 141 <td> 142 <input class="text" type="password" name="password" size=15 maxlength=80 143 onkeypress="return Forms.submitOnEnter(event, doLogin)"> 144 </td> 145 <td><base:button image="login.png" onclick="doLogin();" title="Login" /></td> 146 <td><base:button onclick="mainPage();" title="Cancel" /></td> 147 </tr> 148 <tr> 149 <td colspan="4"> 150 <% 151 String forgotPassword = sc.getClientDefaultSetting("server.forgotten.password"); 152 if (forgotPassword != null) 153 { 154 %> 155 <base:icon image="bullet.gif" /> 156 <a href="javascript:Main.openPopup('<%=root%>info/forgot_password.jsp?ID=<%=ID%>', 'ForgotPassword', 500, 300)" title="Click here if you have forgotten your password">Forgot your password?</a> 157 <% 158 } 159 %> 160 </td> 161 </tr> 162 </table> 163 </td> 164 </tr> 165 </table> 166 </form> 167 </div> 190 191 192 </td> 193 </tr> 194 </table> 195 196 </form> 168 197 </base:body> 169 198 </base:page> -
trunk/www/footnote.jsp
r5911 r5918 71 71 setTimeout('location.reload(true);', 1000); 72 72 } 73 function showMessages() 74 { 75 window.top['main'].location.href = getRoot()+'my_base/messages/index.jsp?ID=<%=ID%>'; 76 } 73 77 function readBroadcast() 74 78 { … … 78 82 </base:head> 79 83 <base:body onload="setTimeout('location.reload(true);', 60000);"> 84 <div class="footer"> 85 <table style="width: 100%; height: 100%;"><tr><td> 80 86 <% 81 87 if (broadcastTitle != null) … … 134 140 Message message = messages.get(0); 135 141 %> 136 <div class="message"> 137 <table> 138 <tr> 139 <td><b>You have a new message</b> 140 <td> 141 <a href="javascript:readMessage(<%=message.getId()%>)" title="Read the message"><base:icon image="message.gif" tooltip="Read the message"/> 142 <%=HTML.encodeTags(message.getName())%> (From: <%=HTML.encodeTags(message.getFrom())%>)</a> 143 </td> 144 </tr> 145 </table> 146 </div> 142 <base:icon image="message.gif" tooltip="Read the message" 143 onclick="<%="readMessage(" + message.getId() + ")"%>" 144 > <%=HTML.encodeTags(message.getName())%> (From: <%=HTML.encodeTags(message.getFrom())%>) 145 </base:icon> 147 146 <% 148 147 } … … 150 149 { 151 150 %> 152 <div class="message"> 153 <table> 154 <tr> 155 <td><b>You have <%=numNewMessages%> new messages</b> 156 <td><a href="my_base/messages/index.jsp?ID=<%=ID%>" target="main"><base:icon image="message.gif" tooltip="Read the messages"/></a></td> 157 </tr> 158 </table> 159 </div> 151 <base:icon image="message.gif" tooltip="Read the messages" 152 onclick="showMessages()"> <b>You have <%=numNewMessages%> new messages</b></base:icon> 160 153 <% 161 154 } 162 155 %> 156 </td></tr></table> 157 </div> 163 158 </base:body> 164 159 </base:page> -
trunk/www/include/menu.jsp
r5909 r5918 435 435 fillText.append(" onclick=\"Menu.toggleTopMenu(document.getElementById('projects'), event.clientX-50, event.clientY); event.cancelBubble = true;\">"); 436 436 fillText.append(activeProject == null ? "<i>- " + menu.getString("noactiveproject.title") + " -</i>" : HTML.encodeTags(activeProject.getName())); 437 fillText.append(" <img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a><span class=\"menuseparator\"> </span>");437 fillText.append(" <img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a><span class=\"menuseparator\"></span>"); 438 438 439 439 fillText.append("<a href=\"javascript:void(0)\" title=\"" + menu.getString("menu.refresh.tooltip") + "\""); 440 440 fillText.append(" onclick=\"location.reload()\">"); 441 fillText.append("<img src=\""+root+"images/refresh.gif\" border=\"0\"></a><span class=\"menuseparator\"> </span>");441 fillText.append("<img src=\""+root+"images/refresh.gif\" border=\"0\"></a><span class=\"menuseparator\"></span>"); 442 442 443 443 fillText.append("<a href=\"javascript:void(0)\" title=\"" + menu.getString("menu.recentitems.tooltip") + "\""); 444 444 fillText.append(" onclick=\"Menu.toggleTopMenu(document.getElementById('mostRecent'), event.clientX-200, event.clientY); event.cancelBubble = true;\">"); 445 fillText.append(" <img src=\""+root+"images/recent.png\" border=\"0\"><img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a><span class=\"menuseparator\"> </span>");445 fillText.append("<img src=\""+root+"images/recent.png\" border=\"0\"><img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a><span class=\"menuseparator\"></span>"); 446 446 447 447 User user = User.getById(dc, sc.getLoggedInUserId()); … … 1200 1200 title="<%=action.getTitle()%>" 1201 1201 icon="<%=action.getIcon()%>" 1202 iconabsolute="true"1203 1202 tooltip="<%=action.getTooltip()%>" 1204 1203 enabled="<%=action.isEnabled()%>" … … 1216 1215 title="<%=action.getTitle()%>" 1217 1216 icon="<%=action.getIcon()%>" 1218 iconabsolute="true"1219 1217 tooltip="<%=action.getTooltip()%>" 1220 1218 enabled="<%=action.isEnabled()%>" … … 1233 1231 // Main menu 1234 1232 %> 1235 <div style="position: fixed; top: 0px; left: 0px; width: 100%; height: 30px; background: #ffffff;">1236 1233 <m:menu 1237 1234 type="horizontal" 1238 clazz="menu_horizontal"1239 1235 id="menubar" 1240 style="top: 5px; left: 8px; width: 98%"1236 style="top: 0px; left: 0px; right: 0px;" 1241 1237 open="click" 1242 1238 filltext="<%=fillText.toString()%>" … … 1272 1268 title="<%=menu.getString("menu.help")%>" 1273 1269 /> 1274 </m:menu></div> 1275 <br><br> 1270 </m:menu> 1276 1271 <% 1277 1272 } -
trunk/www/include/styles/headertabcontrol.css
r5809 r5918 27 27 */ 28 28 29 .tabcontrol, .tabcontrol_bottom { 30 border-left: 1px solid #999999; 31 margin-bottom: 4px; 29 /* TODO - remove. temporary styles while fixing #1655 */ 30 #main.tabcontrol 31 { 32 margin-top: 5em; 32 33 } 33 34 34 .tabcontrol .tabs { 35 border-top: 1px solid #999999; 36 border-bottom: 0px; 37 border-left: 0px; 38 border-right: 0px; 35 #main.mastertabcontrol 36 { 37 margin-top: 0px; 39 38 } 40 39 41 .tabcontrol_bottom .tabs { 42 border-bottom: 1px solid #999999; 43 border-top: 0px; 44 border-left: 0px; 45 border-right: 0px; 40 /* Main tab control */ 41 .tabcontrol 42 { 43 border-color: #A0A0A0; 44 border-style: solid; 45 border-width: 0px; 46 46 } 47 47 48 .tabcontrol .tab { 49 background: #CCCCCC; 50 border-top: 1px solid #FFFFFF; 51 border-left: 1px solid #FFFFFF; 52 border-bottom: 1px solid #999999; 53 border-right: 1px solid #999999; 54 white-space: nowrap; 55 padding: 4px 8px 4px 6px; 56 } 57 .tabcontrol .tab:hover { 58 background: #F0F0F0; 59 cursor: pointer; 48 /* Main content area */ 49 .tabcontrol .tabcontents 50 { 51 background: #FFFFFF; 60 52 } 61 53 62 .tabcontrol_bottom .tab { 63 background: #CCCCCC; 64 border-top: 1px solid #999999; 65 border-left: 1px solid #FFFFFF; 66 border-bottom: 0px; 67 border-right: 1px solid #999999; 54 /* Add border on top or bottom depending on where tabs are */ 55 .tabsatbottom .tabcontents 56 { 57 border: inherit; 58 border-width: 1px 1px 0px 1px; 59 } 60 61 .tabsattop .tabcontents 62 { 63 border: inherit; 64 border-width: 0px 1px 1px 1px; 65 } 66 67 /* Each tab should fill up the main content area */ 68 .tabcontrol .tabcontents > div 69 { 70 height: 100%; 71 } 72 73 /* Tabs */ 74 .tabcontrol .tab 75 { 76 background: #E8E8E8; 68 77 white-space: nowrap; 78 cursor: pointer; 79 border: 1px solid #A0A0A0; 69 80 padding: 2px 6px 2px 4px; 70 81 } 71 82 72 .tabcontrol_bottom .tab:hover { 73 background: #F0F0F0; 74 cursor: pointer; 83 /* Put blue-ish border around tab when hovering */ 84 .tabcontrol .tab:hover 85 { 86 /* Decrese padding to avoid movement */ 87 padding: 1px 5px 1px 3px; 88 border: 2px solid #2288AA; 75 89 } 76 90 77 .tabcontrol .activetab { 91 .tabcontrol .tab.active 92 { 78 93 font-weight: bold; 79 background: #E0E0E0; 80 border-top: 1px solid #FFFFFF; 81 border-left: 1px solid #FFFFFF; 82 border-bottom: 0px; 83 border-right: 1px solid #999999; 84 white-space: nowrap; 85 padding: 4px 8px 4px 6px; 94 background: #E8E8E8; 86 95 } 87 .tabcontrol_bottom .activetab { 88 font-weight: bold; 89 background: #E0E0E0; 90 border-top: 0px; 91 border-left: 1px solid #FFFFFF; 92 border-bottom: 0px; 93 border-right: 1px solid #999999; 94 white-space: nowrap; 95 padding: 3px 6px 2px 4px; 96 97 /* Revert to default for the active tab */ 98 .tabcontrol .tab.active:hover 99 { 100 cursor: auto; 101 border: 1px solid #A0A0A0; 102 padding: 2px 6px 2px 4px; 103 } 104 105 /* Creates a small space between the tabs */ 106 .tabcontrol .tabspace 107 { 108 width: 2px; 109 max-width: 2px; 110 min-width: 2px; 111 } 112 113 /* Specific for tabcontrol with tabs on top */ 114 .tabsattop .tabs 115 { 116 vertical-align: bottom; 117 } 118 119 .tabsattop .tab 120 { 121 /* Rounded corners on top */ 122 border-radius: 5px 5px 0px 0px; 123 } 124 125 /* Hide bottom border from active tab */ 126 .tabsattop .tab.active 127 { 128 border-bottom: 1px solid #E8E8E8 !important; 129 border-top: 2px solid #2288AA !important; 130 padding-top: 1px !important; 131 } 132 133 /* Add bottom border on tabspace */ 134 .tabsattop .tabspace 135 { 136 border-bottom: 1px solid #A0A0A0; 137 } 138 139 .tabsattop .tabfillbefore 140 { 141 width: 5px; 142 min-width: 5px; 143 max-width: 5px; 144 border-bottom: 1px solid #A0A0A0; 145 } 146 147 .tabsattop .tabfillafter 148 { 149 width: 99%; 150 border-bottom: 1px solid #A0A0A0; 151 } 152 153 .mastertabcontrol .tabcontents 154 { 155 position: absolute; 156 top: 2em; 157 left: 0px; 158 right: 0px; 159 bottom: 0px; 160 border-width: 0px !important; 161 overflow: auto; 162 } 163 164 .mastertabcontrol .tabscontainer 165 { 166 position: absolute; 167 top: 0px; 168 height: 2em; 96 169 } 97 170 98 171 99 .tabcontrol .activetab a, .tabcontrol_bottom .activetab a {100 text-decoration: none;101 color: #000000;102 cursor: default;103 }104 .tabcontrol .pretabs, .tabcontrol_bottom .pretabs {105 width: 1%;106 }107 .tabcontrol .tabfill {108 border-bottom: 1px solid #999999;109 border-top: 0px;110 border-left: 0px;111 border-right: 0px;112 width: 99%;113 }114 .tabcontrol_bottom .tabfill {115 border-top: 1px solid #999999;116 border-bottom: 0px;117 border-left: 0px;118 border-right: 0px;119 width: 99%;120 }121 .tabcontrol .tabcontents {122 border-top: 0px solid #000000;123 border-left: 1px solid #FFFFFF;124 border-bottom: 1px solid #999999;125 border-right: 1px solid #999999;126 padding: 4px;127 margin-top: 0px;128 background: #E0E0E0;129 }130 .tabcontrol_bottom .tabcontents {131 border-top: 1px solid #999999;132 border-left: 1px solid #FFFFFF;133 border-bottom: 0px;134 border-right: 1px solid #999999;135 padding: 4px;136 background: #E0E0E0;137 }138 172 139 173 -
trunk/www/include/styles/login.css
r5426 r5918 28 28 */ 29 29 30 .loginform { 31 background: #F0F0F0; 32 border: 1px solid #999999; 30 h3 31 { 32 font-size: 1.2em; 33 font-weight: bold; 34 color: #F0F0F0; 35 margin: 0em 0px 0px 0px; 36 background-image: url('backgrounds/popup_h1.png'); 37 background-color: #224488; 38 background-position: right; 39 background-repeat: no-repeat; 40 overflow: hidden; 41 border: 0px; 33 42 } 34 43 35 .loginform .prompt { 44 #loginform 45 { 46 border: 1px solid #A0A0A0; 47 width: 100%; 48 border-radius: 0px 4px 4px 0px; 49 } 50 51 #loginform > table > tbody > tr > td, #loginform > table > tbody > tr > th 52 { 53 padding: 2px 4px 2px 4px; 54 } 55 56 #loginform > table > tbody > tr > th 57 { 58 background: #E8E8E8; 36 59 font-weight: bold; 37 60 white-space: nowrap; 61 border-top: 1px dotted #A0A0A0; 62 border-right: 1px solid #A0A0A0; 63 width: 10em; 64 text-align: right; 38 65 } 39 66 40 .news { 67 #loginform > table > tbody > tr:first-child > th 68 { 69 border-top: 0px; 41 70 } 42 71 43 .news .item { 72 .messagecontainer 73 { 74 margin-left: 0px; 75 margin-right: 0px; 76 } 77 78 .news 79 {} 80 81 .news .item 82 { 44 83 margin-top: 2px; 45 border-bottom: 1px dotted # 999999;84 border-bottom: 1px dotted #A0A0A0; 46 85 padding-bottom: 2px; 47 86 } 48 87 49 .news .item .date { 50 font-size: smaller; 88 .news .item .date 89 { 90 font-size: 0.75em; 51 91 } 52 92 53 .news .item .headline { 93 .news .item .headline 94 { 54 95 font-weight: bold; 55 96 } 56 97 57 .news .item .text { 98 .news .item .text 99 {} 100 101 .footer 102 { 103 position: absolute; 104 top: 0px; 105 bottom: 0px; 106 left: 0px; 107 right: 0px; 108 border-top: 1px solid #A0A0A0; 109 background: #E8E8E8; 110 padding: 4px 8px 4px 8px;; 58 111 } 59 112 60 .credit { 61 border-top: 1px solid #999999; 62 padding-top: 4px; 113 .credit 114 { 63 115 font-style: italic; 64 116 } 65 117 66 .message { 67 border-top: 1px solid #999999; 68 padding-top: 4px; 69 } 118 .message 119 {} 70 120 71 .welcomesection { 72 border: 1px solid #999999; 73 margin-bottom: 16px; 121 .welcomesection 122 { 123 border: 1px solid #A0A0A0; 124 border-top: 0px; 74 125 padding: 2px; 75 126 } -
trunk/www/include/styles/main.css
r5916 r5918 39 39 background: #FFFFFF; 40 40 font-family: verdana, arial, sans-serif; 41 padding-left: 8px;42 padding-right: 8px;41 padding-left: 0px; 42 padding-right: 0px; 43 43 } 44 44 … … 49 49 } 50 50 51 h1 52 { 53 font-size: 1.7em; 54 font-weight: bold; 55 color: #555577; 56 margin: 0px; 57 white-space: nowrap; 58 } 59 51 52 /* No border around images, align with text */ 53 img 54 { 55 border: 0px; 56 vertical-align: text-bottom; 57 } 60 58 61 59 /* Tables should have no border, padding or cellspacing by default */ … … 71 69 border: 0px; 72 70 } 71 72 body.default h1 73 { 74 position: absolute; 75 left: 0px; 76 right: 0px; 77 top: 2em; 78 /* NOTE! Total height in base units is 1.4*1.4=1.96em */ 79 height: 1.4em; 80 font-size: 1.4em; 81 font-weight: bold; 82 color: #224488; 83 margin: 0px; 84 white-space: nowrap; 85 } 86 87 body.default h1:before 88 { 89 content: '::'; 90 padding-left: 4px; 91 padding-right: 4px; 92 color: #2288AA; 93 } 94 95 96 body.default .content 97 { 98 position: absolute; 99 left: 0px; 100 right: 0px; 101 top: 5em; 102 bottom: 0px; 103 overflow: auto; 104 } 105 73 106 74 107 /* … … 178 211 } 179 212 213 .icon.link.disabled 214 { 215 cursor: default; 216 } 217 218 .icon.disabled img 219 { 220 opacity: 0.4; 221 } 222 180 223 /* 181 224 Notes and messages … … 380 423 } 381 424 382 .highlight:hover , xtr.highlight:hover > td, xtr.highlight:hover > th425 .highlight:hover 383 426 { 384 427 background-color: #F8F8E8 !important; 385 428 outline: 1px solid #2288AA; 429 } 430 431 432 /* 433 Table listings 434 -------------- 435 */ 436 /* 437 A 100% wide and high table with two columns (prompt+value) 438 * Table rows are max one line high by default 439 Use <tr class="double"> to get two or <tr class="dynamic"> 440 to get more 441 * Header column is 150px wide by default 442 Use <table class="fullform smaller"> to get 100px 443 or <table class="fullform larger"> 444 */ 445 table.fullform 446 { 447 width: 100%; 448 height: 100%; 449 background: #E8E8E8; 450 } 451 452 /* Default table row is one line only */ 453 table.fullform > tbody > tr 454 { 455 /* height is really minimum height */ 456 height: 1.75em; 457 max-height: 2em; 458 } 459 460 /* A double hight table row */ 461 table.fullform > tbody > tr.double 462 { 463 /* height is really minimum height */ 464 height: 3.5em; 465 max-height: 4em; 466 vertical-align: top; 467 } 468 469 /* No max hight specified, but expected to be bigger than two lines */ 470 table.fullform > tbody > tr.big 471 { 472 vertical-align: top; 473 } 474 475 table.fullform > tbody > tr.dynamic 476 { 477 height: auto; 478 max-height: 100%; 479 vertical-align: top; 480 } 481 482 /* Expands vertically as needed if only a single tbody */ 483 table.fullform > tbody:first-child > tr.dynamic 484 { 485 height: 100%; 486 max-height: 100%; 487 vertical-align: top; 488 } 489 490 /* The first column should be a header */ 491 table.fullform > tbody > tr > th 492 { 493 width: 10em; 494 max-width: 12em; 495 overflow: auto; 496 text-overflow: ellipsis; 497 font-weight: bold; 498 white-space: nowrap; 499 text-align: left; 500 padding: 1px 4px 1px 6px; 501 border-top: 1px dotted #A0A0A0; 502 border-right: 1px solid #A0A0A0; 503 } 504 505 /* First row has no top border */ 506 table.fullform > tbody > tr:first-child > th, table.fullform > tbody > tr:first-child > td 507 { 508 padding-top: 3px; 509 border-top: 0px; 510 } 511 512 table.fullform > tbody > tr > th.subprompt 513 { 514 font-weight: normal; 515 text-align: right; 516 border-top: 0px; 517 } 518 519 /* A section row should span the entire table */ 520 table.fullform > tbody.section > tr > th 521 { 522 border-top: 1px solid #A0A0A0; 523 border-bottom: 1px solid #A0A0A0; 524 border-right: 0px; 525 white-space: normal; 526 } 527 528 /* First tbody section shouldn't have a top border */ 529 table.fullform > tbody.section:first-child > tr > th 530 { 531 border-top: 0px solid #A0A0A0; 532 } 533 534 /* Regular cells have a white background */ 535 table.fullform > tbody > tr > td 536 { 537 background: #FFFFFF; 538 padding: 0px 2px 0px 2px; 539 } 540 541 /* A smaller header column */ 542 table.fullform.smaller > tbody > tr > th 543 { 544 width: 7em; 545 max-width: 9em; 546 } 547 548 /* A larger header column */ 549 table.fullform.larger > tbody > tr > th 550 { 551 width: 13em; 552 max-width: 15em; 553 } 554 555 /* Make sure that dynamic textarea fill the table row */ 556 table.fullform > tbody > tr.dynamic textarea 557 { 558 height: 97%; 559 } 560 561 /* Use borders between td elements as well (for read-only tables) */ 562 table.fullform.outlined > tbody > tr > td 563 { 564 border-top: 1px dotted #A0A0A0; 565 } 566 table.fullform.outlined > tbody > tr:first-child > td 567 { 568 border-top: 0px; 569 } 570 571 /* no border for a subprompt */ 572 table.fullform.outlined > tbody > tr > th.subprompt + td 573 { 574 border-top: 0px; 575 } 576 577 table.fullform th.itemstatus 578 { 579 text-align: center; 386 580 } 387 581 … … 391 585 */ 392 586 393 h1 { 394 font-weight: bold; 395 color: #555577; 396 } 587 397 588 398 589 h2 { … … 410 601 } 411 602 412 h 3.light{603 h2 { 413 604 color: #333377; 414 605 background: #E0E0E0; … … 437 628 border-bottom: 0px; 438 629 margin-bottom: 2px; 439 }440 441 img {442 vertical-align: middle;443 630 } 444 631 … … 687 874 688 875 .smartinput, .multiselect { 689 border-top: 2px groove #999999; 690 border-left: 2px groove #999999; 691 border-bottom: 2px ridge #FFFFFF; 692 border-right: 2px ridge #FFFFFF; 693 background: #ffffff; 876 border: 1px solid #A0A0A0; 877 background: #ffffff; 878 border-radius: 4px; 879 -moz-border-radius: 3px; 880 } 881 882 .smartinput:hover, .multiselect:hover 883 { 884 border-color: #2288AA; 694 885 } 695 886 … … 716 907 } 717 908 718 .multiselect input {909 .multiselect input, .multiselect input:hover, .multiselect input:focus { 719 910 border: 0px; 720 911 border-right: 1px solid #999999; 912 border-radius: 0px; 913 margin: 0px 2px 0px 2px; 721 914 } 722 915 -
trunk/www/include/styles/menu.css
r5808 r5918 28 28 */ 29 29 30 .menu_horizontal { 30 .menu.horizontal 31 { 31 32 position: fixed; 32 background: #E0E0E0; 33 border-left: 1px solid #999999; 34 border-top: 1px solid #999999; 33 background: #E8E8E8; 35 34 cursor: default; 35 border-bottom: 1px solid #A0A0A0; 36 36 } 37 37 38 .menu_horizontal .menuitem { 39 border-top: 1px solid #FFFFFF; 40 border-left: 1px solid #FFFFFF; 41 border-bottom: 1px solid #999999; 42 border-right: 1px solid #999999; 43 padding: 2px 4px 2px 4px; 38 .menu.horizontal > table 39 { 40 height: 100%; 41 } 42 43 .menu.horizontal > table > tbody > tr > td 44 { 45 border-right: 1px solid #A0A0A0; 46 } 47 48 .menu.horizontal .menuitem 49 { 50 padding: 3px 6px 3px 6px; 44 51 white-space: nowrap; 45 52 } 46 53 47 .menu_horizontal .menuitem.enabled:hover { 54 .menu.horizontal .menuitem.enabled:hover 55 { 48 56 background: #F0F0F0; 57 border: 2px solid #2288AA; 58 padding: 1px 4px 1px 4px; 59 border-radius: 3px; 60 -moz-border-radius: 4px; 49 61 } 50 62 51 .menu_horizontal .menufill { 52 background: #F0F0F0; 53 border-top: 1px solid #FFFFFF; 54 border-left: 1px solid #FFFFFF; 55 border-bottom: 1px solid #999999; 56 border-right: 1px solid #999999; 57 padding: 0px 4px 0px 4px; 63 .menu.horizontal .menufill 64 { 58 65 white-space: nowrap; 59 width: 100%;66 width: 90%; 60 67 text-align: right; 61 68 } 62 69 63 .menu_vertical { 70 .menu.vertical 71 { 64 72 position: fixed; 65 background: #E0E0E0; 66 border-top: 1px solid #999999; 67 border-left: 1px solid #999999; 68 border-bottom: 2px ridge #999999; 69 border-right: 2px ridge #999999; 73 background: #E8E8E8; 74 border: 1px solid #A0A0A0; 75 box-shadow: 3px 3px 5px #cccccc; 76 -moz-box-shadow: 3px 3px 5px #999999; 70 77 } 71 78 72 .menufill .menuseparator { 73 border-right: 1px solid #999999; 74 margin-right: 8px; 79 .menu.vertical .menuitem 80 { 81 padding: 3px 4px 3px 4px; 82 white-space: nowrap; 75 83 } 76 84 77 .menu_vertical .menustart { 78 border-top: 1px solid #FFFFFF; 79 border-left: 1px solid #FFFFFF; 80 } 81 82 .menu_vertical .menuitem { 83 border-top: 1px solid #E0E0E0; 84 border-left: 1px solid #FFFFFF; 85 border-bottom: 1px solid #E0E0E0; 86 border-right: 0px; 87 padding: 2px 0px 2px 0px; 88 white-space: nowrap; 89 width: 100%; 90 } 91 92 .menu_vertical .menuitem.enabled:hover { 85 .menu.vertical .menuitem.enabled:hover 86 { 93 87 background: #F0F0F0; 94 border -top: 1px solid #999999;95 border-left: 1px solid #FFFFFF;96 border- bottom: 1px solid #FFFFFF;97 border-right: 0px;88 border: 2px solid #2288AA; 89 padding: 1px 2px 1px 2px; 90 border-radius: 3px; 91 -moz-border-radius: 4px; 98 92 cursor: pointer; 99 93 } 100 94 101 .menu_vertical .disabled { 102 color: #666666; 103 cursor: default; 104 } 105 106 .menu_vertical .menuseparator { 107 background: #999999; 108 border-top: 0px; 109 border-left: 1px solid #FFFFFF; 110 border-bottom: 1px solid #FFFFFF; 111 border-right: 0px; 95 .menu.vertical .menuseparator 96 { 97 background: #A0A0A0; 112 98 width: 100%; 113 99 height: 1px; 114 100 } 115 101 116 .menuseparator img { 117 display: none; 102 .menuicon 103 { 104 margin-right: 4px; 118 105 } 106 107 .submenuicon 108 { 109 width: 1.5em; 110 max-width: 1.5em; 111 text-align: right; 112 font-size: 1.2em; 113 font-weight: bold; 114 } 115 116 117 .menufill .menuseparator 118 { 119 border-right: 1px solid #999999; 120 margin-right: 8px; 121 margin-left: 8px; 122 } 123 124 125 .menu .menuitem.disabled 126 { 127 color: #666666; 128 cursor: default; 129 cursor: not-allowed; 130 } 131 132 -
trunk/www/include/styles/path.css
r5426 r5918 27 27 */ 28 28 29 .path { 30 margin-bottom: 4px; 29 h1.path 30 {} 31 32 h1.path .pathelement:before 33 { 34 content: '›'; 35 padding-left: 4px; 36 padding-right: 4px; 37 color: #2288AA; 31 38 } 32 39 33 .path .pathelement { 34 font-weight: bold; 35 color: #555577; 40 h1.path .pathelement:first-child:before 41 { 42 content: ''; 43 padding: 0px; 36 44 } 37 45 38 .path .separator {39 padding-left: 6px;40 padding-right: 6px;41 } -
trunk/www/include/styles/popup.css
r5915 r5918 42 42 font-size: 1.4em; 43 43 color: #F0F0F0; 44 margin: 0px; 44 45 background-image: url('backgrounds/popup_h1.png'); 45 46 background-color: #224488; … … 51 52 .popup h1:before 52 53 { 53 content: ' ►';54 content: '::'; 54 55 padding-left: 4px; 55 56 padding-right: 4px; … … 143 144 } 144 145 145 /*146 Table listings147 --------------148 */149 /*150 A 100% wide and high table with two columns (prompt+value)151 * Table rows are max one line high by default152 Use <tr class="double"> to get two or <tr class="dynamic">153 to get more154 * Header column is 150px wide by default155 Use <table class="fullform smaller"> to get 100px156 or <table class="fullform larger">157 */158 .popup table.fullform159 {160 width: 100%;161 height: 100%;162 background: #E8E8E8;163 }164 146 165 /* Default table row is one line only */166 table.fullform > tbody > tr167 {168 /* height is really minimum height */169 height: 1.75em;170 max-height: 2em;171 }172 173 /* A double hight table row */174 table.fullform > tbody > tr.double175 {176 /* height is really minimum height */177 height: 3.5em;178 max-height: 4em;179 vertical-align: top;180 }181 182 /* No max hight specified, but expected to be bigger than two lines */183 table.fullform > tbody > tr.big184 {185 vertical-align: top;186 }187 188 table.fullform > tbody > tr.dynamic189 {190 height: auto;191 max-height: 100%;192 vertical-align: top;193 }194 195 /* Expands vertically as needed if only a single tbody */196 table.fullform > tbody:first-child > tr.dynamic197 {198 height: 100%;199 max-height: 100%;200 vertical-align: top;201 }202 203 /* The first column should be a header */204 table.fullform > tbody > tr > th205 {206 width: 10em;207 max-width: 12em;208 overflow: auto;209 text-overflow: ellipsis;210 font-weight: bold;211 white-space: nowrap;212 text-align: left;213 padding: 1px 4px 1px 6px;214 border-top: 1px dotted #A0A0A0;215 border-right: 1px solid #A0A0A0;216 }217 218 /* First row has no top border */219 table.fullform > tbody > tr:first-child > th, table.fullform > tbody > tr:first-child > td220 {221 padding-top: 3px;222 border-top: 0px;223 }224 225 table.fullform > tbody > tr > th.subprompt226 {227 font-weight: normal;228 text-align: right;229 border-top: 0px;230 }231 232 /* A section row should span the entire table */233 table.fullform > tbody.section > tr > th234 {235 border-top: 1px solid #A0A0A0;236 border-bottom: 1px solid #A0A0A0;237 border-right: 0px;238 white-space: normal;239 }240 241 /* First tbody section shouldn't have a top border */242 table.fullform > tbody.section:first-child > tr > th243 {244 border-top: 0px solid #A0A0A0;245 }246 247 /* Regular cells have a white background */248 table.fullform > tbody > tr > td249 {250 background: #FFFFFF;251 padding: 0px 2px 0px 2px;252 }253 254 /* A smaller header column */255 table.fullform.smaller > tbody > tr > th256 {257 width: 7em;258 max-width: 9em;259 }260 261 /* A larger header column */262 table.fullform.larger > tbody > tr > th263 {264 width: 13em;265 max-width: 15em;266 }267 268 /* Make sure that dynamic textarea fill the table row */269 table.fullform > tbody > tr.dynamic textarea270 {271 height: 97%;272 }273 274 /* Use borders between td elements as well (for read-only tables) */275 table.fullform.outlined > tbody > tr > td276 {277 border-top: 1px dotted #A0A0A0;278 }279 table.fullform.outlined > tbody > tr:first-child > td280 {281 border-top: 0px;282 }283 284 /* no border for a subprompt */285 table.fullform.outlined > tbody > tr > th.subprompt + td286 {287 border-top: 0px;288 }289 -
trunk/www/include/styles/size_l.css
r5905 r5918 36 36 } 37 37 38 39 /*40 STYLES BELOW ARE OLD AND SHOULD BE VERIFIED41 ------------------------------------------42 */43 44 .pathelement {45 font-size: 22px;46 }47 48 h2 {49 font-size: 18px;50 }51 52 .menuitem img, .menuitem_active img {53 padding-top: 0px;54 }55 .menu_horizontal .menuitem, .menu_horizontal .menufill {56 height: 18px;57 line-height: 18px;58 } -
trunk/www/include/styles/size_m.css
r5905 r5918 36 36 } 37 37 38 39 /*40 STYLES BELOW ARE OLD AND SHOULD BE VERIFIED41 ------------------------------------------42 */43 44 .pathelement {45 font-size: 18px;46 }47 48 h2 {49 font-size: 15px;50 }51 52 .menuitem img, .menuitem_active img {53 padding-top: 1px;54 }55 .menu_horizontal .menuitem, .menu_horizontal .menufill {56 height: 16px;57 line-height: 16px;58 } -
trunk/www/include/styles/size_s.css
r5905 r5918 34 34 font-size: 67.5%; 35 35 } 36 37 38 /*39 STYLES BELOW ARE OLD AND SHOULD BE VERIFIED40 ------------------------------------------41 */42 43 .pathelement {44 font-size: 16px;45 }46 47 h2 {48 font-size: 13px;49 }50 51 .menuitem img, .menuitem_active img {52 padding-top: 0px;53 }54 .menu_horizontal .menuitem, .menu_horizontal .menufill {55 height: 16px;56 line-height: 16px;57 } -
trunk/www/include/styles/size_xl.css
r5905 r5918 35 35 } 36 36 37 38 /*39 STYLES BELOW ARE OLD AND SHOULD BE VERIFIED40 ------------------------------------------41 */42 43 .pathelement {44 font-size: 28px;45 }46 47 h2 {48 font-size: 22px;49 }50 51 .menuitem img, .menuitem_active img {52 padding-top: 0px;53 }54 .menu_horizontal .menuitem, .menu_horizontal .menufill {55 height: 22px;56 line-height: 22px;57 } -
trunk/www/include/styles/size_xs.css
r5905 r5918 35 35 } 36 36 37 38 /*39 STYLES BELOW ARE OLD AND SHOULD BE VERIFIED40 ------------------------------------------41 */42 .pathelement {43 font-size: 14px;44 }45 46 h2 {47 font-size: 10px;48 }49 50 body {51 padding-top: 8px;52 }53 54 .menuitem img, .menuitem_active img {55 padding-top: 0px;56 }57 .menu_horizontal .menuitem, .menu_horizontal .menufill {58 height: 16px;59 line-height: 16px;60 } -
trunk/www/include/styles/table.css
r5810 r5918 30 30 31 31 .itemlist { 32 border-top: 1px solid # 999999;33 border-left: 1px solid #999999;32 border-top: 1px solid #A0A0A0; 33 xborder-left: 1px solid #A0A0A0; 34 34 width: 100%; 35 background: #E 0E0E0;35 background: #E8E8E8; 36 36 margin-bottom: 0px; 37 37 padding-bottom: 0px; 38 } 39 40 form { 41 margin-bottom: 0px; 42 padding-bottom: 0px; 38 margin-top: 4em; 39 } 40 41 /* TODO - remove when #1655 is complete */ 42 .content .itemlist 43 { 44 margin-top: 0px; 45 } 46 47 .itemlist .panel { 48 xborder-top: 1px solid #FFFFFF; 49 xborder-left: 1px solid #FFFFFF; 50 xborder-right: 1px solid #999999; 51 border-bottom: 1px solid #A0A0A0; 52 padding: 3px; 53 } 54 55 .itemlist .currentpage { 56 font-weight: bold; 57 } 58 59 .itemlist .data > table { 60 width: 100%; 61 } 62 63 .itemlist .data .header, .itemlist .data .index, .itemlist .data .check, .itemlist .data .icons { 64 xborder-top: 1px solid #FFFFFF; 65 xborder-left: 1px solid #FFFFFF; 66 xborder-bottom: 1px solid #A0A0A0; 67 border-right: 1px solid #A0A0A0; 68 padding: 1px 3px 1px 3px; 69 font-weight: bold; 70 white-space: nowrap; 71 text-align: center; 72 vertical-align: middle; 73 } 74 75 .itemlist .data .index { 76 border-right: 0px; 77 text-align: right; 78 } 79 80 .itemlist .data .check { 81 border-left: 0px; 82 border-right: 0px; 83 } 84 85 .itemlist .data .icons { 86 border-left: 0px; 87 } 88 89 .itemlist .data .columnheader, .itemlist .data .uniquecol { 90 font-weight: bold; 91 white-space: nowrap; 92 xborder-top: 1px solid #FFFFFF; 93 xborder-left: 1px solid #FFFFFF; 94 xborder-bottom: 1px solid #999999; 95 border-right: 1px dotted #999999; 96 padding: 1px 3px 1px 3px; 97 vertical-align: middle; 98 } 99 100 .itemlist .data .uniquecol:before { 101 content: url('../../images/unique.png'); 102 vertical-align: middle; 103 } 104 105 106 .itemlist .data .propertyfilter { 107 white-space: nowrap; 108 xborder-top: 1px solid #FFFFFF; 109 xborder-left: 1px solid #FFFFFF; 110 border-bottom: 1px solid #A0A0A0; 111 border-right: 1px dotted #A0A0A0; 112 padding: 1px 3px 1px 3px; 113 } 114 115 .itemlist .data .evenrow { 116 background: #E0E0E0; 117 } 118 119 .itemlist .data .oddrow { 120 background: #F0F0F0; 121 } 122 123 .itemlist .data .highlight:hover { 124 xbackground: #F0F099; 125 } 126 127 .itemlist .data .evenrow.highlight:hover > * 128 { 129 border-bottom-color: transparent; 130 border-top-color: transparent; 131 } 132 133 .itemlist .data .cell { 134 xborder-top: 1px solid #FFFFFF; 135 xborder-left: 1px solid #FFFFFF; 136 xborder-bottom: 1px dotted #999999; 137 border-right: 1px dotted #A0A0A0; 138 padding: 1px 3px 1px 3px; 139 vertical-align: middle; 140 } 141 142 .itemlist .data .evenrow .cell, .itemlist .data .evenrow th 143 { 144 border-bottom: 1px dotted #A0A0A0; 145 border-top: 1px dotted #A0A0A0; 146 } 147 148 .itemlist .data .cell.error { 149 border-top: 0px; 150 border-left: 0px; 151 color: #FFFFFF; 152 background: #CC0000; 153 text-align: center; 154 } 155 156 .itemlist .data .joustcell { 157 border-top: 1px solid #FFFFFF; 158 border-left: 1px solid #FFFFFF; 159 border-bottom: 1px solid #999999; 160 border-right: 1px solid #999999; 161 padding: 0px 3px 0px 3px; 162 vertical-align: middle; 163 white-space: nowrap; 164 } 165 .itemlist .data .joustcell img { 166 margin-top: -1px; 167 margin-bottom: -1px; 168 } 169 170 .itemlist .message { 171 border-top: 1px solid #FFFFFF; 172 border-left: 1px solid #FFFFFF; 173 border-right: 1px solid #999999; 174 border-bottom: 1px solid #999999; 175 padding: 4px 4px 4px 8px; 176 background: #E0E0E0; 177 font-weight: bold; 178 } 179 180 .itemlist .itemtype { 181 font-size: 10px; 182 color: #777777; 43 183 } 44 184 … … 52 192 53 193 .itemlist .toolbar .button { 54 border-top: 1px solid #FFFFFF;55 border-left: 1px solid #FFFFFF;194 xborder-top: 1px solid #FFFFFF; 195 xborder-left: 1px solid #FFFFFF; 56 196 border-bottom: 0px solid #999999; 57 197 border-right: 1px solid #999999; … … 71 211 } 72 212 73 .itemlist .panel {74 border-top: 1px solid #FFFFFF;75 border-left: 1px solid #FFFFFF;76 border-right: 1px solid #999999;77 border-bottom: 1px solid #999999;78 padding: 3px;79 }80 81 82 .itemlist .currentpage {83 font-weight: bold;84 }85 86 .itemlist .data {87 border-right: 0px solid #999999;88 border-bottom: 0px solid #999999;89 padding: 0px;90 }91 92 .itemlist .data > table {93 width: 100%;94 }95 96 .itemlist .data .header, .itemlist .data .index, .itemlist .data .check, .itemlist .data .icons {97 border-top: 1px solid #FFFFFF;98 border-left: 1px solid #FFFFFF;99 border-bottom: 1px solid #999999;100 border-right: 1px solid #999999;101 padding: 1px 3px 1px 3px;102 font-weight: bold;103 white-space: nowrap;104 text-align: center;105 vertical-align: middle;106 }107 108 .itemlist .data .index {109 border-right: 0px;110 text-align: right;111 }112 113 .itemlist .data .check {114 border-left: 0px;115 border-right: 0px;116 }117 118 .itemlist .data .icons {119 border-left: 0px;120 }121 122 .itemlist .data .columnheader, .itemlist .data .uniquecol {123 font-weight: bold;124 white-space: nowrap;125 border-top: 1px solid #FFFFFF;126 border-left: 1px solid #FFFFFF;127 border-bottom: 1px solid #999999;128 border-right: 1px solid #999999;129 padding: 1px 3px 1px 3px;130 vertical-align: middle;131 }132 133 .itemlist .data .uniquecol:before {134 content: url('../../images/unique.png');135 vertical-align: middle;136 }137 138 139 .itemlist .data .propertyfilter {140 white-space: nowrap;141 border-top: 1px solid #FFFFFF;142 border-left: 1px solid #FFFFFF;143 border-bottom: 1px solid #999999;144 border-right: 1px solid #999999;145 padding: 1px 3px 1px 3px;146 }147 148 .itemlist .data .evenrow {149 background: #E0E0E0;150 }151 152 .itemlist .data .oddrow {153 background: #F0F0F0;154 }155 156 .itemlist .data .highlight:hover {157 background: #F0F099;158 }159 160 .itemlist .data .cell {161 border-top: 1px solid #FFFFFF;162 border-left: 1px solid #FFFFFF;163 border-bottom: 1px solid #999999;164 border-right: 1px solid #999999;165 padding: 1px 3px 1px 3px;166 vertical-align: middle;167 }168 169 .itemlist .data .cell.error {170 border-top: 0px;171 border-left: 0px;172 color: #FFFFFF;173 background: #CC0000;174 text-align: center;175 }176 177 .itemlist .data .joustcell {178 border-top: 1px solid #FFFFFF;179 border-left: 1px solid #FFFFFF;180 border-bottom: 1px solid #999999;181 border-right: 1px solid #999999;182 padding: 0px 3px 0px 3px;183 vertical-align: middle;184 white-space: nowrap;185 }186 .itemlist .data .joustcell img {187 margin-top: -1px;188 margin-bottom: -1px;189 }190 191 .itemlist .message {192 border-top: 1px solid #FFFFFF;193 border-left: 1px solid #FFFFFF;194 border-right: 1px solid #999999;195 border-bottom: 1px solid #999999;196 padding: 4px 4px 4px 8px;197 background: #E0E0E0;198 font-weight: bold;199 }200 201 .itemlist .itemtype {202 font-size: 10px;203 color: #777777;204 }205 -
trunk/www/include/styles/toolbar.css
r5426 r5918 30 30 */ 31 31 32 .toolbar { 33 border-top: 1px solid #999999; 34 border-left: 1px solid #999999; 32 .toolbar 33 { 35 34 width: 100%; 36 background: #E0E0E0; 37 38 border-right: 1px solid #999999; 39 border-bottom: 1px solid #999999; 35 background: #E8E8E8; 40 36 padding: 0px; 37 margin: 0px; 41 38 } 42 39 43 .toolbar .button { 44 border-top: 1px solid #FFFFFF; 45 border-left: 1px solid #FFFFFF; 46 border-bottom: 0px solid #999999; 47 border-right: 1px solid #999999; 40 .toolbar > table 41 { 42 height: 100%; 43 } 44 45 /* Each button is inside a td element */ 46 .toolbar > table > tbody > tr > td 47 { 48 border-right: 1px solid #A0A0A0; 49 } 50 51 .toolbar .button 52 { 48 53 padding: 3px; 49 54 cursor: pointer; 50 55 white-space: nowrap; 51 color: #ffff00:52 56 } 53 57 54 .toolbar .button:hover { 55 background: #F0F0F0; 58 .toolbar .button:hover 59 { 60 border: 2px solid #2288AA; 61 padding: 1px; 62 border-radius: 4px; 56 63 } 57 64 58 .toolbar .button.disabled { 59 background: #E0E0E0; 65 .toolbar .button.disabled, .toolbar .button.disabled:hover 66 { 67 background: #D0D0D0; 60 68 color: #666666; 61 cursor: default; 69 cursor: default; 70 cursor: not-allowed; 71 border: 0px; 72 border-right: 1px solid #A0A0A0; 73 padding: 3px; 74 } 75 76 .toolbar .button.disabled img 77 { 78 opacity: 0.4; 62 79 } 63 80 -
trunk/www/main.jsp
r5911 r5918 72 72 { 73 73 setFocus(); 74 top.frames['footnote'].location.reload();75 74 } 76 75 … … 83 82 { 84 83 frm.login.focus(); 84 frm.login.select(); 85 85 } 86 86 else … … 98 98 function doLogin() 99 99 { 100 var frm = document.forms['login']; 101 if (frm.login.disabled) return; 100 102 var denyLogin = <%=denyLogin ? "true" : "false"%>; 101 103 if (denyLogin && !confirm('Login has been disabled by an administrator. Do you want to continue anyway?')) … … 104 106 } 105 107 saveLogin(); 108 frm.submit(); 109 } 110 function enableLogin() 111 { 106 112 var frm = document.forms['login']; 107 frm.submit(); 108 } 109 function showLoginForm() 110 { 111 Main.show('loginForm'); 112 Main.hide('denyLogin'); 113 Main.hide('loginAnyway'); 114 frm.login.disabled = false; 115 frm.password.disabled = false; 116 frm.login.focus(); 117 Main.removeClass(document.getElementById('loginBtn'), 'disabled'); 113 118 } 114 119 </script> … … 116 121 117 122 <base:body onload="init();"> 118 119 <table border=0 cellspacing=5 cellpadding=0 width="80%" align="center"> 123 <form name="login" action="login.jsp" method="post" onsubmit="doLogin();"> 124 <input type="hidden" name="ID" value="<%=ID%>"> 125 <input type="hidden" name="nextpage" value="<%=root%>my_base/user/index.jsp"> 126 127 <table style="margin: auto; width: 600px; margin-top:5em; "> 120 128 <tr> 121 129 <td> 122 <br><br> 123 <table class="loginform" width="100%" border="0" align="center"> 124 <% 125 if (error != null) 126 { 127 %> 128 <tr><td colspan="2" align="center"><div class="error"><%=error%></div></td></tr> 129 <% 130 } 131 %> 130 <table style="width: 100%;"> 132 131 <tr> 133 <td style="vertical-align: middle; width; 25%;"> 134 <div align="center"> 135 <img src="images/baselogo.png" alt="BASE logo" width=122 height=58> 136 </div> 137 </td> 138 <td style="width: 75%;"> 139 <form name="login" action="login.jsp" method="post" onsubmit="doLogin();"> 140 <input type="hidden" name="ID" value="<%=ID%>"> 141 <input type="hidden" name="nextpage" value="<%=root%>my_base/user/index.jsp"> 142 143 <div id="loginForm" <%=denyLogin ? "style=\"display:none;\"" : ""%>> 144 <table border="0" cellspacing="0" cellpadding="2"> 145 <tr> 146 <td class="prompt">Login</td> 147 <td><input class="text" type="text" name="login" value="<%=HTML.encodeTags(login)%>" 148 size="15" maxlength="100" 149 style="width: 120px"></td> 150 </tr> 151 <tr> 152 <td class="prompt">Password</td> 153 <td> 154 <input class="text" type="password" name="password" size="15" maxlength="80" 155 onkeypress="return Forms.submitOnEnter(event, doLogin)" 156 style="width: 120px"> 157 </td> 158 <td><base:button image="login.png" 159 onclick="doLogin();" title="Login" tooltip="<%=HTML.encodeTags(broadcastTitle)%>" /></td> 160 </tr> 161 <tr> 162 <td colspan="3"> 163 <% 164 String forgotPassword = sc.getClientDefaultSetting("server.forgotten.password"); 165 String getAccount = sc.getClientDefaultSetting("server.get.account"); 166 if (forgotPassword != null) 167 { 132 <td style="background-color: #000000; border-radius: 4px 0px 0px 4px;"><img src="images/baselogo.png" alt="BASE logo"></td> 133 <td> 134 <div id="loginform"> 135 <table> 136 <tr> 137 <th>Login</th> 138 <td><input class="text" type="text" name="login" value="<%=HTML.encodeTags(login)%>" 139 maxlength="100" style="width: 12em;" <%=denyLogin ? "disabled" : ""%> 140 tabindex="0" 141 > 142 </td> 143 <td></td> 144 </tr> 145 <tr> 146 <th>Password</th> 147 <td> 148 <input class="text" type="password" name="password" maxlength="80" 149 onkeypress="return Forms.submitOnEnter(event, doLogin)" 150 style="width: 12em;" <%=denyLogin ? "disabled" : ""%> 151 tabindex="0" 152 > 153 </td> 154 <td><base:button 155 id="loginBtn" 156 subclass="<%=denyLogin ? "disabled" : ""%>" 157 image="login.png" title="Login" 158 onclick="doLogin();" tooltip="<%=HTML.encodeTags(broadcastTitle)%>" /></td> 159 </tr> 160 <tr> 161 <th></th> 162 <td colspan="2"> 163 <% 164 String forgotPassword = sc.getClientDefaultSetting("server.forgotten.password"); 165 String getAccount = sc.getClientDefaultSetting("server.get.account"); 166 if (forgotPassword != null) 167 { 168 %> 169 <base:icon image="bullet.gif" /> 170 <a href="javascript:Main.openPopup('info/forgot_password.jsp?ID=<%=ID%>', 'ForgotPassword', 450, 300)" title="Click here if you have forgotten your password">Forgot your password?</a> 171 <% 172 } 173 if (getAccount != null) 174 { 175 %> 176 <base:icon image="bullet.gif" /> 177 <a href="javascript:Main.openPopup('info/get_account.jsp?ID=<%=ID%>', 'GetAccount', 450, 300)" title="Click here if you want to get an account on this server">Get an account!</a> 178 <% 179 } 168 180 %> 169 <base:icon image="bullet.gif" /> 170 <a href="javascript:Main.openPopup('info/forgot_password.jsp?ID=<%=ID%>', 'ForgotPassword', 450, 300)" title="Click here if you have forgotten your password">Forgot your password?</a> 171 <% 172 } 173 if (getAccount != null) 174 { 175 %> 176 <base:icon image="bullet.gif" /> 177 <a href="javascript:Main.openPopup('info/get_account.jsp?ID=<%=ID%>', 'GetAccount', 450, 300)" title="Click here if you want to get an account on this server">Get an account!</a> 178 <% 179 } 180 %> 181 </td> 182 </tr> 183 </table> 184 </div> 185 <div id="denyLogin" <%=denyLogin ? "style=\"width: 90%; margin-left: 5%;\"" : "style=\"display:none;\""%> class="news"> 186 <div class="item"> 187 <span class="headline"><%=HTML.encodeTags(broadcastTitle) %> (login disabled)</span><br> 188 <span class="text"><%=HTML.niceFormat(broadcastMessage)%></span> 189 </div> 190 <table> 191 <tr><td><base:button title="Login anyway" onclick="showLoginForm()" 192 image="login.png" tooltip="At your own risk!"/></td></tr> 181 </td> 182 </tr> 193 183 </table> 194 184 </div> 195 </form> 185 186 196 187 </td> 197 188 </tr> 198 189 </table> 199 <br> 200 <br> 190 191 192 <% 193 if (error != null) 194 { 195 %> 196 <div class="messagecontainer error"><%=error%></div> 197 <% 198 } 199 %> 200 <% 201 if (denyLogin) 202 { 203 %> 204 <div id="denyLogin"> 205 <div class="messagecontainer help""> 206 <b><%=HTML.encodeTags(broadcastTitle) %> (login disabled)</b><br> 207 <%=HTML.niceFormat(broadcastMessage)%> 208 </div> 209 <base:buttongroup id="loginAnyway"> 210 <base:button title="Login anyway" onclick="enableLogin()" image="login.png" tooltip="At your own risk!" /> 211 </base:buttongroup> 212 </div> 213 <% 214 } 215 %> 201 216 202 217 <% … … 205 220 { 206 221 %> 207 <h3 >About this server</h3>222 <h3 style="margin-top: 1em;">About this server</h3> 208 223 <p> 209 224 <%=aboutServer%> … … 215 230 %> 216 231 217 <h3 >News and announcements232 <h3 style="margin-top: 1em;">News and announcements 218 233 <% 219 234 if (RssNewsFeed.isEnabled()) … … 222 237 <a href="info/news.rss" 223 238 title="Subscribe to news from this BASE server" 224 ><base:icon image="rss.png" /></a>239 ><base:icon image="rss.png" style="float: right; margin-top: 1px;"/></a> 225 240 <% 226 241 } … … 269 284 </tr> 270 285 </table> 286 287 </form> 271 288 </base:body> 272 289 </base:page> -
trunk/www/my_base/index.jsp
r5905 r5918 164 164 newsQuery.setParameter("today", new Date(), Type.DATE); 165 165 ItemResultList<News> news = newsQuery.list(dc); 166 167 String help = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.help")); 168 String faq = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.faq")); 169 String reportBug = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.reportbug")); 170 boolean hasHelp = help != null || faq != null || reportBug != null; 166 171 %> 167 172 <base:page title="Welcome to BASE"> … … 178 183 Main.openPopup('projects/set_active.jsp?ID=<%=ID%>&project_id='+projectId, 'ActivateProject', 300, 140) 179 184 } 185 function viewDiskUsage() 186 { 187 location.href = '../admin/diskusage/details/index.jsp?ID=<%=ID%>&cmd=ViewItem&item_type=USER&item_id=<%=sc.getLoggedInUserId() %>'; 188 } 180 189 </script> 181 190 … … 183 192 <base:body onload="top.frames['footnote'].location.reload()"> 184 193 185 186 <table border="0" cellspacing="0" cellpadding="0" width="100%"> 187 <tr > 188 <td width="50%"> 189 190 <h3 class="light docked"> 191 <base:icon image="project.gif" /> 192 Projects (<%=projects.size()%>) 193 </h3> 194 <div id="projects" class="welcomesection" style="height: 210px; overflow: auto;"> 194 <h1>Welcome to BASE</h1> 195 196 <div class="content"> 197 198 <div class="absolutefull" style="width: 50%;"> 199 200 <div class="absolutefull" style="left: 1em; right: 0.5em; bottom: <%=hasHelp ? "15em" : "1em" %>;"> 201 202 <div class="absolutefull" style="height: 50%;"> 203 <div class="absolutefull" style="height: 2em; overflow: hidden;""> 204 <h3 style="height: 100%;"><base:icon image="project.gif" />Projects (<%=projects.size()%>)</h3> 205 </div> 206 <div id="projects" class="absolutefull welcomesection" style="top: 2em; bottom: 0.5em;"> 207 <% 208 if (projects.size() == 0) 209 { 210 %> 211 You are not member of any projects. 212 <% 213 } 214 else 215 { 216 int activeProjectId = sc.getActiveProjectId(); 217 %> 218 <table border="0" cellspacing="0" cellpadding="2"> 219 <% 220 if (activeProjectId == 0) 221 { 222 %> 223 <td><base:icon image="warning.gif" /></td> 224 <td><i>No active project</i></td> 225 <td> </td> 226 <% 227 } 228 for (Project p : projects) 229 { 230 int projectId = p.getId(); 231 if (projectId == activeProjectId) 232 { 233 %> 234 <tr> 235 <td><base:icon image="bullet.gif" /></td> 236 <td><b><%=Base.getLinkedName(ID, p, false, true)%></b></td> 237 <td>[active]</td> 238 </tr> 239 <% 240 } 241 else 242 { 243 %> 244 <tr> 245 <td> </td> 246 <td><%=Base.getLinkedName(ID, p, false, true)%></td> 247 <td>[<a href="javascript:setActiveProject(<%=projectId%>)">set active</a>]</td> 248 </tr> 249 <% 250 } 251 } 252 %> 253 </table> 254 <% 255 } 256 %> 257 </div> 258 </div> 259 260 <div class="absolutefull" style="height: 50%; top: auto;"> 261 <div class="absolutefull" style="height: 2em; top: 0.5em; overflow: hidden;"> 262 <h3 style="height: 100%;"><base:icon image="message.gif" />New messages (<%=messages.size()%>)</h3> 263 </div> 264 <div id="messages" class="absolutefull news welcomesection" style="top: 2.5em;"> 265 <% 266 String broadcastTitle = (String)application.getAttribute("broadcast.title"); 267 if (broadcastTitle != null) 268 { 269 String broadcastMessage = (String)application.getAttribute("broadcast.message"); 270 %> 271 <div class="item"><base:icon image="warning.gif" /> 272 <span class="date"><%=dateFormatter.format(new Date())%></span> 273 <span class="headline"><%=HTML.encodeTags(broadcastTitle)%></span><br> 274 <span class="text"><%=HTML.niceFormat(broadcastMessage)%></span> 275 </div> 276 <% 277 } 278 if (messages.size() == 0 && broadcastTitle == null) 279 { 280 %> 281 No new messages. 282 <% 283 } 284 else 285 { 286 for (Message m : messages) 287 { 288 String fullName = m.getName(); 289 String shortName = Values.trimString(fullName, 50); 290 String text = Values.trimString(m.getDescription(), 100); 291 %> 292 <div class="item"> 293 <a href="javascript:viewMessage(<%=m.getId()%>)" 294 title="<%=HTML.encodeTags(fullName)%>"> 295 <span class="date"><%=dateTimeFormatter.format(m.getTimeSent())%></span> 296 <span class="headline"><%=HTML.encodeTags(shortName)%></span></a><br> 297 <span class="text"><%=HTML.encodeTags(text)%></span> 298 </div> 299 <% 300 } 301 } 302 %> 303 </div> 304 </div> 305 </div> 306 307 <% 308 if (hasHelp) 309 { 310 %> 311 <div class="absolutefull" style="left: 1em; right: 0.5em; top: auto; height: 13em; bottom: 1em; "> 312 <div class="absolutefull" style="height: 2em; overflow: hidden;""> 313 <h3 style="height: 100%;"><base:icon image="help.png" style="float: left; margin-top: 0.2em; margin-right: 0.5em;" />Help</h3> 314 </div> 315 <div id="help" class="absolutefull welcomesection" style="top: 2em;"> 316 <% 317 if (help != null) 318 { 319 %> 320 <a href="<%=help%>" target="Help"><base:icon image="bullet.gif" />Help…</a><br> 321 <% 322 } 323 %> 324 <% 325 if (faq != null) 326 { 327 %> 328 <a href="<%=faq%>" target="FAQ"><base:icon image="bullet.gif" />Frequently asked questions…</a><br> 329 <% 330 } 331 %> 332 <% 333 if (reportBug != null) 334 { 335 %> 336 <a href="<%=reportBug%>" target="ReportBug"><base:icon image="bug.gif" />Report a bug…</a><br> 337 <% 338 } 339 %> 340 </div> 341 </div> 195 342 <% 196 if (projects.size() == 0) 197 { 198 %> 199 You are not member of any projects. 200 <% 201 } 202 else 203 { 204 int activeProjectId = sc.getActiveProjectId(); 205 %> 206 <table border="0" cellspacing="0" cellpadding="2"> 207 <% 208 if (activeProjectId == 0) 209 { 210 %> 211 <td><base:icon image="warning.gif" /></td> 212 <td><i>No active project</i></td> 213 <td> </td> 214 <% 215 } 216 for (Project p : projects) 217 { 218 int projectId = p.getId(); 219 if (projectId == activeProjectId) 343 } 344 %> 345 346 </div> 347 <div class="absolutefull" style="width: 50%; left: auto;"> 348 349 <div class="absolutefull" style="left: 0.5em; right: 1em; bottom: 15em;"> 350 <div class="absolutefull" style="height: 2em; overflow: hidden;""> 351 <h3 style="height: 100%;"><base:icon image="news.gif" style="float: left; margin-top: 0.2em; margin-right: 0.5em;" />News and announcements (<%=news.size()%>) 352 <% 353 if (RssNewsFeed.isEnabled()) 220 354 { 221 355 %> 222 < tr>223 <td><base:icon image="bullet.gif" /></td>224 <td><b><%=Base.getLinkedName(ID, p, false, true)%></b></td>225 <td>[active]</td>226 </tr>356 <base:icon image="rss.png" 357 onclick="location.href='../info/news.rss'" 358 tooltip="Subscribe to news from this BASE server" 359 style="float: right; margin-top: 0.2em;" 360 /> 227 361 <% 228 362 } 363 %> 364 </h3> 365 </div> 366 <div id="news" class="absolutefull news welcomesection" style="top: 2em;"> 367 <% 368 if (news.size() == 0) 369 { 370 %> 371 Nothing new. 372 <% 373 } 229 374 else 230 375 { 231 %> 232 <tr> 233 <td> </td> 234 <td><%=Base.getLinkedName(ID, p, false, true)%></td> 235 <td>[<a href="javascript:setActiveProject(<%=projectId%>)">set active</a>]</td> 236 </tr> 237 <% 238 } 239 } 240 %> 241 </table> 242 <% 243 } 244 %> 376 for (News n : news) 377 { 378 %> 379 <div class="item"> 380 <span class="date"><%=dateFormatter.format(n.getNewsDate())%></span> 381 <span class="headline"><%=HTML.encodeTags(n.getName())%></span><br> 382 <span class="text"><%=HTML.niceFormat(n.getDescription())%></span> 383 </div> 384 <% 385 } 386 } 387 %> 388 </div> 245 389 </div> 246 247 <h3 class="light docked"> 248 <base:icon image="message.gif" /> 249 New messages (<%=messages.size()%>)</h3> 250 <div id="messages" class="news welcomesection" style="height: 210px; overflow: auto;"> 251 <% 252 String broadcastTitle = (String)application.getAttribute("broadcast.title"); 253 if (broadcastTitle != null) 254 { 255 String broadcastMessage = (String)application.getAttribute("broadcast.message"); 256 %> 257 <div class="item"><base:icon image="warning.gif" /> 258 <span class="date"><%=dateFormatter.format(new Date())%></span> 259 <span class="headline"><%=HTML.encodeTags(broadcastTitle)%></span><br> 260 <span class="text"><%=HTML.niceFormat(broadcastMessage)%></span> 261 </div> 262 <% 263 } 264 if (messages.size() == 0 && broadcastTitle == null) 265 { 266 %> 267 No new messages. 268 <% 269 } 270 else 271 { 272 for (Message m : messages) 273 { 274 String fullName = m.getName(); 275 String shortName = Values.trimString(fullName, 50); 276 String text = Values.trimString(m.getDescription(), 100); 277 %> 278 <div class="item"> 279 <a href="javascript:viewMessage(<%=m.getId()%>)" 280 title="<%=HTML.encodeTags(fullName)%>"> 281 <span class="date"><%=dateTimeFormatter.format(m.getTimeSent())%></span> 282 <span class="headline"><%=HTML.encodeTags(shortName)%></span></a><br> 283 <span class="text"><%=HTML.encodeTags(text)%></span> 284 </div> 285 <% 286 } 287 } 288 %> 289 </div> 290 <% 291 String help = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.help")); 292 String faq = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.faq")); 293 String reportBug = Values.getStringOrNull(sc.getClientDefaultSetting("server.links.reportbug")); 294 if (help != null || faq != null || reportBug != null) 295 { 296 %> 297 <h3 class="light docked"><base:icon image="help.png" /> Help</h3> 298 <div id="help" class="welcomesection" style="height: 80px; overflow: auto;"> 299 <% 300 if (help != null) 301 { 302 %> 303 <base:icon image="bullet.gif" /> <a href="<%=help%>" target="Help">Help…</a><br> 304 <% 305 } 306 %> 307 <% 308 if (faq != null) 309 { 310 %> 311 <base:icon image="bullet.gif" /> <a href="<%=faq%>" target="FAQ">Frequently asked questions…</a><br> 312 <% 313 } 314 %> 315 <% 316 if (reportBug != null) 317 { 318 %> 319 <base:icon image="bug.gif" /> <a href="<%=reportBug%>" target="ReportBug">Report a bug…</a><br> 320 <% 321 } 322 %> 323 </div> 324 <% 325 } 326 %> 327 328 </td> 329 <td> </td> 330 <td width="50%"> 331 332 <h3 class="light docked"><base:icon image="news.gif" /> News and announcements (<%=news.size()%>) 333 <% 334 if (RssNewsFeed.isEnabled()) 335 { 336 %> 337 <a href="../info/news.rss" 338 title="Subscribe to news from this BASE server" 339 ><base:icon image="rss.png" /></a> 340 <% 341 } 342 %> 343 </h3> 344 <div id="news" class="news welcomesection" style="height: 400px; overflow: auto;"> 345 <% 346 if (news.size() == 0) 347 { 348 %> 349 Nothing new. 350 <% 351 } 352 else 353 { 354 for (News n : news) 355 { 356 %> 357 <div class="item"> 358 <span class="date"><%=dateFormatter.format(n.getNewsDate())%></span> 359 <span class="headline"><%=HTML.encodeTags(n.getName())%></span><br> 360 <span class="text"><%=HTML.niceFormat(n.getDescription())%></span> 361 </div> 362 <% 363 } 364 } 365 %> 366 </div> 367 368 <h3 class="light docked"><base:icon image="diskusage.gif" /> Disk usage</h3> 369 <div id="quota" class="welcomesection"> 370 <% 371 if (quotaGroup != null) 372 { 373 %> 374 Using quota from group: <%=Base.getLinkedName(ID, quotaGroup, false, true)%> 375 <% 376 } 377 %> 378 <table border="0" cellspacing="0" cellpadding="2" width="100%"> 379 <tr align="center"> 380 <th> </th> 381 <th colspan="2">Primary location</th> 382 <th colspan="2">Secondary location</th> 383 <th>External</th> 384 </tr> 385 <tr align="center"> 386 <th> </th> 387 <th>Used</th> 388 <th>Assigned</th> 389 <th>Used</th> 390 <th>Assigned</th> 391 <th>Used</th> 392 </tr> 393 <% 394 long myPrimaryUsage = user.getDiskUsage(totalQuotaType, Location.PRIMARY); 395 long myPrimaryQuota = quota.getQuotaValue(totalQuotaType, Location.PRIMARY); 396 long groupPrimaryQuota = groupQuota == null ? Quota.UNDEFINED : groupQuota.getQuotaValue(totalQuotaType, Location.PRIMARY); 397 long mySecondaryUsage = user.getDiskUsage(totalQuotaType, Location.SECONDARY); 398 long mySecondaryQuota = quota.getQuotaValue(totalQuotaType, Location.SECONDARY); 399 long groupSecondaryQuota = groupQuota == null ? Quota.UNDEFINED : groupQuota.getQuotaValue(totalQuotaType, Location.SECONDARY); 400 long myExternalUsage = user.getDiskUsage(totalQuotaType, Location.EXTERNAL); 401 %> 402 <tr align="center"> 403 <th>Total</th> 404 <td><%=getPrintableQuota(myPrimaryUsage, Quota.UNDEFINED)%></td> 405 <td><%=getPrintableQuota(myPrimaryQuota, groupPrimaryQuota)%></td> 406 <td><%=getPrintableQuota(mySecondaryUsage, Quota.UNDEFINED)%></td> 407 <td><%=getPrintableQuota(mySecondaryQuota, groupSecondaryQuota)%></td> 408 <td><%=getPrintableQuota(myExternalUsage, Quota.UNDEFINED)%></td> 409 </tr> 410 <tr> 411 <td colspan="6" style="border-top: 1px dotted #999999"></td> 412 </tr> 413 <% 414 for (QuotaType qt : quotaTypes) 415 { 416 myPrimaryUsage = user.getDiskUsage(qt, Location.PRIMARY); 417 myPrimaryQuota = quota.getQuotaValue(qt, Location.PRIMARY); 418 groupPrimaryQuota = groupQuota == null ? Quota.UNDEFINED : groupQuota.getQuotaValue(qt, Location.PRIMARY); 419 mySecondaryUsage = user.getDiskUsage(qt, Location.SECONDARY); 420 mySecondaryQuota = quota.getQuotaValue(qt, Location.SECONDARY); 421 groupSecondaryQuota = groupQuota == null ? Quota.UNDEFINED : groupQuota.getQuotaValue(qt, Location.SECONDARY); 422 myExternalUsage = user.getDiskUsage(qt, Location.EXTERNAL); 423 %> 390 391 <div class="absolutefull" style="left: 0.5em; right: 1em; top: auto; height: 13em; bottom: 1em;"> 392 <div class="absolutefull" style="height: 2em; overflow: hidden;""> 393 <h3 style="height: 100%;"><base:icon image="diskusage.gif" style="float: left; margin-top: 0.2em; margin-right: 0.5em;" />Disk usage</h3> 394 </div> 395 <div id="quota" class="absolutefull welcomesection" style="top: 2em;"> 396 <% 397 if (quotaGroup != null) 398 { 399 %> 400 Using quota from group: <%=Base.getLinkedName(ID, quotaGroup, false, true)%> 401 <% 402 } 403 %> 404 <table style="width: 100%;"> 424 405 <tr style="text-align: center;"> 425 <th><%=HTML.encodeTags(qt.getName())%></th> 406 <th></th> 407 <th colspan="2">Primary location</th> 408 <th colspan="2">Secondary location</th> 409 <th>External</th> 410 </tr> 411 <tr style="text-align: center;"> 412 <th></th> 413 <th>Used</th> 414 <th>Assigned</th> 415 <th>Used</th> 416 <th>Assigned</th> 417 <th>Used</th> 418 </tr> 419 <% 420 long myPrimaryUsage = user.getDiskUsage(totalQuotaType, Location.PRIMARY); 421 long myPrimaryQuota = quota.getQuotaValue(totalQuotaType, Location.PRIMARY); 422 long groupPrimaryQuota = groupQuota == null ? Quota.UNDEFINED : groupQuota.getQuotaValue(totalQuotaType, Location.PRIMARY); 423 long mySecondaryUsage = user.getDiskUsage(totalQuotaType, Location.SECONDARY); 424 long mySecondaryQuota = quota.getQuotaValue(totalQuotaType, Location.SECONDARY); 425 long groupSecondaryQuota = groupQuota == null ? Quota.UNDEFINED : groupQuota.getQuotaValue(totalQuotaType, Location.SECONDARY); 426 long myExternalUsage = user.getDiskUsage(totalQuotaType, Location.EXTERNAL); 427 %> 428 <tr style="text-align: center;"> 429 <th>Total</th> 426 430 <td><%=getPrintableQuota(myPrimaryUsage, Quota.UNDEFINED)%></td> 427 431 <td><%=getPrintableQuota(myPrimaryQuota, groupPrimaryQuota)%></td> … … 430 434 <td><%=getPrintableQuota(myExternalUsage, Quota.UNDEFINED)%></td> 431 435