De context menu's worden automatisch gegenereerd uit de structuur die is gedefinieerd in de XML Schema Defenitie (XSD). De screenshot hieronder toont een stukje van de XSD. De XSD bevat definities voor elk element in de Shazzoo editor. In de screenshot zie je bijvoorbeeld de elementen 'column 3' en 'textbox'. Beide elementen fungeren als een container voor andere elementen. Hier voegen we ook de search component aan toe. De groene pijlen laten zien dat de Search component is geplaatst in zowel 'column 3' als 'textbox'. Als we niet willen dat de search component beschikbaar is in de 'Textbox' kunnen we dat gewoon definiëren in de XSD.
Een van de unieke eigenschappen van Shazzoo is de architectuur. Shazzoo gebruikt open standaarden als XML, XSL, XSD en Javascript om een uitzonderlijk WYSIWYG gebaseerd CMS neer te zetten. Shazzoo heeft standaard verschillende out-of-the-box componenten waarmee prachtige pagina's kunnen worden gemaakt in slechts een aantal muis klikken. Het is daarnaast ook mogelijk om maatwerk componenten te maken, die voldoen aan specifieke klant eisen.
Dit artikel geeft een overzicht hoe we Shazzoo hebben uitgebreid met een specifiek component om de site te doorzoeken.
Stap 1: Voeg de nieuwe component toe aan de XSD
Stap 1: Voeg de nieuwe component toe aan de XSD
Stap 2: Definieer de nieuwe component en de bijbehorende eigenschappen in de XSD
Stap 2: Definieer de nieuwe component en de bijbehorende eigenschappen in de XSDNadat de component is opgenomen in de XSD, definiëren we deze component zelf ook in de XSD. De screenshot hieronder toont een gedeelte van de nieuwe zoek component definities. Hier kunnen de eigenschappen van de component zoals data type, selecteerbare waarden, standaardwaarde, verberg regels, input validaties, input vertaling etc. worden vastgelegd.
De syntax van de <conditions> xml is door Shazzoo ontwikkeld. Het ondersteunt simpele tot complexe constructies. De JavaScript-engine maakt gebruik van deze voorwaarden om te valideren of waarden in een component correct zijn ingevoerd.
Stap 3: Maak specifieke labels aan in de taal XML
Stap 3: Maak specifieke labels aan in de taal XMLIn het screenshot bij de vorige stap zagen we component attributen zoals 'search_engine', 'search_google_cseid', 'search_google_ads' etc. en waarden als 'google', 'domino', 'bubblegum' enz. Deze attributen en waarden gebruiken labels om weer te geven in de component eigenschappen van Shazzoo. Shazzoo ondersteunt meerdere talen welke allemaal een eigen vertalingsbestand hebben. Hieronder ziet u een screenshot het Engelse XML-bestand
Stap 4: Definieer de HTML output in de XSL
Stap 4: Definieer de HTML output in de XSLZodra een gebruiker een zoek component invoegt in een web pagina, wordt de data voor deze component in het volgende XML formaat opgeslagen:
<search search_engine="google" search_google_cseid="004016679639382313398:ypn9y8p9yei" search_google_adds="no" search_size="full" search_google_style="MINIMALIST" search_color_borders="e4e6ef" search_color_backgrounds="ffffff" search_color_links="a6bd29" search_color_links_visited="666666" search_color_text="757e82" search_color_url="a6bd29" search_color_result_hovered="e4e6ef" search_maxresults=""></search>
We gebruiken een XML stylesheet (XSL) om deze XML naar XHTML te vertalen zodra de pagina wordt geserveerd. Het bewaren can component data in XML formaat biedt belangrijke voordelen:
- Indien je de HTML voor de component wilt wijzigen, wijzig je de XSL. Alle pagina's waar de component gebruikt wordt zijn vervolgens geactualiseerd.
- Eenvoudige conversie naar nieuwe (X)HTML standaarden zoals HTML5. Wijzig eenvoudigweg de HTML output in de XSL.
- Uitgebreide zoek en vervang opties.
- Uitgrebreide data uitwisselings opties met andere (backend) systemen.
Het screenshot hieronder toont het gedeelte van de XSL, waar onze nieuwe zoek component vertaald wordt naar de correcte HTML.
Stap 5: Definieer de stylen in de CSS
Stap 5: Definieer de stylen in de CSS
Step 6: Indien van toepassing: Creëer JavaScript functies
Step 6: Indien van toepassing: Creëer JavaScript functiesSommige componenten gebruiken javascript voor interactie met de bezoeker. Deze nieuwe search component gebruikt bijvoorbeeld een JavaScript om alle data van en naar de backend server te verwerken, wanneer een gebruiker een full text search op Lotus Domino uitvoert. Nadat een bezoeker een query invoert en op 'Search' klikt zend de Javascript een XML pakketje naar de server:
<formpost type="search" query="reusable content"/>
Een server script verwerkt het verzoek en stuurt de volgende XML response terug naar de client, waar de JavaScript hem weer opvangt en vertaalt naar HTML.
<?xml version="1.0" encoding="UTF-8"?>
<response type="search" path="prd/shazzoo/shazzoo.nsf" hits="2">
<doc>
<title>Reusable content</title>
<stitle>Shazzoo | Content Management, CMS, User Friendly, Google, SEO, Search friendly, WYSIWYG, XML</stitle>
<sd></sd>
<sc>92</sc>
<id>reusablecontent</id>
</doc>
<doc>
<title>Reusable content</title>
<stitle>Shazzoo | Content Management, CMS, User Friendly, Google, SEO, Search friendly, WYSIWYG, XML</stitle>
<sd></sd>
<sc>85</sc>
<id>vwcontentblocks</id>
</doc>
<query>reusable content</query>
</response>
Stap 7: Indien van toepassing: Creëer backend scripts
Stap 7: Indien van toepassing: Creëer backend scriptsIn de vorige stap werd een XML fragment naar de server gestuurd. Een server script verwerkt vervolgens de XML en stuurt in XML formaat een antwoord terug naar de browser. Bij de XML bestanden staat toegelicht in de vorige stap.
Hieronder staan een tweetal screenshots van de server LotusScript waarmee de XML wordt verwerkt en geretourneerd aan de browser. Het is geen probleem als de backend niet Domino is. Een alternatieve server scripting taal (i.e. PHP, ASP etc..) zal dezelfde acties uitvoeren.
Stap 8: Het uiteindelijke resultaat
Stap 8: Het uiteindelijke resultaat







