Umbraco Konsult
-

Trädvyerna slutade fungera

Har precis jobbat mycket med en Umbraco-lösning där jag också använder delar av AjaxControlToolkit (ACT). Detta kit skeppades för första gången av Microsoft omkring fyra-fem år sedan i sin första version, version 1.0.

Det är denna version som finns inkluderad i Umbraco 4.0.5 som jag använder i denna lösning.

Helt plötsligt, mitt under arbetet med mina UserControls och XSLT-macron upptäckte jag att backendsystemet slutat fungera. Trädvyerna expanderades inte på någon av "tabbarna", inte under content, inte media, ja ingenstans.

Jag rullade tillbaka en backup som var några månader gammal och upptäckte efter lite letande att jag refererat till en nyare version av ATC i ett av mina projekt - dessa projekt har post-build events som skriver över BIN-filerna i Umbraco-lösningen.

Dvs - Den nyare versionen (4.0) av ACT hamnade i bin-mappen på min skarpa lösning. Detta ställer alltså till problem med Umbracos backend. Jag rullade tillbaka ACT till version 1.0 vilket löste problemet.

Skrivet av Markus Johansson, 2010-08-03 0:40

Parametrar i Macros

Både XSLT macron och UserControls kan ha parametrar. Dessa kan skrivas i direkt i kod

<umbraco:macro alias="RenderProperties" paramvalue="Parameter direkt i kod" runat="server"/>

Eller så kan värdet hämtas ifrån andra delar av systemet. Tex ifrån den aktuella noden:

 

<umbraco:macro alias="RenderProperties" paramvalue ="[$pageTitle]" runat="server"/>

 

