Ignore:
Timestamp:
Apr 2, 2009, 10:58:58 AM (13 years ago)
Author:
Martin Svensson
Message:

Fixes #1274 Disable/hide "Validate" and "Extract metadata" options on the "Data files" tab if no file type supports it

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/common/datafiles/select_files.jsp

    r4711 r4873  
    135135  }
    136136  var lastFileInputName;
    137   function browseOnClick(inputName, extension)
     137  var updateCheckboxes = false;
     138  function browseOnClick(inputName, extension, updateCheck)
    138139  {
    139140    var frm = document.forms['datafiles'];
     141    updateCheckboxes = updateCheck;
    140142    var url = '../../filemanager/index.jsp?ID=<%=ID%>&cmd=SelectOne&callback=setFileCallback';
    141143    if (extension)
     
    154156    var frm = document.forms['datafiles'];
    155157    frm[lastFileInputName].value = path;
    156     fileOnChange(lastFileInputName);
    157   }
    158   function fileOnChange(inputName)
     158    fileOnChange(lastFileInputName, updateCheckboxes);
     159  }
     160  function fileOnChange(inputName, updateCheckbox)
    159161  {
    160162    var frm = document.forms['datafiles'];
    161     if (frm[inputName].value != '')
    162     {
    163       frm['datafiles.validate'].checked = true;
    164       frm['datafiles.metadata'].checked = true;
    165     }
    166   }
    167   function recentOnChange(inputName)
     163    var validateCheckbox = frm['datafiles.validate'];
     164    var metadataCheckbox = frm['datafiles.metadata'];
     165
     166    // Check boxes should be updated if the data file type
     167    //supports validation or metadata-extraction
     168    if (updateCheckbox)
     169    {
     170      if (frm[inputName].value != '')
     171      {
     172        // Data filetype supports validation
     173        if (validateCheckbox)
     174        {       
     175          if (validateCheckbox.disabled) validateCheckbox.disabled = false; 
     176          validateCheckbox.checked = "1";
     177        }
     178        // Data filetype supports metadata extraction
     179        if (metadataCheckbox)
     180        {     
     181          if (metadataCheckbox.disabled) metadataCheckbox.disabled = false; 
     182          metadataCheckbox.checked = "1";
     183        }
     184      }
     185    }   
     186  }
     187  function recentOnChange(inputName, updateCheck)
    168188  {
    169189    var frm = document.forms['datafiles'];
     
    176196      {
    177197        frm[inputName].value = path;
    178         fileOnChange(inputName);
     198        fileOnChange(inputName, updateCheck);
    179199      }
    180200      recentInput.selectedIndex = 0;
     
    209229      <table class="form" cellspacing="2" border="0" cellpadding="0" width="100%">
    210230      <%
    211       boolean hasNonPlatformFiles = false;
     231      boolean hasNonPlatformFiles = false;     
     232      boolean activateCheckBoxes = false;
     233
     234      boolean validationSupport = false;
     235      boolean metadataSupport = false;
     236     
    212237      for (DataFileType dft : fileTypes)
    213238      {
     
    223248        boolean deniedFile = false;
    224249        String extension = dft.getExtension();
     250       
     251        boolean hasValidator = dft.getValidatorClass() != null;
     252        boolean hasMetadataExtractor = dft.getMetadataReaderClass() != null;
     253        boolean affectCheckboxes = hasValidator || hasMetadataExtractor;
     254        validationSupport = hasValidator ? true : validationSupport;
     255        metadataSupport = hasMetadataExtractor ? true : metadataSupport;
    225256        if (member != null)
    226257        {
    227258          try
    228259          {
    229             file = member.getFile();
     260            file = member.getFile();           
    230261          }
    231262          catch (PermissionDeniedException ex)
     
    239270        {
    240271          path = file.getPath().toString();
     272          activateCheckBoxes = activateCheckBoxes || hasValidator || hasMetadataExtractor;
    241273        }
    242274        else if (deniedFile || deniedPlatform)
     
    245277        }
    246278        String inputName= "datafile."+dft.getId();
    247         recentFiles = (List<File>)cc.getRecent(dc, Item.FILE, dft.getExternalId());
     279        recentFiles = (List<File>)cc.getRecent(dc, Item.FILE, dft.getExternalId());       
     280       
    248281        %>
    249282        <tr>
     
    267300                size="50" title="<%=HTML.encodeTags(dft.getDescription())%>"
    268301                <%=deniedFile || deniedPlatform ? "disabled" : "" %>
    269                 onchange="fileOnChange('<%=inputName%>')">&nbsp;
     302                onchange="fileOnChange('<%=inputName%>', <%=affectCheckboxes %>)">&nbsp;
    270303              </td>
    271304              <td><base:button
    272305                  title="Browse&hellip;"
    273                   onclick="<%="browseOnClick('"+inputName+"', '" + HTML.javaScriptEncode(extension) + "')"%>"
     306                  onclick="<%="browseOnClick('"+inputName+"', '" + HTML.javaScriptEncode(extension) + "', "+ affectCheckboxes + ")"%>"
    274307                  disabled="<%=deniedFile || deniedPlatform %>"
    275308                  />
     
    286319          {
    287320            %>
    288             <select name="recent.<%=inputName%>" onchange="recentOnChange('<%=inputName%>')">
     321            <select name="recent.<%=inputName%>" onchange="recentOnChange('<%=inputName%>', <%=affectCheckboxes%>)">
    289322            <option value="">- recently used -
    290323            <option value="">- clear -
     
    305338        <%
    306339      }
     340      if (validationSupport)
     341      {
    307342      %>
    308343      <tr>
    309344        <td class="prompt">Validate</td>
    310         <td><input type="checkbox" value="1" name="datafiles.validate"></td>
     345        <td><input type="checkbox" value="1" <%=activateCheckBoxes ? "" : "disabled"%> name="datafiles.validate"></td>
    311346      </tr>
     347      <%
     348      }
     349      if (metadataSupport)
     350      {
     351      %>
    312352      <tr>
    313353        <td class="prompt">Extract metadata</td>
    314         <td><input type="checkbox" value="1" name="datafiles.metadata"></td>
     354        <td><input type="checkbox" value="1" <%=activateCheckBoxes ? "" : "disabled"%> name="datafiles.metadata"></td>
    315355      </tr>
     356      <%
     357      }
     358      %>
    316359      </table>
    317360      <%
Note: See TracChangeset for help on using the changeset viewer.