nearly final coni theme
authorgc <gc>
Tue, 20 May 2008 21:14:15 +0000 (21:14 +0000)
committergc <gc>
Tue, 20 May 2008 21:14:15 +0000 (21:14 +0000)
18 files changed:
data/booh/themes/cardu/metadata/parameters.rb [new file with mode: 0644]
data/booh/themes/cardu/metadata/screenshot-1.png [new file with mode: 0644]
data/booh/themes/cardu/metadata/screenshot-2.png [new file with mode: 0644]
data/booh/themes/cardu/metadata/screenshot-3.png [new file with mode: 0644]
data/booh/themes/cardu/root/booh.css [new file with mode: 0644]
data/booh/themes/cardu/root/booh.js [new file with mode: 0644]
data/booh/themes/cardu/root/first_dark.gif [new file with mode: 0644]
data/booh/themes/cardu/root/first_light.gif [new file with mode: 0644]
data/booh/themes/cardu/root/last_dark.gif [new file with mode: 0644]
data/booh/themes/cardu/root/last_light.gif [new file with mode: 0644]
data/booh/themes/cardu/root/next_dark.gif [new file with mode: 0644]
data/booh/themes/cardu/root/next_light.gif [new file with mode: 0644]
data/booh/themes/cardu/root/previous_dark.gif [new file with mode: 0644]
data/booh/themes/cardu/root/previous_light.gif [new file with mode: 0644]
data/booh/themes/cardu/root/video.png [new file with mode: 0644]
data/booh/themes/cardu/skeleton_image.html [new file with mode: 0644]
data/booh/themes/cardu/skeleton_index.html [new file with mode: 0644]
data/booh/themes/cardu/skeleton_thumbnails.html [new file with mode: 0644]