Det finns fyra andra källor för parameter-värden i Umbraco:

  • Page value: [#propertyAlias]
  • Page properties value: [$propertyAlias]
  • Cookie value: [%cookieValueKey]
  • Request collection  (tex QueryString): [@requestValueKey]

 

Flera värden, ibland kan man vilja ha flera värden och ta den första som faktiskt inte är noll då funkar detta:

<umbraco:macro paramvalue ="[#propertyAlias],[#propertyAlias2],my static string" />

 

Skrivet av Markus Johansson, 2010-06-24 14:32

Bra film för redaktörer

Hittade en grym film som man kan visa för de personer som kommer att jobba med innehållet på den sajt man skapar med Umbraco.

 

http://umbraco.org/blog/2010/5/11/the-umbraco-tour-for-webmasters

Skrivet av Markus Johansson, 2010-05-26 8:28

Debugga Visual Studio med Firefox

Något som stört mig ett tag är att Firefox tenderar att vara sjukt långsamt när man debuggar Visual Studio-projekt via den inbygga webservern i VS.

En snabb googling gav mig denna tråd på grymma Stack Overflow: http://stackoverflow.com/questions/24959/debugging-asp-net-with-firefox-and-visual-studio-net-very-slow-compared-to-ie

 

Slutsatsen är helt enkelt att man måste inaktivera ipv6 i Firefox, enklaste sättet att göra det är följande:

 

  • Skriv about:config i Firefox adressbar, klicka ja på säkerhetsmeddelandet.
  • Skriv disableIPv6 i filterboxen högst upp och tryck enter. Inställningen "network.dns.disableIPv6" visas.
  • Dubbelklicka på "false" så att värdet ändras till true.

 

När dessa enkla steg är fixade går det tokfort att debugga med Firefox, vilket är supernice eftersom man då kan använda sig av bland annat Firebug.

 

Skrivet av Markus Johansson, 2010-02-25 11:33

Base/Rest i Umbraco

En intressant och användbar del av Umbraco är "Base", där används REST för att på ett enkelt sätt göra det möjligt att kommunicera med Umbraco, dels från Umbracosajten, men även från externa sytstem.

 

Mer info om Rest (Representational State Transfer) finns bland annat här: http://sv.wikipedia.org/wiki/Representational_State_Transfer

 

Det är sjukt enkelt att få REST att fungera i Umbraco.

  • Skapa en klass med statiska methoder som skall exponeras.
  • Lägg assemblyt i Umbracos bin-katalog
  • Konfigurera Umbraco-Base i filen "restExtensions.config"
  • Ös på

 

Exempel och mer info finns här: http://umbraco.org/documentation/books/introduction-to-base/simple-base-samples

Skrivet av Markus Johansson, 2010-02-23 7:27

I eftermiddag kör vi

Ikväll är det dax! Umbracoträff i Stockholm!

Följande personer kommer att tala:

  • Peter Nyquist - Milagro
  • Stephan Kvart, Big Finger
  • Ted Nyberg - Ted & Gustaf
  • Umbracos grundare Niels Hartvig

 

Vet i fan om man fortfarnade kan kan anmäla sig, men gör ett försök!

http://our.umbraco.org/events/umbraco-5th-birthday-meetup-in-stockholm

 

Skrivet av Markus Johansson, 2010-02-16 9:59

Membership & Roles

Jobbar på en lösning som ska dela användare mellan en vanlig ASP.NET WebApplication och en Umbraco-Instans. Till detta skall även användarinfo kunna uppdateras med Batchar som hämtar XML-data och uppdaterar bla adressuppgifter och betalstatus.

 

Jag tittade närmare på två lämpliga lösningar och jag tänkte gå igenom dem här:

1. Användare i Umbraco

Spara användarna i Umbraco och jobba med dem via Umbracos API. Det visade sig att det var krångligt att få igång APIt utanför Umbraco-instansen och att allt arbete med användare och dess egenskaper i Umbraco är databasintensivt.

Ett möjligt alternativ vore att skriva direkt till Umbraco-databasen via webbappen, men alternativet känns inte aktuellt då Umbracos datastruktur är komlex och bör behandlas via dess API.

 

2. Användare i ASP.NET-applikationen

Skapa en skräddarsydd databas där användare sparas och sedan låta båda lösningarna hämta sina användare/roller från denna plats. Det innebär att jag måste skriva en ny MembershipProvider och RoleProvider till Umbraco, även att användarhanteringen i Umbracos backend inte fungerar fullt ut.

Lösningen

Trots arbetet med nya providers och det faktum att backend inte fungerar till 100% så valde jag lösning 2. Att ha full kontroll över användarens data och slippa avancerade databasstrukturer vid batchjobben var mer värdefullt än de få funktioner som inte fungerar i backend pga Custom Providers.

 

Skrivet av Markus Johansson, 2010-02-16 10:07

Div med clear

 

Upptäckte ett intressant problem med att använda divar i XSLT. Följande kod används ofta för att "cleara" divar när man kör dem flytande.

 

<div class="clear"></div>

 

I försökte använda den i ett macro, den låg "wrappad" i en annan div - såhär:

 

<div>

   <div class="clear"></div>

</div>

 

När denna proccessades av XSLT transormatorn i Umbraco så blev det renderades inte den sista stängningen av div-taggen. Jag löste det genom att köra följande kod:

 

  <div>

      <div class="clear">&nsbp;</div>

  </div>

 

 

 

Skrivet av Markus Johansson, 2010-01-20 20:31

Umbraco Meetup i Stockholm

Den 16 februari 2010 firar Umbraco sitt 5-års jubileum. Detta firas med meetups runt om i världen. Oslo, London, Sydney, Köpenhamn och Seattle är några av städerna där det hålls träffar.


IMG_1392_2_01

Även Stockholm kommer hålla en träffa på byrån Milagro. Extremt roligt är att grundaren Niels Hartvig kommer att finnas på plats för att hålla i en pratstund.

Du som är jobbar med, eller är intresserad av Umbraco - Missa inte detta tillfälle!

Träffen hålls här:
Milagro - http://www.milagro.se

Ringvägen 100 hus D 7tr


Lär mer och anmäl dig här:
http://our.umbraco.org/events/umbraco-5th-birthday-meetup-in-stockholm

 

Skrivet av Markus Johansson, 2010-01-16 19:02

Snabbkommandon i Visual Studio 2008

Jag blev lite frustrerad över att visa saker kräver att man måste ta tag i musen. Därför satte jag mig ned och surfade runt för att hitta några användbara snabbkommanon eller genvägar i Visual Studio 2008.

Här är några av mina nya favoriter:

 

  • Ctrl + K + S   >>>> Visa "Code Snippets" rutan.
  • Ctrl + K + F  >>>> Formaterar koden på den markerade raden.
  • Ctrl + K + D >>>> Formaterar koden i hela det aktuella dokumentet.
  • F12 >>>> "Go To Definition" - Hoppar direkt till den kod som definerar en class, variabel eller liknande.
  • Ctrl + E >>>> Visar "Exceptions fönstret" - där man kan navigera bland undantag som kan kastas.
  • F9 >>> Lägger till en "Breakpoint" i koden på den rad du står för tillfället.

 

 Fler finns att läsa här: http://www.dev102.com/2008/04/17/10-visual-studio-shortcuts-you-must-know/

 

Skrivet av Markus Johansson, 2009-11-13 15:04

Ny nod överst i nodlistan

Jag har byggt ett system till en kund som arbetar med ljud och ljus. Kunden uppdaterar själv sidan med Umbraco 4.0.2. Sidan är uppbyggd med moduler med text, bild, bildspel, video osv. Dessa sorteras sedan och visas i den ordning som listan är sorterad.

 

En frustrerade sak som jag upptäckte var att Umbraco automatiskt lägger till en ny nod längst ned i nodlistan. Ofta vill man ju att nya inlägg/noder ska hamna högst upp. Att sortera i omvänd ordning blir ologiskt - noderna bör ju visas på samma sätt i nodlistan som på själva sidan. Problemet med att Umbraco lägger nya noder längst ned gör att man efter varje nytt inlägg måste sorta för att få de nya inlägget/noden högst upp.

 

För att komma runt detta och få mina nya noder att hamna högst upp skapade jag en metod som prenumererar på händelsen "umbraco.BusinessLogic.Actions.ActionNew()" som aktiveras när en ny nod har skapats. Läs mer om händelser i på umbraco.org.

Följande kod gör att en ny nod automatiskt hamnar högst upp i nodlistan istället för tvärtom:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using umbraco;
using umbraco.interfaces;

using umbraco.BusinessLogic.Actions;
using umbraco.BusinessLogic.console;
using umbraco.cms.businesslogic.web;

namespace em.umb.sortnewnode
{
   
    public class DefaultValueHandler : umbraco.BusinessLogic.Actions.IActionHandler
    {
        string umbraco.BusinessLogic.Actions.IActionHandler.HandlerName()
        {
            return "em.umb.sortnewnode";
        }

        umbraco.interfaces.IAction[] umbraco.BusinessLogic.Actions.IActionHandler.ReturnActions()
        {
            return new umbraco.interfaces.IAction[] { new umbraco.BusinessLogic.Actions.ActionNew() };
        }

       
        Boolean umbraco.BusinessLogic.Actions.IActionHandler.Execute(umbraco.cms.businesslogic.web.Document documentObject, umbraco.interfaces.IAction action)
        {
            

            // Getting the fist node.

            Document.GetChildrenForTree(documentObject.Id);

 

           // Creating a generic list of Documents
            List<Document> docs = new List<Document>();

 

            foreach(IconI d in documentObject.Parent.Children) {
                docs.Add(new Document(d.UniqueId));
            }


            // Sorting the list by sortOrder using Linq.

            var res = (from d in docs
                       orderby d.sortOrder ascending
                       select d);

 

           // Picking the first node

            Document firstDoc = res.First();

 

           // Setting sortOrder on the new node, by taking the first nod minus 5.

            documentObject.sortOrder = firstDoc.sortOrder - 5;

 

            return true;

        }
    }

}

 

 

För dig som inte orkar dra igång Visual Studio och skriva allt själv har jag gjort en härlig liten DLL som du kan ladda ner här. Packa bara upp dll-en och lägg den i bin-katalogen.


Självklart är jag medveten om att man kanske vill kunna ställa in detta på katalognivå eller kanske confa det i web-config - har dock inte behövt denna funktionalitet. Lovar att återkomma med eventuella uppdateringar.

Skrivet av Markus Johansson, 2009-06-30 10:19

Umbraco och LINQ

I början av veckan tog jag mig tid att testa Umbraco tillsammans med LINQ. För dig som inte vet vad LINQ är så kan man enkelt säga att det är ett sätt att i .NET ställa frågor till vilken typ av datasamlingar som helst. Dvs - du använder samma syntax oavsett om du letar data i en array, ett eget objekt eller i en databas.

 

Det känns också som att Umbracos API lämpas sig bra för att jobba med LINQ.

 

Tänkte ösa upp några exempel inom kort, tills dess läs gärna mer om LINQ!

 

 

Skrivet av Markus Johansson, 2009-06-24 8:02

CodeGarden09

Den 22-23 juni är det CodeGarden09 i Köpenhamn, ett sjukt bra tillfälle för dig som är intresserada av Umbraco-utveckling att skaffa ny kunskap. Listan med föreläsare växer och växer:

 

Här är ett utdrag ifrån idag:

 

Umbraco-profiler
Niels Hartvig
Per Ploug Hansen

 

Andra utvecklare

Warren Buckley
Tim Geyssens
Thomas Höhler
Paul Sterling
Kasper Bumbech
Søren Spelling
Søren Sprogø
Mads Kristensen
Mark Wubben
Alex Norcliffe

 

Hela lista och mer info: http://codegarden09.com/

 

Skrivet av Markus Johansson, 2009-06-09 8:53

Märkligt fel - Enkel lösning

 Efter att ha flyttat några av mina Umbraco-installationer till en annan server fungerade allt fin fint!

Detta tills jag försökte uppdatera innehållet. Då hände inget, och följande felmeddelande kastades i LogViewern:

 

A process serving application pool 'DefaultAppPool' suffered a fatal communication error with the World Wide Web Publishing Service. The process id was 'xxxxxx'. The data field contains the error number.

 

Eftersom Umbraco-siten inte kastade något fel så tog det några minuters funderande innan jag kom fram till felet. Självklart var det något så enkelt som läs/skrivrättigheterna. Efter att ha ändrat dessa fungerade allt klockrent. Det är lätt att missa detta när man flyttar sajter mellan maskinerna.

 

I följande kataloger måste Umbraco kunna skriva:

  • bin
  • config
  • css
  • data
  • media
  • masters
  • umbraco
  • usercontrols
  • xslt

Skrivet av Markus Johansson, 2010-02-04 11:09

Umbraco 4.0.1 - Släppt

För en tid sedan släpptes en ny minor-version av Umbraco. Inga kritiska ändringar, med ändå några coola småsaker som gör livet enklare för dig som utvecklar i Umbraco.

 

Några av nyheterna:

  • Automatiska referenser till XSLT Extenstions namnområden (namespaces).
  • XSLT Visualizer för att förhandsgranska dina XSLT-mallar.

 

 

Kolla in mer av ändringarna och ladda ner releasen här:

 

http://umbraco.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18661

Skrivet av Markus Johansson, 2009-05-27 8:40

Tumnagel på uppladdade bilder

I Umbraco är det nästan olagligt enkelt att skapa tumnaglar (thumbnails) på uppladdade bilder.

Gör såhär:

 

  • datatypeGå till Developer och högerklicka på Data Types, välj Create för att skapa en ny datatyp.
  • Välj valfritt namn, tex ImageUpload.
  • I dropdownen Render Control, välj Upload Field
  • Klicka på Spara för att uppdatera inställningarna till Upload Field
  • I texboxen för thumnail size, skriv önskade storlekar. Använd ; för att skapa flera olika.
  • Applicera din datatyp till en document type och börja ladda upp.

 

För att visa bilderna visa tumnaglarna, lägg bara till "_XXX.jpg" i slutet av filnamnet. Alltså, test.jpg blir till test_480.jpg.

 

OBS! Om du ändrar tumnaglarna efter att material redan laddats upp måste du ladda upp det igen för att de nya bilderna ska skapas.

Skrivet av Markus Johansson, 2009-03-16 11:51

Dölja debugging för skarpa sidor

När utvecklingen, testning och felsökning av en site är klar och sidan skall lanseras kan det vara ganska skönt att stänga av möjligheten till att debugga sidorna.

Debugging kan ju, som bekant göras på två sätt:


StackTrace - Genom att lägga till "?umbDebugShowTrace=true" efter urlen.

http://www.minsida/sida-om-en-grej.aspx?umbDebugShowTrace=true

 

Macron och fält - Genom att lägga till "?umbDebug=true" efter urlen.

http://www.minsida/sida-om-en-grej.aspx?umbDebug=true

 

EDIT:

Från och med version 4.01 finns det en inställning i web.config som stänger av och på denna funktionalitet. Skriv bara följande:

 

<add key="umbracoDebugMode" value="false" />

 

TIDIGARE VERSIONER:

Även om sidan ligger skarpt på nätet så fungerar dessa debug-funktioner, vilket kanske inte allid är önskat. Lösningen finns på följande sida:

 

http://umbraco.org/documentation/books/hide-debugging-features-for-production-systems

 

Kort och gott lägger man till en node i urlrewrites.config i /config-mappen:

<add name="nodebug"
    virtualUrl="(.*).aspx.*umbDebug.*"
    rewriteUrlParameter="IncludeQueryStringForRewrite"
    redirect="Application"
    destinationUrl="~$1.aspx"
    ignoreCase="true" />

 

Skrivet av Markus Johansson, 2010-02-24 17:29

Flerspråkstöd i Umbraco usercontrols

 Om din site ska ha stöd för flera språk finns olika sätt att bygga stukturen. En variant är att ha olika domäner för varje språk.

 

  • http://en.minsida.se
  • http://sv.minsida.se
  • http://dk.minsida.se

 

Ovanstående variant har tidigare varit sämre ur sökmotorsynpunkt, men nu enligt många experter är skillnaden mellan subdomän och katalogbaserat flerspråk idag obefintlig. (Ser mer i denna artikel på searchnewz.com). Katalogbaserat flerspråk:

 

  • http://www.minsida.se/en/
  • http://www.minsida.se/sv/
  • http://www.minsida.se/dk/

 

Oavsett hur du sätter upp strukturen måste dina användarkontroller (usercontrols) också ha stöd för flerspråk. Då kommer Umbraco Dictionary Items tillanvändning. Det används för att spara ned korta fraser och ord som används ofta tex: Spara/Save, Sök/Search, Avbryt/Cancel osv. (Finns på Settings Section i Umbraco-backend).

Om man tex skapat en kontroll som innehåller 20 olika fraser kan det vara ganska jobbigt att manuellt lägga till dem ibland sina Dictionary Items. Därför har Tim Geyssens som som driver Umbraco-bloggen http://www.nibble.be gjort ett enormt bra script som automatiserar denna procedur.

 

 

 

Skrivet av Markus Johansson, 2009-03-04 11:36

Uppgradera från 4-Beta till Umbraco 4 Stable

Det är relativt enkelt att uppgradera Umbraco 4 Beta till den stabila versionen som släpptes i början av januari 2009.

 

 umbracoupgrade4beta24stable

De nya ikonerna i Umbraco 4.

 

1. Ta backup

Säkerhetskopiera alla filer i lösningen samt ta en backup på din databas innan du börjar.

 

2. Ladda ner filerna till Umbraco 4

Alla de senaste filerna finns på Umbracos sida på CodePlex. Ladda ner Umbraco 4 Stable.

 

3. Ersätt filer

Radera dessa kataloger och kopiera in de nya ifrån zip-filen du precis laddat ner från CodePlex.

  • bin
  • umbraco
  • umbraco_client


OBS! Glöm inte att spara dina egna dll-er och kopiera in dem i nya lösningen.

 

4. Uppdatera databasen

Mellan versionerna har några små förändringar gjorts i databasen. Öppna därför din databas och kör följande kommando:

 

/* TRANSLATION RELATED SQL */
INSERT INTO umbracoApp (appAlias, sortOrder, appIcon, appName, appInitWithTreeAlias) VALUES (N'translation', 5, N'.traytranslation', N'Translation', NULL);
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 1, 1, 'translation','openTasks', 'Tasks assigned to you', '.sprTreeFolder', '.sprTreeFolder_o', 'umbraco', 'loadOpenTasks');
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 1, 2, 'translation','yourTasks', 'Tasks created by you', '.sprTreeFolder', '.sprTreeFolder_o', 'umbraco', 'loadYourTasks');

 

