About Morten Brunbjerg Bech

Webdesigner, front end udvikler og bibliotekar. Arbejder primært med udvikling og design af Horsens Kommunes Bibliotekers webløsninger og er specialist i semantisk strukturering af webdokumenter samt Adobe Photoshop og Illustrator. Er endvidere tilknyttet en række af bibliotekets udviklingsprojekter.

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.

Flexible Widgets – et WordPress plugin

I forbindelse med forårets udvikling og redesign af Horsensbibliotek.dk, implementerede jeg et par ideer til forbedring af anvendelsen af WordPress som CMS.

WordPress er som bekendt født som blogging værktøj og mangler på visse områder noget fleksibilitet i forhold til, hvad man kunne ønske at vise af sekundært indhold. Man kan således placere en række widgets i sin sidebar, men som udgangspunkt vises disse widgets globalt på sitet.

Det ville jeg gerne gøre op med, da jeg havde brug for at kunne placere widgets kontekstuelt ift. det primære indhold på en side. Således skrev jeg en stump kode, der gjorde det muligt at knytte widgets til givne sider og/eller kategorier, så de kun vises her, fremfor globalt.

Henover sommeren har jeg haft mulighed for at skrive koden om til et plugin med navnet Flexible Widgets, som nu er frigivet i WordPress Plugin Directory. Således håber jeg at kunne betale lidt tilbage til WordPress-fællesskabet på nettet, som giver uvurderlig hjælp når man sidder fast.

Plugin’et er især velegnet, hvis man vil bruge WordPress som content management system.

Forslag til forbedringer, spørgsmål og kommentarer modtages gerne. Smid en kommentar.
Evt. fejl, mangler og bugs kan skrives i support forummet
.

Kompatibilitetsvisning i Internet Explorer

Nu bruger jeg mac til daglig og støder som sådan ikke selv på problemet så ofte. Men Windows Internet Explorer har en lille “feature”, der er pænt svær at forklare, især overfor brugere, fordi den simpelthen ikke giver nogen mening. Jeg taler om den lille knap ved siden af adressefeltet, “kompatibilitetsvisning”, der ser således ud: Knappen kompatibilitetsvisning i Internet Explorer

Jo, kompatibilitetsvisning giver måske nok mening set ud fra et teknisk synspunkt, da mange gamle IT-systemer ikke kan køre i en moderne browser. Det går så ud over alle andre, der ikke bruger den slags systemer.

En eller anden webstandardista ville nok mene, at den slags systemer grundlæggende er designet forkert og at en given webløsning bør være både fremad- og bagudkompatibel.

Eliminér kompatibilitetsvisning

Men faktisk kan man eliminere denne lille irriterende knap. Jeg fandt løsningen via Stackoverflow.com og selve løsningen findes på MSDN.

Bare sæt et meta-tag ind i <head> elementet på dit html-dokument:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

Vupti, så er knappen væk. Det nummer har jeg nu lavet på Horsensbibliotek.dk

Danskernes Digitale Bibliotek

Onsdag deltog Dorte og jeg i Styrelsen for Bibliotek og Mediers idegenereringsdag til Danskernes Digitale Bibliotek (DDB) i Kbh. Der blev fremlagt en masse konkrete projekter og ideer, men fraværet af overordnet strategi var efter min beskedne mening larmende.

Jeg har skrevet en mindre roman om mine tanker vedr. DDB og fremtiden for de danske folkebiblioteker her.

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).

Test websitet med Adobe Browserlab

Horsens Biblioteks OPAC testet i IE9 i Adobe BrowserlabLad det være sagt med det samme, jeg kan godt lide min mac. Den mangler dog en Internet Explorer til at teste websites i. Men heller ikke i en almindelig Windows-installation findes der som regel ret meget mere end seneste version af Explorer. Det er naturligvis noget rod for front end udviklere, når alle versionerne tegner et givent website forskelligt.