diff --git a/data/booh/themes/cardu/metadata/parameters.rb b/data/booh/themes/cardu/metadata/parameters.rb
new file mode 100644 (file)
index 0000000..1b5a122
--- /dev/null
@@ -0,0 +1,74 @@
+#
+#                         *  BOOH  *
+#
+# A.k.a `Best web-album Of the world, Or your money back, Humerus'.
+#
+# The acronyn sucks, however this is a tribute to Dragon Ball by
+# Akira Toriyama, where the last enemy beaten by heroes of Dragon
+# Ball is named "Boo". But there was already a free software project
+# called Boo, so this one will be it "Booh". Or whatever.
+#
+#
+# Copyright (c) 2004 Guillaume Cottenceau <gc3 at bluewin.ch>
+#
+# This software may be freely redistributed under the terms of the GNU
+# public license version 2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+bindtextdomain("booh")
+
+#- we often will want to have one size to nicely fit 800x600 screens,
+#- one for 1024x768 and one for 1280x1024
+#- it's necessary to fit according to the typical space taken by
+#- widgets defined in the skeleton of the theme
+#-
+#- ***IMPORTANT***: CHOOSE 4/3 ASPECT RATIO SIZES (for thumbnails)!
+$images_size = [
+    {
+        'name' => 'small',
+        'description' => _("Sizes that should fit browsers in fullscreen for 800x600 screens"),
+        'fullscreen' => '600x331',
+        'thumbnails' => '192x144',
+        'optimizedforwidth' => '800',
+        'optional' => true,
+    },
+    {
+        'name' => 'medium',
+        'description' => _("Sizes that should fit browsers in fullscreen for 1024x768 screens"),
+        'fullscreen' => '758x422',
+        'thumbnails' => '240x180',
+        'optimizedforwidth' => '1024',
+        'default' => true,
+    },
+    {
+        'name' => 'large',
+        'description' => _("Sizes that should fit browsers in fullscreen for 1280x1024 screens"),
+        'fullscreen' => '960x528',
+        'thumbnails' => '309x232',
+        'optimizedforwidth' => '1280',
+    },
+    {
+        'name' => 'x-large',
+        'description' => _("Sizes that should fit browsers in fullscreen for 1400x1050 screens"),
+        'fullscreen' => '1050x576',
+        'thumbnails' => '328x245',
+        'optimizedforwidth' => '1400',
+        'optional' => true,
+    },
+    {
+        'name' => 'xx-large',
+        'description' => _("Sizes that should fit browsers in fullscreen for 1600x1200 screens"),
+        'fullscreen' => '1200x660',
+        'thumbnails' => '375x281',
+        'optimizedforwidth' => '1600',
+        'optional' => true,
+    }
+]
+
+$allowed_N_values = [ 3, 4, 5, 6, 8, 12 ]
+$default_N = 3
+
+$albums_thumbnail_size = '300x225'
diff --git a/data/booh/themes/cardu/metadata/screenshot-1.png b/data/booh/themes/cardu/metadata/screenshot-1.png
new file mode 100644 (file)
index 0000000..d0802d2
Binary files /dev/null and b/data/booh/themes/cardu/metadata/screenshot-1.png differ
diff --git a/data/booh/themes/cardu/metadata/screenshot-2.png b/data/booh/themes/cardu/metadata/screenshot-2.png
new file mode 100644 (file)
index 0000000..010cc63
Binary files /dev/null and b/data/booh/themes/cardu/metadata/screenshot-2.png differ
diff --git a/data/booh/themes/cardu/metadata/screenshot-3.png b/data/booh/themes/cardu/metadata/screenshot-3.png
new file mode 100644 (file)
index 0000000..c145313
Binary files /dev/null and b/data/booh/themes/cardu/metadata/screenshot-3.png differ
diff --git a/data/booh/themes/cardu/root/booh.css b/data/booh/themes/cardu/root/booh.css
new file mode 100644 (file)
index 0000000..0108dab
--- /dev/null
@@ -0,0 +1,124 @@
+body {
+        background-color: darkslategray;
+        color: #000000;
+        font-family: "Bitstream Vera Sans", "Lucida Sans", Geneva, Arial, Helvetica, sans-serif;
+}
+
+a:link {
+        color: #90a0b0;
+        text-decoration: none;
+}
+
+a:visited {
+        color: #90a0b0;
+        text-decoration: none;
+}
+
+a:hover {
+        color: #b0c0d0;
+        text-decoration: underline;
+}
+
+input {
+        border: solid 1px;
+        background-color: #708090;
+}
+
+input:hover {
+        background-color: #E8E8E8;
+}
+
+td {
+        color: white;
+}
+.nothing {
+        border: solid 0px;
+}
+
+.imager_thumbnails {
+        display: table-cell;
+        background-color: #122;
+}
+.imager_thumbnails img {
+        border: 1px solid #a9a9a9;
+        margin: -3px 3px 3px -3px;
+        padding: 3px;
+}
+
+.imager_fullscreen {
+        float: left;
+        background-color: #122;
+}
+.imager_fullscreen img {
+        background-color: #fff;
+        border: 1px solid #a9a9a9;
+        margin: -10px 10px 10px -10px;
+        padding: 9px;
+}
+
+.disabled {
+        font-style: italic;
+}
+.disabled:hover {
+        background-color: #DEDAD6;
+}
+
+
+table.index {
+       width: 100%;
+       padding: 10px;
+       border: 0px solid black;
+}
+
+table.index tr td.image {
+       width: 50%;
+       text-align: right;
+       vertical-align: top;
+}
+
+table.index tr td.caption {
+       width: 50%;
+       text-align: left;
+}
+
+table.footer {
+       width: 100%;
+}
+
+table.footer tr td {
+       font-size: 0.8em;
+}
+
+table.footer tr td.left {
+       text-align: left;
+}
+
+table.footer tr td.right {
+       text-align: right;
+}
+
+table.imgnav tr td.sizes {
+       text-align: center;
+       font-size: 0.7em;
+}
+
+table.image {
+       width: 100%
+}
+
+table.image tr td {
+       text-align: center;
+}
+
+table.image tr td caption {
+       font-size: 1.1em;
+}
+
+table.image tr td caption {
+       font-size: 0.8em;
+
+}
+
+span.img_alb_nav {
+}
+
diff --git a/data/booh/themes/cardu/root/booh.js b/data/booh/themes/cardu/root/booh.js
new file mode 100644 (file)
index 0000000..9005cbb
--- /dev/null
@@ -0,0 +1,389 @@
+var images_ary = new Array();
+var images_loaded = new Array();
+var current = 0;
+var slideshow = 0;
+var slideshow_pause = null;
+var slideshow_timer = null;
+
+for (i = 0; i < images.length; i++) { 
+    /* this array will contain 0 if image not yet loaded, 1 when loading,
+     * 2 when complete */
+    images_loaded[i] = 0;
+}
+
+function dbg(t) {
+    document.getElementById('dbg_text').innerHTML += t + "<br/>";
+}
+
+/* load image, return 1 if image is finished loading */
+function load(i) {
+    if (images_loaded[i] == 0) {
+        images_ary[i] = new Image();
+        images_ary[i].src = images[i];
+        images_loaded[i] = 1;
+    }
+    if (images_loaded[i] == 1) {
+        if (images_ary[i].complete) {
+            images_loaded[i] = 2;
+        } else {
+            return 0;
+        }
+    }
+    return 1;
+}
+
+function getparam(key) {
+    all_params = location.href.split("#")
+    if (all_params.length > 1) {
+        params = all_params[1].split("&");
+        for (i = 0; i < params.length; i++) {
+            keyvalue = params[i].split("=");
+            if (keyvalue[0] == key) {
+                return keyvalue[1];
+            }
+        }
+    }
+    return null;
+}
+
+function loadcurrent(img) {
+    for (i = 0; i < images.length; i++) {
+        if (images[i] == img) {
+            current = i;
+            display_current();
+            return;
+        }
+    }
+    current = 0;
+    display_current();
+}
+
+function browser_href() {
+    all = location.href.split("/");
+    return all[all.length - 1];
+}
+
+/* check URL for changes; allows the URL to reflect currently showed image */
+var currentURL = '';
+function checkURL() {
+    if (currentURL == 'ignore1') {
+        // do nothing
+    } else if (currentURL == 'ignore2') {
+        currentURL = browser_href();
+    } else {
+        href = browser_href();
+        if (href != currentURL) {
+            currentURL = href;
+            img = getparam('current');
+            loadcurrent(img);
+        }
+    }
+    setTimeout("checkURL()", 50);
+}
+
+function preload() { 
+
+    /* favor current image, if user clicked on `last' or something */
+    load(current);
+
+    /* don't blindly preload all images at the beginning,
+     * but rather load them one by one, in order to get
+     * next ones faster, beginning with next to current
+     */
+    if (current + 1 < images.length && load(current + 1) == 0) {
+        setTimeout("preload()", 50);
+        return;
+    }
+    if (current - 1 >= 0 && load(current - 1) == 0) {
+        setTimeout("preload()", 50);
+        return;
+    }
+
+    for (i = current + 2; i < images.length && i <= current + 5; i++) { 
+        if (load(i) == 0) {
+            setTimeout("preload()", 50);
+            return;
+        }
+    }
+    for (i = current - 2; i >= current - 3; i--) { 
+        if (i >= 0) {
+            if (load(i) == 0) {
+                setTimeout("preload()", 50);
+                return;
+            }
+        }
+    }
+
+    setTimeout("preload()", 50);
+}
+
+function add_cookie(val) {
+    var expires = new Date(new Date().getTime() + (30 * 86400000));  // 30 days
+    document.cookie = val
+                      + '; expires=' + expires.toGMTString()
+                      + '; path=/';
+}
+
+function get_cookie(key) {
+    if (document.cookie) {
+        var index = document.cookie.indexOf(key);
+        if (index != -1) {
+            var oleft = (document.cookie.indexOf('=', index) + 1);
+            var oright = document.cookie.indexOf(';', index);
+            if (oright == -1) {
+                oright = document.cookie.length;
+            }
+            return document.cookie.substring(oleft, oright);
+        }
+    }
+    return null;
+}
+
+function init() {
+
+
+    preferred_pause = get_cookie('booh-slideshow-pause-' + dbltilda_theme);
+    if (preferred_pause != null) {
+        document.getElementById('secs').value = preferred_pause;
+    }
+
+    if (getparam('run_slideshow')) {
+        toggle_slideshow();
+    }
+
+    checkURL();
+
+    preload();
+
+    if (images.length == 1) {
+        document.getElementById("b_slideshow").disabled = true;
+        document.getElementById("b_slideshow").setAttribute("class", "disabled");
+    }
+
+    if (navigator.userAgent.indexOf('Opera') == -1) {
+        document.onkeydown = keyDownEvent;
+    }
+}
+
+function change_basename(input, newend) {
+    position = input.lastIndexOf('/');
+    if (position == -1) {
+        return newend;
+    } else {
+        return input.substring(0, position + 1).concat(newend);
+    }
+}
+
+function update_sensibilities() {
+    if (current == 0) {
+        document.getElementById("img_first").src = change_basename(document.getElementById("img_first").src, 'first_dark.gif');
+        document.getElementById("img_previous").src = change_basename(document.getElementById("img_previous").src, 'previous_dark.gif');
+    } else {
+        document.getElementById("img_first").src = change_basename(document.getElementById("img_first").src, 'first_light.gif');
+        document.getElementById("img_previous").src = change_basename(document.getElementById("img_previous").src, 'previous_light.gif');
+    }
+
+    if (current == images.length - 1) {
+        document.getElementById("img_next").src = change_basename(document.getElementById("img_next").src, 'next_dark.gif');
+        document.getElementById("img_last").src = change_basename(document.getElementById("img_last").src, 'last_dark.gif');
+    } else {
+        document.getElementById("img_next").src = change_basename(document.getElementById("img_next").src, 'next_light.gif');
+        document.getElementById("img_last").src = change_basename(document.getElementById("img_last").src, 'last_light.gif');
+    }
+}
+
+function set_cursor_(value, element) {
+
+    if (!element || !element.style) {
+        return;
+    }
+
+    element.style.cursor = value;
+
+    children = element.childNodes;
+    for (i = 0; i < children.length; i++) {
+        set_cursor_(value, children.item[i]);
+    }
+}
+
+function set_cursor(value) {
+    set_cursor_(value, document.getElementById('body'));
+}
+
+function show_current_text() {
+    /* don't show text if image not yet loaded because navigator
+     * won't refresh it during load */
+    if (images_loaded[current] == 2) {
+        document.getElementById('image_counter').innerHTML = ( current + 1 ) + "/" + images.length;
+        document.getElementById('main_text').innerHTML = captions[current];
+        for (i = 0; i < other_sizes.length; i++) { 
+            if (other_sizes[i] == "original") {
+                document.getElementById('link' + other_sizes[i]).href = eval("images_" + other_sizes[i] + "[current]");
+            } else {
+                document.getElementById('link' + other_sizes[i]).href = 'image-' + other_sizes[i] + dbltilda_htmlsuffix + '#current=' + eval("images_" + other_sizes[i] + "[current]");
+            }
+        }
+        document.getElementById('thumbnails').href = 'thumbnails-' + dbltilda_current_size + '-' + thumbnailspages[current] + dbltilda_htmlsuffix + '#' + images[current];
+        set_cursor("default");
+    } else {
+        setTimeout("show_current_text()", 50);
+        set_cursor("wait");
+    }
+}
+
+function display_current() {
+    document.main_img.src = images[current];
+    oldhref = browser_href();
+    newhref = 'image-' + dbltilda_current_size + dbltilda_htmlsuffix + '#current=' + images[current];
+    if (oldhref != newhref) {
+        currentURL = 'ignore1';
+        location.href = newhref;
+        currentURL = 'ignore2';
+    }
+    show_current_text();
+    update_sensibilities();
+}
+
+function first() {
+    if (slideshow == 1) {
+        toggle_slideshow(true);
+    }
+    
+    current = 0;
+    display_current();
+}
+
+function next() {
+    if (slideshow == 1) {
+        toggle_slideshow(true);
+    }
+
+    if (current < images.length - 1) {
+        current++;
+        display_current();
+    }
+}
+
+function next10() {
+    if (slideshow == 1) {
+        toggle_slideshow(true);
+    }
+
+    if (current < images.length - 11) {
+        current += 10;
+    } else {
+        current = images.length - 1;
+    }
+    display_current();
+}
+
+function previous() {
+    if (slideshow == 1) {
+        toggle_slideshow(true);
+    }
+
+    if (current > 0) {
+        current--;
+        display_current();
+    }
+}
+
+function previous10() {
+    if (slideshow == 1) {
+        toggle_slideshow(true);
+    }
+
+    if (current > 10) {
+        current -= 10;
+    } else {
+        current = 0;
+    }
+    display_current();
+}
+
+function last() {
+    if (slideshow == 1) {
+        toggle_slideshow(true);
+    }
+
+    current = images.length - 1;
+    display_current();
+}
+
+function keyDownEvent(key) {
+    if (!key) {
+        key = event;
+        key.which = key.keyCode;
+    }
+    if (key.altKey || key.ctrlKey || key.shiftKey) {
+        return;
+    }
+    switch (key.which) {
+      case 36: // home
+        first();
+        break;
+      case 35: // end
+        last();
+        break;
+      case 37: // left
+        previous();
+        break;
+      case 39: // right
+        next();
+        break;
+      case 38: // up
+        previous10();
+        break;
+      case 40: // down
+        next10();
+        break;
+    }
+}
+
+function toggle_slideshow(now) {
+    if (slideshow == 0) {
+        slideshow_pause = document.getElementById('secs').value;
+        add_cookie('booh-slideshow-pause-' + dbltilda_theme + '=' + slideshow_pause)
+        document.getElementById("b_slideshow").value = dbltilda_stop_slideshow;
+        slideshow = 1;
+        if (current == images.length - 1) {
+            current = -1;
+        }
+        if (now) {
+            run_slideshow();
+        } else {
+            setTimeout("run_slideshow()", slideshow_pause * 1000);
+        }
+    } else {
+        clearTimeout(slideshow_timer);
+        document.getElementById("b_slideshow").value = dbltilda_run_slideshow;
+        slideshow = 0;
+    }
+}
+
+function run_slideshow() {
+    if (slideshow == 0) {
+        return;
+    }
+
+    if (images_loaded[current + 1] == 2) {
+        current++;
+        display_current();
+        slideshow_timer = setTimeout("run_slideshow()", slideshow_pause * 1000);
+    } else {
+        slideshow_timer = setTimeout("run_slideshow()", 50);
+    }
+
+    if (current == images.length - 1) {
+        toggle_slideshow(true);
+    }
+}
+
+function set_preferred_size(val) {
+    var expires = new Date(new Date().getTime() + (30 * 86400000));  // 30 days
+    document.cookie = 'booh-preferred-size-' + dbltilda_theme + '='
+                      + val
+                      + '; expires=' + expires.toGMTString()
+                      + '; path=/';
+}
+
diff --git a/data/booh/themes/cardu/root/first_dark.gif b/data/booh/themes/cardu/root/first_dark.gif
new file mode 100644 (file)
index 0000000..47efad5
Binary files /dev/null and b/data/booh/themes/cardu/root/first_dark.gif differ
diff --git a/data/booh/themes/cardu/root/first_light.gif b/data/booh/themes/cardu/root/first_light.gif
new file mode 100644 (file)
index 0000000..813ee97
Binary files /dev/null and b/data/booh/themes/cardu/root/first_light.gif differ
diff --git a/data/booh/themes/cardu/root/last_dark.gif b/data/booh/themes/cardu/root/last_dark.gif
new file mode 100644 (file)
index 0000000..91387a0
Binary files /dev/null and b/data/booh/themes/cardu/root/last_dark.gif differ
diff --git a/data/booh/themes/cardu/root/last_light.gif b/data/booh/themes/cardu/root/last_light.gif
new file mode 100644 (file)
index 0000000..27161c7
Binary files /dev/null and b/data/booh/themes/cardu/root/last_light.gif differ
diff --git a/data/booh/themes/cardu/root/next_dark.gif b/data/booh/themes/cardu/root/next_dark.gif
new file mode 100644 (file)
index 0000000..47f6a56
Binary files /dev/null and b/data/booh/themes/cardu/root/next_dark.gif differ
diff --git a/data/booh/themes/cardu/root/next_light.gif b/data/booh/themes/cardu/root/next_light.gif
new file mode 100644 (file)
index 0000000..56f0902
Binary files /dev/null and b/data/booh/themes/cardu/root/next_light.gif differ
diff --git a/data/booh/themes/cardu/root/previous_dark.gif b/data/booh/themes/cardu/root/previous_dark.gif
new file mode 100644 (file)
index 0000000..6811578
Binary files /dev/null and b/data/booh/themes/cardu/root/previous_dark.gif differ
diff --git a/data/booh/themes/cardu/root/previous_light.gif b/data/booh/themes/cardu/root/previous_light.gif
new file mode 100644 (file)
index 0000000..83cb37c
Binary files /dev/null and b/data/booh/themes/cardu/root/previous_light.gif differ
diff --git a/data/booh/themes/cardu/root/video.png b/data/booh/themes/cardu/root/video.png
new file mode 100644 (file)
index 0000000..109b259
Binary files /dev/null and b/data/booh/themes/cardu/root/video.png differ
diff --git a/data/booh/themes/cardu/skeleton_image.html b/data/booh/themes/cardu/skeleton_image.html
new file mode 100644 (file)
index 0000000..61f9747
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+    <title>~~title~~</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    <meta name="author" content="'Simple' theme - Guillaume Cottenceau"/>
+    ~~~image_head_code~~~
+    <script type="text/javascript" src="~~pathtobase~~booh.js"/>
+    <link rel="stylesheet" type="text/css" href="~~pathtobase~~booh.css" media="screen" />
+</head>
+
+<body ~~~body_additions~~~>
+
+<table class='imgnav'>
+  <tr>
+    <td width="20%">&nbsp;</td>
+    <td width="1%">
+      <form action="fake">
+        <img src="~~pathtobase~~first_dark.gif" alt="first" onclick="first()" id="img_first"/>
+      </form>
+    </td>
+    <td width="3%">&nbsp;</td>
+    <td width="1%">
+      <form action="fake">
+        <img src="~~pathtobase~~previous_dark.gif" alt="previous" onclick="previous()" id="img_previous"/>
+      </form>
+    </td>
+    <td class='sizes'>
+      ~~sizes~~ | ~~
+      <br/>
+      <font size="-1">~~previous_album~~ ~~ifprevious_album?~~|~~fi~~ ~~thumbnails~~ ~~ifnext_album?~~|~~fi~~ ~~next_album~~</font>
+    </td>
+    <td width="1%">
+      <form action="fake">
+        <img src="~~pathtobase~~next_dark.gif" alt="next" onclick="next()" id="img_next"/>
+      </form>
+    </td>
+    <td width="3%">&nbsp;</td>
+    <td width="1%">
+      <form action="fake">
+        <img src="~~pathtobase~~last_dark.gif" alt="last" onclick="last()" id="img_last"/>
+      </form>
+    </td>
+    <td width="20%">&nbsp;</td>
+  </tr>
+</table>
+<table align="center">
+ <!-- <p id="dbg_text">&nbsp;</p> -->
+  <tr>
+    <td align="center" colspan="9">
+      <br/>
+      <div class="imager_fullscreen">
+        ~~~image~~~
+      </div>
+    </td>
+  </tr>
+</table>
+<table align="center">
+<tr>
+    <td align="center" colspan="9">
+        <b><font size="+1" color="#ffff99" ~~~caption_additions~~~>&nbsp;</font></b>
+        <br/>
+        <font size="-2" ~~~image_counter_additions~~~>&nbsp;</font>
+        <hr width="100%"/>
+    </td>
+</tr>
+
+  <tr>
+    <td colspan="9" align="center">
+        ~~~button_slideshow~~~
+        ~~~pause_slideshow~~~
+    </td>
+  </tr>
+</table>
+
+<table class='footer'>
+  <tr>
+    <td class='left'>~~indexlink~~</td>
+    <td class='right'>~~madewith~~</td>
+  </tr>
+</table>  
+
+</body>
+</html>
diff --git a/data/booh/themes/cardu/skeleton_index.html b/data/booh/themes/cardu/skeleton_index.html
new file mode 100644 (file)
index 0000000..9638958
--- /dev/null
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+    <title>~~title~~</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    <meta name="author" content="'Simple' theme - Guillaume Cottenceau"/>
+    ~~~index_head_code~~~
+    <link rel="stylesheet" type="text/css" href="~~pathtobase~~booh.css" media="screen" />
+</head>
+
+<body ~~~body_additions~~~>
+
+~~ifnavigation?~~<p>~~navigation~~</p>~~fi~~
+
+<p align="center" id="title"><font size="+3" color="#ffb">~~title~~</font></p>
+
+<table class='index'>
+~~iterate1_open~~
+<tr>
+    <td class='image'>
+       ~~image_iteration~~
+    </td>
+    <td class='caption'>
+       <p>~~caption_iteration~~</p>
+    </td>
+</tr>
+<tr><td>&nbsp;</td></tr>
+~~iterate1_close~~
+</table>
+
+<table class='footer'>
+  <tr>
+    <td class='left'>~~indexlink~~</td>
+    <td class='right'>~~madewith~~</td>
+  </tr>
+</table>  
+
+</body>
+</html>
diff --git a/data/booh/themes/cardu/skeleton_thumbnails.html b/data/booh/themes/cardu/skeleton_thumbnails.html
new file mode 100644 (file)
index 0000000..4d1d114
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+    <title>~~title~~</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    <meta name="author" content="'Simple' theme - Guillaume Cottenceau"/>
+    ~~~thumbnails_head_code~~~
+    <link rel="stylesheet" type="text/css" href="~~pathtobase~~booh.css" media="screen" />
+</head>
+
+<body>
+
+~~ifnavigation?~~<p>~~navigation~~</p>~~fi~~
+
+<p align="center">
+    <font size="+3" color="#ffb">~~title~~</font>
+    <br/>
+    <font size="-2">~~sizes~~ | ~~</font>
+    <br/>
+    <br/>
+    ~~run_slideshow~~
+</p>
+
+~~ifmultiplepages?~~<p align="center"><font size="-1">~~multiplepagesstuff~~</font></p>~~fi~~
+
+<table width="100%">
+~~iterate1_open~~
+<tr>
+    ~~iterate2_open_maxN~~
+    <td align="center" valign="top" ~~colspan~~>
+      <br/>
+        <div class="imager_thumbnails">
+          ~~image_iteration~~
+        </div>
+       ~~ifvideo?~~<img src="~~pathtobase~~video.png" alt="video" class="nothing"/>~~fi~~ ~~caption_iteration~~
+    </td>
+    ~~iterate2_close~~
+</tr>
+~~iterate1_close~~
+</table>
+
+~~ifmultiplepages?~~<p align="center"><font size="+1">~~multiplepagesstuff~~</font></p>~~fi~~
+
+<p align="center">~~previous_album~~ ~~ifprevious_album?~~|~~fi~~ ~~return_to_albums~~ ~~ifnext_album?~~|~~fi~~ ~~next_album~~</p>
+
+<table class='footer'>
+  <tr>
+    <td class='left'>~~indexlink~~</td>
+    <td class='right'>~~madewith~~</td>
+  </tr>
+</table>  
+
+</body>
+</html>