5. Byt versionen i web.config

I lösningens root-katalog finns en web.config-fil. Öppna den och leta fram nyckeln som heter "umbracoConfigurationStatus". Ersätt värdet från tex v4.0.0.RC2 till v4.0.0.

 

Klart.

 

 

 

 

Skrivet av Markus Johansson, 2009-05-07 8:25

Klasser i editorns "Choose Style"

Umbracos inbyggda texteditor "Richtext editor" som baseras på TinyMCE 3 har en dropdown som heter "Choose style".

 

choose style dropdown

Standardinställningen i TinyMCE är att alla klasser i de stillmallar som är bundna till editorn ska visas i dropdownen. Eftersom det oftast finns massa klasser i dessa stilmallar som man inte vill ska synas i listan har Umbraco en annan lösning.

Så här fixar du en ny klass i listan "Choose style"

  • Klicka dig till "Settings" och expandera "Stylesheets". Välj en av de stillmallar som visas i Umbracos Richtext editor.
  • Högerklicka och välj "Create" för att skapa en ny under-klass.
  • Döp den nya stilen till önskat namn, i rutan "styles" kan du sedan skriva CSS-markup.
  • Denna markup syns inte automatiskt i editor, du måste också lägga till denna markup i din stillmall. I detta fell i mallen screen.

 

