Ignore:
Timestamp:
2023-11-06T21:47:32+13:00 (7 months ago)
Author:
anupama
Message:

Only deleting user comments through the editor works, I can't get editing to work yet. So I've put a copy of the code back to supporting just the deletions and continue to work on editing.

Location:
main/trunk/greenstone3/web/interfaces/default
Files:
1 added
3 edited

Legend:

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

    r37783 r38351  
    241241        addEditMetadataLink(titleDivs[i]);
    242242
     243        if(i == 0) { // root doc id, has no period-mark in it
     244        // user comments are attached to document root
     245        addEditUserCommentsLink(titleDivs[i]);
     246        }
     247       
    243248        if (gs.variables.isMapGPSEditingAllowed == "1") {
    244249        addEditMapGPSLink(titleDivs[i]);
  • main/trunk/greenstone3/web/interfaces/default/js/documentedit_scripts_util.js

    r37781 r38351  
    295295        for (var j in editableLastStates)
    296296        {   
    297             if (isNodeChanged(editableLastStates[j]))
    298             {
    299                 resultArray.push(editableLastStates[j].editableNode);
    300             }
     297                       if (isNodeChanged(editableLastStates[j]))
     298                       {
     299                               resultArray.push(editableLastStates[j].editableNode);
     300                       }           
    301301        }
    302302    }
     
    357357    collection = gs.cgiParams.p_c;
    358358  }
    359  
     359
    360360    var sendBuildRequest = function()
    361361    {
     
    429429    } // end sendBuildRequest definition
    430430
    431   var metadataChanges = new Array();
     431    var metadataChanges = new Array();
     432
     433    var delCommentsMetapositions = [];
     434    var userCommentsMetaFields = [];
     435    var _docid;
    432436  if (_deletedMetadata.length > 0) {
    433437    //addCollectionToBuild(collection);
     
    440444      var currentElem = currentRow;
    441445      while((currentElem = currentElem.parentNode).tagName != "TABLE");
    442       var docID = currentElem.getAttribute("id").substring(4);
    443      
    444       //Get metadata name
    445       var cells = currentRow.getElementsByTagName("TD");
    446     var nameCell = cells[0];
    447     // metadata name cell might have the multivalue indicator in it, so just want the first word
    448     var name = nameCell.innerHTML.split(" ")[0];
    449       var valueCell = cells[1];
    450     var value = valueCell.getElementsByTagName("TEXTAREA")[0].value;
    451     if (value.length) {
    452         // check for non empty value, in case all they have done is add a field then deleted it.
    453         metadataChanges.push({type:'delete', docID:docID, name:name, value:value});
    454         addCollectionToBuild(collection);
    455     }
    456       removeFromParent(currentRow);
     446   
     447    var docID;
     448    if(currentElem.getAttribute("id").startsWith("usercomments-")) {
     449       
     450        docID = currentElem.getAttribute("id").substring("usercomments-".length);
     451        _docid = docID;
     452       
     453        if(userCommentsMetaFields.length == 0) {
     454        var headerRow = currentElem.firstElementChild; // tr
     455        var headerCells = headerRow.querySelectorAll("th");
     456        for(var th = 1; th < headerCells.length; th++) { // skip th index=0, which is metapos
     457            userCommentsMetaFields.push(headerCells[th].textContent);
     458            //console.log("userCommentsMetaFields:" + userCommentsMetaFields[th-1]);
     459        }
     460        }
     461       
     462        // get metapos; collumn names in first row are metanames
     463        var metapos = currentRow.firstElementChild.textContent;
     464        delCommentsMetapositions.push(metapos);
     465        //console.log("docID : " + docID + " - metapos: " + metapos);
     466    }
     467    else {
     468        docID = currentElem.getAttribute("id").substring(4); // <table> with id ="meta<docid>"
     469       
     470        //Get metadata name
     471        var cells = currentRow.getElementsByTagName("TD");
     472        var nameCell = cells[0];
     473        // metadata name cell might have the multivalue indicator in it, so just want the first word
     474        var name = nameCell.innerHTML.split(" ")[0];
     475        var valueCell = cells[1];
     476        var value = valueCell.getElementsByTagName("TEXTAREA")[0].value;
     477        if (value.length) {
     478        // check for non empty value, in case all they have done is add a field then deleted it.
     479        metadataChanges.push({type:'delete', docID:docID, name:name, value:value});
     480        addCollectionToBuild(collection);
     481        }
     482    }
     483    removeFromParent(currentRow);
    457484    }
     485
     486      // build up the data structure for all the usercomments to be deleted
     487      if(delCommentsMetapositions.length > 0) {
     488      //console.log("About to delete position: " + delCommentsMetapositions);
     489      var timestamp_rec = {
     490          metaname: userCommentsMetaFields[0],
     491          metapositions: delCommentsMetapositions
     492      };
     493      var username_rec = {
     494          metaname: userCommentsMetaFields[1],
     495          metapositions: delCommentsMetapositions
     496      };   
     497      var comment_rec = {
     498          metaname: userCommentsMetaFields[2],
     499          metapositions: delCommentsMetapositions
     500      };
     501   
     502   
     503      var doc_rec = {
     504          docid: _docid,
     505          metatable: [username_rec, timestamp_rec, comment_rec],
     506          //metamode: "accumulate"
     507      };
     508   
     509      var docArray = [doc_rec];
     510      metadataChanges.push({type:'deleteUserComments', docID:docID, docArray:docArray});
     511      addCollectionToBuild(collection); 
     512      }
    458513  }
    459514
    460   var changes = changesToUpdate();
     515    var changes = changesToUpdate();
    461516 
    462517  //Clean changes
     
    476531            var currentElem = changedElem;
    477532            while((currentElem = currentElem.parentNode).tagName != "TABLE");
    478             var docID = currentElem.getAttribute("id").substring(4);
     533                var docID = currentElem.getAttribute("id").substring(4);
    479534           
    480535            //Get metadata name
     
    590645        if (change.type == "delete") {
    591646            gs.functions.removeArchivesMetadata(collection, gs.xsltParams.site_name, change.docID, change.name, null, encodeDelimiters(change.value), function(){callbackFunction();});
     647        } else if (change.type === "deleteUserComments") {
     648           
     649            //alert("deleteUserComments" + JSON.stringify(change.docArray));
     650            gs.functions.removeMetadataArray(
     651            collection,
     652            gs.xsltParams.site_name,
     653            change.docArray,
     654            null, //metamode
     655            "import|archives|index",
     656            function(ajaxResult) {
     657                console.log("Comments deleted from import/archives/index");
     658                callbackFunction(); // move on to processing next & eventually rebuild
     659            },
     660            false, // false for asynchronous, see comment in gs.usercomments.addUserComment()
     661            function(ajaxError) {
     662                var errData = (ajaxError.responseText) ? ajaxError.responseText : ajaxError;
     663                alert("Remove failed. Got: " + errData);               
     664            }
     665            );         
     666
    592667        } else {
    593668          // Checking "if(change.metapos)" doesn't work for us as it becomes false when the property doesn't exist AND when the property is 0. But metapos IS 0 for us.
  • main/trunk/greenstone3/web/interfaces/default/transform/pages/document.xsl

    r37782 r38351  
    243243       
    244244            <xsl:choose>
    245               <xsl:when test="$canDoEditing = 'true' and $editingTurnedOn = 'true'">
     245              <xsl:when test="$canDoEditing = 'true' and $editingTurnedOn = 'true'">
     246                <!-- only docroot nodes can have a usercomments table-->
     247                <xsl:if test="not(contains(@nodeID, '.'))">
     248                  <table id="usercomments-{@nodeID}">
     249                    <xsl:attribute name="style">
     250                        <xsl:choose>
     251                            <xsl:when test="/page/pageRequest/paramList/param[@name = 'dmd']/@value = 'true'">
     252                                <xsl:text>display:block;</xsl:text>
     253                            </xsl:when>
     254                            <xsl:otherwise>
     255                                <xsl:text>display:none;</xsl:text>
     256                            </xsl:otherwise>
     257                        </xsl:choose>
     258                    </xsl:attribute>               
     259                </table>
     260                </xsl:if>
    246261                <table id="meta{@nodeID}">
    247262                    <xsl:attribute name="style">
     
    257272                    <xsl:value-of select="util:clearMetadataStorage()"/>
    258273                    <xsl:for-each select="metadataList/metadata">
    259                         <xsl:sort select="@name"/>
    260                             <tr>
     274                      <xsl:sort select="@name"/>
     275                      <tr>
    261276                                <td class="metaTableCellName"><xsl:value-of select="@name"/></td>
    262277                                <td class="metaTableCell"> <textarea autocomplete="off"><xsl:attribute name="class">metaTableCellArea <xsl:value-of select="translate(@name, '.-', '')"/></xsl:attribute><xsl:value-of select="."/></textarea></td>
    263                             </tr>
     278                          </tr>
    264279                    </xsl:for-each>
    265280                </table>
     
    378393            <script type="text/javascript" src="interfaces/{$interface_name}/js/documentedit_scripts.js"><xsl:text> </xsl:text></script>
    379394            <script type="text/javascript" src="interfaces/{$interface_name}/js/documentedit_scripts_util.js"><xsl:text> </xsl:text></script>
     395            <script type="text/javascript" src="interfaces/{$interface_name}/js/documentedit_scripts_usercomments.js"><xsl:text> </xsl:text></script>
    380396            <script type="text/javascript">
    381397              <xsl:text disable-output-escaping="yes">gs.variables.isMapGPSEditingAllowed = "</xsl:text><xsl:value-of select="$isMapGPSEditingAllowed"/><xsl:text disable-output-escaping="yes">";</xsl:text></script>
Note: See TracChangeset for help on using the changeset viewer.