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.

OPAC i nye klæder

Screen shot af bibliotekets redesignede OPACRE-DESIGN: Horsens kommunes bibliotekers OPAC har fået en vældig overhaling. Der er blevet strammet op grafisk og farvemæssigt, og OPAC’en kan nu, takket være Ewan Adreasen fra Vejle, samsøge med bibliotekets websites.

Den nye OPAC er netop sat i drift. Er der uhensigtsmæssigheder, så giv lyd.
Se den re-designede OPAC her.

Brugerskabte data i OPAC’en

Noget af det, vi længe har gået og sukket efter i bibliotekernes OPACs, er funktionlitet, der kan gøre dem mere formidlende samt i højere grad inddrage brugerne. Noget i stil med de funktioner, vi ser i webbutikker som Amazon.com, hvor systemet stiller forslag på baggrund af brugerinput og hvor brugerne kan anmelde og give karakter.

En del af det ser ud til at blive virkelighed nu med projektet Brugerskabte data (BSD), hvor en række biblioteker sammen med DBC og Statsbiblioteket prøver en model af, der på landsplan kan samle brugergenereret indhold op og præsentere det f.eks. i lokale OPACs. Jeg deltog i går i et informationsmøde om projektet på hovedbiblioteket i Århus, hvor prototypen blev demonstreret og der blev fortalt lidt om det tekniske setup.

Et eksempel

Statsbiblioteket har forsøgsvis lavet en simpel implementering i en testversion af Summa. Her ses posten for Jacob Ejersbos “Nordkraft”, komplet med brugeranmeldelser.

Når der klikkes på linket “Anmeld denne bog”, føres brugeren til en central login-side, hvor man kan logge sig på og skrive sine anmeldelser, give stjerne-karakter etc.

Umiddelbart ikke et optimalt interaktions-flow, dels fordi brugeren føres til en ekstern side, dels fordi brugeren kan tvinges til at logge på to gange, hvilket hurtigt bliver en stopklods for at gå videre med anmeldelsen. Men dette er en simpel model, der tilbydes som udgangspunkt. Det vil blive muligt at kode sin egen grænseflade, der laver et kald direkte til BSD-basen, så man undgår at sende brugeren ud af det lokale websites visuelle univers.

Detaljerne

Som udgangspunkt kan der samles forskellige typer data op:

  • Ratings – angives i %.
  • Tags – tekstfelt.
  • Review – Titel og tekst.
  • Lokalt valgfrit input – Data og type.

Systemet tilbydes som en WSDL/SOAP baseret web-service, der kaldes VoxB.

Bibliotekskonfiguration foregår via VIP-basen. Her kobles eksisterende brugeroplysninger sammen med profiler i VoxB-servicen. Man kan både bruge Netmusik-metoden og NCIP til autentificering/autorisation.

Prisen bliver ca. kr. 2.000,- pr. år, pr. site der skal tilsluttes.

Der er en driftsløsning klar ca. 1. juni 2010 og systemet sættes i drift 1. oktober 2010.

Jeg har foreløbig en stående aftale med Claus Aarslev, Herning, Ewan Andreasen, Vejle og Steen Larsen, Århus om en workshop, hvor vi får en prototype op at køre. Tidsplan: Inden sommerferien.

Styling af OPAC’en

- eller sådan smører man læbestift på en gris

Ét af årets store indsatsområder handler om at få vores OPAC til tilnærmelsesvis at ligne vores øvrige websider. Den opgave er jeg i gang med i øjeblikket, og det er lidt af en opgave, skulle jeg hilse at sige.

OPAC’en har en del sygdomme, men ikke mindst lider den af forældet og ringe front end kode (HTML). Det kan man desværre kun gøre noget ved i nogen grad, da en gennemgribende omskrivning af koden også vil gå ud over øvrige sites i installationen (skolernes OPAC’s). Jeg er således i færd med at omskrive OPAC’ens HTML “skelet”, men må lade detaljerne, såsom login-boks, søgeboks mm. være. Heldigvis kan jeg dog nogenlunde styre placeringen af elementerne.

I samme omgang laves der om på grafik og CSS, således at OPAC’en kommer til at fremstå i Horsens biblioteks farver, logo osv. Endvidere strammes layoutet gevaldigt op.

Følg med i udviklingen på vores test-OPAC her.

Dynamiske links til sidste måneds nyheder i OPAC’en

For nylig har vi på Horsens kommunes bibliotekers website implementeret en række lister  med dynamiske links til sidste måneds anskaffelser i bibliotekets DDELibra baserede OPAC. Listerne kan i høj grad erstatte Axiell’s modul til DDELibra, “Publicering af lister” (se produktspecifikation i PDF format her). Her er opskriften.

Du skal bruge:

Et website, der er programmeret i PHP med fuld adgang til front end koden.

Det er en fordel at have adgang til en “link-generator” til OPAC’en, så du nemt kan omdanne CCL søgninger til links. Se f.eks. Horsens kommunes bibliotekers link-generator her.

Fremgangsmåde:

De links, vi konstruerer til en nyhedsliste, består af:

  • en statisk del, nemlig den emneafgrænsende del af CCL søgningen.
  • en dynamisk del, nemlig den tidsafgrænsende del af CCL søgningen.

Det er den tidsafgrænsende del, vi skal kode i PHP. Vi har valgt at tidsafgrænse nyhedslisterne til sidste måned. For at få fat i datoen samt få den afgrænset til sidste måned, hverken mere eller mindre, opretter vi en funktion, der ser således ud:

PHP kode:

  1. <?php
  2. function showmonth() {
  3. if (date("n") == 1) {
  4. echo date("Y")-1 . "12";
  5. } elseif (date("n") >= 2 && date("n") <= 9) {
  6. echo date("Y") . "0" . date("n")-1;
  7. } else {
  8. echo date("Y") . date("n")-1;
  9. }
  10. }
  11. ?>


Forklaring:
3) Hvis indeværende måned er januar, (4) udskrives december måned sidste år. (5) Men hvis indeværende måned er mellem februar og oktober, (6) udskrives indeværende årstal og sidste måneds nummer som 1 decimal. (7) Ellers (8) udskrives indeværende årstal og sidste måned.

Det var selve beregningen af funktionen. Nu skal vi kalde funktionen som en afgrænsende dato i den link-genererede CCL-søgning. Det gøres med <?php showmonth() ?>. Et link til listen over sidste måneds anskaffelser af krimier kommer dermed til at se således ud:

Selve linket: (Bemærk! Linien er brudt aht. læsbarheden. Linket må IKKE brækkes i stykker over flere linier)

  1. <a href="https://www.bibfolk.horsens.dk/sites/WWW/pub/search.html?doaction=search&
    data=scode_ccl=bh%3D<?php showmonth() ?>%3F%2520og%2520bh%3Dvo%2520og%2520
    ma%3Da%2520og%2520bh%3Dkri%20&request_attr_sortformat%3D2%20&
    request_attr_defaultpage%3D20%20&rec%3D0">Krimier</a>


There you go. God fornøjelse. Hvis du har forslag til forbedringer, hører jeg gerne nærmere.