Link til fuld postvisning i DDELibraWeb

Axiell’s DDELibraWeb åbner som udgangspunkt alle links via JavaScript på en dybt frustrerende måde for vi, som arbejder med systemet til daglig. Destinations-URL’en fremgår nemlig ingen steder og er derfor ikke umiddelbart til at få fat i, hvilket gør det svært at linke ind i systemet.

Hidtil har vi således skullet omkring vores link-genereringsværktøj for at lave links til poster i OPAC’en, hvilket er en noget omstændelig proces, der tager mindst 10 gange så lang tid som at kopiere en almindelig URL fra et almindeligt link.

I går blev frustrationen en tand for meget og jeg satte mig for at skrue en stump kode sammen, der genererer et link til fuld postvisning, direkte i søgeresultatet.

Hvordan linker man til en fuld postvisning?

URL’en til den fulde postvisning var en udfordring i sig selv. Det fremgår nemlig ingen steder, hvilke parametre, der skal kobles på URL’en for at nå frem til den fulde post. Det kunne vores virksomhedspraktikant og datalogi-ninja, Ulrich Christensen, heldigvis dechifrere for mig.

Skabelonen til en fuld postvisnings-URL ser således ud:

$baseurl = "www.bibfolk.horsens.dk";
$htgroup = "WWW";
$link = "https://" . $baseurl . "/sites/". $htgroup . "/pub/search.html?doaction=showfull&data=keyno_list%3D" . $materialeid . "+format%3Dfull";

hvor $baseurl er den grundlæggende URL til din OPAC, $htgroup er navnet på din HTGROUP, $materialeid er faust-nr. og +format%3Dfull angiver, at vi skal have beholdningen med.

Implementering af permalink med jQuery i OPAC’en

For at få linket til at blive vist på front end’en i OPAC’en, må vi ty til JavaScript.

JavaScript-biblioteket jQuery er i forvejen implementeret og (mis)brugt i OPAC’en, så det kan vi ligeså godt udnytte. Jeg har yderligere smidt en lille “custom-made” JavaScript fil ind i <head> elementet på Horsens Biblioteks OPAC, common.js (husk at gemme det i local mappen, før du initialiserer systemet), og deri står nu den kode, vi skal bruge:

// Get FAUST nr.
$("img.cssbookcoverloading").each(function(){
	var faustStr = $(this).attr("id");
	var faustUri = faustStr.replace("cover:", "https://www.bibfolk.horsens.dk/sites/WWW/pub/search.html?doaction=showfull&data=keyno_list%3D");
	$(this).parent().after("<br /><a href='" + faustUri + "+format%3Dfull' title='Link til denne post'>Permalink</a>");
});

Vi har for det første brug for at få identificeret materialeID’et. Det kan vi heldigvis finde i en id attributten på en lille .gif med class attributten .cssbookcoverloading.