Umbraco choose style wysiwyg

 

 

 

Skrivet av Markus Johansson, 2009-02-06 11:51

Stilmallar/css i Umbracos editor

När man lägger till en ny stillmall (CSS) i Umbraco viasas den inte automatiskt när du redigerar innehåll i WYSIWYG-editorn TinyMCE.

För att stillmallen ska "slå igenom" och synas i editorn måste man kryssa för stillmallen i developer-delen.

 

  • Gå till Developer
  • Öppna upp "Data Types" och klicka på "Richtext editor".
  • Kryssa i de stilmallar du vill ska synas i editorn under "Related stylesheets".
  • Spara och nu är det bara att köra.
  • TIPS: Skapa en speciallstillmall om du tex vill ha en annan bakgrund i editorn än på själva sidan. Denna stilmall använder endast i editorn, inte i själva HTML-koden.

 

 

datatypes_richtext_css

 

Här kan du läsa om hur man kan lägga till en stilmallsklass i din editors "Choose List"-dropdown.

 

 

 

 

Skrivet av Markus Johansson, 2009-02-23 12:00

Begränsa listade poster XSLT

Ibland vill man tex att Umbraco ska visa de 10 senaste posterna i en nod eller kanske de 10 senaste av en speciell document type.

Så här kan man använda XSLT för att begränsa antalet poster som lämnas från en for-each-loop.

 

