Rst2HTML
Mijn "ReStructured Text naar HTML vertaler in een webpagina" is een één-pagina applicatie. Dat betekent dat je voor het oog steeds in dezelfde pagina aan het werk bent. Technisch gezien is het nnatuurlijk wat ingewikkelder, kijk maar naar wat er op verschillende momenten in het url veld staat, maar er is maar één pagina layout.
Dat betekent wel dat er een heleboel velden en knoppen bovenin het scherm staan:
Daarmee heb je wel gelijk een overzicht van de hele workflow van de applicatie:
laad de configuratie voor een verzameling van pagina's
sla deze (weer) op indien nodig
laad een restructured text document
sla deze op (in elk geval nodig voordat je de eerste keer een preview kunt doen)
preview hoe het eruit gaat zien na omzetting naar HTML
sla de source en de omgezette HTML (opnieuw) op
laad the omgezette HTML (onder andere nodig als je ze naar de mirror wilt zetten)
preview deze (bv. in het geval dat je achteraf nog wijzigingen aanbrengt)
sla (de gewijzigde versie) op
kopieer de HTML naar de "mirror" bestemming (in feite een lokale versie van de live site)
Layout van het scherm
Zoals te zien is de applicatiepagina verdeeld in drie gedeelten:
bovenin de besturing voor de verschillende handelingen, onderverdeeld in
Site configuratie - - meer hierover hier
Brondocumenten (ReST source) - meer hierover hier
Doeldocumenten (HTML) - meer hierover hier
Site acties - meer hierover hier
een nieuwe naam veld voor wanneer je de bestaande niet wilt gebruiken of wanneer er nog geen bekend is. De betekenis van dit veld is afhankelijk van wat je op een gegeven moment probeert te doen.
daaronder aan de linkerkant een groot tekstveld waarin verschillende soorten gegevens getoond kunnen worden, ook weer afhankelijk van waar je mee bezig bent. Dit correspondeert een beetje met de bovenstaande opsomming:
site settings
ReST source
HTML source
output van (site-brede) acties voor zover die niet in een korte melding vervat kon worden
daarnaast aan de rechterkant (als het scherm breed genoeg is, anders eronder) ruimte voor informatieve tekst. Vanuit mijn eigen workflow vond ik het handig om daar informatie over de mogelijk access keys te laten zien; eerder zat dit in een popover tekst maar dan moest je eerst met de muis naar de "Help on access keys" regel om dat te kunnen zien. In die tijd had ik juist de "help on custom directives" daar open staan terwijl ik dat veel minder gebruik. Die siuatie is terug te zetten door alle "show/hide" knoppen een keer te gebruiken; je kunt dus zelf bepalen welke informatie je daar laat zien. Verder staat er een link naar een lijst met ReST codes en standaard directives.
Tussen de knoppen en het grote tekstveld is ruimte gereserveerd voor een melding, hier verschijnt iets zodra dat aan de orde is.
Als het scherm te breed is komt het tekstveld op een rare plaats. Ik weet nog niet precies wat ik daar aan moet doen maar met de huidige browser layout (tabs aan de zijkant) heb ik daaar geen last van dus geen idee of ik dat op korte termijn ga oplossen.
Werking van de applicatie
Voor het werken met css classes of standaard stukken tekst met desgewenst variabele inhoud kun je de ReST directives feature gebruiken. Een aantal van deze zijn specifiek voor deze applicatie gedefinieerd, deze kunnen ook bekeken worden op het applicatiescherm. Ik had gepland om het mogelijk te maken om eigen site-specifieke directives te kunnen maken, bekijken en wijzigen die in een bestand op de server (of in de database) opgeslagen worden maar dat is voorlopig nog niet mogelijk. Ik heb het ook niet nodig dus het is de vraag of het er van komt.
Het is mogelijk om het data backend voor de applicatie te kiezen; een klein settings file op de server bevat een instelling waarmee gekozen kan worden voor opslag in het bestandssysteem of in een database (MongoDB and PostgreSQL is momenteel mogelijk, misschien maak ik ook nog wel een SQLite variant).
Zoals het nu gebouwd is is dit een applicatie bedoeld om op een lokale webserver (niet over het internet) te draaien; er zijn geen mogelijkheden om plaatjes en dergelijke te uploaden. Ik heb het zo gemaakt dat wanneer je ze in de "mirror" directories zet ze ook in de previews zichtbaar gemaakt kunnen worden. Ik weet nog niet of ik zin heb om het zo te maken dat je hem als een remote applicatie kunt draaien die direct je live server bestanden bijwerk. Momenteel gebruik ik scripts om alleen dat te FTP-en dat ook veranderd is.