summaryrefslogtreecommitdiffstats
path: root/kipi-plugins/htmlexport/THEME_HOWTO
diff options
context:
space:
mode:
Diffstat (limited to 'kipi-plugins/htmlexport/THEME_HOWTO')
-rw-r--r--kipi-plugins/htmlexport/THEME_HOWTO293
1 files changed, 293 insertions, 0 deletions
diff --git a/kipi-plugins/htmlexport/THEME_HOWTO b/kipi-plugins/htmlexport/THEME_HOWTO
new file mode 100644
index 0000000..689b9e5
--- /dev/null
+++ b/kipi-plugins/htmlexport/THEME_HOWTO
@@ -0,0 +1,293 @@
+# HTML Export Plugin Theme Howto
+
+The HTML export plugin can easily be themed to produce very different sites.
+This document explains how to create themes.
+
+*This document can be converted to HTML using
+[Markdown](http://www.daringfireball.net/projects/markdown).*
+
+## Getting started
+
+A theme is a folder which contains at least two files: a desktop file describing
+the theme and a template.xsl file to generate the HTML files.
+
+When the plugin is run it does the following:
+
+- Create an output folder
+- For each image collection:
+ - Create a folder
+ - Generate square thumbnails
+ - Generate full images
+ - Optionally copy original images
+- Copy the theme folder to the output folder
+- Generate an XML file describing the image collections: gallery.xml
+- Generate the HTML files by applying template.xsl to gallery.xml
+
+## Presentation of the desktop file
+
+The desktop file describes the theme. The information it contains is used in the
+theme selection page of the plugin.
+
+It's a .ini-style file and looks like this:
+
+ [Desktop Entry]
+ Name=Hello World
+ Comment=A demonstration theme
+
+ [X-HTMLExport Author]
+ Name=The Author
+ Url=http://example.com/themes/helloworld
+
+We use a desktop file format so that entries can be translated. If you look at
+the desktop file for one of the themes shipped with the plugin, you will find
+something like this:
+
+ [Desktop Entry]
+ Name=Simple
+ Name[br]=Eeun
+ Name[cs]=JednoduchĂ˝
+ Name[cy]=Syml
+ Name[da]=Simpel
+ ...
+
+The nice thing is that when your theme get integrated into HTML export default
+themes, KDE translators will translate the desktop file for you.
+
+## Getting started: creating one theme from another
+
+The easiest way to get started is to copy one theme and modify it. Theme folders
+can be found in $KDEDIR/share/apps/kipiplugin_htmlexport/themes/, where $KDEDIR
+is the install folder of KDE on your machine (usually /usr or /opt/kde3).
+Writing in this folder requires root access, so we will not create our theme
+there, instead do the following:
+
+Create a theme folder in your home:
+
+ mkdir -p ~/.kde/share/apps/kipiplugin_htmlexport/themes/
+
+Cd to it:
+
+ cd ~/.kde/share/apps/kipiplugin_htmlexport/themes/
+
+Copy the "snow" theme to this folder, under a new name: "snow2":
+
+ cp -r $KDEDIR/share/apps/kipiplugin_htmlexport/themes/snow snow2
+
+Rename the desktop file accordingly:
+
+ cd snow2
+ mv snow.desktop snow2.desktop
+
+Edit "snow2.desktop": Remove all the `Name[...]` entries and replace `Name=Snow`
+with `Name=Snow 2`.
+
+You are done, you can now open your favorite KIPI enabled application and start the
+HTML Export plugin, the "Snow 2" theme should appear in the theme list.
+
+## Generating HTML files, template.xsl
+
+The template.xsl file is responsible for generating the HTML files from the
+gallery.xml file.
+
+gallery.xml looks like this:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <collections>
+ <collection>
+ <name>Name of first collection</name>
+ <fileName>collection_folder</fileName>
+ <image>
+ <title>Image Title</title>
+ <description>Image Description</description>
+ <full fileName="pict1279.jpeg" height="450" width="600"/>
+ <thumbnail fileName="thumb_pict1279.jpeg" height="80" width="80"/>
+ <!-- If there is an original image, you will get the 'original' tag -->
+ <original fileName="original_pict1279.jpeg" height="3000" width="4000"/>
+
+ </image>
+ <image>
+ <title>Image Title</title>
+ <description>Image Description</description>
+ <full fileName="pict1280.jpeg" height="450" width="600"/>
+ <thumbnail fileName="thumb_pict1280.jpeg" height="80" width="80"/>
+ <original fileName="original_pict1279.jpeg" height="3000" width="4000"/>
+ </image>
+ ...
+ </collection>
+
+ <collection>
+ <name>Name of second collection</name>
+ ...
+ </collection>
+ </collections>
+
+I won't explain XSLT here, you should be able to find the documentation you
+need on the web. I personally learned XSLT with the [XSLT tutorial from
+w3schools.com][1].
+
+It's worth noting nevertheless that you can make use of [EXSLT][2], a set of
+extensions to XSLT. In particular, the [`exslt:document` element][3] is
+extremely useful because it allows you to generate multiple documents from the
+same file.
+
+HTML Export Plugin imposes no constraint on the organisation of HTML files: you
+can generate one file per image, or only one per collection. One could imagine
+a theme which would only contains one HTML file and uses Javascript to show the
+different images, there is already one theme using frames, you can even
+generate CSS files on the fly if you want to.
+
+[1]: http://www.w3schools/xsl
+[2]: http://www.exslt.org
+[3]: http://www.exslt.org/exsl/elements/document
+
+### About translations
+
+You should not "hardcode" any text in the template, instead you should use the
+"i18n parameters". For example instead of using this:
+
+ <a href="previous">Previous</a>
+ | <a href="next">Next</a>
+
+Do this:
+
+ <a href="previous"><xsl:value-of select="$i18nPrevious"/></a>
+ | <a href="next"><xsl:value-of select="$i18nNext"/></a>
+
+It's quite a lot more verbose, but this way your user will get localized HTML
+output.
+
+If you want to use "i18n parameters" in attributes, do it like this:
+
+ <a href="previous" title="{$i18nPrevious}"><img src="previous.png"/></a>
+ | <a href="next" title="{$i18nNext}"><img src="next.png"/></a>
+
+For now, the available "i18n parameters" are:
+
+- i18nPrevious
+- i18nNext
+- i18nCollectionList
+- i18nOriginalImage
+- i18nUp
+
+*generated from 'grep \"i18n generator.cpp'*
+
+If you need other i18n parameters, let us know.
+
+## Images, CSS files and others
+
+You are free to use images, CSS files or other files in your theme: just put
+them in the theme folder and the plugin will copy them in the output folder.
+
+## Original images
+
+As explained before, if the user selects the option "include original images",
+the gallery.xml file will contain `<original />` tags. If this tag is present,
+the image page should contain a link to download the original image.
+
+Here is an example:
+
+ <xsl:if test="original/@fileName != ''">
+ <p>
+ <a href="{original/@fileName}"><xsl:value-of select="$i18nOriginalImage"/></a>
+ </p>
+ </xsl:if>
+
+## Going further, theme parameters
+
+You might want to provide a way for your user to customize your theme, for
+example you could provide a few alternative CSS files, or let the user
+customize the background color. This is easy to do.
+
+### Declaring a parameter
+
+First, you need to declare your parameter. Edit your desktop file and add
+something like this:
+
+ [X-HTMLExport Parameter bgColor]
+ Name=Background Color
+ Type=color
+ Default=#123456
+
+Now start the plugin and select your theme, after pressing next, you should
+see an option page with a color button initialized to the #123456 color.
+
+### Using the value of a parameter
+
+In template.xsl, you can get the value of your parameter like this:
+
+ <xsl:value-of select="$bgColor"/>
+
+To change the background color of the "body" tag, you would write something
+like this:
+
+ <body bgcolor="{$bgColor}">
+ ...
+ </body>
+
+### Parameter reference
+Here is a more complete description of the way to declare parameters:
+
+A parameter is declared by a section named "X-HTMLExport Parameter someName".
+`someName` should be replaced with the name you want to use in template.xsl.
+
+- The `Name` key defines the text which will be shown in the option page. Since
+this is a desktop file, it can be translated like the other keys.
+- The `Type` key defines the type of the parameter. At the time
+of this writing it can be one of:
+ - string
+ - color
+ - list
+ - int
+- The `Default` key defines the default value of the
+parameter.
+
+#### List parameter keys
+
+A list parameter lets the user select an item from a list. To declare the
+available items, you must use two sets of keys: `Value_N` and `Caption_N`,
+where N is the position of the item, starting from 0.
+
+`Value_N` is the internal value of the item. This is the value which will be
+set to the parameter.
+
+`Caption_N` is the displayed value of the item. This is the text which will
+be shown in the list.
+
+Here is an example: the "style" parameter from the "Simple" theme:
+
+ [X-HTMLExport Parameter style]
+ Name=Style
+ Type=list
+ Default=natural.css
+ Value_0=natural.css
+ Caption_0=Natural
+ Value_1=dark.css
+ Caption_1=Dark
+
+As you can see, the user will be able to choose either "Natural" or "Dark".
+Depending on the user choice, `<xsl:value-of select='$style'/>` will expand to
+either "natural.css" or "dark.css".
+
+#### Int parameter keys
+
+An int parameter lets the user select an integer using a spinbox. In addition
+to the default value, you can define the minimum and maximum values, using the
+`Min` and `Max` keys.
+
+Here is an example:
+
+ [X-HTMLExport Parameter size]
+ Name=Size
+ Type=int
+ Default=12
+ Min=4
+ Max=28
+
+## Final words
+
+This is the end of this howto, now is the time for you to get creative and
+design awesome themes!
+
+When you are done, do not hesitate to contact the kde-imaging mailing
+list (<kde-imaging@kde.org>). If you want to get your theme included in the
+official theme list, we need more themes!