Systemmeddelande i Polopolys redaktörsgränssnitt

Apr 01

En länge efterlängtad funktion från informationsavdelningen och systemdriften som underhåller installationen på KTH har varit att man ska kunna lägga upp ett systemmeddelande i Polopolys redaktörsgränssnitt som alla som loggar in eller redan är inloggade ska kunna se tydligt. Detta för att man snabbt och enkelt ska kunna informera alla inloggade redaktörer om man till exempel ska göra ändringar eller ska ta ner back end-servern för en uppgradering, så att de i god tid kan spara sitt pågående arbete och logga ut.

Systemmeddelande

Funktionen bygger på följande komponenter:

  • Polopolys indatamall p.UserSessionTemplate överlagras och får fältet:
    <field="systemMessage" input-template="it.field.systemMessage" label="" />
  • Mallen it.field.systemMessage definierar enbart policyn och en widget för editor och viewer.
  • Policyn är en extendad SingeValuePolicy som för tillfället inte innehåller någon extra funktionalitet.
  • Widgeten rendrerar en stylad div och hämtar systemmeddelandet (första gången) om det finns något. Till denna policywidget finns också en jQuerybaserad javascriptfil som till uppgift har att hämta systemmeddelandet via ett ajaxanrop var 3:e minut från en specificerd url, detta så att det ständigt uppdateras även om redaktören inte refreshar sidan.
  • I den mall (valfri) som sytemmeddelandet ska matas in läggs ett fält av typen p.TextArea in som senare innehåller själva meddelandet.
  • På den ovannämnda specificerade url:en ligger en servlet som hämtar systemmeddelandet och skriver ut det i en divtagg med ett id som ajaxanropet känner till. I responset så var vi tvugna att sätt headen så att den aldrig cachar sidan. response.setHeader(”Cache-Control”, ”no-cache”); Annars fanns det risk att IE inte fick ett uppdaterat meddelande.

Om det är någon som vill veta mer om denna mall, ta en titt på tråden i forumet med namnet ”Systemmeddelande” under kategorin ”Mallutveckling”. Den innehåller bl.a. delar av källkoden.

Taggar: , , , , ,

Hantering av robots.txt-regler i Polopoly

Mar 25

Jag tänkte berätta hur man kan gå tillväga för att underlätta hanteringen av robots.txt-regler, och på samma gång få möjligheten att delegera underhållet av dem till personer som arbetar närmare källan av innehållet. Vi hade länge denna funktion i vår ”back log” och när tiden var inne tog vi in den i utvecklingsetappen och resultatet blev lyckat.

Fördelarna med denna lösning är följande

  • Driftspersonal behöver inte längre blandas in när ändringar skall göras. Detta gör att driftspersonalen får mer tid till annat.
  • Ledtiderna vid ändringar av reglerna minimeras eftersom redaktören själv kan ändra dessa.
  • Lösningen ger möjlighet till att koppla ihop olika robots.txt-regler med olika site alias på en och samma site, så att man kan välja olika regler för olika alias. Detta är bra om man har url:er som man inte vill kommunicera ut men som är bra att ha för de som utvecklar och driftar polopolyinstallationen.
  • Reglerna ligger i egna innehållsobjekt vilket gör att de kan återanvändas av flera olika siter.

Lösningens olika komponenter

  • Robots.txt-reglerna.
  • Mappningen mellan site alias och reglerna.
  • Servlet som hämtar robots.txt-reglerna beroende på efterfrågad url.
  • Filterhantering som mappar allt som går mot /robots.txt till ovannämnda servlet.

Lite mer ingående för den intresserade

Robots.txt

Reglerna för sökmotorerna
Robots.txt-reglerna är uppbyggda av en enkel indatamall med en titel av typen p.ContentName och ett textfält av typen p.TextArea där reglerna kan matas in.  Policyn har metoder för att hämta ut titeln och reglerna.

Robots.txt

Mappning av sitealias och robots.txt-regler
Mappningarna görs via en annan indatamall som innehåller följande komponenter:

  • En innehållsväljare av typen p.ContentSingleSelect som används för att peka ut den robots.txt-resurs som ska användas för samtliga alias för aktuell site som inte har en specifik mappning mot en annan robots.txt-resurs.
  • Ett fält av typen p.Duplicator som i sig innehåller två typer av fält. Ett fält av typen p.Text som tar ett sitealias (d.v.s. en url) och ett fält av typen p.ContentSingleSelect där man väljer vilken robots.txt-resurs som ska mappas mot det aktuella sitealiaset.

Policyn innehåller en publik metod som hämtar upp robots.txt-reglerna beroende på givet site alias. Hittas inte reglerna för detta site alias returneras defaultreglerna istället.

Servlet och servletmappning
Servleten använder sig av polopolys RequestPreparator för att hämta upp den aktuella sitepolicyn. Sitepolicyn används sedan i sin tur för att hämta rotinnehållspolicyn för siten där mappningarna mellan sitealias och regler finns. Från den innehållspolicyn hämtas reglerna upp och skrivs ut i servletresponsen.

Servletmappningen sker i web.xml och ser till att alla anrop till /robots.txt mappas till servleten som i sin tur genererar rätt regler till rätt url.

En tråd har skapats i forumet under ”Mallutveckling” för de som vill diskutera och få mer detaljer om denna funktionalitet

Taggar: , , , , ,

Välkommen till Polopolyforum.se

Mar 09

Polopolyforum.se är tänkt att drivas av och för oss som använder Polopolys innehållshanterings system (CMS) .  Vi vill på ett öppet och objektivt sätt dela med oss av erfarenheter och kunskaper som förhoppningsvis får igång diskussioner och kunskapsspridning mellan oss som utvecklar, sköter systemen eller hanterar innehållet på webbplatser som har Polopolys CMS som plattform.

Behovet av denna sida har länge legat och grott då mycket av informationen idag inte finns sökbar på internet.

De störtsa kunskapskällorna ligger hos Polopoly själva, tredjepartsleverantörer och på ett eller annat sätt hos oss som använder oss av Polopolys produkt. Vi är övertygade om att alla dessa parter skulle kunna dra nytta av att dela med sig av sin kunskap, sina praktiska erfarenheter, lyckade/misslyckade projekt o.s.v.

Vår förhoppning är att etablera och upprätthålla en dialog mellan dessa parter där vi alla får ut något bra av det i slutändan och detta tänkte vi göra via denna blogg samt ett forum som snart kommer på plats.

Vi som står bakom detta välkomnar alla och tar gärna in synpunkter och förslag på hur vi ska göra denna site så informativ och levande som möjligt.

Med väliga hälsningar!

Niklas Olsson niklas@polopolyforum.se
Patric Jansson patric@polopolyforum.se

Taggar: , , , ,