{ "translatorID": "04e63564-b92b-41cd-a9d5-366a02056d10", "label": "GaleGDC", "creator": "GaleGDC", "target": "/gdc/ncco|/gdc/xsearch|/gdc/artemis", "minVersion": "3.0", "maxVersion": "", "priority": 270, "inRepository": true, "translatorType": 4, "browserSupport": "gcsb", "lastUpdated": "2014-08-26 03:45:45" } /* * Gale GDC Copyright (C) 2011 Gale GDC * * This program is free software: you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program. * If not, see . */ function detectWeb(doc, url) { return GaleZotero.detectGaleWeb(doc, url); } function doWeb(doc, url) { return GaleZotero.doGaleWeb(doc, url); } var GaleZotero = (function() { function detectGaleWeb(doc, url) { if (shouldExclude(url)) { return false; } var result = false; if (isBookSection(url)) { result = 'bookSection'; } else if (isManuscript(url)) { result = 'manuscript'; } else if (isMap(url)) { result = 'map'; } else if (isVideo(url)) { result = 'videoRecording'; } else if (isImage(url)) { result = 'film'; } else if (isNewspaperArticle(url)) { result = 'newspaperArticle'; } else if (isMagazineArticle(url)) { result = 'magazineArticle'; } else if (isMultiple(doc, url)) { result = 'multiple'; } else if (isDocument(url)) { result = 'document'; } return result; } function doGaleWeb(doc, url) { var risImporter = initializeRisImporter(); var searchResults = getSearchResults(doc, url); if (searchResults) { var items = Zotero.Utilities.getItemArray(doc, searchResults, /\&zid=/); Zotero.selectItems(items, function(selectedItems) { if (!selectedItems) { return true; } var item; for (item in selectedItems) { if (selectedItems.hasOwnProperty(item)) { var docid = parseValue('documentId', item); var productName = parseValue('product_name', item); var urlForPosting = doc.getElementById("zotero_form").action + '&citation_document_id=' + docid + '&citation_document_url=' + encodeURIComponent(item.replace('|', '%7C')) + '&product_name=' + productName; importSingleDocument(risImporter, urlForPosting); } } }); } else { processSingleDocument(risImporter, doc); } } function importSingleDocument(risImporter, urlForPosting) { Zotero.Utilities.doPost(urlForPosting, '', function(text, obj) { risImporter.setString(text); risImporter.translate(); }); } function processSingleDocument(risImporter, doc) { var citationForm = doc.getElementById("citation_form"); var otherUrl = citationForm.citation_document_url.value; var docId = citationForm.citation_document_id.value; var productName = citationForm.product_name.value; var urlForPosting = citationForm.action + "&citation_format=ris" + "&citation_document_url=" + encodeURIComponent(otherUrl) + "&citation_document_id=" + encodeURIComponent(docId) + '&product_name=' + productName; importSingleDocument(risImporter, urlForPosting); } function parseValue(name, item) { var regExp = new RegExp('[?&]' + name + '=([^&#]+)'); var matchingGroups = regExp.exec(item); return matchingGroups ? matchingGroups[1] : ''; } function getSearchResults(doc, url) { var searchResultsLocators = ['//div[@regionid="searchResults"]', '//table[@id="searchResult"]', '//table[@id="markedDocuments"]', '//div[@class="search_results_center"]']; var resultsLocator = searchResultsLocators.join(' | '); return doc.evaluate(resultsLocator, doc, null, XPathResult.ANY_TYPE, null).iterateNext(); } function isNewspaperArticle(url) { return (/NewspapersDetails/).test(url); } function isMagazineArticle(url) { return (/MagazinesDetails/).test(url); } function isMap(url) { return (/MapsDetails/).test(url); } function isDocument(url) { return (/Details/).test(url); } function isManuscript(url) { return (/ManuscriptsDetails/).test(url); } function isMultiple(doc, url) { return (/FullList|savedDocuments|searchResults/).test(url) && getSearchResults(doc, url); } function shouldExclude(url) { return (/CitationsFullList/).test(url); } function isBookSection(url) { return (/MonographsDetails|PhotographsDetails/).test(url); } function isVideo(url) { return (/VideosDetails/).test(url); } function isImage(url) { return (/ImagesDetails/).test(url); } function initializeRisImporter() { var importer = Zotero.loadTranslator("import"); importer.setHandler("itemDone", function(obj, item) { item.attachments = []; item.complete(); }); importer.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); return importer; } return { detectGaleWeb : detectGaleWeb, doGaleWeb : doGaleWeb, _privateData : { parseValue : parseValue, importSingleDocument : importSingleDocument, processSingleDocument : processSingleDocument } }; }());