diff -r -u zotero-trunk.orig/chrome/content/zotero/addCitationDialog.js zotero-trunk/chrome/content/zotero/addCitationDialog.js
|
old
|
new
|
|
| 54 | 54 | this.cancel = cancel; |
| 55 | 55 | |
| 56 | 56 | /* |
| | 57 | * To generate unique keys for items in multi-cite list |
| | 58 | */ |
| | 59 | function multiKey(itemID, pos) { |
| | 60 | return itemID + '::' + pos; |
| | 61 | } |
| | 62 | |
| | 63 | /* |
| 57 | 64 | * initialize add citation dialog |
| 58 | 65 | */ |
| 59 | 66 | function load() { |
| … |
… |
|
| 119 | 126 | var item = Zotero.Items.get(io.citation.citationItems[i].itemID); |
| 120 | 127 | if(item) { |
| 121 | 128 | _addItem(item); |
| 122 | | _itemData[io.citation.citationItems[i].itemID] = io.citation.citationItems[i]; |
| | 129 | _itemData[ multiKey(io.citation.citationItems[i].itemID,i) ] = io.citation.citationItems[i]; |
| 123 | 130 | } |
| 124 | 131 | } |
| 125 | 132 | } |
| … |
… |
|
| 151 | 158 | if(_multipleSourcesOn) { |
| 152 | 159 | var items = itemsView.getSelectedItems(true); |
| 153 | 160 | var itemID = (items.length ? items[0] : false); |
| 154 | | // var itemDataID = itemID+"::"+0; |
| | 161 | var itemDataID = multiKey(itemID,0); |
| 155 | 162 | document.getElementById("multiple-sources").hidden = undefined; |
| 156 | 163 | document.getElementById("zotero-add-citation-dialog").width = "750"; |
| 157 | | document.getElementById("multiple-sources-button").label = Zotero.getString("citation.singleSource"); |
| 158 | | // move user field content to multiple before adding XXXXX |
| | 164 | document.getElementById("multiple-sources-button").label = Zotero.getString("citation.singleSource"); |
| 159 | 165 | if (itemID) { |
| 160 | | // _itemData[itemDataID] = new Object(); |
| 161 | | _itemData[itemID] = new Object(); |
| | 166 | _itemData[itemDataID] = new Object(); |
| 162 | 167 | for (box in _preserveData) { |
| 163 | 168 | element = document.getElementById(box); |
| 164 | | // _itemData[itemDataID][box] = element[_preserveData[box]]; |
| 165 | | _itemData[itemID][box] = element[_preserveData[box]]; |
| | 169 | _itemData[itemDataID][box] = element[_preserveData[box]]; |
| 166 | 170 | } |
| 167 | 171 | } |
| 168 | 172 | window.sizeToContent(); |
| … |
… |
|
| 170 | 174 | treeItemSelected(); |
| 171 | 175 | // disable adding info until citation added |
| 172 | 176 | _itemSelected(false); |
| 173 | | // add current selection |
| 174 | 177 | if (itemID) { |
| 175 | 178 | this.add(); |
| 176 | 179 | } else { |
| … |
… |
|
| 217 | 220 | // disable boxes if item not added; otherwise, enable |
| 218 | 221 | _itemSelected(hasBeenAdded ? itemID : false); |
| 219 | 222 | // disable adding nothing, or things already added |
| 220 | | document.getElementById("add").disabled = !itemID || hasBeenAdded; |
| | 223 | document.getElementById("add").disabled = !itemID; |
| | 224 | document.getElementById("remove").disabled = true; |
| | 225 | pos = document.getElementById("citation-list").childNodes.length; |
| 221 | 226 | } else { |
| 222 | 227 | _updateAccept(); |
| 223 | 228 | _updatePreview(); |
| … |
… |
|
| 230 | 235 | function listItemSelected() { |
| 231 | 236 | var selectedListItem = document.getElementById("citation-list").getSelectedItem(0); |
| 232 | 237 | var itemID = (selectedListItem ? selectedListItem.value : false); |
| 233 | | _itemSelected(itemID); |
| | 238 | var pos = selectedListItem.parentNode.selectedIndex; |
| | 239 | _itemSelected(itemID,pos); |
| 234 | 240 | |
| 235 | 241 | document.getElementById("remove").disabled = !itemID; |
| | 242 | document.getElementById("add").disabled = true; |
| 236 | 243 | } |
| 237 | 244 | |
| 238 | 245 | /* |
| … |
… |
|
| 240 | 247 | */ |
| 241 | 248 | function add() { |
| 242 | 249 | var item = itemsView.getSelectedItems()[0]; // treeview from selectItemsDialog.js |
| 243 | | _itemSelected(item.getID()); |
| | 250 | var citation_list = document.getElementById("citation-list"); |
| | 251 | var pos = citation_list.childNodes.length; |
| 244 | 252 | _addItem(item); |
| | 253 | _itemSelected(item.getID(), pos); |
| 245 | 254 | |
| 246 | 255 | // don't let someone select it again |
| 247 | | document.getElementById("add").disabled = true; |
| | 256 | document.getElementById("add").disabled = false; |
| 248 | 257 | |
| 249 | 258 | // allow user to press OK |
| 250 | 259 | _updateAccept(); |
| … |
… |
|
| 260 | 269 | var selectedListItem = citationList.getSelectedItem(0); |
| 261 | 270 | var itemID = selectedListItem.value; |
| 262 | 271 | |
| | 272 | var itemParent = selectedListItem.parentNode; |
| | 273 | var pos = itemParent.selectedIndex; |
| | 274 | var itemFamily = itemParent.childNodes; |
| | 275 | var itemDataID = multiKey(itemID,pos); |
| | 276 | |
| 263 | 277 | // remove from _itemData |
| 264 | | delete _itemData[itemID]; |
| 265 | | _itemData[itemID] = undefined; |
| | 278 | delete _itemData[itemDataID]; |
| | 279 | _itemData[itemDataID] = undefined; |
| 266 | 280 | _lastSelected = null; |
| 267 | 281 | |
| | 282 | // renumber in _itemData |
| | 283 | for (i = pos+1; i < itemFamily.length; i++) { |
| | 284 | var oldID = multiKey(itemFamily.item(i).value,i); |
| | 285 | var newID = multiKey(itemFamily.item(i).value,pos); |
| | 286 | _itemData[newID] = _itemData[oldID]; |
| | 287 | delete _itemData[oldID]; |
| | 288 | pos++; |
| | 289 | } |
| | 290 | |
| 268 | 291 | // re-select currently selected in left pane |
| 269 | 292 | var itemIDs = itemsView.getSelectedItems(true); // treeview from selectItemsDialog.js |
| 270 | 293 | if(itemIDs.length) { |
| … |
… |
|
| 429 | 452 | * called when an item is selected; if itemID is false, disables fields; if |
| 430 | 453 | * itemID is undefined, only updates _itemData array |
| 431 | 454 | */ |
| 432 | | function _itemSelected(itemID) { |
| | 455 | function _itemSelected(itemID,pos) { |
| | 456 | var itemDataID = (itemID ? multiKey(itemID,pos) : undefined); |
| 433 | 457 | if(_lastSelected && !_itemData[_lastSelected]) { |
| 434 | 458 | _itemData[_lastSelected] = new Object(); |
| 435 | 459 | } |
| … |
… |
|
| 449 | 473 | // restore previous property |
| 450 | 474 | if(itemID) { |
| 451 | 475 | domBox.disabled = false; |
| 452 | | if(_itemData[itemID] && _itemData[itemID][box] !== undefined) { |
| | 476 | if(_itemData[itemDataID] && _itemData[itemDataID][box] !== undefined) { |
| 453 | 477 | if(property == "locatorType") { |
| 454 | | domBox[property] = _locatorIndexArray[_itemData[itemID][box]]; |
| | 478 | domBox[property] = _locatorIndexArray[_itemData[itemDataID][box]]; |
| 455 | 479 | } else { |
| 456 | | domBox[property] = _itemData[itemID][box]; |
| | 480 | domBox[property] = _itemData[itemDataID][box]; |
| 457 | 481 | } |
| | 482 | } else { |
| | 483 | domBox[property] = ""; |
| 458 | 484 | } |
| 459 | 485 | } else if(itemID !== undefined) { |
| 460 | 486 | domBox.disabled = true; |
| 461 | 487 | domBox[property] = ""; |
| 462 | 488 | } |
| 463 | 489 | } |
| 464 | | |
| 465 | | if(itemID !== undefined) _lastSelected = itemID; |
| | 490 | if(itemID !== undefined) _lastSelected = itemDataID; |
| 466 | 491 | } |
| 467 | 492 | |
| 468 | 493 | /* |
| … |
… |
|
| 484 | 509 | // generate citationItems |
| 485 | 510 | for(var i=0; i<listLength; i++) { |
| 486 | 511 | var itemID = citationList.childNodes[i].value; |
| | 512 | var itemDataID = multiKey(itemID,i); |
| 487 | 513 | |
| 488 | | var citationItem = _itemData[itemID]; |
| | 514 | var citationItem = _itemData[itemDataID]; |
| 489 | 515 | citationItem.itemID = itemID; |
| 490 | 516 | io.citation.citationItems.push(citationItem); |
| 491 | 517 | } |