<xsl:for-each select="$currentPage/node">

<xsl:sort select="@sortOrder" order="descending"/>

    <!-- xsl-if kollar att positionen är under 11 dvs, högst 10. Om så inte är fallet skrivs inget ut. -->

   <xsl:if test="position() &lt; 11">

       <xsl:value-of select="@nodeName"/><br/>
   </xsl:if>
</xsl:for-each>

 

Såhär fungerar det:

<xsl:sort> Används för att sortera resultatet. Select-parametern anger efter vilket värde det skall sorteras och order-parametern anger om det skall vara fallande eller stigande ordning (ascending, descending).

 

XSLT-funktionen Position() returnerar nummet på den post som just nu bearbetars i loopen. Med hjälp av <xsl:if> anger vi att endast de fem första posterna ska visas, dvs poster som har ett värde under 10.

Tecknen &lt; och &gt; betyder samma sak som < och >, dessa tecken är skyddade i XSLT och måste därför ersättas med &gt; och &lt&, dvs greater than och lower than.

 

 

Skrivet av Markus Johansson, 2009-02-06 8:08

Radera HTML-taggar via XSLT och C-Sharp

På startsidan för denna sida om Umbraco listas de senaste blogginläggen, samt en kort "inledning".

 

Den här inledningen är egentligen den samma som själva HTML-innehållet i bloggposten. För att det ska se snyggt ut på startsidan har jag gjort så att alla HTML-taggar tas bort.

 

