Ignore:
Timestamp:
2017-08-21T13:39:49+12:00 (7 years 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 edited

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
Note: See TracChangeset for help on using the changeset viewer.