Changeset 32802

Show
Ignore:
Timestamp:
22.02.2019 11:28:07 (6 months ago)
Author:
ak19
Message:

Added the feature for PDF documents to load more than one map at the same time

Files:
1 modified

Legend:

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

    r32770 r32802  
    11/** Javascript file for editing a single document's content - metadata and text */ 
    22/** uses other functions in documentedit_scripts_util.js */ 
    3  
    43 
    54/* some vars for document editing */ 
     
    1514 
    1615/* What kind of metadata element selection do we provide? 
    17    plain: just a text input box 
    18    fixedlist: a drop down menu with a fixed list of options (provided by the availableMetadataElements list) 
    19    autocomplete: a text input box with a list of suggestions to choose from (provided by the availableMetadataElements list). Allows additional input other than the fixed list  
    20 */ 
     16plain: just a text input box 
     17fixedlist: a drop down menu with a fixed list of options (provided by the availableMetadataElements list) 
     18autocomplete: a text input box with a list of suggestions to choose from (provided by the availableMetadataElements list). Allows additional input other than the fixed list 
     19 */ 
    2120var new_metadata_field_input_type = "plain"; 
    2221/* add all metadata button? only valid with fixedlist or autocomplete metadata element selection */ 
     
    3130var autocompleteMetadata = ["dc.Subject"]; 
    3231var dcSubject_values = ["Kings", "Queens", "others"]; 
    33 */ 
     32 */ 
    3433 
    3534/* The metadata specified in multiValuedMetadata array will be treated as a delimited list, using mvm_delimiter. On saving, the values will be separated and saved individually */ 
     
    3837var mvm_delimiter = ";"; 
    3938var mapsIdsArray = []; //An array for the IDs of all the maps created 
     39 
    4040/************************ 
    41 * METADATA EDIT SCRIPTS * 
    42 ************************/ 
    43  
    44 function addEditMetadataLink(cell) 
    45 { 
     41 * METADATA EDIT SCRIPTS * 
     42 ************************/ 
     43 
     44function addEditMetadataLink(cell) { 
    4645    cell = $(cell); 
    4746    var id = cell.attr("id").substring(6); 
    4847    var metaTable = gs.jqGet("meta" + id); 
    49     var row = cell.parent();     
    50     var newCell = $("<td>", {"style": "font-size:0.7em; padding:0px 10px", "class": "editMetadataButton"}); 
    51     var linkSpan = $("<span>", {"class": "ui-state-default ui-corner-all", "style": "padding: 2px; float:left;"}); 
    52      
    53     var linkLabel = $("<span>"+gs.text.de.edit_metadata+"</span>");      
    54     var linkIcon = $("<span>", {"class": "ui-icon ui-icon-folder-collapsed"}); 
     48    var row = cell.parent(); 
     49    var newCell = $("<td>", { 
     50            "style": "font-size:0.7em; padding:0px 10px", 
     51            "class": "editMetadataButton" 
     52        }); 
     53    var linkSpan = $("<span>", { 
     54            "class": "ui-state-default ui-corner-all", 
     55            "style": "padding: 2px; float:left;" 
     56        }); 
     57 
     58    var linkLabel = $("<span>" + gs.text.de.edit_metadata + "</span>"); 
     59    var linkIcon = $("<span>", { 
     60            "class": "ui-icon ui-icon-folder-collapsed" 
     61        }); 
    5562    newCell.linkIcon = linkIcon; 
    5663    newCell.linkLabel = linkLabel; 
    57      
    58     var uList = $("<ul>", {"style": "outline: 0 none; margin:0px; padding:0px;"}); 
    59     var labelItem = $("<li>", {"style": "float:left; list-style:none outside none;"}); 
    60     var iconItem = $("<li>", {"style": "float:left; list-style:none outside none;"}); 
     64 
     65    var uList = $("<ul>", { 
     66            "style": "outline: 0 none; margin:0px; padding:0px;" 
     67        }); 
     68    var labelItem = $("<li>", { 
     69            "style": "float:left; list-style:none outside none;" 
     70        }); 
     71    var iconItem = $("<li>", { 
     72            "style": "float:left; list-style:none outside none;" 
     73        }); 
    6174 
    6275    uList.append(iconItem); 
     
    6477    labelItem.append(linkLabel); 
    6578    iconItem.append(linkIcon); 
    66      
    67     var newLink = $("<a>", {"href": "javascript:;"}); 
    68     newLink.click(function() 
    69     { 
     79 
     80    var newLink = $("<a>", { 
     81            "href": "javascript:;" 
     82        }); 
     83    newLink.click(function () { 
    7084        console.log(metaTable.metaNameField); 
    71         if(metaTable.css("display") == "none") 
    72         { 
    73             linkLabel.html(gs.text.de.hide_metadata); 
     85        if (metaTable.css("display") == "none") { 
     86            linkLabel.html(gs.text.de.hide_metadata); 
    7487            linkIcon.attr("class", "ui-icon ui-icon-folder-open"); 
    7588            metaTable.css("display", "block"); 
    7689            metaTable.metaNameField.css("display", "inline"); 
    77             metaTable.addRowButton.css("display", "inline"); 
    78             if (enable_add_all_metadata_button == true) { 
    79                 metaTable.addAllButton.css("display", "inline"); 
    80             } 
    81         } 
    82         else 
    83         { 
    84             linkLabel.html(gs.text.de.edit_metadata);            
     90            metaTable.addRowButton.css("display", "inline"); 
     91            if (enable_add_all_metadata_button == true) { 
     92                metaTable.addAllButton.css("display", "inline"); 
     93            } 
     94        } else { 
     95            linkLabel.html(gs.text.de.edit_metadata); 
    8596            linkIcon.attr("class", "ui-icon ui-icon-folder-collapsed"); 
    8697            metaTable.css("display", "none"); 
    8798            metaTable.metaNameField.css("display", "none"); 
    88             metaTable.addRowButton.css("display", "none"); 
    89             if (enable_add_all_metadata_button == true) { 
    90                 metaTable.addAllButton.css("display", "none"); 
    91             } 
     99            metaTable.addRowButton.css("display", "none"); 
     100            if (enable_add_all_metadata_button == true) { 
     101                metaTable.addAllButton.css("display", "none"); 
     102            } 
    92103        } 
    93104    }); 
     
    97108    newCell.append(linkSpan); 
    98109    row.append(newCell); 
    99      
     110 
    100111    addFunctionalityToTable(metaTable); 
    101112    metaTable.metaNameField.css("display", "none"); 
    102     metaTable.addRowButton.css("display", "none"); 
    103     if (enable_add_all_metadata_button == true) { 
    104     metaTable.addAllButton.css("display", "none"); 
    105     } 
    106 } 
    107  
    108  
    109 function addEditMapGPSLink(cell) 
    110 { 
     113    metaTable.addRowButton.css("display", "none"); 
     114    if (enable_add_all_metadata_button == true) { 
     115        metaTable.addAllButton.css("display", "none"); 
     116    } 
     117} 
     118 
     119var gsmap_store = {}; 
     120 
     121function addEditMapGPSLink(cell) { 
    111122    cell = $(cell); 
    112123    var id = cell.attr("id").substring(6); 
    113124    //console.log(id); 
    114125    var mapGPScontainer = gs.jqGet("map-and-controls-" + id); 
    115     console.log(mapGPScontainer); 
    116126    var row = cell.parent(); 
    117     var newCell = $("<td>", {"style": "font-size:0.7em; padding:0px 10px", "class": "editMapGPSButton"}); 
    118     var linkSpan = $("<span>", {"class": "ui-state-default ui-corner-all", "style": "padding: 2px; float:left;"}); 
    119      
    120     var linkLabel = $("<span>"+gs.text.de.edit_map_gps+"</span>");       
    121     var linkIcon = $("<span>", {"class": "ui-icon ui-icon-folder-collapsed"}); 
     127    var newCell = $("<td>", { 
     128            "style": "font-size:0.7em; padding:0px 10px", 
     129            "class": "editMapGPSButton" 
     130        }); 
     131    var linkSpan = $("<span>", { 
     132            "class": "ui-state-default ui-corner-all", 
     133            "style": "padding: 2px; float:left;" 
     134        }); 
     135 
     136    var linkLabel = $("<span>" + gs.text.de.edit_map_gps + "</span>"); 
     137    var linkIcon = $("<span>", { 
     138            "class": "ui-icon ui-icon-folder-collapsed" 
     139        }); 
    122140    newCell.linkIcon = linkIcon; 
    123141    newCell.linkLabel = linkLabel; 
    124      
    125     var uList = $("<ul>", {"style": "outline: 0 none; margin:0px; padding:0px;"}); 
    126     var labelItem = $("<li>", {"style": "float:left; list-style:none outside none;"}); 
    127     var iconItem = $("<li>", {"style": "float:left; list-style:none outside none;"}); 
     142 
     143    var uList = $("<ul>", { 
     144            "style": "outline: 0 none; margin:0px; padding:0px;" 
     145        }); 
     146    var labelItem = $("<li>", { 
     147            "style": "float:left; list-style:none outside none;" 
     148        }); 
     149    var iconItem = $("<li>", { 
     150            "style": "float:left; list-style:none outside none;" 
     151        }); 
    128152 
    129153    uList.append(iconItem); 
     
    131155    labelItem.append(linkLabel); 
    132156    iconItem.append(linkIcon); 
     157 
     158    var mapEditor = new MapEditor(id); 
     159    gsmap_store["map-" + id] = mapEditor; 
    133160     
    134     var newLink = $("<a>", {"href": "javascript:;"}); 
    135     newLink.click(function() 
    136     { 
     161    var newLink = $("<a>", { 
     162            "href": "javascript:;" 
     163        }); 
     164    newLink.click(function () { 
    137165        console.log("Show/Hide Map Editor"); 
     166 
     167        // Only if this 'id' element hasn't been initialied, then do the following 2 lines 
     168        if (mapEditor.map !== null) { 
     169            console.log(mapEditor.map.mapId); 
     170            console.log(mapsIdsArray.includes(id)); 
     171        } 
     172 
     173        var clicked_mapEditor = gsmap_store["map-" + id]; 
    138174         
    139         // Only if this 'id' element hasn't been initialied, then do the following 2 lines 
    140         if(map !== null){ 
    141             console.log(map.mapId); 
    142             console.log(mapsIdsArray.includes(id)); 
    143         } 
    144          
    145          
    146         if(map == null){ 
    147             console.log(id); 
    148             initMapEditorControls(id); 
    149             initMapEditor(id); 
    150             mapsIdsArray.push(map.mapId) 
    151         } else if(mapsIdsArray.includes(id) == false){ 
    152             initMapEditorControls(id); 
    153             initMapEditor(id); 
    154             mapsIdsArray.push(map.mapId) 
    155         } 
    156  
    157          
    158          
    159         if(mapGPScontainer.css("display") == "none") 
    160         { 
    161              
    162             linkLabel.html(gs.text.de.hide_map_gps); 
     175        if (clicked_mapEditor.map == null) { 
     176            console.log("Initializing map for id: " + id); 
     177 
     178            clicked_mapEditor.initMapEditorControls(); 
     179            clicked_mapEditor.initMapEditor(); 
     180            //mapsIdsArray.push(clicked_mapEditor.map.mapId); 
     181        } /* 
     182        else if (mapsIdsArray.includes(id) == false) { 
     183            //mapEditor.initMapEditorControls(); 
     184            //mapEditor.initMapEditor(); 
     185            mapsIdsArray.push(mapEditor.map.mapId) 
     186        } 
     187*/ 
     188        if (mapGPScontainer.css("display") == "none") { 
     189 
     190            linkLabel.html(gs.text.de.hide_map_gps); 
    163191            linkIcon.attr("class", "ui-icon ui-icon-folder-open"); 
    164192            mapGPScontainer.css("display", "block"); 
    165193 
    166              
    167         } 
    168         else 
    169         { 
    170             linkLabel.html(gs.text.de.edit_map_gps); 
    171              
     194        } else { 
     195            linkLabel.html(gs.text.de.edit_map_gps); 
     196 
    172197            linkIcon.attr("class", "ui-icon ui-icon-folder-collapsed"); 
    173198            mapGPScontainer.css("display", "none"); 
    174      
    175              
     199 
    176200        } 
    177201    }); 
    178202 
    179     newLink.append(uList);   
     203    newLink.append(uList); 
    180204    linkSpan.append(newLink); 
    181205    newCell.append(linkSpan); 
    182206    row.append(newCell); 
    183      
    184     mapGPScontainer.css("display","none"); 
    185      
    186      
     207 
     208    mapGPScontainer.css("display", "none"); 
     209 
    187210    addFunctionalityToTable(mapGPScontainer); 
    188211    mapGPScontainer.metaNameField.css("display", "none"); 
    189     mapGPScontainer.addRowButton.css("display", "none"); 
    190     if (enable_add_all_metadata_button == true) { 
    191       mapGPScontainer.addAllButton.css("display", "none"); 
    192     } 
    193      
    194 } 
    195  
    196 function setEditingFeaturesVisible(visible) 
    197 { 
    198     if(visible) 
    199     { 
    200         $("#editContentButton").html(gs.text.de.hide_editor);  
     212    mapGPScontainer.addRowButton.css("display", "none"); 
     213    if (enable_add_all_metadata_button == true) { 
     214        mapGPScontainer.addAllButton.css("display", "none"); 
     215    } 
     216 
     217} 
     218 
     219function setEditingFeaturesVisible(visible) { 
     220    if (visible) { 
     221        $("#editContentButton").html(gs.text.de.hide_editor); 
    201222        $("#editContentButtonDiv").attr("class", "ui-state-default ui-corner-all"); 
    202     } 
    203     else 
    204     { 
    205         $("#editContentButton").html(gs.text.de.edit_content);  
     223    } else { 
     224        $("#editContentButton").html(gs.text.de.edit_content); 
    206225        $("#editContentButtonDiv").attr("class", ""); 
    207226    } 
    208      
     227 
    209228    var visibility = (visible ? "" : "none"); 
    210     if (display_metadata_set_selector == true) { 
    211     $("#metadataListLabel, #metadataSetList").css("display", visibility); 
    212     } 
    213      
    214     $(".editMetadataButton").each(function() 
    215     { 
     229    if (display_metadata_set_selector == true) { 
     230        $("#metadataListLabel, #metadataSetList").css("display", visibility); 
     231    } 
     232 
     233    $(".editMetadataButton").each(function () { 
    216234        $(this).css("display", visibility); 
    217         $(this.linkLabel).html(gs.text.de.edit_metadata);  
    218         $(this.linkIcon).attr("class", "ui-icon ui-icon-folder-collapsed"); 
    219     });  
    220     /* 
    221     $(".editMapGPS").each(function() 
    222     { 
    223         $(this).css("display", visibility); 
    224         $(this.linkLabel).html(gs.text.de.edit_map_gps);         
     235        $(this.linkLabel).html(gs.text.de.edit_metadata); 
    225236        $(this.linkIcon).attr("class", "ui-icon ui-icon-folder-collapsed"); 
    226237    }); 
    227     */ 
    228      
    229     $("table").each(function() 
    230     { 
    231         if($(this).attr("id") && $(this).attr("id").search(/^meta/) != -1) 
    232         { 
     238    /* 
     239    $(".editMapGPS").each(function(){ 
     240    $(this).css("display", visibility); 
     241    $(this.linkLabel).html(gs.text.de.edit_map_gps); 
     242    $(this.linkIcon).attr("class", "ui-icon ui-icon-folder-collapsed"); 
     243    }); 
     244     */ 
     245 
     246    $("table").each(function () { 
     247        if ($(this).attr("id") && $(this).attr("id").search(/^meta/) != -1) { 
    233248            $(this).css("display", "none"); 
    234249            $(this.metaNameField).css("display", "none"); 
    235             $(this.addRowButton).css("display", "none"); 
    236             if (enable_add_all_metadata_button == true) { 
    237             $(this.addAllButton).css("display", "none"); 
    238             } 
     250            $(this.addRowButton).css("display", "none"); 
     251            if (enable_add_all_metadata_button == true) { 
     252                $(this.addAllButton).css("display", "none"); 
     253            } 
    239254        } 
    240255    }); 
     
    242257 
    243258/* override this function in other interface/site/collection if you want 
    244    a different set of metadata sets  
    245   Use in conjunction with the dynamic_metadata_set_list variable. */ 
     259a different set of metadata sets 
     260Use in conjunction with the dynamic_metadata_set_list variable. */ 
    246261function setStaticMetadataSets(list) { 
    247   addOptionToList(list, "All", gs.text.de.all_metadata); 
    248 } 
    249  
    250 function readyPageForEditing() 
    251 { 
    252  
    253  //   CKEDITOR.on('instanceReady', function(evt) { 
    254 //  addCKEEditableState(evt,editableInitStates); 
    255  //   }); 
    256  
    257     if($("#metadataSetList").length) 
    258     { 
     262    addOptionToList(list, "All", gs.text.de.all_metadata); 
     263} 
     264 
     265function readyPageForEditing() { 
     266 
     267    //   CKEDITOR.on('instanceReady', function(evt) { 
     268    //  addCKEEditableState(evt,editableInitStates); 
     269    //   }); 
     270 
     271    if ($("#metadataSetList").length) { 
    259272        var setList = $("#metadataSetList"); 
    260         if(!setList.css("display") || setList.css("display") == "") 
    261         { 
     273        if (!setList.css("display") || setList.css("display") == "") { 
    262274            setEditingFeaturesVisible(false); 
    263         } 
    264         else 
    265         { 
     275        } else { 
    266276            setEditingFeaturesVisible(true); 
    267277        } 
     
    269279    } 
    270280 
    271     $("#editContentButton").html(gs.text.de.hide_editor); 
    272     //wait for 0.5 sec to let ckeditor up  
    273     setTimeout(function(){ $(".sectionText").each(function(){addEditableState(this,editableInitStates);}); }, 500);  
     281    $("#editContentButton").html(gs.text.de.hide_editor); 
     282    //wait for 0.5 sec to let ckeditor up 
     283    setTimeout(function () { 
     284        $(".sectionText").each(function () { 
     285            addEditableState(this, editableInitStates); 
     286        }); 
     287    }, 500); 
    274288    var editBar = $("#editBarLeft"); 
    275      
    276  
    277     var visibleMetadataList = $("<select>", {"id": "metadataSetList", "class": "ui-state-default"}); 
     289 
     290    var visibleMetadataList = $("<select>", { 
     291            "id": "metadataSetList", 
     292            "class": "ui-state-default" 
     293        }); 
    278294    setStaticMetadataSets(visibleMetadataList); 
    279      
    280     if (display_metadata_set_selector == true) { 
    281     var metadataListLabel = $("<span>", {"id": "metadataListLabel", "style": "margin-left:20px;"}); 
    282     metadataListLabel.html(gs.text.de.visible_metadata);  
    283     editBar.append(metadataListLabel); 
    284     } else { 
    285     visibleMetadataList.css ("display", "none"); 
    286     } 
     295 
     296    if (display_metadata_set_selector == true) { 
     297        var metadataListLabel = $("<span>", { 
     298                "id": "metadataListLabel", 
     299                "style": "margin-left:20px;" 
     300            }); 
     301        metadataListLabel.html(gs.text.de.visible_metadata); 
     302        editBar.append(metadataListLabel); 
     303    } else { 
     304        visibleMetadataList.css("display", "none"); 
     305    } 
    287306    editBar.append(visibleMetadataList); 
    288307    visibleMetadataList.change(onVisibleMetadataSetChange); 
    289308    editBar.append("<br>"); 
    290      
    291     for (var i=0; i< save_and_rebuild_buttons.length; i++) { 
    292       var button_type = save_and_rebuild_buttons[i]; 
    293       if (button_type == "save") { 
    294         var saveButton = $("<button>", {"id": "saveButton", "class": "ui-state-default ui-corner-all"}); 
    295         saveButton.click(save); 
    296         saveButton.html(gs.text.de.save); 
    297         editBar.append(saveButton); 
    298       } else if(button_type == "rebuild") { 
    299         var rebuildButton = $("<button>", {"id": "rebuildButton", "class": "ui-state-default ui-corner-all"}); 
    300         rebuildButton.click(rebuildCurrentCollection); 
    301         rebuildButton.html(gs.text.de.rebuild); 
    302         editBar.append(rebuildButton); 
    303       } else if (button_type == "saveandrebuild") { 
    304         var saveAndRebuildButton = $("<button>", {"id": "saveAndRebuildButton", "class": "ui-state-default ui-corner-all"}); 
    305         saveAndRebuildButton.click(saveAndRebuild); 
    306         saveAndRebuildButton.html(gs.text.de.saverebuild); 
    307         editBar.append(saveAndRebuildButton); 
    308  
    309       } 
     309 
     310    for (var i = 0; i < save_and_rebuild_buttons.length; i++) { 
     311        var button_type = save_and_rebuild_buttons[i]; 
     312        if (button_type == "save") { 
     313            var saveButton = $("<button>", { 
     314                    "id": "saveButton", 
     315                    "class": "ui-state-default ui-corner-all" 
     316                }); 
     317            saveButton.click(save); 
     318            saveButton.html(gs.text.de.save); 
     319            editBar.append(saveButton); 
     320        } else if (button_type == "rebuild") { 
     321            var rebuildButton = $("<button>", { 
     322                    "id": "rebuildButton", 
     323                    "class": "ui-state-default ui-corner-all" 
     324                }); 
     325            rebuildButton.click(rebuildCurrentCollection); 
     326            rebuildButton.html(gs.text.de.rebuild); 
     327            editBar.append(rebuildButton); 
     328        } else if (button_type == "saveandrebuild") { 
     329            var saveAndRebuildButton = $("<button>", { 
     330                    "id": "saveAndRebuildButton", 
     331                    "class": "ui-state-default ui-corner-all" 
     332                }); 
     333            saveAndRebuildButton.click(saveAndRebuild); 
     334            saveAndRebuildButton.html(gs.text.de.saverebuild); 
     335            editBar.append(saveAndRebuildButton); 
     336 
     337        } 
    310338    } 
    311339    var statusBarDiv = $("<div>"); 
    312340    editBar.append(statusBarDiv); 
    313341    _statusBar = new StatusBar(statusBarDiv[0]); 
    314      
     342 
    315343    var titleDivs = $(".sectionTitle"); 
    316     for(var i = 0; i < titleDivs.length; i++) 
    317     { 
     344    for (var i = 0; i < titleDivs.length; i++) { 
    318345        addEditMetadataLink(titleDivs[i]); 
    319346        addEditMapGPSLink(titleDivs[i]); 
    320347    } 
    321      
     348 
    322349    _baseURL = gs.xsltParams.library_name; 
    323350    onVisibleMetadataSetChange(); // make sure that the selected item in the list is active 
     
    327354// currently not used if other one is present. need to get the js include order right 
    328355function enableSaveButtons(enabled) { 
    329   if (enabled) { 
    330     $("#saveButton, #rebuildButton, #saveAndRebuildButton").removeAttr("disabled"); 
    331   } else { 
    332     $("#saveButton, #rebuildButton, #saveAndRebuildButton").attr("disabled", "disabled"); 
    333   } 
    334 } 
    335  
    336 /* this is a cut down version of save() from documentmaker_scripts_util.js  
    337  going back to using save, will delete this once everything working*/ 
     356    if (enabled) { 
     357        $("#saveButton, #rebuildButton, #saveAndRebuildButton").removeAttr("disabled"); 
     358    } else { 
     359        $("#saveButton, #rebuildButton, #saveAndRebuildButton").attr("disabled", "disabled"); 
     360    } 
     361} 
     362 
     363/* this is a cut down version of save() from documentmaker_scripts_util.js 
     364going back to using save, will delete this once everything working*/ 
    338365function saveMetadataChangesOld() { 
    339366 
    340   console.log("Saving metadata changes"); 
    341   
    342   // get collection name 
    343   var collection = gs.cgiParams.c;; 
    344  
    345   // get document id 
    346   var docID = gs.cgiParams.d; 
    347  
    348   var metadataChanges = new Array(); 
    349   if (_deletedMetadata.length > 0) { 
    350  
    351     for(var i = 0; i < _deletedMetadata.length; i++) { 
    352        
    353       var currentRow = _deletedMetadata[i]; 
    354        
    355       //Get metadata name 
    356       var cells = currentRow.getElementsByTagName("TD"); 
    357       var nameCell = cells[0]; 
    358       var name = nameCell.innerHTML; 
    359       var valueCell = cells[1]; 
    360       var value = valueCell.innerHTML; 
    361       metadataChanges.push({type:'delete', docID:docID, name:name, value:value}); 
    362       removeFromParent(currentRow); 
    363     } 
    364   } 
    365  
    366   /*var changes = null; 
     367    console.log("Saving metadata changes"); 
     368 
     369    // get collection name 
     370    var collection = gs.cgiParams.c; ; 
     371 
     372    // get document id 
     373    var docID = gs.cgiParams.d; 
     374 
     375    var metadataChanges = new Array(); 
     376    if (_deletedMetadata.length > 0) { 
     377 
     378        for (var i = 0; i < _deletedMetadata.length; i++) { 
     379 
     380            var currentRow = _deletedMetadata[i]; 
     381 
     382            //Get metadata name 
     383            var cells = currentRow.getElementsByTagName("TD"); 
     384            var nameCell = cells[0]; 
     385            var name = nameCell.innerHTML; 
     386            var valueCell = cells[1]; 
     387            var value = valueCell.innerHTML; 
     388            metadataChanges.push({ 
     389                type: 'delete', 
     390                docID: docID, 
     391                name: name, 
     392                value: value 
     393            }); 
     394            removeFromParent(currentRow); 
     395        } 
     396    } 
     397 
     398    /*var changes = null; 
    367399    //var changes = de.Changes.getChangedEditableSections(); 
    368   for(var i = 0; i < changes.length; i++) { 
    369      
    370     var changedElem = changes[i]; 
    371          
    372     //Get metadata name 
    373     var row = changedElem.parentNode; 
    374     var cells = row.getElementsByTagName("TD"); 
    375     var nameCell = cells[0]; 
    376     var name = nameCell.innerHTML; 
    377     var value = changedElem.innerHTML; 
    378     value = value.replace(/&nbsp;/g, " "); 
    379      
    380     var orig = changedElem.originalValue; 
    381     if (orig) { 
    382       orig = orig.replace(/&nbsp;/g, " "); 
    383     } 
    384     metadataChanges.push({collection:collection, docID:docID, name:name, value:value, orig:orig}); 
    385     changedElem.originalValue = changedElem.innerHTML; 
    386      
    387   } 
    388 */ 
    389   if (metadataChanges.length ==0) { 
    390       console.log(gs.text.de.no_changes); 
    391     return; 
    392   } 
    393  
    394   var processChangesLoop = function(index) 
    395     { 
    396       var change = metadataChanges[index]; 
    397        
    398       var callbackFunction; 
    399       if(index + 1 == metadataChanges.length) 
    400     { 
    401       callbackFunction = function(){console.log("Completed saving metadata changes. You must rebuild the collection for the changes to take effect.");}; 
    402     } 
    403       else 
    404     { 
    405       callbackFunction = function(){processChangesLoop(index + 1)}; 
    406     } 
    407       if (change.type == "delete") { 
    408     gs.functions.removeArchivesMetadata(collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, function(){callbackFunction();}); 
    409       } else { 
    410     if(change.orig) 
    411       { 
    412         gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, change.orig, "override", function(){callbackFunction();}); 
    413       } 
    414     else 
    415       { 
    416         gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, null, "accumulate", function(){callbackFunction();}); 
    417       } 
    418       } 
    419     } 
    420   processChangesLoop(0); 
    421   /* need to clear the changes from the page */ 
    422   while (_deletedMetadata.length>0) { 
    423     _deletedMetadata.pop(); 
    424   } 
    425      
    426 } 
    427  
    428  
    429  
     400    for(var i = 0; i < changes.length; i++) { 
     401 
     402    var changedElem = changes[i]; 
     403 
     404    //Get metadata name 
     405    var row = changedElem.parentNode; 
     406    var cells = row.getElementsByTagName("TD"); 
     407    var nameCell = cells[0]; 
     408    var name = nameCell.innerHTML; 
     409    var value = changedElem.innerHTML; 
     410    value = value.replace(/&nbsp;/g, " "); 
     411 
     412    var orig = changedElem.originalValue; 
     413    if (orig) { 
     414    orig = orig.replace(/&nbsp;/g, " "); 
     415    } 
     416    metadataChanges.push({collection:collection, docID:docID, name:name, value:value, orig:orig}); 
     417    changedElem.originalValue = changedElem.innerHTML; 
     418 
     419    } 
     420     */ 
     421    if (metadataChanges.length == 0) { 
     422        console.log(gs.text.de.no_changes); 
     423        return; 
     424    } 
     425 
     426    var processChangesLoop = function (index) { 
     427        var change = metadataChanges[index]; 
     428 
     429        var callbackFunction; 
     430        if (index + 1 == metadataChanges.length) { 
     431            callbackFunction = function () { 
     432                console.log("Completed saving metadata changes. You must rebuild the collection for the changes to take effect."); 
     433            }; 
     434        } else { 
     435            callbackFunction = function () { 
     436                processChangesLoop(index + 1) 
     437            }; 
     438        } 
     439        if (change.type == "delete") { 
     440            gs.functions.removeArchivesMetadata(collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, function () { 
     441                callbackFunction(); 
     442            }); 
     443        } else { 
     444            if (change.orig) { 
     445                gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, change.orig, "override", function () { 
     446                    callbackFunction(); 
     447                }); 
     448            } else { 
     449                gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, null, "accumulate", function () { 
     450                    callbackFunction(); 
     451                }); 
     452            } 
     453        } 
     454    } 
     455    processChangesLoop(0); 
     456    /* need to clear the changes from the page */ 
     457    while (_deletedMetadata.length > 0) { 
     458        _deletedMetadata.pop(); 
     459    } 
     460 
     461}