Man kan selvfølgelig komme omkring problemet med lidt ninja-tricks, men det allernemmeste er dog at bruge de løsninger, der ligger lige for hånden. Og her har Adobe et udmærket produkt på hånden, Adobe Browserlab. En samling af forskellige versioner af de mest udbredte browsere på nettet, der kan lave screen shots af dit website on the fly, leveret direkte i din foretrukne browser.

Prøv Adobe Browserlab her.

Bibliotekets website – nu på smart phones

Horsens kommunes bibliotekers website er nu tilgængeligt i en særlig udgave til smart phones med touch brugergrænseflade. Sitet ser nogenlunde således ud på iPhone:

Bibliotekets hjemmeside på en iPhoneNavigationsmenuen på en iPhoneHer vises en artikel fra bibliotekets hjemmeside på en iPhone

P.T. understøtter mobil-udgaven flg. mobilstyresystemer: Android, CUPCAKE, bada, blackberry 9800, blackberry9500, blackberry9520, blackberry9530, blackberry9550, dream, iPhone, iPod, incognito, s8000, webOS, webmate.

Mobiludgaven er baseret på WPtouch fra BraveNewCode.com. Der arbejdes endnu med en dansk oversættelse.

OPAC (søgesystem) og arrangementskalender understøttes desværre ikke, da disse er baseret på andre systemer.

Webgruppemøde nr. 002/10

2. september afholdtes webgruppemøde om re-design og omstrukturering af vores website.

1. Feed-back fra afdelinger

OPAC-bøvl
Lånere har tilsyneladende svært ved login i OPAC’en. Det forstås ikke umiddelbart, at “kortnummer” er enten nummeret på det personlige lånerkort eller cpr-nummer. Endvidere forstås det ikke, at “pinkode” er den samme pinkode, man bruger, når man fysisk låner på biblioteket.
Der skal strammes op på formuleringerne i login-felterne.

Nyt fra team Børn & Musik
LOBU har forsøgt at rekruttere bloggere blandt personalet i børn/musik. Der var positive tilbagemeldinger fra nogle få, der gerne vil skrive “en gang i mellem”. Det fordrer dog et kursus i værktøjerne. Endvidere fortsætter INA som redaktør på musik-fronten.

Vedr. indholdsproduktion
Forankring af indholdsproduktion i afdelingerne blev drøftet. Skal vi forankre indholdsproduktion i afdelingerne, bør en fast del af team-møderne, f.eks. 10 minutter, afsættes til redaktionsmøde, hvor følgende spørgsmål besvares:

  • Hvad skal på hjemmesiden inden næste team-møde?
  • Hvornår skal det være publiceret (deadline)?
  • Hvem laver det/lægger det på?

2. Præsentation af re-designet forside

Det er lykkedes at få skruet et design sammen, der tilgodeser både beskrivende introtekst samt “aktuelt” på forsiden (jvf. debat på forrige møde). Der er fortsat debat om, hvor meget “aktuelt” skal fylde på siden. Man bør dog overveje:

Hvad er det, vi vil kommunikere?
Forsiden er ikke kun et magasin eller tidsskrift, hvor nyheder er det vigtigste. Snarere er det en indgang til bibliotekets brede vifte af tilbud. Det skal afspejles i designet.

Endvidere er kendskabet til bibliotekets baggrund og tilbud relativt begrænset i den brede brugerskare. Det kendskab vil vi gerne øge.

Hvilket indhold er målgrupperne interesseret i?
Vore målgrupper går typisk efter “guldet” i biblioteksdatabasen. Derfor skal vi have materialerne frem i lyset, og det skal forsiden også bruges til.

Det blev endelig besluttet at “Aktuelt” fortsat præsenteres i karrusel-form, således at alle artikler i nyhedslisten eksponeres lige meget.

3. Tilbud – opgaven til næste møde

