Tutorial nr. 21. Brug af tabs og "paramifiers"

Redaktør: Måns

Tutorial nr. 21. Brug af tabs og "paramifiers"

Indlægaf Måns » lør 23. feb 2013 16:32

Hej TW'ister

Faneblade


Man kan nemt oprette sine egne faneblade (Tabs) i TiddlyWiki.

Man bruger makroen <<tabs>>:
Kode: Vælg alt
<<tabs
   txtUniktCookieNavn
   "titel" "værktøjstip" "tiddlernavn##sektion"
   "titel" "værktøjstip" "tiddlernavn##sektion"
    etc ...
>>

txtUniktCookieNavn bruges til at definere et unikt cookienavn som starter med "txt".
I denne "browsercookie" gemmes titelen på den fane man sidst har åbnet.
Det er smart, fordi browseren så vil åbne samme faneblad igen næste gang man åbner tiddleren.

Der er allerede nogle faner (i en standard TiddlyWiki) i højre sidepanel.
De kan læses i tiddleren: SideBarTabs.

Det er en såkaldt "skyggetiddler" og man kan foretage ændringer til den uden, der er fare for at man kommer til at ødelægge dokumentet.
Kommer man til at lave noget "snavs" og vil tilbage til den oprindelige udgave - sletter man blot tiddleren - og vupti - så har man den oprindelige tilbage igen... Test løs, det kan ikke gå galt. :crossfingers:

Man kan udnytte cookie skrivningen til, at bestemme hvilke faner, der skal være åbne ved opstart af TiddlyWiki.

SideBarTabs:
Kode: Vælg alt
<<tabs txtMainTab
"Timeline" "Timeline" TabTimeline
"All" "All tiddlers" TabAll
"Tags" "All tags" TabTags
"More" "More lists" TabMore
>>

- bruger cookienavnet:"txtMainTab" og indeholder fanerne: "Timeline", "All", "Tags" og "More".

("More" viser en samling faneblade mere fra tiddleren: TabMore - dens cookienavn er "txtMoreTab".)


----

Skriv et plugin

Vi skriver vores eget lille plugin for opstartsindstillinger:
Opret en tiddler ved navn zzConfig (zz er brugt for at loade vores plugin efter alle andre plugins, der evt. kunne have sat opstartsindstillinger, der er anderledes end dem vi vil have..)
Tag tiddleren med: systemConfig. (Det er det tag alle plugins er tagget med - og det der fortæller TiddlyWiki at der er tale om kode, der skal eksekveres.)

Skriv:
Kode: Vælg alt
config.options.txtMainTab="More";
config.options.txtMoreTab="Shadowed";


Gem tiddleren/dokumentet og genopfrisk siden. (F5)

Nu startes TiddlyWiki med fanebladet More og "underfanebladet" Shadowed åbne...

Man kan stadig åbne forskellige faneblade i samme "session" - og udnytte, at cookien ændres undervejs, således, at sidst åbne faneblade i forskellige tiddlere huskes.

Når man genopfrisker siden, vil More og "underfanebladet" Shadowed åbnes igen - fordi vi har oprettet et plugin, der skriver cookieoplysninger til browseren. :thumbup: :thumbup:
----

Paramifier

Hvis man vil åbne en bestemt tiddler med et bestemt faneblad åbent - uden et plugin > eller, at browseren "husker" cookieværdien fra sidste gang man havde dokumentet åbent - kan man skrive en URL, der gør det for en.
Det kaldes en "paramifier":
Kode: Vælg alt
MinTW.html/#TiddlerNavn txtFaneID:FaneTitel

Hvis vi bruger ovenstående formular til, at gøre det samme som vi gjorde med et plugin, ser det således ud:
#SideBarTabs txtMainTab:More txtMoreTab:Shadowed (Klik på linket for at se et eksempel)
----

Tiddler links til faneblade

Hvis vi vil skrive et link fra en tiddler til en anden omkranser vi et ord, (eller flere) med dobbelte firkantede paranteser (f.eks.:[[En titel]]), eller skriver det som WikiOrd/CamelCase. Det er nødvendigt med paranteser hvis tiddlerens titel indeholder mere end et ord og/eller hvis det ikke er skrevet som CamelCase.

Hvis titlen ikke eksisterer endnu, formateres linket som kursiv: En titel - ellers er det "halvfed" (oftest) blå tekst: En titel.
En ekstra fordel ved at bruge dobbelte firkantede paranteser er, at man kan lave "prettylinks". Et "prettylink" er en alternativ tekst til linket. Det skrives således:
[["prettylink"|En tiddlertitel]], hvilket resulterer i "prettylink".
----

Avanceret ...

Man kan oprette tiddlerlinks med htmlformateret javascript/jQuery kode:
Kode: Vælg alt
<html><a href="javascript:;" onclick="story.displayTiddler(null,'TiddlerTitel'); jQuery('#tiddlerDisplay').show(); return false;">LinkTekst</a></html>

"LinkTekst" kan godt være et "prettylink" - Målet: "TiddlerTitel" *er* angivet tidligere i koden.

Vil vi åbne en tiddler med en bestemt fane åben - fra den samme eller en anden tiddler, er vi nødt til, at udnytte ovenstående mulighed for, at bruge et htmlformateret javascript/jQuery link:
Kode: Vælg alt
<html><a href='javascript:;' onclick='config.options.txtFaneID="FaneTitel";story.displayTiddler(story.findContainingTiddler(this),"TiddlerTitel");story.refreshTiddler("TiddlerTitel",null,true);'>LinkTekst</a></html>