Alltså detta:

<h1>Hello World</h1>

<p>I´m here</p>

 Blir till:

Hello World

I´m here

 

Hur gör man då? Faktum är att lösningen är väldigt enkel. Jag skapade en egen c-sharp funktion som kör ett regex och sedan beräknar längden på inlägget för att veta om det skall kortas ned eller inte:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
<xsl:stylesheet
 version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:msxml="urn:schemas-microsoft-com:xslt"
 xmlns:msxsl="urn:schemas-microsoft-com:xslt"
 xmlns:umbraco.library="urn:umbraco.library"
 xmlns:em="urn:em"
 exclude-result-prefixes="msxml umbraco.library">


<xsl:output method="xml" omit-xml-declaration="yes" />

<xsl:param name="currentPage"/>

<!-- ******* SCRIPTS STARTS HERE *********** -->

<msxsl:script language="CSharp" implements-prefix="em">
<![CDATA[

// Removes all HTML-taggs from parameter-string

public string generatePreview(string strHTML) {
 
 // Setting default string-length
 int intDefaultLength = 200;

// Removing HTML-tags using regex
 strHTML= Regex.Replace(strHTML, "<[^>]*>", String.Empty);

 
 if(strHTML.Length > intDefaultLength) {
  return strHTML.Substring(0,intDefaultLength) + "...";
 }
 else {
  return strHTML;
 }
}

]]>
</msxsl:script>

 <!-- ******* SCRIPTS ENDSHERE *********** -->

 