Vi gør altså det, at for hver .gif med class attributten .cssbookcoverloading:

  1. finder vi ud af hvad der står i id attributten (var faustStr)
  2. bytter tekststrengen cover: ud med den faste del af vores URL (var faustUri)
  3. og genererer et link, inkl. det dynamiske materialeID, efter det link, der er rundt om .gif’en ((this).parent().after(" … osv. )

Ét voila!

Nu er der et lille link med teksten “Permalink” umiddelbart under hvert forsidebillede i søgeresultatet.

Se et eksempel på en søgning her.

Bemærk: Har man brug for at lave links til længere ccl søgninger, må man stadig ty til et link-genereringsværktøj.

Dynamiske links til nyhedslister i OPAC’en, ver. 2

I august 2009 smed jeg opskriften på en lille stump PHP til generering af en dynamisk dato i nyhedslister til OPAC’en her på bloggen. Dengang medtog scriptet kun sidste måneds nyheder. Siden da er det blevet opdateret til at medtage både sidste og indeværende måneds nyheder, og der er også lavet en JavaScript version.

Implementering af PHP scriptet:

Opskriften er næsten identisk med den gamle, se forklaring her.

Sådan konstrueres de funktioner, der udregner månederne:

<?php
// Display last month
function showmonth() {
	if (date("n") == 1) {
		echo date("Y")-1 . "12";
	} elseif (date("n") >= 2 && date("n") <= 9) {
		echo date("Y") . "0" . date("n")-1;
	} else {
		echo date("Y") . date("n")-1;
	}
}

// Display the current month
function showcurr_month() {
	if (date("n") <= 9) {
		echo date("Y") . "0" . date("n");
	} else {
		echo date("Y") . date("n");
	}
}
?>

Sådan sættes funktionerne ind i et givent link (her en nyhedsliste over “romaner”):

<a href="https://www.bibfolk.horsens.dk/sites/WWW/pub/search.html?doaction=search&amp;data=scode_ccl=(ad%3D<?php showmonth() ?>%3F%2520eller%2520ad%3D<?php showcurr_month() ?>%3F)%2520og%2520bh%3Dvo%2520og%2520ma%3Dte%2520og%2520bh%3Droman%20&amp;request_attr_sortformat=1%20&request_attr_defaultpage=20%20&rec=0">Romaner</a>

Implementering af JavaScriptet:

Hent filen nyhedslister.js her.

Scriptet er noget værre klyt, men det virker. Hele nyhedslisten er hard coded i .js filen for at få det til at virke på OPAC’ens forside, så hvis der skal rettes links eller søgninger til, skal de rettes i denne fil. Heri rettes også basis URL’en, således at søgningen foretages i din og ikke Horsens Biblioteks OPAC. Linje 35 rettes således til dit eget domæne og HTGROUP:

var basic_url = 'https://www.bibfolk.horsens.dk/sites/WWW/pub/search.html?doaction=search&data=scode_ccl=';

Scriptet placeres på din webside, hvor det ønskes med <script> tagget:

<script src="nyhedslister.js" type="text/javascript"></script>

Generering af links til OPAC:

… er generelt noget værre hejs, fordi OPAC’en ikke automatisk genererer en URL pr. faustnr. Det ville ellers gøre livet en hel del lettere for både brugere og personale. Derfor må man gå en omvej.

Linksene i nyhedslisterne er således genereret med dette lille værktøj, der er beregnet til at lave links ind i Horsens Biblioteks OPAC.

ÆØÅ og andre specialtegn
Specialtegn som f.eks. ÆØÅ kan volde problemer i links, fordi de skal URL encodes. I den sammenhæng har W3schools.com en nyttig URL encoding reference her (scroll lidt ned på siden).

Forsideservice i DDELibraWeb

Horsens kommunes biblioteker driver DDELibraWeb sites for en række skoler, institutioner og naturligvis for biblioteket selv. På disse drift-sites har Axiell i sin tid sat forsideservice op, således at der bliver vist bogforsider til hver post.

Vi har imidlertid også et udviklingssite kørende til testformål. På dette site har forsideservice dog hidtil ikke været sat op og vi har savnet dokumentation til, hvordan det sættes op. Her kommer løsningen:

Opsætningen af forsideservice for DDELibraWeb sites defineres i XML konfigurationsfilen cover-sites-config.xml. Filen findes på følgende sti på webserveren:

c:\ddelibraWeb\conf\cover-sites-config.xml

Indholdet af filen ser nogenlunde således ud:

<?xml version="1.0" encoding="UTF-8"?>
<sites>
  <site name="DEFAULTSITENAVN"> <!-- I horsens er sitenavnet WWW -->
    <parameter name="netpunkt-user" value="dit-netpunkt-brugernavn"/>
    <parameter name="netpunkt-group" value="dit-biblioteksnummer"/>
    <parameter name="netpunkt-password" value="dit-netpunkt-password"/>
  </site>
  <site name="FILIALSITENAVN"> <!-- Horsens udviklingssite hedder OPACUDV -->
    <parameter name="site-ref" value="DEFAULTSITENAVN"/>
  </site>
</sites>

I ovenstående eksempel er forsideservice koblet på to sites. For at koble forsideservice på flere sites, kopierer du bare det nederste site, dvs.:

<site name="FILIALSITENAVN">
  <parameter name="site-ref" value="DEFAULTSITENAVN"/>
</site>


… og sætter det ind i bunden af dokumentet, før </sites> tagget.

Når du har gemt filen, genstartes serveren. Det er ikke nok at initialisere, genstarte eller reset’e det lokale site. Det er nødvendigt at genstarte web serveren.

Du kan naturligvis kun koble forsideservice på så mange sites, som du har installeret og har licens til.