User:Acracia/wp-bibliographica.js

/******************************************************** * Bibliographica Wikipedia Gadget * meant for interaction and information exchange between * Bibliographica.org and Wikipedia * * * - to install you need to be a registered user of the wikipedia project. *   * - go to http://en.wikipedia.org/wiki/Special:MyPage/vector.js and write: * *     mw.loader.load('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js'); *     importScript('User:Acracia/wp-bibliographica.js'); * *    *   - if you are a member of another language wikipedia, *          you can still link to this file: *       *       mw.loader.load('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js'); *      mw.loader.load('//en.wikipedia.org/wiki/User:Acracia/wp-bibliographica.js'); * *      (notice the URI!!) * * - You need to reload the cache of the page for the changes to take effect: *    usually Ctrl+Shift+R will do. * - For an example, visit http://en.wikipedia.org/wiki/Charles_Dickens *  In the left sidebar there should be a box with links to the *  bibliographica.org records present in both Bibliographica and *  the article. * * *  OKFN - http://okfn.org http://bibliographica.org * ******************************************************/ mw.loader.load('http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/flick/jquery-ui.css', 'text/css'); mw.loader.load('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js'); mw.loader.load('http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css', 'text/css');

function getdata (ISBN, parentnode) { // gets data about ISBNs metioned in references from Bibliographica var parentself = parentnode $.getJSON('http://bibliographica.org/isbn/'+ISBN, function(data) {   if ((data[0] != undefined) && (data[0]['title'] != '' ) && (data != null )) {      // if we have the record in bibliographica,        // create a tooltip with information about the book      parentself.css('border', 'dotted 1px blue');               var contributors = [];      $.each(data[0].contributors, function(key, val) { contributors.push(val.name); });     var tooltiptext = 'by '+ contributors.join(', ')+          ' Publisher: '+ data[0].publisher.name +          ' ';      if (data[0].description != undefined ){        tooltiptext = tooltiptext + data[0].description;      }        tooltiptext = tooltiptext +'\n information retrieved from '+        '\nbibliographica.org ';      var $dialog = $('  ').html(tooltiptext).dialog({ autoOpen: false, modal: false, hide: "fold", position: ['bottom','left'], width: 400, title: data[0].title +' ('+ data[0].issued.split("-")[0] +')', });     $dialog.hover(function { $dialog.dialog('open'); }, function { // no need of closing });   parentself.hover(function { //this is the function to call the tooltip on hover $dialog.dialog('open'); }, function { // also possible to make it close // automatically after 4 seconds // uncommenting the next 3 lines: //setTimeout(function {       //$dialog.dialog('close');          //}, 4000 ); });   }  else {      // here we should send info about the book, new for bibliographica    };  }); }; function scrapingisbn { // to find all the ISBNs in the page once it has loaded // (there are two different kinds of links: $('a.mw-magiclink-isbn').each(function  { var ISBN = $(this).text.split(' ')[1] ; //scraping the ISBN number // gets the info from http://bibliographica.org/isbn getdata (ISBN, $(this)); }); $('a[title*="Special\\:BookSources"]').each(function  { // another type of ISBN link (cite format) var ISBN = $(this).text ; //scraping the ISBN number // gets the info from http://bibliographica.org/isbn/ getdata (ISBN, $(this)); }); }; $(document).ready(function($) { scrapingisbn; });