Rätt mall på rätt plats

Ibland händer det att man väljer fel mall när man skapar en sida eller artikel i SiteVision. Det kan lätt bli lite tokigt om en vanlig sidmall används i ett arkiv - eller tvärt om.

I SiteVision finns det inget sätt att begränsa vilka mallar som får användas i arkiv annat än med modulen snabbpublicering. Så, vad gör man? I den här artikeln bjuder jag en enkel skriptmodul som hjälper redaktörerna genom att tala om när en mall används fel. Så här ser det ut för redaktören:

Den är enkel att installera! Om du kan kopiera och klistra ska det inte vara några problem. Du behöver ha rättighet att redigera mallarna och lägga till en skriptmodul.

  • Gå till mallen där du vill installera skriptet.
  • Lägg en skriptmodul på lämpligt ställe.
  • Dubbelklicka på skriptmodulen för att öppna inställningarna.
  • Se till att kryssrutan Visa i redigeringsläget är ikryssad.
  • Klistra in JavaScript-koden och Velocity-mallen nedan i respektive textfält.
  • Nu behöver du bara tala om för skriptet om mallen är tänkt att användas i arkiv eller inte. Följ instruktionerna högst upp i JavaScript-delen.

När du är klar bör det se ut ungefär så här:

Nu är det bara att testa att det fungerar genom att använda mallen på fel sätt.

Lycka till!

Javascript

// Mallhjälp - ser till att du använder mallar rätt.
//
// Copyright (C) 2013 Limepark AB
//
// Inställningar:
//
// shouldBeUsedInArchive: Sätt till `true` om denna mall ska användas i arkiv,
//                        annars `false`.

var settings = {
  shouldBeUsedInArchive: true
};

// Du behöver inte ändra något nedanför den här raden.

var utils = request.getAttribute('sitevision.utils');
var versionUtil = utils.getVersionUtil();
var propertyUtil = utils.getPropertyUtil();
var nodeTypeUtil = utils.getNodeTypeUtil();

var currentPage = utils.getPortletContextUtil().getCurrentPage();
var parentIsNotArchive = !nodeTypeUtil.isArchive(currentPage.getParent());
var editMode = versionUtil.getCurrentVersion() == versionUtil.OFFLINE_VERSION && !nodeTypeUtil.isTemplate(currentPage);

var usesWrongTemplate = editMode && (settings.shouldBeUsedInArchive == parentIsNotArchive);

Velocity

#if ($usesWrongTemplate)
  <div class="lp-wrong-template-info" style="color: #b94a48;background-color: #f2dede;border-color: #eed3d7;-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;padding: 12px; margin-bottom: 10px; font-size:13px;">
    <p style="margin: 0;"><strong>Hej! Använd en annan mall. Den aktuella mallen får #if($settings.get('shouldBeUsedInArchive', $settings)) bara #else inte #end användas i arkiv.</strong></p>
  </div>
#end

Jönköping

Jönköping

Limepark AB

Gjuterigatan 9
553 18 Jönköping
Vägbeskrivning

Stockholm

Stockholm

Limepark AB

Gotlandsgatan 46
116 65 Stockholm
Vägbeskrivning

Timrå

Timrå

Limepark AB

Folketshusvägen 10
860 35 Söråker
Vägbeskrivning

Örebro

Örebro

Limepark AB

Kansligatan 1
703 61 Örebro
Vägbeskrivning

Örnsköldsvik

Örnsköldsvik

Limepark AB

Magasinsallén 2
891 31 Örnsköldsvik
Vägbeskrivning

*

I supporten:
Sven
AAA - Högsta kreditvärdighet