Vi skal have alle bibliotekets tilbud frem i lyset. De skal rullende præsenteres ved reload på forsiden. Opgaven til webgruppen inden næste møde er således: Identificér bibliotekets tilbud. Lav en liste.

4. De næste webgruppemøder

Næste møde er 7. oktober kl. 9.00.

Mødet i december flyttes til 9. december, da biblioteket er lukket d. 2. december. Notér allerede nu i kalenderen.

Referat fra webgruppemøde

16. august afholdtes det første møde i webgruppen i umindelige tider. Hermed et lille referat:

1. Siden sidst

OPAC har fået en extreme make over. Der skal dog endnu fikses et par bugs:

  • “Tidligere søgninger” vises ikke længere.
  • “Medie”-drop down boksen vises i visse versioner af IE7 i starten af søgefeltet.
  • Tilmelding til SMS og e-mail påmindelser virker ikke.

2. Tanker og ideer ift. redesign af forside

Flg. elementer ønskes vist på forsiden:

  • Søgning
  • Global menu
  • Login/Lånerstatus/fornyelse
  • Åbningstider & adresser
  • Materialekarrusel – Forsider + links til anbefalelsesværdige materialer.
  • Aktuelt
  • Det sker – Arrangementer + kurser.
  • Beskrivende introtekst: “Hvem er vi?” Grundlæggende om biblioteket. Tankerne luftes i detaljer her.
  • Feature liste: “Hvad kan du på biblioteket?” Liste over tilbud. Tankerne luftes i detaljer her.
  • Projekt MDH – Emnesøjler
  • Projekt MDH – Glemte skatte
  • Nyhedslister – Links til nyindkøbte materialer.

Opgaven bliver at få plads til disse elementer uden at forsiden bliver for rodet.

Prioritering af elementer:
Der er størst uenighed om, hvorvidt det skal være “aktuelt” – nyheder fra biblioteket- eller en beskrivende introtekst, der skal stå øverst. Diskussionen går på hvad der er vigtigst at få kommunikeret ud:

  • Dét, der sker på biblioteket lige nu samt arrangementer?
  • Bibliotekets idémæssige grundlag (som er ukendt for mange), hvordan det opnås lokalt samt tilbud?

Det blev besluttet at lave 2 skitser, hvor hhv. “Aktuelt” og en beskrivende introtekst får topprioritet.

3. Blogs

Hvad vil vi med vore formidlende blogs? Bogtips, Filmtips, Musiktips, Familie & børn samt 42 lever særskilt fra hoved-sitet. Men giver det overhovedet mening?

Det var der bred enighed om, at det ikke gør. Således blev der truffet beslutning om at lægge blogs’ene sammen med hoved-sitet. Argumenterne:

  • Eliminering af problemet med manglende eller for ensartet indhold (udelukkende pressemeddelelser, arrangementer og meddelelser) på hoved-sitet.
  • Forøgelse af mængden af interessant indhold på hoved-sitet.
  • Forøgelse af eksponeringen af blog-indlæg/artikler/anbefalinger.

Hvordan genererer vi feed back? Vi blev enige om at lave en workshop om emnet med blog-skribenterne.

4. Indholdsproduktion

Hvordan forankrer vi websitet i afdelingerne? Hvordan spreder vi indholdsproduktionen ud på flere skribenter? Det blev besluttet at tage indholdsproduktion/redaktion af websitet med som fast punkt på afdelingsmøderne. Her skal der tages stilling til:

  • Hvilke emner skal på websitet? (Udover de blog-indlæg/anbefalinger, der løbende produceres).
  • Hvem skriver det/lægger det på?
  • Hvornår skal det være online?

Indholdsproduktion bør prioriteres som en almindelig, fast arbejdsopgave.

Faste møder i webgruppen. Webgruppen mødes fremover fast første torsdag i måneden, kl. 9.00 – 9.45. Næste møde bliver d. 2. september.