Inline-redigering

Den helige graal för många utvecklare av innehållssystem är "inline"-redigering, det vill säga att en sidadmin ska kunna aktivera ett adminläge och sedan kunna redigera bilder, text och sådant direkt på sidan och sedan spara det när det är klart.
Atlas påbörjade sin utveckling många år innan detta ens var möjligt rent tekniskt, så mycket av det smarta i Atlas handlade om att hantera den text man skrev in i formuläret på sidan.
Det ledde till att artiklar delades upp i stycken efter man redigerat dem, man kunde sedan knyta länkar, filer och bilder till ett specifikt stycke. Med nackdelen att om man skrev om texten så var helt plötsligt bilderna och länkarna kopplade till fel stycke.

Livelinks

Sedan så skapades möjligheten att använda något vi har kallat "livelinks" direkt i texten. Så om man skrev till exempel
[BUTTON:www.eklundh.com:Gå till vår hemsida] så fick man följande resultat:
Gå till vår hemsida
Men tekniken växer och vi måste växa med den. Vi är inte riktigt redo att lämna tanken med styckesindelning och media kopplade till dem, men vi är nyfikna på vad man kan göra med dom förutsättningarna vi har.

contenteditable

Det finns ett attribut man kan sätta på HTML-element som heter "contenteditable", vilket gör att man kan redigera innehållet på det elementet direkt i webbläsaren. Sedan med lite javascript så kan man ju ta det nya innehållet och skicka till server och säga "hej, vi ska uppdatera innehållet för det här fältet i den här databasen till det här värdet" och servern kolla att användaren är inloggad med adminrättigheter och kan då spara det.
Men när det gäller artiklar så handlar det ju inte om ett fält, utan ett stycke. Så vi har redigerat texten i stycke tre, här är nya texten. Atlas måste då ta det stycket, hämta originalartikeln och dela upp den texten i stycken, sedan uppdatera texten för stycket man ändrat på och sedan knyta ihop det till en text igen och spara det nya värdet i textfältet.
Men vad händer då när man har till exempel livelinks? Exemplet på knappen ovan skapar nedanstående HTML-kod ut mot webbläsaren, och när man redigerar ett stycke med sådan kod i så säger ju webbläsaren åt Atlas att spara all den där koden för den är ju del av stycket.
Så Atlas måste läsa in den nya textsträngen och intelligent läsa av om det finns några livelinks i den, om du kollar noga så är knappen omringad av ett SPAN-element som har ett "data-command"-attribut som visar vilket originalkommandot var för att skapa livelänken. Så Atlas kan hitta den här informationen och sedan återställa originalvärdet.

Extra HTML

Ett problem med contenteditable är att webbläsaren har kontroll över HTML-koden, och alla webbläsare gör det på olika sätt. Till exempel om man skriver en ny rad så vill många webbläsare i så fall lägga en P-tag kring den nya raden, men det gillar inte Atlas, allt sådant ska vi ju lägga på i efterhand. Så det måste till en hel del upprensning av koden för att få tillbaka den i "vanlig" text.

Länkar

Precis som med livelinks så översätts ju länkar i text. Skriver man
[www.eklundh.com Gå till vår hemsida] Så blir resultatet: Gå till vår hemsida
Det skapar ju en A-tag med ett HREF-attribut, så dem måste också hittas, fixas och göras om till livelinks igen, mycket på grund av överskådligheten för admin förstås.
Det är en hel del jobb kvar att göra, men förhoppningsvis så kommer detta in i betaläget i Atlas snart nog
0 Kommentarer