Changeset 5918


Ignore:
Timestamp:
Dec 21, 2011, 11:43:35 AM (11 years ago)
Author:
Nicklas Nordborg
Message:

References #1655: GUI improvements

Started with the redesign of list and view pages. I am using the biosource and sample pages for testing.
Changes affect more of the non-fixed pages since a lot of the contents is generated by taglibs. This means that the non-fixed pages doesn't look very good at the moment.

Table listings has only been fixed so that they display and can be used. Much more work is needed as part of #160.

I have also fixed the following pages:

  • The main menu
  • Login page + Home page
  • Item overview frameset
  • Plugins and extensions overview
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  
    119119    if (displayIcon && btn.getIcon() != null)
    120120    {
    121       sb.append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr>");
     121      sb.append("<table><tr>");
    122122      sb.append("<td><img src=\"").append(btn.getIcon()).append("\"");
    123123      if (btn.getId() != null) sb.append(" id=\"").append(btn.getId()).append(".icon").append("\"");
    124       sb.append(" border=\"0\"></td>");
     124      sb.append("></td>");
    125125      sb.append("<td>");
    126126    }
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/Body.java

    r5384 r5918  
    316316        throw new JspTagException(ex);       
    317317      }
    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");
    319320      break;
    320321    }
     
    352353      sb.append("});");
    353354      sb.append("</script>\n");
     355      if (page.getTypeCode() == Page.PAGE_TYPE_DEFAULT)
     356      {
     357        //sb.append("</div>\n");
     358      }
    354359      sb.append("</body>\n");
    355360      try
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/Icon.java

    r5911 r5918  
    165165  private boolean visible = true;
    166166
     167  /**
     168    If the icon should be enabled or not (if an onclick has been set).
     169  */
     170  private boolean enabled = true;
     171
    167172  public Icon()
    168173  {
     
    189194  {
    190195    return visible;
     196  }
     197 
     198  public void setEnabled(boolean enabled)
     199  {
     200    this.enabled = enabled;
     201  }
     202  public boolean isEnabled()
     203  {
     204    return enabled;
    191205  }
    192206
     
    224238    StringBuilder sb = new StringBuilder();
    225239    sb.append("<span ");
    226     addIdAndStyles(sb, getOnclick() != null ? "link" : "");
     240    addIdAndStyles(sb, getOnclick() != null ? "link" : "", isEnabled() ? "" : "disabled");
    227241    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("\"");
    229243    sb.append(">");
    230244    sb.append("<img src=\"").append(theImage).append("\">");
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Menu.java

    r4889 r5918  
    2525import javax.servlet.jsp.JspException;
    2626import javax.servlet.jsp.JspTagException;
    27 import javax.servlet.jsp.tagext.TagSupport;
    2827import javax.servlet.http.HttpServletRequest;
     28
     29import net.sf.basedb.clients.web.taglib.StylableTag;
    2930
    3031
     
    4445      type=...
    4546      clazz=...
     47      subclass=...
    4648      style=...
    4749      open=...
     
    132134@SuppressWarnings("serial")
    133135public class Menu
    134   extends TagSupport
     136  extends StylableTag
    135137{
    136138
     
    140142  private static String ROOT = null;
    141143
    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
    152145  /**
    153146    If it is a vertical or horizontal menu.
     
    165158  private String fillText = null;
    166159 
     160  public Menu()
     161  {
     162    super("menu");
     163  }
    167164 
    168165  /*
    169166    Taglib initialization methods
    170167  */
    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 
    189168  public void setType(String type)
    190169  {
     
    244223    StringBuilder sb = new StringBuilder();
    245224    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");
    249226    sb.append("\">\n");
    250     sb.append("<table border=0 cellspacing=0 cellpadding=0").append(isVertical() ? "" : " width=\"100%\"").append(">\n");
     227    sb.append("<table>\n");
    251228    if (isVertical())
    252229    {
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Menuitem.java

    r5808 r5918  
    2525import javax.servlet.jsp.JspException;
    2626import javax.servlet.jsp.JspTagException;
    27 import javax.servlet.jsp.tagext.TagSupport;
     27
     28import net.sf.basedb.clients.web.taglib.StylableTag;
    2829
    2930/**
     
    3536  <pre>
    3637   &lt;m:menuitem
    37       id=....
     38      id=...
     39      clazz=...
     40      subclass=...
    3841      style=...
    3942      title=...
     
    131134*/
    132135public class Menuitem
    133   extends TagSupport
     136  extends StylableTag
    134137{
    135138  /**
     
    144147
    145148  /**
    146     Optional <code>style</code> attribute
    147   */
    148   private String style = null;
    149  
    150   /**
    151149    The title of the menu item.
    152150  */
     
    177175  */
    178176  private String icon = null;
    179 
    180 
    181   private boolean iconAbsolute = false;
     177 
     178  public Menuitem()
     179  {
     180    super("menuitem");
     181  }
    182182 
    183183  /*
    184184    Taglib initialization methods
    185185  */
    186   public void setStyle(String style)
    187   {
    188     this.style = style;
    189   }
    190   public String getStyle()
    191   {
    192     return style;
    193   }
    194 
    195186  public void setTitle(String title)
    196187  {
     
    247238  }
    248239 
    249   public void setIconabsolute(boolean absolute)
    250   {
    251     this.iconAbsolute = absolute;
    252   }
    253  
    254   public boolean isIconabsolute()
    255   {
    256     return iconAbsolute;
    257   }
    258240
    259241  public int doStartTag()
     
    266248   
    267249    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");
    271252    if (isEnabled())
    272253    {
     
    279260    {
    280261      String theIcon = getIcon() == null ? "padding.gif" : getIcon();
    281       if (!isIconabsolute())
     262      if (!theIcon.startsWith("/"))
    282263      {
    283264        // The icon is in the 'images' directory
    284265        theIcon = menu.getRoot() + "images/" + theIcon;
    285266      }
    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\">");
    287268    }
    288     String padding = menu.isVertical() ? "&nbsp;" : "";
    289     if (getTitle() != null) sb.append(getTitle()).append(padding).append(padding).append(padding);
     269    if (getTitle() != null) sb.append(getTitle());
    290270    sb.append("</div>");
    291271    try
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Menuseparator.java

    r4889 r5918  
    2525import javax.servlet.jsp.JspException;
    2626import javax.servlet.jsp.JspTagException;
    27 import javax.servlet.jsp.tagext.TagSupport;
     27
     28import net.sf.basedb.clients.web.taglib.StylableTag;
    2829
    2930/**
     
    3536  <pre>
    3637   &lt;m:menuseparator
    37       id=....
     38      id=...
     39      clazz=...
     40      subclass=...
    3841      style=...
    3942      visible=...
     
    8689*/
    8790public class Menuseparator
    88   extends TagSupport
     91  extends StylableTag
    8992{
    9093
     
    109112    Taglib initialization methods
    110113  */
    111   public void setStyle(String style)
     114  public Menuseparator()
    112115  {
    113     this.style = style;
     116    super("menuseparator");
    114117  }
    115   public String getStyle()
    116   {
    117     return style;
    118   }
    119 
     118 
    120119  public void setVisible(boolean visible)
    121120  {
     
    136135
    137136    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>");
    142140    try
    143141    {
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/menu/Submenu.java

    r5808 r5918  
    2525import javax.servlet.jsp.JspException;
    2626import javax.servlet.jsp.JspTagException;
    27 import javax.servlet.jsp.tagext.TagSupport;
     27
     28import net.sf.basedb.clients.web.taglib.StylableTag;
    2829
    2930/**
     
    3536  <pre>
    3637   &lt;m:submenu
    37       id=....
     38      id=...
     39      clazz=...
     40      subclass=...
    3841      style=...
    3942      title=...
     
    130133*/
    131134public class Submenu
    132   extends TagSupport
     135  extends StylableTag
    133136{
    134137  /**
     
    143146
    144147  /**
    145     Optional <code>style</code> attribute
    146   */
    147   private String style = null;
    148  
    149   /**
    150148    The title of the menu item.
    151149  */
     
    177175  private String icon = null;
    178176 
    179   private boolean iconAbsolute = false;
    180 
    181 
     177  public Submenu()
     178  {
     179    super("menuitem");
     180  }
     181 
    182182  /*
    183183    Taglib initialization methods
    184184  */
    185   public void setStyle(String style)
    186   {
    187     this.style = style;
    188   }
    189   public String getStyle()
    190   {
    191     return style;
    192   }
    193 
    194185  public void setTitle(String title)
    195186  {
     
    244235  {
    245236    return icon;
    246   }
    247   public void setIconabsolute(boolean absolute)
    248   {
    249     this.iconAbsolute = absolute;
    250   }
    251  
    252   public boolean isIconabsolute()
    253   {
    254     return iconAbsolute;
    255237  }
    256238
     
    264246
    265247    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");
    269250    if (isEnabled())
    270251    {
     
    283264    if (menu.isVertical())
    284265    {
    285       sb.append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td>");
     266      sb.append("<table style=\"width: 100%;\"><tr><td>");
    286267      String theIcon = getIcon() == null ? "padding.gif" : getIcon();
    287       if (!isIconabsolute())
     268      if (!theIcon.startsWith("/"))
    288269      {
    289270        // The icon is in the 'images' directory
    290271        theIcon = menu.getRoot() + "images/" + theIcon;
    291272      }
    292       sb.append("<img src=\"").append(theIcon).append("\" alt=\"\" style=\"padding-left: 4px; padding-right: 4px;\">");
    293     }
    294     String padding = menu.isVertical() ? "&nbsp;" : "";
    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());
    296276    if (menu.isVertical())
    297277    {
    298       sb.append("</td><td align=\"baseline\">");
    299       sb.append("<img src=\"").append(menu.getRoot()).append("images/submenu.gif\" alt=\"&gt;\" align=\"right\" style=\"padding-right: 4px;\">");
    300       sb.append("</td></tr></table>");
     278      sb.append("</td><td class=\"submenuicon\">›</td></tr></table>");
    301279    }
    302280    sb.append("</div>");
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/path/Path.java

    r4889 r5918  
    2626import javax.servlet.jsp.tagext.TagSupport;
    2727import javax.servlet.http.HttpServletRequest;
     28
     29import net.sf.basedb.clients.web.taglib.StylableTag;
    2830
    2931/**
     
    9496*/
    9597public class Path
    96   extends TagSupport
     98  extends StylableTag
    9799{
    98100
     
    107109  private static String ROOT = null;
    108110
    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
    119112  /**
    120113    Keeps track of the number of path elements so separators can be added.
     
    122115  private int numElements;
    123116 
     117  public Path()
     118  {
     119    super("path");
     120  }
     121 
    124122  /*
    125123    Taglib initialization methods
    126124  */
    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   }
    144125
    145126  String getRoot()
     
    148129  }
    149130 
    150   private String separator = null;
     131  private String separator = "";
    151132 
    152133  String getSeparator()
     
    155136    if (separator == null)
    156137    {
    157       separator = "<td class=\"separator\"><img src=\""+getRoot()+"images/pathseparator.gif\"></td>";
     138      //separator = "<img class=\"separator\" src=\""+getRoot()+"images/pathseparator.gif\">";
    158139    }
    159140    return numElements > 1 ? separator : "";
     
    167148
    168149    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(">");
    175153
    176154    try
     
    189167  {
    190168    StringBuilder sb = new StringBuilder();
    191     sb.append("</tr></table>");
    192     sb.append("</div>\n");
     169    sb.append("</h1>\n");
    193170    try
    194171    {
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/path/PathElement.java

    r4889 r5918  
    2525import javax.servlet.jsp.JspTagException;
    2626import javax.servlet.jsp.tagext.TagSupport;
     27
     28import net.sf.basedb.clients.web.taglib.StylableTag;
    2729
    2830/**
     
    117119*/
    118120public class PathElement
    119   extends TagSupport
     121  extends StylableTag
    120122{
    121123  /**
     
    129131  private Path path = null;
    130132
    131   /**
    132     Optional <code>class</code> attribute
    133   */
    134   private String clazz = "pathelement";
    135  
    136   /**
    137     Optional <code>style</code> attribute
    138   */
    139   private String style = null;
    140  
    141133  /**
    142134    The title of the menu item.
     
    157149  private boolean enabled = true;
    158150 
     151  public PathElement()
     152  {
     153    super("pathelement");
     154  }
     155 
    159156  /*
    160157    Taglib initialization methods
    161158  */
    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 
    180159  public void setTitle(String title)
    181160  {
     
    244223    StringBuilder sb = new StringBuilder();
    245224    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);
    250227    sb.append(">");
    251228    if (getHref() != null && isEnabled())
     
    259236      sb.append(getTitle());
    260237    }
    261     sb.append("</td>");
     238    sb.append("</span>");
    262239    try
    263240    {
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Button.java

    r5384 r5918  
    2525import net.sf.basedb.clients.web.extensions.toolbar.ButtonAction;
    2626import net.sf.basedb.clients.web.extensions.toolbar.ToolbarButtonRenderer;
     27import net.sf.basedb.clients.web.taglib.StylableTag;
    2728
    2829import javax.servlet.http.HttpServletRequest;
     
    3031import javax.servlet.jsp.JspTagException;
    3132import javax.servlet.jsp.JspWriter;
    32 import javax.servlet.jsp.tagext.TagSupport;
    3333
    3434/**
     
    4343      id=...
    4444      clazz=...
     45      subclass=...
    4546      style=...
    4647      image=...
    47       imagealign=left|right (no longer supported)
    4848      onclick=...
    4949      title=...
     
    107107  </tr>
    108108  <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>
    118109    <td>onclick</td>
    119110    <td>-</td>
     
    165156*/
    166157public class Button
    167   extends TagSupport
    168   implements ButtonAction
     158  extends StylableTag
    169159{
    170160
     
    175165
    176166  /**
    177     The parent &lt;tbl:table&gt; tag.
    178   */
    179   private Table table;
    180  
    181   /**
    182167    The parent &lt;tbl:toolbar&gt; tag.
    183168  */
     
    185170
    186171  /**
    187     Optional <code>class</code> attribute
    188   */
    189   private String clazz = "button";
    190  
    191   /**
    192     Optional <code>style</code> attribute
    193   */
    194   private String style = null;
    195  
    196   /**
    197172    An optional image to show in the button.
    198173  */
     
    200175 
    201176  /**
    202     LEFT or RIGTH;
    203   */
    204   private String imageAlign = "left";
    205  
    206   /**
    207177    A JavaScript statement that is executet when the button is clicked.
    208178  */
     
    229199  private boolean visible = true;
    230200
     201  public Button()
     202  {
     203    super("button");
     204  }
     205 
    231206  /*
    232207    Taglib initialization methods
    233208  */
    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 
    252209  public void setImage(String image)
    253210  {
     
    259216  }
    260217 
    261   public void setImagealign(String imageAlign)
    262   {
    263     this.imageAlign = imageAlign;
    264   }
    265   public String getImagealign()
    266   {
    267     return imageAlign;
    268   }
    269 
    270218  public void setOnclick(String onClick)
    271219  {
     
    311259  {
    312260    return visible;
    313   }
    314 
    315   @Override
    316   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   @Override
    326   public String getOnClick()
    327   {
    328     return getOnclick();
    329   }
    330   @Override
    331   public boolean isEnabled()
    332   {
    333     return !isDisabled();
    334261  }
    335262 
     
    343270    if (!(getParent() instanceof Toolbar)) throw new JspTagException("Tag <tbl:button> must be inside a <tbl:toolbar> tag");
    344271    toolbar = (Toolbar)getParent();
    345     table = toolbar.getTable();
    346272    boolean displayImage = getImage() != null && toolbar.hasImages();
    347273    boolean displayText = toolbar.hasText() || !displayImage;
    348274 
    349     String html = new ToolbarButtonRenderer().getHTML(this, displayText, displayImage);
     275    String html = new ToolbarButtonRenderer().getHTML(new ButtonActionWrapper(), displayText, displayImage);
    350276    try
    351277    {
     
    360286  }
    361287
     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  }
    362353
    363354}
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Label.java

    r4889 r5918  
    245245    if (!(getParent() instanceof Toolbar)) throw new JspTagException("Tag <tbl:label> must be inside a <tbl:toolbar> tag");
    246246    toolbar = (Toolbar)getParent();
    247     table = toolbar.getTable();
    248247    Page page = table != null ? table.getPage() : (Page)findAncestorWithClass(this, Page.class);
    249248
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Toolbar.java

    r5689 r5918  
    2525import javax.servlet.jsp.JspException;
    2626import javax.servlet.jsp.JspTagException;
    27 import javax.servlet.jsp.tagext.TagSupport;
    2827
    2928import net.sf.basedb.clients.web.Base;
     29import net.sf.basedb.clients.web.taglib.StylableTag;
    3030import net.sf.basedb.util.Values;
    3131import net.sf.basedb.core.SessionControl;
    3232
    3333/**
    34   This tag creates a toolbar in the table. The tag must be located inside
    35   a {@link Table &lt;tbl:table&gt;}
     34  This tag creates a toolbar.
    3635  tag.
    3736
     
    4241      id=...
    4342      clazz=...
     43      subclass=...
    4444      style=...
    4545      visible=true|false
     
    109109*/
    110110public class Toolbar
    111   extends TagSupport
     111  extends StylableTag
    112112{
    113113
     
    117117  private static final long serialVersionUID = -8719987407920036604L;
    118118
     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
    119135  /**
    120136    The parent &lt;tbl:table&gt; tag.
    121137  */
    122138  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  }
    148144 
    149145  /*
    150146    Taglib initialization methods
    151147  */
    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 
    170148  public void setVisible(boolean visible)
    171149  {
     
    190168    Package methods
    191169  */
    192   Table getTable()
    193   {
    194     return table;
    195   }
    196 
    197170  /*
    198171    Display methods
     
    201174    throws JspException
    202175  {
    203     table = (Table)findAncestorWithClass(this, Table.class);
    204176    if (!isVisible()) return SKIP_BODY;
    205177
    206178    SessionControl sc = null;
    207179    StringBuilder sb = new StringBuilder();
     180    table = (Table)findAncestorWithClass(this, Table.class);
     181
    208182    if (table == null)
    209183    {
     184      // Standalone toolbar
    210185      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   
    217191    }
    218192    else
     
    223197      if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\"");
    224198      if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\"");
    225       sb.append(">");
    226     }
     199      sb.append("><table><tr>");
     200    }
     201
    227202   
    228203    if (sc != null)
     
    232207    }
    233208   
    234     sb.append("<table border=0 cellspacing=0 cellpadding=0><tr>");
    235209    try
    236210    {
     
    249223    if (!isVisible()) return EVAL_PAGE;
    250224    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    }
    253233    try
    254234    {
  • trunk/www/WEB-INF/base.tld

    r5911 r5918  
    202202      <rtexprvalue>true</rtexprvalue>
    203203    </attribute>
     204    <attribute>
     205      <name>enabled</name>
     206      <required>false</required>
     207      <rtexprvalue>true</rtexprvalue>
     208    </attribute>
    204209  </tag>
    205210
  • trunk/www/WEB-INF/menu.tld

    r4889 r5918  
    6262    </attribute>
    6363    <attribute>
     64      <name>subclass</name>
     65      <required>false</required>
     66      <rtexprvalue>true</rtexprvalue>
     67    </attribute>
     68    <attribute>
    6469      <name>style</name>
    6570      <required>false</required>
     
    8691    </attribute>
    8792    <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>
    88103      <name>style</name>
    89104      <required>false</required>
     
    120135      <rtexprvalue>true</rtexprvalue>
    121136    </attribute>
    122     <attribute>
    123       <name>iconabsolute</name>
    124       <required>false</required>
    125       <rtexprvalue>true</rtexprvalue>
    126     </attribute>
    127137  </tag>
    128138  <tag>
  • trunk/www/WEB-INF/table.tld

    r5643 r5918  
    409409    </attribute>
    410410    <attribute>
     411      <name>subclass</name>
     412      <required>false</required>
     413      <rtexprvalue>true</rtexprvalue>
     414    </attribute>
     415    <attribute>
    411416      <name>style</name>
    412417      <required>false</required>
     
    464469    </attribute>
    465470    <attribute>
     471      <name>subclass</name>
     472      <required>false</required>
     473      <rtexprvalue>true</rtexprvalue>
     474    </attribute>
     475    <attribute>
    466476      <name>style</name>
    467477      <required>false</required>
     
    470480    <attribute>
    471481      <name>image</name>
    472       <required>false</required>
    473       <rtexprvalue>true</rtexprvalue>
    474     </attribute>
    475     <attribute>
    476       <name>imagealign</name>
    477482      <required>false</required>
    478483      <rtexprvalue>true</rtexprvalue>
  • trunk/www/admin/extensions/details.jsp

    r5903 r5918  
    169169  function manualScan()
    170170  {
    171     Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ManualScan', 'ManualScan', 800, 480);
     171    Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ManualScan', 'ManualScan', 750, 500);
    172172  }
    173173 
    174174  function scanResults()
    175175  {
    176     Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ScanResults', 'ScanResults', 600, 480);
     176    Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ScanResults', 'ScanResults', 600, 400);
    177177  }
    178178
     
    186186    <base:body>
    187187
    188     <tbl:toolbar>
    189 
     188    <div class="absolutefull" onmousemove="parent.DragDrop.drag(event)" onmouseup="parent.DragDrop.endDrag(event)">
     189
     190    <tbl:toolbar subclass="bottomborder">
    190191    <%
    191192    if (ext != null)
     
    273274    </tbl:toolbar>
    274275
    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)
    284281      {
     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        }
    285306        %>
    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>
    303309          <td><%=ext.getId()%></td>
    304310        </tr>
    305311        <tr>
    306           <td class="prompt">Name</td>
     312          <th>Name</th>
    307313          <td><%=HTML.encodeTags(about.getName())%></td>
    308314        </tr>
    309315        <tr>
    310           <td class="prompt">File</td>
     316          <th>File</th>
    311317          <td>
    312318            <a href="javascript:showFile('<%=HTML.javaScriptEncode(extFile.getName())%>')"
     
    317323        </tr>
    318324        <tr>
    319           <td class="prompt">Version</td>
     325          <th>Version</th>
    320326          <td><%=HTML.encodeTags(about.getVersion())%></td>
    321327        </tr>
    322         <tr>
    323           <td class="prompt">Description</td>
     328        <tr class="big">
     329          <th>Description</th>
    324330          <td><%=HTML.niceFormat(about.getDescription())%></td>
    325331        </tr>
    326332        <tr>
    327           <td class="prompt">Copyright</td>
     333          <th>Copyright</th>
    328334          <td><%=HTML.encodeTags(about.getCopyright())%></td>
    329335        </tr>
    330336        <tr>
    331           <td class="prompt">Contact</td>
     337          <th>Contact</th>
    332338          <td><%=HTML.encodeTags(about.getContact())%></td>
    333339        </tr>
    334340        <tr>
    335           <td class="prompt">Email</td>
     341          <th>Email</th>
    336342          <td><%=HTML.scanForLinks(about.getEmail(), HTML.LINK_EMAIL, "_new")%></td>
    337343        </tr>
    338344        <tr>
    339           <td class="prompt">Url</td>
     345          <th>Url</th>
    340346          <td><%=HTML.scanForLinks(about.getUrl(), HTML.LINK_URL, "_new")%></td>
    341347        </tr>
    342         </tr>
    343           <tr>
    344           <td class="prompt">Action factory</td>
     348        <tr class="big">
     349          <th>Action factory</th>
    345350          <td><%=displayFactory(extFile, ext.getActionFactory())%></td>
    346351        </tr>
    347         </tr>
    348         <tr>
    349           <td class="prompt">Renderer factory</td>
     352        <tr class="big">
     353          <th>Renderer factory</th>
    350354          <td><%=displayFactory(extFile, ext.getRendererFactory())%></td>
    351355        </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>
    363357        <%
    364358      }
    365       Throwable error = ec.getLastExtensionPointError(ep.getId());
    366       if (error != null)
     359      if (ep != null)
    367360      {
     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        }
    368371        %>
    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>
    380394          <%
     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        <%
    381440      }
    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     <%
    431441    if (file != null)
    432442    {
     
    434444      if (about == null) about = new AboutBean();
    435445      %>
    436       <table class="form" cellspacing="0">
    437       <tr>
    438         <td class="prompt">File</td>
     446      <tbody>
     447      <tr>
     448        <th>File</th>
    439449        <td><%=file.getName()%></td>
    440450      </tr>
    441451      <tr>
    442         <td class="prompt">Type</td>
     452        <th>Type</th>
    443453        <td><%=file.isJar() ? "JAR file" : "XML file"%></td>
    444454      </tr>
    445455      <tr>
    446         <td class="prompt">Up to date</td>
     456        <th>Up to date</th>
    447457        <td><%=file.checkModified() ? "No" : "Yes"%></td>
    448458      </tr>
    449       <tr>
    450         <td class="prompt">Errors</td>
     459      <tr class="big">
     460        <th>Errors</th>
    451461        <td>
    452462          <%
     
    458468            Throwable validationError = file.getValidationError();
    459469            %>
    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;">
    461472            <%
    462473            if (validationError != null)
     
    474485            %>
    475486            </ul>
     487            </div>
    476488            <%
    477489          }
     
    486498      </tr>
    487499      <tr>
    488         <td class="prompt">Name</td>
     500        <th>Name</th>
    489501        <td><%=HTML.encodeTags(about.getName())%></td>
    490502      </tr>
    491503      <tr>
    492         <td class="prompt">Version</td>
     504        <th>Version</th>
    493505        <td><%=HTML.encodeTags(about.getVersion())%></td>
    494506      </tr>
    495       <tr>
    496         <td class="prompt">Description</td>
     507      <tr class="big">
     508        <th>Description</th>
    497509        <td><%=HTML.niceFormat(about.getDescription())%></td>
    498510      </tr>
    499511      <tr>
    500         <td class="prompt">Copyright</td>
     512        <th>Copyright</th>
    501513        <td><%=HTML.encodeTags(about.getCopyright())%></td>
    502514      </tr>
    503515      <tr>
    504         <td class="prompt">Contact</td>
     516        <th>Contact</th>
    505517        <td><%=HTML.encodeTags(about.getContact())%></td>
    506518      </tr>
    507519      <tr>
    508         <td class="prompt">Email</td>
     520        <th>Email</th>
    509521        <td><%=HTML.scanForLinks(about.getEmail(), HTML.LINK_EMAIL, "_new")%></td>
    510522      </tr>
    511523      <tr>
    512         <td class="prompt">Url</td>
     524        <th>Url</th>
    513525        <td><%=HTML.scanForLinks(about.getUrl(), HTML.LINK_URL, "_new")%></td>
    514526      </tr>
    515       </table>
     527      </tbody>
    516528      <%
    517529    }
     
    523535      Formatter dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
    524536      %>
    525       <table class="form" cellspacing="0">
    526       <tr>
    527         <td class="prompt">Last installation</td>
     537      <tbody>
     538      <tr>
     539        <th>Last installation</th>
    528540        <td><%=results.hasError() ? "Failed": "Successful" %></td>
    529541      </tr>
    530542      <tr>
    531         <td class="prompt" style="text-align: right; font-weight: normal;">- ended</td>
     543        <th class="subprompt">- ended</td>
    532544        <td><%=dateTimeFormatter.format(new Date(results.getEndTime())) %></td>
    533545      </tr>
    534       <tr>
    535         <td class="prompt" style="text-align: right; font-weight: normal;">- summary</td>
     546      <tr class="big">
     547        <th class="subprompt">- summary</th>
    536548        <td>
    537549        <%=HTML.niceFormat(results.getSummary())%></td>
    538550      </tr>
    539551      <tr>
    540         <td  class="prompt" style="text-align: right; font-weight: normal;"><base:icon image="bullet.gif" /></td>
     552        <th class="subprompt"></th>
    541553        <td>
    542           <a href="javascript:scanResults()"
    543             title="Display detailed information about the last scan"
    544             >More details&hellip;</a>
     554          <table><tr><td>
     555          <base:button image="bullet.gif"
     556            onclick="scanResults()"
     557            title="More details&hellip;"
     558            tooltip="Display detailed information about the last scan"
     559          />
     560          </td></tr></table>
    545561        </td>
    546562      </tr>
    547       </table>
     563      </tbody>
    548564      <%
    549565    }
    550566    %>
     567    </div>
    551568    </div>
    552569    </base:body>
  • trunk/www/admin/extensions/frameset.jsp

    r5426 r5918  
    3636%>
    3737
    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>
    4874</base:page>
    4975
  • trunk/www/admin/extensions/manager.jsp

    r5615 r5918  
    3737
    3838%>
    39 <base:page title="Installed extensions &amp; plug-ins">
     39<base:page type="default" title="Installed extensions &amp; plug-ins">
    4040<base:head >
    4141  <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 IFrame
    50     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 height
    59     var windowHeight = Main.getWindowHeight();
    60     iframeElement.height = windowHeight-offsetTop;
    61 
    62     // Adjust the height of the frames
    63     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   }
    7842  </script>
    7943</base:head>
    8044<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 &amp; 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>
    8551</base:body>
    8652</base:page>
  • trunk/www/admin/extensions/scan_results.jsp

    r5616 r5918  
    6464  {
    6565    Main.showHide('details.' + detailsId);
    66     var icon = document.getElementById('icon.'+detailsId);
     66    var icon = document.getElementById('icon.'+detailsId).firstChild;
    6767    if (icon)
    6868    {
    69       if (icon.src.indexOf('show') > 0)
     69      if (icon.src.indexOf('right') > 0)
    7070      {
    71         icon.src = icon.src.replace('show', 'hide');
     71        icon.src = icon.src.replace('right', 'down');
    7272      }
    7373      else
    7474      {
    75         icon.src = icon.src.replace('hide', 'show');
     75        icon.src = icon.src.replace('down', 'right');
    7676      }
    7777    }
     
    8080  </base:head>
    8181  <base:body>
    82   <p>
     82  <h1>Last installation results</h1>
     83 
     84  <div class="content bottomborder">
    8385
    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">
    8887    <tr>
    89       <td class="prompt">Status</td>
    90       <td colspan="3"><%=results.hasError() ? "Error" : "Success" %></td>
     88      <th>Status</th>
     89      <td><%=results.hasError() ? "Error" : "Success" %></td>
    9190    </tr>
    9291    <tr>
    93       <td class="prompt">Started</td>
     92      <th class="subprompt">Started</th>
    9493      <td><%=timeFormatter.format(new Date(results.getStartTime()))%></td>
    95       <td class="prompt">Ended</td>
     94    </tr>
     95    <tr>
     96      <th class="subprompt">Ended</th>
    9697      <td><%=timeFormatter.format(new Date(results.getEndTime()))%></td>
    9798    </tr>
    9899    <tr>
    99       <td class="prompt">Summary</td>
    100       <td colspan="3"><%=HTML.niceFormat(results.getSummary())%></td>
     100      <th>Summary</th>
     101      <td><%=HTML.niceFormat(results.getSummary())%></td>
    101102    </tr>
    102     </table>
    103  
    104     <table class="form">
    105103    <%
    106104    for (FileResults fileResults : results.getAllResults())
     
    113111      %>
    114112      <tr>
    115         <td class="prompt"><%=extFile.getName() %></td>
     113        <th><%=extFile.getName() %></td>
    116114        <td><%=fileResults.getStatus() %>
    117115        <base:icon
    118116          id="<%="icon." + detailsId %>"
    119           image="show_section.gif"
     117          image="move_right.png"
    120118          onclick="<%="showDetails('" + detailsId + "')" %>"
    121119          visible="<%=hasMessages%>"
     
    128126        %>
    129127        <tr id="details.<%=detailsId %>" style="display:none;">
    130           <td></td><td>
     128          <th class="subprompt"></th><td>
    131129          <ul style="padding-left: 20px; margin: 0px; text-align: left;">
    132130          <%
     
    151149    }
    152150    %>
     151    <tr class="dynamic">
     152      <th></th>
     153      <td></td>
     154    </tr>
    153155    </table>
    154156  </div>
    155157 
    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>
    163161
    164   </div>
    165162  </base:body>
    166163  </base:page>
  • trunk/www/admin/extensions/tree.jsp

    r5821 r5918  
    358358  </script>
    359359  <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;
    363368  }
    364369  </style>
    365370  </base:head>
    366371    <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%;">
    369374      </div>
    370375    </div>
  • trunk/www/admin/extensions/wizard.jsp

    r5835 r5918  
    8989  </base:head>
    9090  <base:body>
    91   <p>
    92 
     91  <h1>Extensions and plug-ins installation wizard <base:help helpid="extensions.install-wizard" /></h1>
     92 
    9393  <form action="index.jsp?ID=<%=ID%>" method="post" name="scan" onsubmit="return false;">
    9494  <input type=hidden name="cmd" value="DoManualScan">
    9595 
    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">
    9897  <tbl:table id="extensions" clazz="itemlist">
    9998    <tbl:columndef id="file" title="File" />
     
    210209  </tbl:table>
    211210  </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>
    222211  </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 
    223218  </base:body>
    224219  </base:page>
  • trunk/www/admin/plugindefinitions/view_plugin.jsp

    r5910 r5918  
    228228    }
    229229    %>
    230     <t:tabcontrol id="main" active="properties" notabs="<%=iFrame %>">
     230    <t:tabcontrol id="main" active="properties" >
    231231    <t:tab id="properties" title="Properties">
    232232    <tbl:toolbar
  • trunk/www/biomaterials/biosources/list_biosources.jsp

    r5910 r5918  
    116116  %>
    117117  <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">
    119119    <ext:scripts context="<%=jspContext%>" />
    120120    <ext:stylesheets context="<%=jspContext%>" />
     
    208208 
    209209  <base:body>
     210    <h1><%=title==null ? "Biosources" : title%></h1>
     211    <div class="content">
    210212    <%
    211213    if (cc.getMessage() != null)
     
    217219    }
    218220    %>
    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&hellip;"
     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&hellip;"
     248          tooltip="Share the selected items"
     249        />
     250        <tbl:button
     251          image="take_ownership.png"
     252          onclick="setOwner()"
     253          title="Set owner&hellip;"
     254          tooltip="Change owner of the selected items"
     255        />
     256        <tbl:button
     257          image="columns.gif"
     258          onclick="configureColumns()"
     259          title="Columns&hellip;"
     260          tooltip="Show, hide and re-order columns"
     261        />
     262        <tbl:button
     263          image="add.png"
     264          onclick="newBioMaterialList()"
     265          title="New biomaterial list&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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%>"
    229302      >
    230303      <tbl:hidden
     
    367440        datatype="string"
    368441      />
    369       <tbl:toolbar
    370         visible="<%=mode.hasToolbar()%>"
    371         >
    372         <tbl:button
    373           disabled="<%=createPermission ? false : true%>"
    374           image="<%=createPermission ? "new.gif" : "new_disabled.gif"%>"
    375           onclick="newItem()"
    376           title="New&hellip;"
    377           tooltip="<%=createPermission ? "Create new biosource" : "You do not have permission to create biosources"%>"
    378         />
    379         <tbl:button
    380           image="delete.gif"
    381           onclick="deleteItems()"
    382           title="Delete"
    383           tooltip="Delete the selected items"
    384         />
    385         <tbl:button
    386           image="restore.gif"
    387           onclick="restoreItems()"
    388           title="Restore"
    389           tooltip="Restore the selected (deleted) items"
    390         />
    391         <tbl:button
    392           image="share.gif"
    393           onclick="shareItems()"
    394           title="Share&hellip;"
    395           tooltip="Share the selected items"
    396         />
    397         <tbl:button
    398           image="take_ownership.png"
    399           onclick="setOwner()"
    400           title="Set owner&hellip;"
    401           tooltip="Change owner of the selected items"
    402         />
    403         <tbl:button
    404           image="columns.gif"
    405           onclick="configureColumns()"
    406           title="Columns&hellip;"
    407           tooltip="Show, hide and re-order columns"
    408         />
    409         <tbl:button
    410           image="add.png"
    411           onclick="newBioMaterialList()"
    412           title="New biomaterial list&hellip;"
    413           tooltip="Create a new biomaterial list from matching biosources"
    414           visible="<%=sc.hasPermission(Permission.CREATE, Item.BIOMATERIALLIST)%>"
    415         />
    416         <tbl:button
    417           image="import.gif"
    418           onclick="runPlugin('ImportItems')"
    419           title="Import&hellip;"
    420           tooltip="Import data"
    421           visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
    422         />
    423         <tbl:button
    424           image="export.gif"
    425           onclick="runPlugin('ExportItems')"
    426           title="Export&hellip;"
    427           tooltip="Export data"
    428           visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
    429         />
    430         <tbl:button
    431           image="runplugin.gif"
    432           onclick="runPlugin('RunListPlugin')"
    433           title="Run plugin&hellip;"
    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>
    440442      <tbl:navigator
    441443        page="<%=cc.getPage()%>"
     
    463465              image="check_uncheck.gif"
    464466              tooltip="Check/uncheck all"
    465               onclick="Forms.checkUncheck(document.forms[formId])" style="align: left;"
     467              onclick="Forms.checkUncheck(document.forms[formId])"
    466468            /></tbl:header>
    467469          <tbl:header
     
    660662      %>
    661663    </tbl:table>
    662     <base:buttongroup clazz="fixedatbottom">
     664    </div>
     665
     666    <base:buttongroup subclass="dialogbuttons">
    663667      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
    664668      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
    665669      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
    666670    </base:buttongroup>
    667     <br><br><br>
    668671  </base:body>
    669672  </base:page>
  • trunk/www/biomaterials/biosources/view_biosource.jsp

    r5910 r5918  
    165165  </base:head>
    166166  <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>
    172170   
    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">
    174172    <t:tab id="properties" title="Properties">
    175173
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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">
    259178          <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          />
    264190          <base:icon image="used.gif"
    265191            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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     268            tooltip="Get help about this page"
     269            />
     270          </tbl:toolbar>
     271       
     272        </td>
     273      </tr>
     274      <tr>
     275        <th>Name</th>
    277276        <td><%=HTML.encodeTags(bioSource.getName())%></td>
    278277      </tr>
    279278      <tr>
    280         <td class="prompt">Type</td>
     279        <th>Type</th>
    281280        <td><base:propertyvalue item="<%=bioSource%>" property="itemSubtype" /></td>
    282281      </tr>
    283282      <tr>
    284         <td class="prompt">Registered</td>
     283        <th>Registered</th>
    285284        <td><%=dateFormatter.format(bioSource.getEntryDate())%></td>
    286285      </tr>
    287286      <tr>
    288         <td class="prompt">External ID</td>
     287        <th>External ID</th>
    289288        <td><%=HTML.encodeTags(bioSource.getExternalId())%></td>
    290289      </tr>
    291290      <tr>
    292         <td class="prompt">Owner</td>
     291        <th>Owner</th>
    293292        <td><base:propertyvalue item="<%=bioSource%>" property="owner" /></td>
    294293      </tr>
    295294      <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>
    297300        <td><%=HTML.niceFormat(bioSource.getDescription())%></td>
    298301      </tr>
    299302      </table>
    300 
     303      </div>
    301304      <%
    302305      ItemQuery<Sample> sampleQuery = bioSource.getSamples();
     
    476479      }     
    477480      %>
    478  
    479     </div>
    480481      </t:tab>
    481482     
    482483      <t:tab id="annotations" title="Annotations" >
    483         <div class="boxed">
    484484        <jsp:include page="../../common/annotations/list_annotations.jsp">
    485485          <jsp:param name="item_type" value="<%=itemType.name()%>" />
     
    487487          <jsp:param name="ID" value="<%=ID%>" />
    488488        </jsp:include>
    489         </div>
    490489      </t:tab>
    491490      <t:tab id="overview" title="Overview"
     
    521520      </t:tab>     
    522521      </t:tabcontrol>
    523 
    524 
    525522  </base:body>
    526523  </base:page>
  • trunk/www/biomaterials/samples/list_samples.jsp

    r5910 r5918  
    156156  %>
    157157  <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">
    159159    <ext:scripts context="<%=jspContext%>" />
    160160    <ext:stylesheets context="<%=jspContext%>" />
     
    260260 
    261261  <base:body>
     262    <h1><%=title==null ? "Samples" : title%></h1>
     263    <div class="content">
    262264    <%
    263265    if (cc.getMessage() != null)
     
    269271    }
    270272    %>
     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&hellip;"
     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&hellip;"
     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&hellip;"
     307          tooltip="Share the selected items"
     308        />
     309        <tbl:button
     310          image="take_ownership.png"
     311          onclick="setOwner()"
     312          title="Set owner&hellip;"
     313          tooltip="Change owner of the selected items"
     314        />
     315        <tbl:button
     316          image="columns.gif"
     317          onclick="configureColumns()"
     318          title="Columns&hellip;"
     319          tooltip="Show, hide and re-order columns"
     320        />
     321        <tbl:button
     322          image="add.png"
     323          onclick="newBioMaterialList()"
     324          title="New biomaterial list&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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   
    271360    <tbl:table
    272361      id="samples"
     
    275364      sortby="<%=cc.getSortProperty()%>"
    276365      direction="<%=cc.getSortDirection()%>"
    277       title="<%=title%>"
    278366      action="index.jsp"
    279367      sc="<%=sc%>"
     
    530618        datatype="string"
    531619      />
    532       <tbl:toolbar
    533         visible="<%=mode.hasToolbar()%>"
    534         >
    535         <tbl:button
    536           disabled="<%=createPermission ? false : true%>"
    537           image="<%=createPermission ? "new.gif" : "new_disabled.gif"%>"
    538           onclick="newItem()"
    539           title="New&hellip;"
    540           tooltip="<%=createPermission ? "Create new sample" : "You do not have permission to create samples"%>"
    541         />
    542         <tbl:button
    543           disabled="<%=createPermission ? false : true%>"
    544           image="<%=createPermission ? "new_pooled.gif" : "new_pooled_disabled.gif"%>"
    545           onclick="newPooledItem()"
    546           title="Pool&hellip;"
    547           tooltip="<%=createPermission ? "Create new pooled sample" : "You do not have permission to create samples"%>"
    548         />
    549         <tbl:button
    550           image="delete.gif"
    551           onclick="deleteItems()"
    552           title="Delete"
    553           tooltip="Delete the selected items"
    554         />
    555         <tbl:button
    556           image="restore.gif"
    557           onclick="restoreItems()"
    558           title="Restore"
    559           tooltip="Restore the selected (deleted) items"
    560         />
    561         <tbl:button
    562           image="share.gif"
    563           onclick="shareItems()"
    564           title="Share&hellip;"
    565           tooltip="Share the selected items"
    566         />
    567         <tbl:button
    568           image="take_ownership.png"
    569           onclick="setOwner()"
    570           title="Set owner&hellip;"
    571           tooltip="Change owner of the selected items"
    572         />
    573         <tbl:button
    574           image="columns.gif"
    575           onclick="configureColumns()"
    576           title="Columns&hellip;"
    577           tooltip="Show, hide and re-order columns"
    578         />
    579         <tbl:button
    580           image="add.png"
    581           onclick="newBioMaterialList()"
    582           title="New biomaterial list&hellip;"
    583           tooltip="Create a new biomaterial list from matching samples"
    584           visible="<%=sc.hasPermission(Permission.CREATE, Item.BIOMATERIALLIST)%>"
    585         />
    586         <tbl:button
    587           image="place_on_plate.png"
    588           onclick="placeOnPlate()"
    589           title="Place on plate&hellip;"
    590           tooltip="Place the selected/matching samples on a bioplate"
    591         />
    592         <tbl:button
    593           image="import.gif"
    594           onclick="runPlugin('ImportItems')"
    595           title="Import&hellip;"
    596           tooltip="Import data"
    597           visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
    598         />
    599         <tbl:button
    600           image="export.gif"
    601           onclick="runPlugin('ExportItems')"
    602           title="Export&hellip;"
    603           tooltip="Export data"
    604           visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
    605         />
    606         <tbl:button
    607           image="runplugin.gif"
    608           onclick="runPlugin('RunListPlugin')"
    609           title="Run plugin&hellip;"
    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>
    616620      <tbl:navigator
    617621        page="<%=cc.getPage()%>"
     
    944948      %>
    945949    </tbl:table>
    946     <base:buttongroup clazz="fixedatbottom">
     950    </div>
     951
     952    <base:buttongroup subclass="dialogbuttons">
    947953      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
    948954      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
    949955      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
    950956    </base:buttongroup>
    951     <br><br><br>
    952957  </base:body>
    953958  </base:page>
  • trunk/www/biomaterials/samples/view_sample.jsp

    r5910 r5918  
    188188  </base:head>
    189189  <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>
    195193   
    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">
    197197    <t:tab id="properties" title="Properties">
    198198
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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&hellip;"
    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">
    289203          <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          />
    294215          <base:icon image="used.gif"
    295216            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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     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&hellip;"
     301            tooltip="Get help about this page"
     302          />   
     303          </tbl:toolbar>
     304        </td>
     305      </tr>
     306      <tr>
     307        <th>Name</th>
    307308        <td><%=HTML.encodeTags(sample.getName())%></td>
    308309      </tr>
    309310      <tr>
    310         <td class="prompt">Type</td>
     311        <th>Type</th>
    311312        <td><base:propertyvalue item="<%=sample%>" property="itemSubtype" /></td>
    312313      </tr>
    313314      <tr>
    314         <td class="prompt">External ID</td>
     315        <th>External ID</th>
    315316        <td><%=HTML.encodeTags(sample.getExternalId())%></td>
    316317      </tr>
    317318      <tr>
    318         <td class="prompt">Created</td>
     319        <th>Created</th>
    319320        <td><%=dateFormatter.format(creationEvent.getEventDate())%></td>
    320321      </tr>
    321322      <tr>
    322         <td class="prompt">Registered</td>
     323        <th>Registered</th>
    323324        <td><%=dateFormatter.format(creationEvent.getEntryDate())%></td>
    324325      </tr>
    325326      <tr>
    326         <td class="prompt">Protocol</td>
     327        <th>Protocol</th>
    327328        <td><base:propertyvalue item="<%=creationEvent%>" property="protocol" /></td>
    328329      </tr>
    329330      <tr>
    330         <td class="prompt">Original quantity</td>
     331        <th>Original quantity</th>
    331332        <td><%=Values.formatNumber(sample.getOriginalQuantity(), 2, " µg")%></td>
    332333      </tr>
    333334      <tr>
    334         <td class="prompt">Remaining quantity</td>
     335        <th>Remaining quantity</th>
    335336        <td><%=Values.formatNumber(sample.getRemainingQuantity(), 2, " µg")%></td>
    336337      </tr>
    337338      <tr>
    338         <td class="prompt">Bioplate</td>
     339        <th>Bioplate</th>
    339340        <td>
    340341          <base:propertyvalue item="<%=sample%>" property="bioWell.bioPlate" />
     
    357358      </tr>
    358359      <tr>
    359         <td class="prompt">Owner</td>
     360        <th>Owner</th>
    360361        <td><base:propertyvalue item="<%=sample%>" property="owner" /></td>
    361362      </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>
    364369        <td><%=HTML.niceFormat(sample.getDescription())%></td>
    365370      </tr>
    366371      </table>
    367  
     372      </div>
     373     
    368374      <%
    369375      SpecialQuery<BioMaterialEventSource> sourceQuery = creationEvent.getEventSources();
     
    629635        <%
    630636      }
    631       %>     
    632     </div>
     637      %>
    633638      </t:tab>
    634639     
    635640      <t:tab id="annotations" title="Annotations &amp; parameters"
    636641        tooltip="View annotation values and protocol parameters">
    637         <div class="boxed">
    638642        <jsp:include page="../../common/annotations/list_annotations.jsp">
    639643          <jsp:param name="item_type" value="<%=itemType.name()%>" />
     
    641645          <jsp:param name="ID" value="<%=ID%>" />
    642646        </jsp:include>
    643         </div>
    644647      </t:tab>
    645648      <t:tab id="events" title="Events" />
  • trunk/www/common/overview/failures.jsp

    r5903 r5918  
    120120    padding-top: 2px;
    121121    padding-bottom: 2px;
    122     position: fixed;
    123     top: 0px;
     122    xposition: fixed;
     123    xtop: 0px;
    124124    width:100%;
    125125    background: #ffffff;
     
    128128  </base:head>
    129129
    130     <base:body>
     130  <base:body>
     131    <div class="absolutefull" onmousemove="parent.DragDrop.drag(event)" onmouseup="parent.DragDrop.endDrag(event)" >
     132   
    131133      <div class="summary">
    132134      <b>
     
    201203      }
    202204      %>
     205      </div>
    203206    </base:body>
    204207  </base:page>
  • trunk/www/common/overview/frameset.jsp

    r5651 r5918  
    3636final String ID = sc.getId();
    3737final String showFailures = request.getParameter("show_failures");
     38final String root = request.getContextPath();
    3839%>
    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>
    5797</base:page>
    5898
  • trunk/www/common/overview/info.jsp

    r5903 r5918  
    8585    if (path.length() > 0)
    8686    {
    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> ";
    8889    }
    8990    path += Base.getLink(ID, parent.getTitle(), item.getType(), item.getId(), item.hasPermission(Permission.WRITE));
     
    126127  %>
    127128  <base:page title="" type="popup">
    128   <base:head scripts="" styles="newjoust.css">
     129  <base:head styles="newjoust.css">
    129130  <script language="JavaScript">
    130131  function editItem(itemType, itemId, extraUrl)
     
    154155    Main.viewOrEditItem('<%=ID%>', itemType, itemId, true, '&tab=datafiles');
    155156  }
     157 
    156158  </script>
    157159  <style>
     
    164166
    165167    <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">
    167171      <tr>
    168         <td class="prompt">Path</td>
     172        <th>Path</th>
    169173        <td><%=getPath(dc, ID, node)%></td>
    170174      </tr>
     
    209213          %>
    210214          <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>
    214216            <td>
    215217              <%=Base.getLinkedFile(ID, file, deniedFile, true, true, "../../")%>
     
    222224          %>
    223225          <tr>
    224           <td class="prompt"><%=HTML.encodeTags(node.getTitle())%></td>
     226          <th><%=HTML.encodeTags(node.getTitle())%></th>
    225227          <td>
    226228            <%=notFound ? "<i>- not found -</i>" : "<i>- denied -</i>"%>
     
    251253        %>
    252254        <tr>
    253           <td class="prompt">
    254             Any-to-any link
    255           </td>
     255          <th>Any-to-any link</th>
    256256          <td>
    257             <table border="0" cellpadding="0" cellspacing="0">
     257            <table>
    258258            <tr>
    259259              <td><%=Base.getLinkedName(ID, any, false, true) %></td>
     
    270270        %>
    271271        <tr>
    272           <td class="prompt"><%=node.getNodeType() == Node.Type.FOLDER ?
    273               "Folder" : item != null ? item.getType().toString() : "Item"%></td>
     272          <th><%=node.getNodeType() == Node.Type.FOLDER ?
     273              "Folder" : item != null ? item.getType().toString() : "Item"%></th>
    274274          <td>
    275275            <%
     
    303303      %>
    304304      <tr>
    305         <td class="prompt">Errors (children)</td>
     305        <th>Errors (children)</th>
    306306        <%
    307307        if (showFailures)
     
    320320      </tr>
    321321      <tr>
    322         <td class="prompt">Warnings (children)</td>
     322        <th>Warnings (children)</th>
    323323        <%
    324324        if (showFailures)
     
    342342        %>
    343343        <tr>
    344           <td class="prompt">Description</td>
     344          <th>Description</th>
    345345          <td><%=HTML.niceFormat(nameable.getDescription())%></td>
    346346        </tr>
     
    349349      %>
    350350      </table>
    351       <p>
     351      </div>
     352     
    352353     
    353354      <%
     
    594595      }
    595596      %>
     597      </div>
    596598    </base:body>
    597599  </base:page>
  • trunk/www/common/overview/options.jsp

    r5914 r5918  
    163163  {
    164164    width: 20em;
     165    max-width: 20em;
    165166  }
    166167 
  • trunk/www/common/overview/overview.jsp

    r5901 r5918  
    5858  ExtensionsInvoker invoker = ExtensionsControl.useExtensions(jspContext,
    5959    "net.sf.basedb.clients.web.toolbar.item.overview");
     60  final String showFailures = request.getParameter("show_failures");
    6061  %>
    6162  <base:page type="include">
     
    6465    <ext:stylesheets context="<%=jspContext%>" />
    6566    <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 IFrame
    74       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 height
    83       var windowHeight = Main.getWindowHeight();
    84       iframeElement.height = windowHeight-offsetTop;
    85  
    86       // Adjust the height of the frames
    87       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     }
    10267    function expandAll()
    10368    {
     
    12691    function validationOptions()
    12792    {
    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);
    13794    }
    13895    </script>
    139       <tbl:toolbar>
     96      <tbl:toolbar subclass="absolutefull" style="height: 2em;">
    14097        <tbl:button image="refresh.gif" title="Reset"
    14198          onclick="reset()" tooltip="Unload all cached items and restart from the root item again."
     
    152109          onclick="<%="Main.openHelp('" + ID +"', 'item.overview')"%>"
    153110          tooltip="Get help about this page"
    154         /> 
    155 
     111        />
    156112      </tbl:toolbar>
    157       <iframe name="overview" id="idOverview"
     113      <div class="absolutefull topborder" style="top: 2em;"><iframe
     114        name="overview" id="idOverview"
    158115        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>
    162117
    163118  </base:body>
  • trunk/www/common/overview/tree.jsp

    r5903 r5918  
    213213  function initialise()
    214214  {
    215     if (parent && parent.parent && parent.parent.adjustIFrameSize) parent.parent.adjustIFrameSize();
    216215    IconStore.init();
    217216    var path = getRoot()+'images/joust/';
     
    324323    return childNodes.length > 0;         
    325324  }
    326  
    327325  </script>
    328326  <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;
    335335  }
    336336  </style>
     
    338338  </base:head>
    339339    <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%;">
    342342      </div>
    343343    </div>
  • trunk/www/exception/not_logged_in.jsp

    r5827 r5918  
    5151final String redirect = Values.getString((String)request.getAttribute("redirect"));
    5252%>
    53 <base:page type="default" menu="exception" title="Not logged in">
     53<base:page type="default" menu="exception" title="">
    5454<base:head scripts="exception.js" styles="login.css">
    5555  <script language="JavaScript">
     
    7373    {
    7474      frm.login.focus();
     75      frm.login.select();
    7576    }
    7677    else
     
    111112</base:head>
    112113<base:body onload="init()">
    113   <div align="center">
     114
    114115    <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>
    121185          You have been automatically logged out due to inactivity or because the
    122           server has been restarted.<br>
     186          server has been restarted.
    123187          You may log in again and continue your work but unsaved changes
    124188          may have been lost.
    125189        </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>
    168197</base:body>
    169198</base:page>
  • trunk/www/footnote.jsp

    r5911 r5918  
    7171    setTimeout('location.reload(true);', 1000);
    7272  }
     73  function showMessages()
     74  {
     75    window.top['main'].location.href = getRoot()+'my_base/messages/index.jsp?ID=<%=ID%>';
     76  }
    7377  function readBroadcast()
    7478  {
     
    7882  </base:head>
    7983  <base:body onload="setTimeout('location.reload(true);', 60000);">
     84  <div class="footer">
     85  <table style="width: 100%; height: 100%;"><tr><td>
    8086  <%
    8187  if (broadcastTitle != null)
     
    134140    Message message = messages.get(0);
    135141    %>
    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      >&nbsp;<%=HTML.encodeTags(message.getName())%> (From: <%=HTML.encodeTags(message.getFrom())%>)
     145    </base:icon>
    147146    <%
    148147  }
     
    150149  {
    151150    %>
    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()">&nbsp;<b>You have <%=numNewMessages%> new messages</b></base:icon>
    160153    <%
    161154  }
    162155  %>
     156  </td></tr></table>
     157  </div>
    163158  </base:body>
    164159  </base:page>
  • trunk/www/include/menu.jsp

    r5909 r5918  
    435435    fillText.append(" onclick=\"Menu.toggleTopMenu(document.getElementById('projects'), event.clientX-50, event.clientY); event.cancelBubble = true;\">");
    436436    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\">&nbsp;&nbsp;</span>");
     437    fillText.append(" <img src=\""+root+"images/sort_asc.gif\" border=\"0\"></a><span class=\"menuseparator\"></span>");
    438438   
    439439    fillText.append("<a href=\"javascript:void(0)\" title=\"" + menu.getString("menu.refresh.tooltip") + "\"");
    440440    fillText.append(" onclick=\"location.reload()\">");
    441     fillText.append("<img src=\""+root+"images/refresh.gif\" border=\"0\"></a><span class=\"menuseparator\">&nbsp;&nbsp;</span>");
     441    fillText.append("<img src=\""+root+"images/refresh.gif\" border=\"0\"></a><span class=\"menuseparator\"></span>");
    442442   
    443443    fillText.append("<a href=\"javascript:void(0)\" title=\"" + menu.getString("menu.recentitems.tooltip") + "\"");
    444444    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\">&nbsp;&nbsp;</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>");
    446446   
    447447    User user = User.getById(dc, sc.getLoggedInUserId());
     
    12001200            title="<%=action.getTitle()%>"
    12011201            icon="<%=action.getIcon()%>"
    1202             iconabsolute="true"
    12031202            tooltip="<%=action.getTooltip()%>"
    12041203            enabled="<%=action.isEnabled()%>"
     
    12161215            title="<%=action.getTitle()%>"
    12171216            icon="<%=action.getIcon()%>"
    1218             iconabsolute="true"
    12191217            tooltip="<%=action.getTooltip()%>"
    12201218            enabled="<%=action.isEnabled()%>"
     
    12331231    // Main menu
    12341232    %>
    1235     <div style="position: fixed; top: 0px; left: 0px; width: 100%; height: 30px; background: #ffffff;">
    12361233    <m:menu
    12371234      type="horizontal"
    1238       clazz="menu_horizontal"
    12391235      id="menubar"
    1240       style="top: 5px; left: 8px; width: 98%"
     1236      style="top: 0px; left: 0px; right: 0px;"
    12411237      open="click"
    12421238      filltext="<%=fillText.toString()%>"
     
    12721268        title="<%=menu.getString("menu.help")%>"
    12731269      />
    1274     </m:menu></div>
    1275     <br><br>
     1270    </m:menu>
    12761271    <%
    12771272  }
  • trunk/www/include/styles/headertabcontrol.css

    r5809 r5918  
    2727*/
    2828
    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;
    3233}
    3334
    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;
    3938}
    4039
    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;
    4646}
    4747
    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;
    6052}
    6153
    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;
    6877  white-space: nowrap;
     78  cursor: pointer;
     79  border: 1px solid #A0A0A0;
    6980  padding: 2px 6px 2px 4px;
    7081}
    7182
    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;
    7589}
    7690
    77 .tabcontrol .activetab {
     91.tabcontrol .tab.active
     92{
    7893  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;
    8695}
    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;
    96169}
    97170
    98171
    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 }
    138172
    139173
  • trunk/www/include/styles/login.css

    r5426 r5918  
    2828*/
    2929
    30 .loginform {
    31   background: #F0F0F0;
    32   border: 1px solid #999999;
     30h3
     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;
    3342}
    3443
    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;
    3659  font-weight: bold;
    3760  white-space: nowrap;
     61  border-top: 1px dotted #A0A0A0;
     62  border-right: 1px solid #A0A0A0;
     63  width: 10em;
     64  text-align: right;
    3865}
    3966
    40 .news {
     67#loginform > table > tbody > tr:first-child > th
     68{
     69  border-top: 0px;
    4170}
    4271
    43 .news .item {
     72.messagecontainer
     73{
     74  margin-left: 0px;
     75  margin-right: 0px;
     76}
     77
     78.news
     79{}
     80
     81.news .item
     82{
    4483  margin-top: 2px;
    45   border-bottom: 1px dotted #999999;
     84  border-bottom: 1px dotted #A0A0A0;
    4685  padding-bottom: 2px;
    4786}
    4887
    49 .news .item .date {
    50   font-size: smaller;
     88.news .item .date
     89{
     90  font-size: 0.75em;
    5191}
    5292
    53 .news .item .headline {
     93.news .item .headline
     94{
    5495  font-weight: bold;
    5596}
    5697
    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;;
    58111}
    59112
    60 .credit {
    61   border-top: 1px solid #999999;
    62   padding-top: 4px;
     113.credit
     114{
    63115  font-style: italic;
    64116}
    65117
    66 .message {
    67   border-top: 1px solid #999999;
    68   padding-top: 4px;
    69 }
     118.message
     119{}
    70120
    71 .welcomesection {
    72   border: 1px solid #999999;
    73   margin-bottom: 16px;
     121.welcomesection
     122{
     123  border: 1px solid #A0A0A0;
     124  border-top: 0px;
    74125  padding: 2px;
    75126}
  • trunk/www/include/styles/main.css

    r5916 r5918  
    3939  background: #FFFFFF;
    4040  font-family: verdana, arial, sans-serif;
    41   padding-left: 8px;
    42   padding-right: 8px;
     41  padding-left: 0px;
     42  padding-right: 0px;
    4343}
    4444
     
    4949}
    5050
    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 */
     53img
     54{
     55  border: 0px;
     56  vertical-align: text-bottom;
     57}
    6058
    6159/* Tables should have no border, padding or cellspacing by default */
     
    7169  border: 0px;
    7270}
     71
     72body.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
     87body.default h1:before
     88{
     89  content: '::';
     90  padding-left: 4px;
     91  padding-right: 4px;
     92  color: #2288AA;
     93}
     94
     95
     96body.default .content
     97{
     98  position: absolute;
     99  left: 0px;
     100  right: 0px;
     101  top:  5em;
     102  bottom: 0px;
     103  overflow: auto;
     104}
     105
    73106
    74107/*
     
    178211}
    179212
     213.icon.link.disabled
     214{
     215  cursor: default;
     216}
     217
     218.icon.disabled img
     219{
     220  opacity: 0.4;
     221}
     222
    180223/*
    181224  Notes and messages
     
    380423}
    381424
    382 .highlight:hover, xtr.highlight:hover > td, xtr.highlight:hover > th
     425.highlight:hover
    383426{
    384427  background-color: #F8F8E8 !important;
    385428  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*/
     445table.fullform
     446{
     447  width: 100%;
     448  height: 100%;
     449  background: #E8E8E8;
     450}
     451
     452/* Default table row is one line only */
     453table.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 */
     461table.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 */
     470table.fullform > tbody > tr.big
     471{
     472  vertical-align: top;
     473}
     474
     475table.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 */
     483table.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 */
     491table.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 */
     506table.fullform > tbody > tr:first-child > th, table.fullform > tbody > tr:first-child > td
     507{
     508  padding-top: 3px;
     509  border-top: 0px;
     510}
     511
     512table.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 */
     520table.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 */
     529table.fullform > tbody.section:first-child > tr > th
     530{
     531  border-top: 0px solid #A0A0A0;
     532}
     533
     534/* Regular cells have a white background */
     535table.fullform > tbody > tr > td
     536{
     537  background: #FFFFFF;
     538  padding: 0px 2px 0px 2px;
     539}
     540
     541/* A smaller header column */
     542table.fullform.smaller > tbody > tr > th
     543{
     544  width: 7em;
     545  max-width: 9em;
     546}
     547
     548/* A larger header column */
     549table.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 */
     556table.fullform > tbody > tr.dynamic textarea
     557{
     558  height: 97%;
     559}
     560
     561/* Use borders between td elements as well (for read-only tables) */
     562table.fullform.outlined > tbody > tr > td
     563{
     564  border-top: 1px dotted #A0A0A0;
     565}
     566table.fullform.outlined > tbody > tr:first-child > td
     567{
     568  border-top: 0px;
     569}
     570
     571/* no border for a subprompt */
     572table.fullform.outlined > tbody > tr > th.subprompt + td
     573{
     574  border-top: 0px;
     575}
     576
     577table.fullform th.itemstatus
     578{
     579  text-align: center;
    386580}
    387581
     
    391585*/
    392586
    393 h1 {
    394   font-weight: bold;
    395   color: #555577;
    396 }
     587
    397588
    398589h2 {
     
    410601}
    411602
    412 h3.light {
     603h2 {
    413604  color: #333377;
    414605  background: #E0E0E0;
     
    437628  border-bottom: 0px;
    438629  margin-bottom: 2px;
    439 }
    440 
    441 img {
    442   vertical-align: middle;
    443630}
    444631
     
    687874
    688875.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;
    694885}
    695886
     
    716907}
    717908
    718 .multiselect input {
     909.multiselect input, .multiselect input:hover, .multiselect input:focus {
    719910  border: 0px;
    720911  border-right: 1px solid #999999;
     912  border-radius: 0px;
     913  margin: 0px 2px 0px 2px;
    721914}
    722915
  • trunk/www/include/styles/menu.css

    r5808 r5918  
    2828*/
    2929
    30 .menu_horizontal {
     30.menu.horizontal
     31{
    3132  position: fixed;
    32   background: #E0E0E0;
    33   border-left: 1px solid #999999;
    34   border-top: 1px solid #999999;
     33  background: #E8E8E8;
    3534  cursor: default;
     35  border-bottom: 1px solid #A0A0A0;
    3636}
    3737
    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;
    4451  white-space: nowrap;
    4552}
    4653
    47 .menu_horizontal .menuitem.enabled:hover {
     54.menu.horizontal .menuitem.enabled:hover
     55{
    4856  background: #F0F0F0;
     57  border: 2px solid #2288AA;
     58  padding: 1px 4px 1px 4px;
     59  border-radius: 3px;
     60  -moz-border-radius: 4px;
    4961}
    5062
    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{
    5865  white-space: nowrap;
    59   width: 100%;
     66  width: 90%;
    6067  text-align: right;
    6168}
    6269
    63 .menu_vertical {
     70.menu.vertical
     71{
    6472  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;
    7077}
    7178
    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;
    7583}
    7684
    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{
    9387  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;
    9892  cursor: pointer;
    9993}
    10094
    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;
    11298  width: 100%;
    11399  height: 1px;
    114100}
    115101
    116 .menuseparator img {
    117   display: none;
     102.menuicon
     103{
     104  margin-right: 4px;
    118105}
     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  
    2727*/
    2828
    29 .path {
    30   margin-bottom: 4px;
     29h1.path
     30{}
     31
     32h1.path .pathelement:before
     33{
     34  content: '›';
     35  padding-left: 4px;
     36  padding-right: 4px;
     37  color: #2288AA;
    3138}
    3239
    33 .path .pathelement {
    34   font-weight: bold;
    35   color: #555577;
     40h1.path .pathelement:first-child:before
     41{
     42  content: '';
     43  padding: 0px;
    3644}
    3745
    38 .path .separator {
    39   padding-left: 6px;
    40   padding-right: 6px;
    41 }
  • trunk/www/include/styles/popup.css

    r5915 r5918  
    4242  font-size: 1.4em;
    4343  color: #F0F0F0;
     44  margin: 0px;
    4445  background-image: url('backgrounds/popup_h1.png');
    4546  background-color: #224488;
     
    5152.popup h1:before
    5253{
    53   content: '';
     54  content: '::';
    5455  padding-left: 4px;
    5556  padding-right: 4px;
     
    143144}
    144145
    145 /*
    146   Table listings
    147   --------------
    148 */
    149 /*
    150   A 100% wide and high table with two columns (prompt+value)
    151   * Table rows are max one line high by default
    152     Use <tr class="double"> to get two or <tr class="dynamic">
    153     to get more
    154   * Header column is 150px wide by default
    155     Use <table class="fullform smaller"> to get 100px
    156     or <table class="fullform larger">
    157 */
    158 .popup table.fullform
    159 {
    160   width: 100%;
    161   height: 100%;
    162   background: #E8E8E8;
    163 }
    164146
    165 /* Default table row is one line only */
    166 table.fullform > tbody > tr
    167 {
    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.double
    175 {
    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.big
    184 {
    185   vertical-align: top;
    186 }
    187 
    188 table.fullform > tbody > tr.dynamic
    189 {
    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.dynamic
    197 {
    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 > th
    205 {
    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 > td
    220 {
    221   padding-top: 3px;
    222   border-top: 0px;
    223 }
    224 
    225 table.fullform > tbody > tr > th.subprompt
    226 {
    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 > th
    234 {
    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 > th
    243 {
    244   border-top: 0px solid #A0A0A0;
    245 }
    246 
    247 /* Regular cells have a white background */
    248 table.fullform > tbody > tr > td
    249 {
    250   background: #FFFFFF;
    251   padding: 0px 2px 0px 2px;
    252 }
    253 
    254 /* A smaller header column */
    255 table.fullform.smaller > tbody > tr > th
    256 {
    257   width: 7em;
    258   max-width: 9em;
    259 }
    260 
    261 /* A larger header column */
    262 table.fullform.larger > tbody > tr > th
    263 {
    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 textarea
    270 {
    271   height: 97%;
    272 }
    273 
    274 /* Use borders between td elements as well (for read-only tables) */
    275 table.fullform.outlined > tbody > tr > td
    276 {
    277   border-top: 1px dotted #A0A0A0;
    278 }
    279 table.fullform.outlined > tbody > tr:first-child > td
    280 {
    281   border-top: 0px;
    282 }
    283 
    284 /* no border for a subprompt */
    285 table.fullform.outlined > tbody > tr > th.subprompt + td
    286 {
    287   border-top: 0px;
    288 }
    289 
  • trunk/www/include/styles/size_l.css

    r5905 r5918  
    3636}
    3737
    38 
    39 /*
    40   STYLES BELOW ARE OLD AND SHOULD BE VERIFIED
    41   ------------------------------------------
    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  
    3636}
    3737
    38 
    39 /*
    40   STYLES BELOW ARE OLD AND SHOULD BE VERIFIED
    41   ------------------------------------------
    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  
    3434  font-size: 67.5%;
    3535}
    36 
    37 
    38 /*
    39   STYLES BELOW ARE OLD AND SHOULD BE VERIFIED
    40   ------------------------------------------
    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  
    3535}
    3636
    37 
    38 /*
    39   STYLES BELOW ARE OLD AND SHOULD BE VERIFIED
    40   ------------------------------------------
    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  
    3535}
    3636
    37 
    38 /*
    39   STYLES BELOW ARE OLD AND SHOULD BE VERIFIED
    40   ------------------------------------------
    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  
    3030
    3131.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;
    3434  width: 100%;
    35   background: #E0E0E0;
     35  background: #E8E8E8;
    3636  margin-bottom: 0px;
    3737  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;
    43183}
    44184
     
    52192
    53193.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;
    56196  border-bottom: 0px solid #999999;
    57197  border-right: 1px solid #999999;
     
    71211}
    72212
    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  
    3030*/
    3131
    32 .toolbar {
    33   border-top: 1px solid #999999;
    34   border-left: 1px solid #999999;
     32.toolbar
     33{
    3534  width: 100%;
    36   background: #E0E0E0;
    37  
    38   border-right: 1px solid #999999;
    39   border-bottom: 1px solid #999999;
     35  background: #E8E8E8;
    4036  padding: 0px;
     37  margin: 0px;
    4138}
    4239
    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{
    4853  padding: 3px;
    4954  cursor: pointer;
    5055  white-space: nowrap;
    51   color: #ffff00:
    5256}
    5357
    54 .toolbar .button:hover {
    55   background: #F0F0F0;
     58.toolbar .button:hover
     59{
     60  border: 2px solid #2288AA;
     61  padding: 1px;
     62  border-radius: 4px;
    5663}
    5764
    58 .toolbar .button.disabled {
    59   background: #E0E0E0;
     65.toolbar .button.disabled, .toolbar .button.disabled:hover
     66{
     67  background: #D0D0D0;
    6068  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;
    6279}
    6380
  • trunk/www/main.jsp

    r5911 r5918  
    7272    {
    7373      setFocus();
    74       top.frames['footnote'].location.reload();
    7574    }
    7675   
     
    8382      {
    8483        frm.login.focus();
     84        frm.login.select();
    8585      }
    8686      else
     
    9898    function doLogin()
    9999    {
     100      var frm = document.forms['login'];
     101      if (frm.login.disabled) return;
    100102      var denyLogin = <%=denyLogin ? "true" : "false"%>;
    101103      if (denyLogin && !confirm('Login has been disabled by an administrator. Do you want to continue anyway?'))
     
    104106      }
    105107      saveLogin();
     108      frm.submit();
     109    }
     110    function enableLogin()
     111    {
    106112      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');
    113118    }
    114119    </script>
     
    116121 
    117122  <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; ">
    120128    <tr>
    121129    <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%;">
    132131      <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              }
    168180              %>
    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>
    193183            </table>
    194184          </div>
    195           </form>
     185       
     186       
    196187        </td>
    197188      </tr>
    198189      </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      %>
    201216     
    202217      <%
     
    205220      {
    206221        %>
    207         <h3>About this server</h3>
     222        <h3 style="margin-top: 1em;">About this server</h3>
    208223        <p>
    209224          <%=aboutServer%>
     
    215230      %>
    216231     
    217       <h3>News and announcements
     232      <h3 style="margin-top: 1em;">News and announcements
    218233      <%
    219234      if (RssNewsFeed.isEnabled())
     
    222237        <a href="info/news.rss"
    223238          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>
    225240        <%
    226241      }
     
    269284    </tr>
    270285    </table>
     286
     287    </form>
    271288  </base:body>
    272289  </base:page>
  • trunk/www/my_base/index.jsp

    r5905 r5918  
    164164  newsQuery.setParameter("today", new Date(), Type.DATE);
    165165  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;
    166171%>
    167172<base:page title="Welcome to BASE">
     
    178183    Main.openPopup('projects/set_active.jsp?ID=<%=ID%>&project_id='+projectId, 'ActivateProject', 300, 140)
    179184  }
     185  function viewDiskUsage()
     186  {
     187    location.href = '../admin/diskusage/details/index.jsp?ID=<%=ID%>&cmd=ViewItem&item_type=USER&item_id=<%=sc.getLoggedInUserId() %>';
     188  }
    180189</script>
    181190
     
    183192<base:body onload="top.frames['footnote'].location.reload()">
    184193
    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     &nbsp;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>&nbsp;</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>&nbsp;</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&hellip;</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&hellip;</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&hellip;</a><br>
     337        <%
     338      }
     339      %>
     340      </div>
     341    </div>
    195342    <%
    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>&nbsp;</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())
    220354        {
    221355          %>
    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          />
    227361          <%
    228362        }
     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        }
    229374        else
    230375        {
    231           %>
    232           <tr>
    233             <td>&nbsp;</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>
    245389    </div>
    246 
    247   <h3 class="light docked">
    248     <base:icon image="message.gif" />
    249     &nbsp;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" />&nbsp;Help</h3>
    298       <div id="help" class="welcomesection" style="height: 80px; overflow: auto;">
    299       <%
    300       if (help != null)
    301       {
    302         %>
    303         &nbsp;<base:icon image="bullet.gif" />&nbsp;<a href="<%=help%>" target="Help">Help&hellip;</a><br>
    304         <%
    305       }
    306       %>
    307       <%
    308       if (faq != null)
    309       {
    310         %>
    311         &nbsp;<base:icon image="bullet.gif" />&nbsp;<a href="<%=faq%>" target="FAQ">Frequently asked questions&hellip;</a><br>
    312         <%
    313       }
    314       %>
    315       <%
    316       if (reportBug != null)
    317       {
    318         %>
    319         &nbsp;<base:icon image="bug.gif" />&nbsp;<a href="<%=reportBug%>" target="ReportBug">Report a bug&hellip;</a><br>
    320         <%
    321       }
    322       %>
    323       </div>
    324     <%
    325   }
    326   %>
    327 
    328   </td>
    329   <td>&nbsp;&nbsp;</td>
    330   <td width="50%">
    331  
    332   <h3 class="light docked"><base:icon image="news.gif" />&nbsp;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" />&nbsp;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>&nbsp;</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>&nbsp;</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%;">
    424405      <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>
    426430        <td><%=getPrintableQuota(myPrimaryUsage, Quota.UNDEFINED)%></td>
    427431        <td><%=getPrintableQuota(myPrimaryQuota, groupPrimaryQuota)%></td>
     
    430434        <td><%=getPrintableQuota(myExternalUsage, Quota.UNDEFINED)%></td>
    431435