<xsl:template match="/">

<!-- The fun starts here -->

  <p><xsl:value-of select="em:generatePreview($currentPage/data [@alias = 'HTMLContent'])" disable-output-escaping="yes"/></p>

 

</xsl:template>

</xsl:stylesheet>

 

Självklart kan man,  om man vill skapa och kompilera sin egen extension till XSLT, då kan man ha med denna funktionalitet i sin extention. Detta är att föredra om man ska använda funktionen på många olika XSLT-mallar.

 

 

Skrivet av Markus Johansson, 2009-03-06 19:22

Arbeta med Umbraco i Visual Studio 2008

VisualStudio2008Ett tips för dig som utvecklar umbraco-lösningar är såklart att använda Visual Studio.

Umbraco har ju möjligheta att redigera XSLT, CSS, JavaScript och även HTML-mallar i sitt admingränsnitt.

 

Däremot missar man ju debugging och mycket annat som kommer tillsammans med Visual Studio.

 

Om du vill utveckla och debugga med Visual Studio 2008, gör såhär:

 

1. Skapa en ny Umbraco-installation

Ställ in databas-koppling, rättigheter osv. Filerna kan tex hamna i c:\inetpub\wwwroot\umbraco.

 

2. Skapa ett nytt "Website Application Project"

Detta projekt ska skapas i en annan mapp än din umbraco installation.

Lägg till de mappar för de filer du vill kunna arbeta med. Jag har följande:

  • /css
  • /scripts
  • /xslt
  • /masterpages
  • /usercontrols

 

3. Lägg till ett "Post Build Event"

Detta körs efter att projektet har kompilerats. Syftet är att vi ska kopiera filerna från vår Web Application till vår Umbraco installation.

Klicka på "Soulution>Properties>Build Events" och lägg till följande kod under "Post Build Events" - alltså det som sker när projektet är kompilerat.

 

XCOPY "$(ProjectDir)bin\$(ProjectName)*.*" "C:\Inetpub\soundforce - umbraco4\bin\" /y /S
XCOPY "$(ProjectDir)usercontrols\*.ascx" "C:\Inetpub\soundforce - umbraco4\usercontrols\" /y /S
XCOPY "$(ProjectDir)xslt\*.xslt" "C:\Inetpub\umbraco4\xslt\" /y /S
XCOPY "$(ProjectDir)css\*.css" "C:\Inetpub\umbraco4\css\" /y /S
XCOPY "$(ProjectDir)scripts\*.js" "C:\Inetpub\umbraco4\scripts\" /y /S
XCOPY "$(ProjectDir)\*.pbd" "C:\Inetpub\umbraco4\" /y /S

 

Parametern /y gör att filer skrivs över, och /S att även underkataloger inkluderas.

 

4. För att debuga

  • Öppna siten i din webbläsrae
  • I Visual Studio väljer du Debug > Attach to Process och väljer w3wp.exe från listan. (På IIS on XP/2000 heter proccesen asp_net.exe).
  • Var noga med att *.pbd-filerna kopieras till umbraco-installationen.
  • Debugga för fulla muggar!

 

 

 

 

 

Skrivet av Markus Johansson, 2009-02-04 8:57

Umbraco 4 har släppts

Vänner!


Idag är en stor dag, inte nog med att detta är mitt första blogginlägg på den har nya bloggen om utveckling i Umbraco, det är också första arbetsdagen sedan nya versionen av Umbraco släpptes.

Jag har följt utveckling och kört några av Umbraco 4 Betorna, nya versionen har lite annorlunda UI (User Interface) i admin och TinyMCE 3 är också helt integrerat.

 

Här kan du läsa hur man uppgraderar Umbraco 4 Beta till Umbraco 4 stable

 

Läs mer och ladda ner källkod eller kompilerade filer på umbraco.org.

Skrivet av Markus Johansson, 2009-02-08 20:03

Powered by Enkel Media Stockholm