Det er vist det man kan kalde en VOLDSOM mængde tekst at skulle skrive for at kunne linke til et åbent faneblad i en tiddler. Derfor vil vi ændre koden til at være en transklusion (et template) som kan genbruges i en simplere/kortere form.

Transklusion

En transklusion er en makro (eller et template) man selv konstruerer så man kan udnytte <<tiddler>> makroen, der er indbygget i TiddlyWiki.

Vi opretter en tiddler vi kalder FaneLink og skriver:
Kode: Vælg alt
<html><a href='javascript:;' onclick='config.options.$2="$3";story.displayTiddler(story.findContainingTiddler(this),"$1");story.refreshTiddler("$1",null,true);'>$4</a></html>


Nu kan vi lave et link til en tiddler med en åben fane ved at skrive:
Kode: Vælg alt
<<tiddler FaneLink with:TiddlerTitel FaneID FaneTitel PrettyLink>>
Eksempel:
Kode: Vælg alt
Se <<tiddler FaneLink with:SideBarTabs txtMainTab Tags "fanebladet for en liste over tags">> i tiddleren ~SideBarTabs

(Vi bruger tilde symbolet "~" for at få et WikiOrd/CamelCase til, at vises som almindelig tekst..)


Det kan også klares med "kun" tre substitutionsmarkører/variabler, men det vil KUN virke hvis du husker at bruge et faneID (med præfixet: "txt"), der svarer til tiddlerens titel:
Kode: Vælg alt
<html><a href='javascript:;' onclick='config.options.txt$1="$2";story.displayTiddler(story.findContainingTiddler(this),"$1");story.refreshTiddler("$1",null,true);'>$3</a></html>
Anvendelse:
Kode: Vælg alt
<<tiddler FaneLink with:TiddlerTitel FaneTitel PrettyLink>>
Eksempel:
Kode: Vælg alt
Se <<tiddler FaneLink with:MinTiddler FaneTitel "et faneblad">> i tiddleren ~MinTiddler


Du kan "koge det ned" kun to variabler, ved at blæse på "prettylink" og generere et automatisk "TiddlerTitel-FaneTitel" link:
Kode: Vælg alt
<html><a href='javascript:;' onclick='config.options.txt$1="$2";story.displayTiddler(story.findContainingTiddler(this),"$1");story.refreshTiddler("$1",null,true);'>$1 - $2</a></html>
Anvendelse:
Kode: Vælg alt
<<tiddler FaneLink with:TiddlerTitel FaneTitel>>
Eksempel:
Kode: Vælg alt
Se <<tiddler FaneLink with:MinTiddler FaneTitel>> i tiddleren ~MinTiddler
vises som:
Se MinTiddler - FaneTitel i tiddleren MinTiddler.


AliasPlugin

Eric Shulman har været så venlig at lave et plugin, der tillader, at vi kan lave vores egen makrokald - dvs. vi kan frit vælge, at skrive noget andet end "tiddler with:" i et makrokald.

Hent AliasPlugin fra TiddlyTools.com (kopiér AL tekst fra tiddleren - og kopiér den ind i en tiddler i din egen TW.
(NB:Husk den skal have samme titel og tagges med systemConfig - gem og genopfrisk..)

I en tiddler, der åbnes ved opstart (f.eks. MainMenu) skriver du en af de koder vi brugte til transklusionerne, hvor du erstatter variablerne $1, $2, $3, $4 med %0, %1, %2, %3 og bruger alias pluginnet til, at give den sit eget makrokald - feks. "ttl" (for: tiddler tab link):
Kode: Vælg alt
<<alias ttl [[<html><a href='javascript:;' onclick='config.options.txt%1="%0"; story.displayTiddler(story.findContainingTiddler(this),"%1");story.refreshTiddler("%1",null,true);'>%2</a></html>]]>>

Jeg anvender den version, hvor man har valgt at, opkalde sit FaneID efter titlen på tiddleren - f.eks: MinTiddler = <<tab txtMinTiddler - og kan angive et "prettylink".

Gem ændringer og genoprisk browseren...

Nu kan man lave TiddlerFaneLinks ved blot, at skrive
Kode: Vælg alt
<<ttl MinTiddler FaneTitel LinkTekst>>


Jeg vil ikke komme ind på hvordan man kan lave brugerdefinerede tastaturgenveje til skift af faneblade her.... Det er en HELT anden historie ... :whistle:

Med venlig hilsen Måns

Ps:
Denne tutorial som en almindelig TiddlyWiki: http://xn--mns-ula.dk/TWsOS/tabLink/#Tutorial
og på engelsk: http://xn--mns-ula.dk/TWsOS/tabLink/
Download: http://xn--mns-ula.dk/TWsOS/tabLink/download.php

News reader format for bedre læselighed: http://xn--mns-ula.dk/TWsOS/tabLink/news.php
Quote: "Give a man a tiddler and he might digest it today, show a man how to use TIddlyWiki and he'll be writing his own tiddlers for a lifetime .."
Brugeravatar
Måns
Site Admin
Site Admin
 
Indlæg: 1761
Tilmeldt: tirs 5. jan 2010 18:32
Geografisk sted: Havbro, Aars, Himmerland, Nordjylland, Jylland, Danmark
Brugererfaring med Linux:: Øvet

Tilbage til TiddlyWiki

Hvem er online

Brugere der læser dette forum: Ingen og 2 gæster