Changeset 6166


Ignore:
Timestamp:
Oct 11, 2012, 3:47:22 PM (10 years ago)
Author:
Nicklas Nordborg
Message:

References #1730: Move in-page onEvent attributes to external *.js files

  • Fixed for the user settings dialog and the 'Reset list settings' dialog.
  • Added a 'zoom' taglib which should make it easier to include the 'zoom' icon for textarea fields.
  • Added new javascript function in main-2 for opening zoom dialog and calendar dialog
Location:
trunk
Files:
3 added
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/Icon.java

    r6164 r6166  
    115115    <td>no</td>
    116116    <td>
     117      Deprecated. Use javascript to attach an event handler instead.
    117118      An optional JavaScript statement that will exceute when the user
    118119      clicks on the icon.
     
    167168    An optional JavaScript statement.
    168169  */
     170  @Deprecated
    169171  private String onClick = null;
    170172
     
    228230  }
    229231
     232  @Deprecated
    230233  public void setOnclick(String onClick)
    231234  {
     
    233236    if (!setEnabledIsCalled) this.enabled = onClick != null;
    234237  }
     238  @Deprecated
    235239  public String getOnclick()
    236240  {
     
    269273    StringBuilder sb = new StringBuilder();
    270274    sb.append("<span ");
    271     addIdAndStyles(sb, getOnclick() != null ? "link" : null, isEnabled() ? null : "disabled");
     275    addIdAndStyles(sb, getOnclick() != null || getId() != null ? "link" : null, isEnabled() ? null : "disabled");
    272276    if (getTooltip() != null) sb.append(" title=\"").append(getTooltip()).append("\"");
    273     if (getOnclick() != null && isEnabled())
    274     {
    275       sb.append(" onclick=\"").append(getOnclick()).append("\"");
    276       if (getTabindex() >= 0)
     277    if (getOnclick() != null)
     278    {
     279      // onclick event added as inline code
     280      if (isEnabled())
     281      {
     282        sb.append(" onclick=\"").append(getOnclick()).append("\"");
     283        if (getTabindex() >= 0)
     284        {
     285          sb.append(" tabindex=\"").append(getTabindex()).append("\"");
     286          sb.append(" onkeypress=\"Events.handleFocusedKeypress(event)\"");
     287        }
     288      }
     289    }
     290    else if (getId() != null)
     291    {
     292      // Assume onclick event is attached by javascript
     293      if (isEnabled() && getTabindex() >= 0)
    277294      {
    278295        sb.append(" tabindex=\"").append(getTabindex()).append("\"");
    279         sb.append(" onkeypress=\"Main.handleFocusedKeypress(event)\"");
    280296      }
    281297    }
     298    addDynamicAttributes(sb);
    282299    sb.append(">");
    283300    sb.append("<img src=\"").append(theImage).append("\" alt=\"*\">");
  • trunk/www/WEB-INF/base.tld

    r6155 r6166  
    149149      <rtexprvalue>true</rtexprvalue>
    150150    </attribute>
     151    <dynamic-attributes>true</dynamic-attributes>
    151152  </tag>
    152153
     
    311312 
    312313  <tag>
     314    <name>zoom</name>
     315    <tag-class>net.sf.basedb.clients.web.taglib.Zoom</tag-class>
     316    <body-content>empty</body-content>
     317    <attribute>
     318      <name>id</name>
     319      <rtexprvalue>true</rtexprvalue>
     320    </attribute>
     321    <attribute>
     322      <name>clazz</name>
     323      <rtexprvalue>true</rtexprvalue>
     324    </attribute>
     325    <attribute>
     326      <name>subclass</name>
     327      <rtexprvalue>true</rtexprvalue>
     328    </attribute>
     329    <attribute>
     330      <name>style</name>
     331      <rtexprvalue>true</rtexprvalue>
     332    </attribute>
     333    <attribute>
     334      <name>image</name>
     335      <rtexprvalue>true</rtexprvalue>
     336    </attribute>
     337    <attribute>
     338      <name>textarea</name>
     339      <required>true</required>
     340      <rtexprvalue>true</rtexprvalue>
     341    </attribute>
     342    <attribute>
     343      <name>title</name>
     344      <rtexprvalue>true</rtexprvalue>
     345    </attribute>
     346    <attribute>
     347      <name>tooltip</name>
     348      <rtexprvalue>true</rtexprvalue>
     349    </attribute>
     350    <attribute>
     351      <name>visible</name>
     352      <rtexprvalue>true</rtexprvalue>
     353    </attribute>
     354    <attribute>
     355      <name>tabindex</name>
     356      <rtexprvalue>true</rtexprvalue>
     357    </attribute>
     358  </tag>
     359 
     360  <tag>
    313361    <name>select</name>
    314362    <tag-class>net.sf.basedb.clients.web.taglib.Select</tag-class>
  • trunk/www/common/calendar.jsp

    r6162 r6166  
    4444  String title = request.getParameter("title");
    4545  String form = request.getParameter("form");
    46   String input = request.getParameter("input");
     46  String textarea = request.getParameter("textarea");
    4747  String callback = request.getParameter("callback");
    4848  boolean datetime = Values.getBoolean(request.getParameter("datetime"));
     
    7070  function getInitialDate()
    7171  {
    72     var frm = window.opener.document.forms['<%=form%>'];
    73     var dateString = frm['<%=input%>'].value;
     72    <%
     73    if (form != null)
     74    {
     75      %>
     76      var frm = window.opener.document.forms['<%=form%>'];
     77      var textarea = frm['<%=textarea%>'];
     78      <%
     79    }
     80    else
     81    {
     82      %>
     83      var textarea = window.opener.document.getElementById('<%=textarea%>');
     84      <%
     85    }
     86    %>
     87    var dateString = textarea.value;
    7488    var date = Dates.parseString(dateString, '<%=HTML.javaScriptEncode(format)%>');
    7589    if (date == null) date = new Date();
     
    94108    if (callback == null)
    95109    {
    96       %>
    97       var frm = window.opener.document.forms['<%=form%>'];
    98       frm['<%=input%>'].value = formattedDate;
    99       <%
     110      if (form != null)
     111      {
     112        %>
     113        var frm = window.opener.document.forms['<%=form%>'];
     114        frm['<%=textarea%>'].value = formattedDate;
     115        <%
     116      }
     117      else
     118      {
     119        %>
     120        window.opener.document.getElementById('<%=textarea%>').value = formattedDate;
     121        <%
     122      }
    100123    }
    101124    else
    102125    {
    103126      %>
    104       window.opener.<%=callback%>('<%=form%>', '<%=input%>', formattedDate);
     127      window.opener.<%=callback%>('<%=form%>', '<%=textarea%>', formattedDate);
    105128      <%
    106129    }
  • trunk/www/common/zoom.jsp

    r6162 r6166  
    5454  {
    5555    var frm = document.forms["zoom"];
    56     frm.zoom.value = window.opener.document.forms['<%=form%>'].elements['<%=textarea%>'].value;
     56    <%
     57    if (form == null)
     58    {
     59      %>
     60      var element = window.opener.document.getElementById('<%=textarea%>');
     61      <%
     62    }
     63    else
     64    {
     65      %>
     66      var element = window.opener.document.forms['<%=form%>'].elements['<%=textarea%>'];
     67      <%
     68    }
     69    %>
     70    frm.zoom.value = element.value;
    5771    frm.zoom.focus();
     72    frm.zoom.disabled = element.disabled;
    5873  }
    5974  function setTextAndClose()
    6075  {
    6176    var value = document.forms["zoom"].zoom.value;
    62     var element = window.opener.document.forms['<%=form%>'].elements['<%=textarea%>'];
    63     element.value = value;
    64     element.focus();
     77    <%
     78    if (form == null)
     79    {
     80      %>
     81      var element = window.opener.document.getElementById('<%=textarea%>');
     82      <%
     83    }
     84    else
     85    {
     86      %>
     87      var element = window.opener.document.forms['<%=form%>'].elements['<%=textarea%>'];
     88      <%
     89    }
     90    %>
     91    if (!element.disabled)
     92    {
     93      element.value = value;
     94      element.focus();
     95    }
    6596    <%
    6697    if (callback != null)
     
    231262  </m:menu>
    232263      <%
    233       if (form.equals("help"))
     264      if ("help".equals(form))
    234265      {
    235266      %>
  • trunk/www/include/scripts/main-2.js

    r6162 r6166  
    8282  }
    8383
     84  /**
     85    Close the current popup window.
     86  */
     87  app.closeWindow = function()
     88  {
     89    window.top.close();
     90  }
    8491 
    8592  /**
     
    357364  }
    358365 
     366  /*
     367    Event handler that can be attached to 'keypress' event for
     368    form input fields to block all keys except numeric (including minus, plus, decimal dot and E).
     369  */
     370  events.numberOnly = function(event)
     371  {
     372    var charCode = event.charCode || event.keyCode;
     373    // <31 for tab, delete, etc. 48-57=key 0-9, 45= '-', 46='.', 69/101=E/e
     374    var allow = charCode <= 31 || (charCode >= 48 && charCode <= 57) || charCode == 45 || charCode == 46 || charCode == 69 || charCode == 101;
     375    if (!allow) event.preventDefault();
     376  }
     377
     378 
    359379  /**
    360380    Event handler that can be attached to any event/element that
     
    507527}();
    508528
    509 var Help = function()
     529/**
     530  Functions that open common popup dialog windows.
     531*/
     532var Dialogs = function()
    510533{
    511   var help = {};
     534  var dialogs = {};
    512535  var internal = {};
    513536
     
    516539    @param helpId The ID of the help information
    517540  */
    518   help.openHelp = function(helpId)
     541  dialogs.openHelp = function(helpId)
    519542  {
    520543    var url = App.getRoot()+'common/help/view_help.jsp?ID='+App.getSessionId()+'&external_id='+helpId;
     
    528551    @param helpId Optional, a default help id if no help is specified by the tab control
    529552  */
    530   help.openTabControlHelp = function(tabControl, helpId) 
     553  dialogs.openTabControlHelp = function(tabControl, helpId)
    531554  {
    532555    var useHelpId = TabControl.getActiveHelpId(tabControl);
    533556    if (!useHelpId) useHelpId = helpId;
    534     help.openHelp(useHelpId);
     557    dialogs.openHelp(useHelpId);
     558  }
     559 
     560  /*
     561    Open a popup window with a large textarea field for editing text.
     562    @param textarea A form input/textarea element or the id of an element
     563    @param title The title that the popup dialog should have
     564  */
     565  dialogs.openZoom = function(textarea, title)
     566  {
     567    textarea = Doc.element(textarea);
     568    if (!title) title = textarea.id;
     569    var url = App.getRoot()+'common/zoom.jsp?ID='+App.getSessionId();
     570    url += '&title='+encodeURIComponent(title)+'&textarea='+textarea.id;
     571    Main.openPopup(url, title.replace(/[^\w]/g, ''), 640, 600);
     572  }
     573 
     574  /*
     575    Open a popup window for selecting a date or datetime value.
     576    @param textarea A form input/textarea element or the id of an element
     577    @param title The title that the popup dialog should have
     578    @param dateFormat The dateformat to use when reading/writing the value
     579    @param useTime 'true' to use date+time, 'false' to only use date
     580  */
     581  dialogs.openCalendar = function(textarea, title, dateFormat, useTime)
     582  {
     583    textarea = Doc.element(textarea);
     584    if (!title) title = textarea.id;
     585    var url = App.getRoot()+'common/calendar.jsp?ID='+App.getSessionId();
     586    url += '&title='+encodeURIComponent(title)+'&textarea='+textarea.id+'&format='+encodeURIComponent(dateFormat);
     587    if (useTime) url += '&datetime=1';
     588    Main.openPopup(url, title.replace(/[^\w]/, ''), 450, 300);
    535589  }
    536590 
    537591  /**
    538592    Help icon 'click' handler. The help id is found on the target element's
    539     'help-id' attribute or with the help of the active tab control on the
    540     'tabcontrol-id' attribute.
     593    'data-help-id' attribute or with the help of the active tab control on the
     594    'data-tabcontrol-id' attribute.
    541595  */
    542596  internal.helpOnClick = function(event)
     
    548602    if (tabControlId)
    549603    {
    550       help.openTabControlHelp(tabControlId, helpId);
     604      dialogs.openTabControlHelp(tabControlId, helpId);
    551605    }
    552606    else if (helpId)
    553607    {
    554       help.openHelp(helpId);
    555     }
    556   }
    557  
    558   /**
    559     Initializer that add 'onclick' event handlers to all 'help' elements.
    560   */
    561   internal.addOnClickHandler = function(hlp, autoInit)
    562   {
    563     if (autoInit != 'help') return;
    564     Events.addEventHandler(hlp, 'click', internal.helpOnClick);
    565     if (hlp.tabIndex >= 0)
    566     {
    567       Events.enableClickOnEnter(hlp);
     608      dialogs.openHelp(helpId);
     609    }
     610  }
     611 
     612  /**
     613    Zoom icon 'click' handler. The id of the textarea is found on the target
     614    element's 'data-textarea-id' attribute. The dialog title can be specified
     615    using the 'data-title' attribute, otherwise the textarea-id is used.
     616   */
     617  internal.zoomOnClick = function(event)
     618  {
     619    var zoom = event.currentTarget;
     620    var textAreaId = Data.get(zoom, 'textarea-id');
     621    var dialogTitle = Data.get(zoom, 'title', textAreaId);
     622    dialogs.openZoom(textAreaId, dialogTitle);
     623  }
     624 
     625  /**
     626    Initializer that add 'onclick' event handlers to common
     627    elements: 'help', 'zoom', etc.
     628  */
     629  internal.addOnClickHandler = function(element, autoInit)
     630  {
     631    if (autoInit == 'help')
     632    {
     633      Events.addEventHandler(element, 'click', internal.helpOnClick);
     634    }
     635    else if (autoInit == 'zoom')
     636    {
     637      Events.addEventHandler(element, 'click', internal.zoomOnClick);
     638    }
     639    else
     640    {
     641      return;
     642    }
     643    if (element.tabIndex >= 0)
     644    {
     645      Events.enableClickOnEnter(element);
    568646    }
    569647  }
    570648  Doc.addElementInitializer(internal.addOnClickHandler);
    571649 
    572   return help;
     650  return dialogs;
    573651}();
    574652
  • trunk/www/include/scripts/main.js

    r6161 r6166  
    279279  this.openHelp = function(ID, helpid) 
    280280  {
    281     Help.openHelp(helpid);
     281    Dialogs.openHelp(helpid);
    282282  }
    283283
     
    293293  this.openTabControlHelp = function(ID, tabcontrol, helpId) 
    294294  {
    295     Help.openTabControlHelp(tabcontrol, helpId);
     295    Dialogs.openTabControlHelp(tabcontrol, helpId);
    296296  }
    297297
     
    15011501  this.selectDateTime = function(title, form, input, callback, format)
    15021502  {
    1503     var url = getRoot()+'common/calendar.jsp?datetime=1&title='+escape(title)+'&form='+form+'&input='+input+'&format='+escape(format);
     1503    var url = getRoot()+'common/calendar.jsp?datetime=1&title='+escape(title)+'&form='+form+'&textarea='+input+'&format='+escape(format);
    15041504    url += '&ID='+getSessionId();
    15051505    if (callback) url += '&callback='+callback;
  • trunk/www/include/styles/main.css

    r6155 r6166  
    288288}
    289289
    290 img.helpicon
     290img.helpicon, img.zoomicon
    291291{
    292292  cursor: pointer;
  • trunk/www/my_base/user/preferences.js

    r6159 r6166  
    3131    // Save + Close buttons
    3232    Buttons.addClickHandler('btnSave', Preferences.save);
    33     Buttons.addClickHandler('close', Main.closeWindow);
     33    Buttons.addClickHandler('close', App.closeWindow);
    3434   
    3535    // Validation
  • trunk/www/my_base/user/reset_filters.jsp

    r6162 r6166  
    7373  %>
    7474  <base:page type="popup" title="<%=title%>">
    75   <base:head scripts="~local.js" />
     75  <base:head scripts="~reset_filters.js" />
    7676  <base:body>
    7777    <h1><%=title%><base:help helpid="userpreferences.resetfilters" /></h1>
     
    8585        <th>Which list?</th>
    8686        <td>
    87           <select name="item_type" onchange="Filters.itemTypeOnChange()" class="selectionlist">
     87          <select name="item_type" id="itemType" class="selectionlist">
    8888            <option value="">- all -
    8989            <%
     
    122122
    123123    <base:buttongroup subclass="dialogbuttons">
    124       <base:button onclick="Filters.reset();" title="Ok" />
    125       <base:button onclick="window.close();" title="Cancel" />
     124      <base:button id="btnOk" title="Ok" />
     125      <base:button id="close" title="Cancel" />
    126126    </base:buttongroup>
    127127  </base:body>
  • trunk/www/my_base/user/settings.jsp

    r6162 r6166  
    9595%>
    9696  <base:page type="popup" title="<%=title%>">
    97   <base:head scripts="~local.js,tabcontrol.js" styles="tabcontrol.css" />
     97  <base:head scripts="tabcontrol-2.js,~settings.js" styles="tabcontrol.css" />
    9898  <base:body>
    9999    <h1><%=title%><base:help tabcontrol="settings" /></h1>
     
    113113      position="bottom" remember="false">
    114114 
    115       <t:tab id="contact" title="Contact information" validate="Settings.validateContact()" helpid="userpreferences.contact">
     115      <t:tab id="contact" title="Contact information" helpid="userpreferences.contact">
    116116        <table class="fullform input100">
    117117        <tr>
     
    151151          <th>Address</th>
    152152          <td>
    153             <textarea <%=ifDisabled%> rows="4" name="address"><%=HTML.encodeTags(user.getAddress())%></textarea>
     153            <textarea <%=ifDisabled%> rows="4" name="address" id="address"><%=HTML.encodeTags(user.getAddress())%></textarea>
    154154          </td>
    155155          <td style="width: 20px;">
    156             <base:icon image="zoom.png"
    157               onclick="Main.zoom('Address', 'user', 'address')"
    158               visible="<%=writePermission%>"
    159               tooltip="Edit in larger window" />
     156            <base:zoom textarea="address" title="Address" />
    160157          </td>
    161158        </tr>
     
    183180      </t:tab>
    184181     
    185       <t:tab id="password" title="Password" validate="Settings.validatePassword()" helpid="userpreferences.password">
     182      <t:tab id="password" title="Password" helpid="userpreferences.password">
    186183        <table class="fullform input100">
    187184        <% if (!Application.isUsingInternalAuthentication() && writePermission)
     
    216213   
    217214      <t:tab id="other" title="Other information"
    218         validate="Settings.validateExtendedProperties()" helpid="userpreferences.other">
     215        helpid="userpreferences.other">
    219216        <table class="fullform input100">
    220217        <%
     
    224221          {
    225222            String name = ep.getName();
     223            String fieldName = "ep."+name;
    226224            Type type = ep.getType();
    227225            boolean required = !ep.isNullable();
     
    237235              {
    238236                %>
    239                 <input <%=isRequired%> <%=ifDisabled %> type="text" name="<%=name%>"
    240                   value="<%=value == null ? "" : value%>" style="width: 15em;"
    241                   maxlength="20" onkeypress="return Numbers.integerOnly(event)"
    242                   >
     237                <input <%=isRequired%> <%=ifDisabled %> type="text" name="<%=fieldName%>" id="<%=fieldName%>"
     238                  value="<%=value == null ? "" : value%>" style="width: 15em;" maxlength="20">
    243239                <%
    244240              }
     
    246242              {
    247243                %>
    248                 <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=name%>"
    249                   value="<%=value == null ? "" : value%>" style="width: 15em;"
    250                   maxlength="20" onkeypress="return Numbers.numberOnly(event)"
    251                   >
     244                <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=fieldName%>" id="<%=fieldName%>"
     245                  value="<%=value == null ? "" : value%>" style="width: 15em;" maxlength="20">
    252246                <%
    253247              }
     
    255249              {
    256250                %>
    257                 <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=name%>"
     251                <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=fieldName%>"
    258252                  value="<%=HTML.encodeTags((String)value)%>"
    259                   maxlength="<%=ep.getLength()%>"
    260                   >
     253                  maxlength="<%=ep.getLength()%>">
    261254                <%
    262255              }
     
    265258                addZoom = true;
    266259                %>
    267                 <textarea <%=isRequired%> <%=ifDisabled%> name="<%=name%>" rows="6" 
     260                <textarea <%=isRequired%> <%=ifDisabled%> name="<%=fieldName%>" id="<%=fieldName%>" rows="6" 
    268261                  ><%=HTML.encodeTags((String)value)%></textarea>
    269262                <%
     
    275268                {
    276269                  %>
    277                   <input type="radio" name="<%=name%>" id="<%=name%>.null" value=""
     270                  <input type="radio" name="<%=fieldName%>" id="<%=fieldName%>.null" value=""
    278271                    <%=b == null ? "checked" : ""%>
    279                     ><label for="<%=name%>.null"><i>- not specified -</i></label><br>
     272                    ><label for="<%=fieldName%>.null"><i>- not specified -</i></label><br>
    280273                  <%
    281274                }
    282275                %>
    283                 <input type="radio" name="<%=name%>" id="<%=name%>.true" value="true"
     276                <input type="radio" name="<%=fieldName%>" id="<%=fieldName%>.true" value="true"
    284277                  <%=b != null && b == true ? "checked" : ""%>
    285                   ><label for="<%=name%>.true">true</label><br>
    286                 <input type="radio" name="<%=name%>" id="<%=name%>.false" value="false"
     278                  ><label for="<%=fieldName%>.true">true</label><br>
     279                <input type="radio" name="<%=fieldName%>" id="<%=fieldName%>.false" value="false"
    287280                  <%=b != null && b == false ? "checked" : ""%>
    288                   ><label for="<%=name%>.false">false</label>
     281                  ><label for="<%=fieldName%>.false">false</label>
    289282                <%
    290283              }
     
    295288                <tr>
    296289                <td>
    297                   <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=name%>"
     290                  <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=fieldName%>" id="<%=fieldName%>"
    298291                    value="<%=dateFormatter.format((Date)value)%>" style="width: 15em;"
    299292                    maxlength="20" title="Enter date in format: <%=dateFormat%>"
     
    302295                <td>
    303296                  <base:button
    304                     onclick="<%="Dates.selectDate('"+HTML.javaScriptEncode(ep.getTitle())+"', 'user', '"+name+"', null, '"+jsDateFormat +"')"%>"
     297                    id="<%="btn."+fieldName%>"
     298                    data-extended-property="<%=name%>"
    305299                    image="calendar.png"
    306300                    title="Calendar&hellip;"
     
    319313                <tr>
    320314                <td>
    321                   <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=name%>"
     315                  <input <%=isRequired%> <%=ifDisabled%> type="text" name="<%=fieldName%>" id="<%=fieldName%>"
    322316                    value="<%=dateTimeFormatter.format((Date)value)%>" style="width: 15em;"
    323317                    maxlength="20" title="Enter timestamp in format: <%=dateTimeFormat%>"
     
    326320                <td>
    327321                  <base:button
    328                     onclick="<%="Dates.selectDateTime('"+HTML.javaScriptEncode(ep.getTitle())+"', 'user', '"+name+"', null, '"+jsDateTimeFormat +"')"%>"
     322                    id="<%="btn."+fieldName%>"
     323                    data-extended-property="<%=name%>"
    329324                    image="calendar.png"
    330325                    title="Calendar&hellip;"
     
    340335              </td>
    341336              <td style="width: 20px;">
    342                 <%if (addZoom)
     337                <%
     338                if (addZoom)
    343339                {
    344340                  %>
    345                   <base:icon image="zoom.png"
    346                   onclick="<%="Main.zoom('" + HTML.javaScriptEncode(ep.getTitle()) + "', 'user', '" + name + "')"%>"
    347                     tooltip="Edit in larger window"
    348                     visible="<%=writePermission%>"
    349                   />
     341                  <base:zoom textarea="<%=fieldName%>" title="<%=HTML.encodeTags(ep.getTitle()) %>" />
    350342                  <%
    351343                }
     
    360352          <th>Description</th>
    361353          <td>
    362             <textarea <%=ifDisabled%> rows="5" name="description"><%=HTML.encodeTags(user.getDescription())%></textarea>
     354            <textarea <%=ifDisabled%> rows="5" name="description" id="description"><%=HTML.encodeTags(user.getDescription())%></textarea>
    363355          </td>
    364356          <td style="width: 20px;">
    365             <base:icon image="zoom.png"
    366               onclick="Main.zoom('Description', 'user', 'description')"
    367               tooltip="Edit in larger window"
    368               visible="<%=writePermission%>"
    369             />
     357            <base:zoom textarea="description" title="Description" />
    370358          </td>
    371359        </tr>
     
    376364 
    377365    <base:buttongroup subclass="dialogbuttons">
    378       <base:button onclick="Settings.save();" title="Save" visible="<%=writePermission%>"/>
    379       <base:button onclick="window.close();" title="Cancel" visible="<%=writePermission%>"/>
    380       <base:button onclick="window.close();" title="Close" visible="<%=!writePermission%>"/>
     366      <base:button id="btnSave" title="Save" visible="<%=writePermission%>"/>
     367      <base:button id="close" title="Cancel" visible="<%=writePermission%>"/>
     368      <base:button id="close" title="Close" visible="<%=!writePermission%>"/>
    381369    </base:buttongroup>
    382370 
  • trunk/www/my_base/user/submit_user.jsp

    r5443 r6166  
    101101        String name = ep.getName();
    102102        Formatter formatter = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
    103         Object value = formatter.parseString(Values.getStringOrNull(request.getParameter(name)));
     103        Object value = formatter.parseString(Values.getStringOrNull(request.getParameter("ep."+name)));
    104104        user.setExtended(name, value);
    105105      }
Note: See TracChangeset for help on using the changeset viewer.