Rätt mall på rätt plats

Skript och funktioner

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. Här följer en guide till hur du visar ett meddelande för redaktören om mallen används felaktigt.

I SiteVision finns det inget sätt att begränsa vilka mallar som får användas i arkiv annat än med modulen snabbpubliceringlänk till annan webbplats. 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:

Installera funktionen

Funktionen ä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.

  1. Gå till mallen där du vill installera skriptet.
  2. Lägg en skriptmodul där du vill att meddelandet ska dyka upp. Byt gärna namn på modulen (exempelvis "Mallkontroll") så det är enkelt att veta vad skriptet gör.
  3. Dubbelklicka på skriptmodulen för att öppna inställningarna.
  4. Under fliken övrigt, se till att kryssrutan Visa i redigeringsläget är ikryssad.
  5. Klistra in JavaScript-koden och Velocity-mallen nedan i respektive flik och textfält.
  6. 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.

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

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
Artikeln är skriven av: Sven Dahlstrand info@limepark.se