Changeset 29173
- Timestamp:
- 2014-08-07T13:06:38+12:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/document_scripts.js
r28279 r29173 2 2 var _linkCellMap = new Array(); 3 3 var _onCells = new Array(); 4 5 /* some vars for document editing */ 6 /* if true, will look through all the metadata for the document, and add each namespace into the list of metadata sets. If set to false, will only add in the ones defined in setStaticMetadataSets function (defined below) - override this function to make a custom list of sets */ 7 var dynamic_metadata_list = true; 8 /* if true, will make the editing controls stay visible even on page scrolling */ 9 var keep_editing_controls_visible = true; 10 /* Here you can choose which save buttons you like. Choose from 'save', 'rebuild', 'saveandrebuild' */ 11 var save_and_rebuild_buttons = ["saveandrebuild"]; 4 12 5 13 /******************** … … 1124 1132 { 1125 1133 $("#editContentButton").html("Hide editor"); 1134 $("#editContentButtonDiv").attr("class", "ui-state-default ui-corner-all"); 1126 1135 } 1127 1136 else 1128 1137 { 1129 1138 $("#editContentButton").html("Edit content"); 1139 $("#editContentButtonDiv").attr("class", ""); 1130 1140 } 1131 1141 … … 1151 1161 } 1152 1162 1163 /* override this function in other interface/site/collection if you want 1164 a different set of metadata sets 1165 Use in conjunction with the dynamic_metadata_list variable. */ 1166 function setStaticMetadataSets(list) { 1167 addMetaSetToList(list, "All"); 1168 } 1169 1153 1170 function readyPageForEditing() 1154 1171 { 1172 1155 1173 if($("#metadataSetList").length) 1156 1174 { … … 1172 1190 1173 1191 var editBar = $("#editBarLeft"); 1174 1175 var saveButton = $("<button>", {"id": "saveButton", "class": "ui-state-default ui-corner-all"});1176 saveButton.click(save);1177 saveButton.html("Save changes");1178 editBar.append(saveButton);1179 1180 1192 1181 1193 var visibleMetadataList = $("<select>", {"id": "metadataSetList"}); 1182 var allOption = $("<option>All</option>"); 1183 visibleMetadataList.append(allOption); 1194 setStaticMetadataSets(visibleMetadataList); 1184 1195 1185 1196 var metadataListLabel = $("<span>", {"id": "metadataListLabel", "style": "margin-left:20px;"}); … … 1188 1199 editBar.append(visibleMetadataList); 1189 1200 visibleMetadataList.change(onVisibleMetadataSetChange); 1190 1201 editBar.append("<br>"); 1202 for (var i=0; i< save_and_rebuild_buttons.length; i++) { 1203 var button_type = save_and_rebuild_buttons[i]; 1204 if (button_type == "save") { 1205 var saveButton = $("<button>", {"id": "saveButton", "class": "ui-state-default ui-corner-all"}); 1206 saveButton.click(saveMetadataChanges); 1207 saveButton.html("Save changes"); 1208 editBar.append(saveButton); 1209 } else if(button_type == "rebuild") { 1210 var rebuildButton = $("<button>", {"id": "rebuildButton", "class": "ui-state-default ui-corner-all"}); 1211 rebuildButton.click(rebuildCollection); 1212 rebuildButton.html("Rebuild"); 1213 editBar.append(rebuildButton); 1214 } else if (button_type == "saveandrebuild") { 1215 var saveAndRebuildButton = $("<button>", {"id": "saveAndRebuildButton", "class": "ui-state-default ui-corner-all"}); 1216 saveAndRebuildButton.click(save); 1217 saveAndRebuildButton.html("Save and Rebuild"); 1218 editBar.append(saveAndRebuildButton); 1219 1220 } 1221 } 1191 1222 var statusBarDiv = $("<div>"); 1192 1223 editBar.append(statusBarDiv); … … 1202 1233 } 1203 1234 1235 1236 /* this is a cut down version of save() from documentmaker_scripts_util.js */ 1237 function saveMetadataChanges() { 1238 1239 console.log("Saving metadata changes"); 1240 1241 // get collection name 1242 var collection = gs.cgiParams.c;; 1243 1244 // get document id 1245 var docID = gs.cgiParams.d; 1246 1247 var metadataChanges = new Array(); 1248 if (_deletedMetadata.length > 0) { 1249 1250 for(var i = 0; i < _deletedMetadata.length; i++) { 1251 1252 var currentRow = _deletedMetadata[i]; 1253 1254 //Get metadata name 1255 var cells = currentRow.getElementsByTagName("TD"); 1256 var nameCell = cells[0]; 1257 var name = nameCell.innerHTML; 1258 var valueCell = cells[1]; 1259 var value = valueCell.innerHTML; 1260 metadataChanges.push({type:'delete', docID:docID, name:name, value:value}); 1261 removeFromParent(currentRow); 1262 } 1263 } 1264 1265 var changes = de.Changes.getChangedEditableSections(); 1266 for(var i = 0; i < changes.length; i++) { 1267 1268 var changedElem = changes[i]; 1269 1270 //Get metadata name 1271 var row = changedElem.parentNode; 1272 var cells = row.getElementsByTagName("TD"); 1273 var nameCell = cells[0]; 1274 var name = nameCell.innerHTML; 1275 var value = changedElem.innerHTML; 1276 value = value.replace(/ /g, " "); 1277 1278 var orig = changedElem.originalValue; 1279 if (orig) { 1280 orig = orig.replace(/ /g, " "); 1281 } 1282 metadataChanges.push({collection:collection, docID:docID, name:name, value:value, orig:orig}); 1283 changedElem.originalValue = changedElem.innerHTML; 1284 1285 } 1286 1287 if (metadataChanges.length ==0) { 1288 console.log ("... No changes detected. "); 1289 return; 1290 } 1291 1292 var processChangesLoop = function(index) 1293 { 1294 var change = metadataChanges[index]; 1295 1296 var callbackFunction; 1297 if(index + 1 == metadataChanges.length) 1298 { 1299 callbackFunction = function(){console.log("Completed saving metadata changes. You must rebuild the collection for the changes to take effect.");}; 1300 } 1301 else 1302 { 1303 callbackFunction = function(){processChangesLoop(index + 1)}; 1304 } 1305 if (change.type == "delete") { 1306 gs.functions.removeArchivesMetadata(collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, function(){callbackFunction();}); 1307 } else { 1308 if(change.orig) 1309 { 1310 gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, change.orig, "override", function(){callbackFunction();}); 1311 } 1312 else 1313 { 1314 gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, null, "accumulate", function(){callbackFunction();}); 1315 } 1316 } 1317 } 1318 processChangesLoop(0); 1319 /* need to clear the changes from the page */ 1320 de.Changes.clear(); 1321 while (_deletedMetadata.length>0) { 1322 _deletedMetadata.pop(); 1323 } 1324 1325 } 1326 1327 1328 1329 1330 function rebuildCollection() { 1331 1332 console.log("rebuilding collection"); 1333 var collection = gs.cgiParams.c; 1334 1335 var collectionsArray = new Array(); 1336 collectionsArray.push(collection); 1337 buildCollections(collectionsArray); 1338 } 1339 1204 1340 /*************** 1205 1341 * MENU SCRIPTS * 1206 1342 ***************/ 1343 function moveScroller() { 1344 var move = function() { 1345 var editbar = $("#editBar"); 1346 var st = $(window).scrollTop(); 1347 var fa = $("#float-anchor").offset().top; 1348 if(st > fa) { 1349 1350 editbar.css({ 1351 position: "fixed", 1352 top: "0px", 1353 width: editbar.data("width"), 1354 //width: "30%" 1355 }); 1356 } else { 1357 editbar.data("width", editbar.css("width")); 1358 editbar.css({ 1359 position: "relative", 1360 top: "", 1361 width: "" 1362 }); 1363 } 1364 }; 1365 $(window).scroll(move); 1366 move(); 1367 } 1368 1207 1369 1208 1370 function floatMenu(enabled)
Note:
See TracChangeset
for help on using the changeset viewer.