Changeset 38351 for main/trunk
- Timestamp:
- 2023-11-06T21:47:32+13:00 (7 months ago)
- 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 241 241 addEditMetadataLink(titleDivs[i]); 242 242 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 243 248 if (gs.variables.isMapGPSEditingAllowed == "1") { 244 249 addEditMapGPSLink(titleDivs[i]); -
main/trunk/greenstone3/web/interfaces/default/js/documentedit_scripts_util.js
r37781 r38351 295 295 for (var j in editableLastStates) 296 296 { 297 298 299 300 } 297 if (isNodeChanged(editableLastStates[j])) 298 { 299 resultArray.push(editableLastStates[j].editableNode); 300 } 301 301 } 302 302 } … … 357 357 collection = gs.cgiParams.p_c; 358 358 } 359 359 360 360 var sendBuildRequest = function() 361 361 { … … 429 429 } // end sendBuildRequest definition 430 430 431 var metadataChanges = new Array(); 431 var metadataChanges = new Array(); 432 433 var delCommentsMetapositions = []; 434 var userCommentsMetaFields = []; 435 var _docid; 432 436 if (_deletedMetadata.length > 0) { 433 437 //addCollectionToBuild(collection); … … 440 444 var currentElem = currentRow; 441 445 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); 457 484 } 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 } 458 513 } 459 514 460 var changes = changesToUpdate();515 var changes = changesToUpdate(); 461 516 462 517 //Clean changes … … 476 531 var currentElem = changedElem; 477 532 while((currentElem = currentElem.parentNode).tagName != "TABLE"); 478 533 var docID = currentElem.getAttribute("id").substring(4); 479 534 480 535 //Get metadata name … … 590 645 if (change.type == "delete") { 591 646 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 592 667 } else { 593 668 // 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 243 243 244 244 <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> 246 261 <table id="meta{@nodeID}"> 247 262 <xsl:attribute name="style"> … … 257 272 <xsl:value-of select="util:clearMetadataStorage()"/> 258 273 <xsl:for-each select="metadataList/metadata"> 259 260 274 <xsl:sort select="@name"/> 275 <tr> 261 276 <td class="metaTableCellName"><xsl:value-of select="@name"/></td> 262 277 <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 278 </tr> 264 279 </xsl:for-each> 265 280 </table> … … 378 393 <script type="text/javascript" src="interfaces/{$interface_name}/js/documentedit_scripts.js"><xsl:text> </xsl:text></script> 379 394 <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> 380 396 <script type="text/javascript"> 381 397 <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.