Changeset 31909

Show
Ignore:
Timestamp:
21.08.2017 13:39:49 (3 months ago)
Author:
kjdon
Message:

implementing 'add all metadata' button. only add if enable_add_all_metadata_button is true, and if our metadata selector is a fixed list or autocomplete. will add a new row to the table for each metadata field in hte list. TODO, don't add if they are already in the list??

Location:
main/trunk/greenstone3/web/interfaces/default/js
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/documentedit_scripts.js

    r31770 r31909  
    2020*/ 
    2121var new_metadata_field_input_type = "plain"; 
     22/* add all metadata button? only valid with fixedlist or autocomplete metadata element selection */ 
     23var enable_add_all_metadata_button = true; 
     24 
    2225/* Metadata elements to be used in the fixedlist/autocomplete options above */ 
    2326var availableMetadataElements = ["dc.Title", "dc.Subject"]; 
     
    3033*/ 
    3134 
    32  
    3335/************************ 
    3436* METADATA EDIT SCRIPTS * 
     
    4042    var id = cell.attr("id").substring(6); 
    4143    var metaTable = gs.jqGet("meta" + id); 
    42  
    4344    var row = cell.parent(); 
    4445    var newCell = $("<td>", {"style": "font-size:0.7em; padding:0px 10px", "class": "editMetadataButton"}); 
     
    6869            metaTable.css("display", "block"); 
    6970            metaTable.metaNameField.css("display", "inline"); 
    70             metaTable.addRowButton.css("display", "inline"); 
     71            metaTable.addRowButton.css("display", "inline"); 
     72            if (enable_add_all_metadata_button == true) { 
     73            metaTable.addAllButton.css("display", "inline"); 
     74            } 
    7175        } 
    7276        else 
     
    7680            metaTable.css("display", "none"); 
    7781            metaTable.metaNameField.css("display", "none"); 
    78             metaTable.addRowButton.css("display", "none"); 
     82            metaTable.addRowButton.css("display", "none"); 
     83            if (enable_add_all_metadata_button == true) { 
     84            metaTable.addAllButton.css("display", "none"); 
     85            } 
    7986        } 
    8087    }); 
     
    8794    addFunctionalityToTable(metaTable); 
    8895    metaTable.metaNameField.css("display", "none"); 
    89     metaTable.addRowButton.css("display", "none"); 
     96    metaTable.addRowButton.css("display", "none"); 
     97    if (enable_add_all_metadata_button == true) { 
     98    metaTable.addAllButton.css("display", "none"); 
     99    } 
    90100} 
    91101 
     
    120130            $(this).css("display", "none"); 
    121131            $(this.metaNameField).css("display", "none"); 
    122             $(this.addRowButton).css("display", "none"); 
     132            $(this.addRowButton).css("display", "none"); 
     133            if (enable_add_all_metadata_button == true) { 
     134            $(this.addAllButton).css("display", "none"); 
     135            } 
    123136        } 
    124137    }); 
     
    137150    addCKEEditableState(evt,editableInitStates); 
    138151    }); 
    139  
    140152    if($("#metadataSetList").length) 
    141153    { 
     
    378390     
    379391    } 
    380     return true; 
    381 } 
    382  
     392    // if get here, this must be a new node, as wasn't in init states 
     393    // make sure its not empty - we won't add empty nodes. 
     394    if (StateToCheck.initHTML == "") { 
     395    return false; 
     396    }  
     397    return true; 
     398     
     399} 
     400 
  • main/trunk/greenstone3/web/interfaces/default/js/documentedit_scripts_util.js

    r31748 r31909  
    830830    table.metaNameField = metaNameField; 
    831831     
    832     var addRowButton = $("<button>",{"class": "ui-state-default ui-corner-all", "style": "margin: 5px;"}); 
     832    /* add the buttons */ 
     833    // check enable_add_all_button - only valid for fixedlist and autocomplete 
     834    if (enable_add_all_metadata_button == true) { 
     835    if (new_metadata_field_input_type != "fixedlist" && new_metadata_field_input_type != "autocomplete") { 
     836        enable_add_all_metadata_button = false; 
     837    } 
     838    } 
     839 
     840    // add single metadata button 
     841    var addRowButton = $("<button>",{"class": "ui-state-default ui-corner-all", "style": "margin: 5px;"}); 
     842 
    833843    addRowButton.html(gs.text.de.add_new_metadata); 
    834844    addRowButton.click(function()  
     
    840850            return; 
    841851        } 
    842             var clean_name = name.replace(/[\.-]/g, ""); 
    843         var newRow = $("<tr>", {"style": "display: table-row;"}); 
    844         var nameCell = $("<td>" + name + "</td>"); 
    845         nameCell.attr("class", "metaTableCellName"); 
    846         var valueCell = $("<td>", {"class": "metaTableCell"});   
    847             var textValue = $("<textarea>", {"class": "metaTableCellArea "+ clean_name});  
    848          
    849         if (jQuery.inArray(name, autocompleteMetadata) != -1) { 
    850             var source_obje = window[clean_name +"_values"]; 
    851             if (source_obje) { 
    852             textValue.autocomplete({ 
    853                 minLength: 0, 
    854                 source: source_obje 
    855             }); 
    856             } 
    857         } 
    858         valueCell.append(textValue); 
    859         newRow.append(nameCell); 
    860         newRow.append(valueCell); 
    861         addRemoveLinkToRow(newRow.get(0)); 
    862         table.append(newRow); 
    863          
    864         var undo = new Array(); 
    865         undo.op = "delMeta"; 
    866         undo.srcElem = newRow; 
    867         undo.removeTransaction = false; 
    868         _undoOperations.push(undo); 
    869         if ( hierarchyStorage && hierarchyStorage[name]) 
    870                 { 
    871                         setHierarchyEventsWrappers(name); 
    872                 } 
     852        addNewMetadataRow(table, name); 
    873853 
    874854         
    875855    }); 
    876     table.addRowButton = addRowButton; 
    877     metaNameField.after(addRowButton); 
    878  
     856    table.addRowButton = addRowButton; 
     857    metaNameField.after(addRowButton); 
     858 
     859    // add all metadata button 
     860    if (enable_add_all_metadata_button == true) { 
     861    var addAllButton = $("<button>",{"class": "ui-state-default ui-corner-all", "style": "margin: 5px;"}); 
     862    addAllButton.html(gs.text.de.add_all_metadata); 
     863    addAllButton.click(function() 
     864               { 
     865                   for(var i=0; i<availableMetadataElements.length; i++) { 
     866                    
     867                       addNewMetadataRow(table, availableMetadataElements[i]) 
     868                   } 
     869                    
     870               }); 
     871    table.addAllButton = addAllButton; 
     872    addRowButton.after(addAllButton); 
     873     
     874    } 
     875 
     876} 
     877 
     878function addNewMetadataRow(table, name) { 
     879 
     880    var clean_name = name.replace(/[\.-]/g, ""); 
     881    var newRow = $("<tr>", {"style": "display: table-row;"}); 
     882    var nameCell = $("<td>" + name + "</td>"); 
     883    nameCell.attr("class", "metaTableCellName"); 
     884    var valueCell = $("<td>", {"class": "metaTableCell"});   
     885    var textValue = $("<textarea>", {"class": "metaTableCellArea "+ clean_name});  
     886     
     887    if (jQuery.inArray(name, autocompleteMetadata) != -1) { 
     888    var source_obje = window[clean_name +"_values"]; 
     889    if (source_obje) { 
     890        textValue.autocomplete({ 
     891        minLength: 0, 
     892        source: source_obje 
     893        }); 
     894    } 
     895    } 
     896    valueCell.append(textValue); 
     897    newRow.append(nameCell); 
     898    newRow.append(valueCell); 
     899    addRemoveLinkToRow(newRow.get(0)); 
     900    table.append(newRow); 
     901     
     902    var undo = new Array(); 
     903    undo.op = "delMeta"; 
     904    undo.srcElem = newRow; 
     905    undo.removeTransaction = false; 
     906    _undoOperations.push(undo); 
     907    if ( hierarchyStorage && hierarchyStorage[name]) 
     908    { 
     909        setHierarchyEventsWrappers(name); 
     910    } 
    879911} 
    880912