aboutsummaryrefslogtreecommitdiffstats
path: root/BSF/template/yoga
diff options
context:
space:
mode:
authorvdigital <vdigital@piwigo.org>2008-05-23 21:05:41 +0000
committervdigital <vdigital@piwigo.org>2008-05-23 21:05:41 +0000
commit77fd1f51a3c5f5a52f72ef8a299fe368228e2285 (patch)
treea67ede42904657ccf3349ecdaef1cec8b8e36ff8 /BSF/template/yoga
parent553727dffacc48e8337c1d141f2a25af359e74b1 (diff)
git-svn-id: http://piwigo.org/svn/trunk@2357 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to '')
-rw-r--r--BSF/template/yoga/about.tpl19
-rw-r--r--BSF/template/yoga/admin.tpl103
-rw-r--r--BSF/template/yoga/admin/advanced_feature.tpl13
-rw-r--r--BSF/template/yoga/admin/cat_list.tpl65
-rw-r--r--BSF/template/yoga/admin/cat_modify.tpl229
-rw-r--r--BSF/template/yoga/admin/cat_move.tpl38
-rw-r--r--BSF/template/yoga/admin/cat_options.tpl16
-rw-r--r--BSF/template/yoga/admin/cat_perm.tpl68
-rw-r--r--BSF/template/yoga/admin/check_integrity.tpl84
-rw-r--r--BSF/template/yoga/admin/comments.tpl33
-rw-r--r--BSF/template/yoga/admin/configuration.tpl179
-rw-r--r--BSF/template/yoga/admin/default-layout.css245
-rw-r--r--BSF/template/yoga/admin/double_select.tpl20
-rw-r--r--BSF/template/yoga/admin/element_set_global.tpl190
-rw-r--r--BSF/template/yoga/admin/element_set_unit.tpl93
-rw-r--r--BSF/template/yoga/admin/group_list.tpl46
-rw-r--r--BSF/template/yoga/admin/group_perm.tpl8
-rw-r--r--BSF/template/yoga/admin/history.tpl151
-rw-r--r--BSF/template/yoga/admin/index.php30
-rw-r--r--BSF/template/yoga/admin/intro.tpl46
-rw-r--r--BSF/template/yoga/admin/maintenance.tpl25
-rw-r--r--BSF/template/yoga/admin/notification_by_mail.tpl124
-rw-r--r--BSF/template/yoga/admin/permalinks.tpl70
-rw-r--r--BSF/template/yoga/admin/picture_modify.tpl190
-rw-r--r--BSF/template/yoga/admin/plugins_list.tpl51
-rw-r--r--BSF/template/yoga/admin/plugins_new.tpl37
-rw-r--r--BSF/template/yoga/admin/plugins_update.tpl71
-rw-r--r--BSF/template/yoga/admin/profile.tpl6
-rw-r--r--BSF/template/yoga/admin/rating.tpl64
-rw-r--r--BSF/template/yoga/admin/site_manager.tpl73
-rw-r--r--BSF/template/yoga/admin/site_update.tpl109
-rw-r--r--BSF/template/yoga/admin/stats.tpl38
-rw-r--r--BSF/template/yoga/admin/tabsheet.tpl8
-rw-r--r--BSF/template/yoga/admin/tags.tpl54
-rw-r--r--BSF/template/yoga/admin/thumbnail.tpl123
-rw-r--r--BSF/template/yoga/admin/upload.tpl53
-rw-r--r--BSF/template/yoga/admin/user_list.tpl312
-rw-r--r--BSF/template/yoga/admin/user_perm.tpl23
-rw-r--r--BSF/template/yoga/admin/ws_checker.tpl218
-rw-r--r--BSF/template/yoga/comments.tpl99
-rw-r--r--BSF/template/yoga/content.css241
-rw-r--r--BSF/template/yoga/default-colors.css112
-rw-r--r--BSF/template/yoga/default-layout.css270
-rw-r--r--BSF/template/yoga/fix-ie5-ie6.css23
-rw-r--r--BSF/template/yoga/fix-ie7.css22
-rw-r--r--BSF/template/yoga/fix-khtml.css20
-rw-r--r--BSF/template/yoga/footer.tpl32
-rw-r--r--BSF/template/yoga/header.tpl84
-rw-r--r--BSF/template/yoga/icon/add_tag.pngbin0 -> 59 bytes
-rw-r--r--BSF/template/yoga/icon/admin/errors.pngbin0 -> 3249 bytes
-rw-r--r--BSF/template/yoga/icon/admin/index.php30
-rw-r--r--BSF/template/yoga/icon/admin/infos.pngbin0 -> 2250 bytes
-rw-r--r--BSF/template/yoga/icon/admin/plugin_active.gifbin0 -> 108 bytes
-rw-r--r--BSF/template/yoga/icon/admin/plugin_inactive.gifbin0 -> 107 bytes
-rw-r--r--BSF/template/yoga/icon/caddie_add.pngbin0 -> 1186 bytes
-rw-r--r--BSF/template/yoga/icon/calendar.pngbin0 -> 844 bytes
-rw-r--r--BSF/template/yoga/icon/calendar_created.pngbin0 -> 1230 bytes
-rw-r--r--BSF/template/yoga/icon/category_children.pngbin0 -> 1554 bytes
-rw-r--r--BSF/template/yoga/icon/category_delete.pngbin0 -> 1752 bytes
-rw-r--r--BSF/template/yoga/icon/category_edit.pngbin0 -> 1606 bytes
-rw-r--r--BSF/template/yoga/icon/category_elements.pngbin0 -> 1681 bytes
-rw-r--r--BSF/template/yoga/icon/category_jump-to.pngbin0 -> 1604 bytes
-rw-r--r--BSF/template/yoga/icon/category_permissions.pngbin0 -> 1839 bytes
-rw-r--r--BSF/template/yoga/icon/category_representant_random.pngbin0 -> 3171 bytes
-rw-r--r--BSF/template/yoga/icon/check.pngbin0 -> 367 bytes
-rw-r--r--BSF/template/yoga/icon/dec_period.pngbin0 -> 1230 bytes
-rw-r--r--BSF/template/yoga/icon/dec_period_unactive.pngbin0 -> 1042 bytes
-rw-r--r--BSF/template/yoga/icon/del_favorite.pngbin0 -> 1424 bytes
-rw-r--r--BSF/template/yoga/icon/delete.pngbin0 -> 778 bytes
-rw-r--r--BSF/template/yoga/icon/edit_s.pngbin0 -> 585 bytes
-rw-r--r--BSF/template/yoga/icon/exit.pngbin0 -> 1432 bytes
-rw-r--r--BSF/template/yoga/icon/favorite.pngbin0 -> 1457 bytes
-rw-r--r--BSF/template/yoga/icon/first.pngbin0 -> 1645 bytes
-rw-r--r--BSF/template/yoga/icon/first_unactive.pngbin0 -> 1573 bytes
-rw-r--r--BSF/template/yoga/icon/flat.pngbin0 -> 754 bytes
-rw-r--r--BSF/template/yoga/icon/help.pngbin0 -> 1994 bytes
-rw-r--r--BSF/template/yoga/icon/home.pngbin0 -> 1591 bytes
-rw-r--r--BSF/template/yoga/icon/inc_period.pngbin0 -> 1209 bytes
-rw-r--r--BSF/template/yoga/icon/inc_period_unactive.pngbin0 -> 1039 bytes
-rw-r--r--BSF/template/yoga/icon/index.php30
-rw-r--r--BSF/template/yoga/icon/last.pngbin0 -> 1642 bytes
-rw-r--r--BSF/template/yoga/icon/last_unactive.pngbin0 -> 1556 bytes
-rw-r--r--BSF/template/yoga/icon/left.pngbin0 -> 1644 bytes
-rw-r--r--BSF/template/yoga/icon/left_unactive.pngbin0 -> 1574 bytes
-rw-r--r--BSF/template/yoga/icon/lost_password.pngbin0 -> 1717 bytes
-rw-r--r--BSF/template/yoga/icon/metadata.pngbin0 -> 1520 bytes
-rw-r--r--BSF/template/yoga/icon/mimetypes/avi.pngbin0 -> 4284 bytes
-rw-r--r--BSF/template/yoga/icon/mimetypes/index.php30
-rw-r--r--BSF/template/yoga/icon/mimetypes/mp3.pngbin0 -> 3902 bytes
-rw-r--r--BSF/template/yoga/icon/mimetypes/mpg.pngbin0 -> 4271 bytes
-rw-r--r--BSF/template/yoga/icon/mimetypes/ogg.pngbin0 -> 4063 bytes
-rw-r--r--BSF/template/yoga/icon/mimetypes/zip.pngbin0 -> 3721 bytes
-rw-r--r--BSF/template/yoga/icon/normal_mode.pngbin0 -> 360 bytes
-rw-r--r--BSF/template/yoga/icon/note.pngbin0 -> 1862 bytes
-rw-r--r--BSF/template/yoga/icon/page_end.pngbin0 -> 536 bytes
-rw-r--r--BSF/template/yoga/icon/page_top.pngbin0 -> 555 bytes
-rw-r--r--BSF/template/yoga/icon/pause.pngbin0 -> 1597 bytes
-rw-r--r--BSF/template/yoga/icon/permissions.pngbin0 -> 729 bytes
-rw-r--r--BSF/template/yoga/icon/play.pngbin0 -> 1568 bytes
-rw-r--r--BSF/template/yoga/icon/preferences.pngbin0 -> 1606 bytes
-rw-r--r--BSF/template/yoga/icon/rating-stars.gifbin0 -> 251 bytes
-rw-r--r--BSF/template/yoga/icon/recent.pngbin0 -> 757 bytes
-rw-r--r--BSF/template/yoga/icon/recent_by_child.pngbin0 -> 738 bytes
-rw-r--r--BSF/template/yoga/icon/register.pngbin0 -> 1445 bytes
-rw-r--r--BSF/template/yoga/icon/remove_s.pngbin0 -> 451 bytes
-rw-r--r--BSF/template/yoga/icon/representative.pngbin0 -> 1556 bytes
-rw-r--r--BSF/template/yoga/icon/right.pngbin0 -> 1661 bytes
-rw-r--r--BSF/template/yoga/icon/right_unactive.pngbin0 -> 1556 bytes
-rw-r--r--BSF/template/yoga/icon/save.pngbin0 -> 961 bytes
-rw-r--r--BSF/template/yoga/icon/search_rules.pngbin0 -> 1509 bytes
-rw-r--r--BSF/template/yoga/icon/start_filter.pngbin0 -> 1064 bytes
-rw-r--r--BSF/template/yoga/icon/start_repeat.pngbin0 -> 1691 bytes
-rw-r--r--BSF/template/yoga/icon/start_slideshow.pngbin0 -> 1344 bytes
-rw-r--r--BSF/template/yoga/icon/stop_filter.pngbin0 -> 1083 bytes
-rw-r--r--BSF/template/yoga/icon/stop_repeat.pngbin0 -> 1683 bytes
-rw-r--r--BSF/template/yoga/icon/stop_slideshow.pngbin0 -> 1149 bytes
-rw-r--r--BSF/template/yoga/icon/sync_metadata.pngbin0 -> 1797 bytes
-rw-r--r--BSF/template/yoga/icon/toggle_is_default_group.pngbin0 -> 571 bytes
-rw-r--r--BSF/template/yoga/icon/uncheck.pngbin0 -> 213 bytes
-rw-r--r--BSF/template/yoga/icon/up.pngbin0 -> 1641 bytes
-rw-r--r--BSF/template/yoga/icon/validate_s.pngbin0 -> 315 bytes
-rw-r--r--BSF/template/yoga/icon/virt_category.pngbin0 -> 796 bytes
-rw-r--r--BSF/template/yoga/identification.tpl71
-rw-r--r--BSF/template/yoga/index.php30
-rw-r--r--BSF/template/yoga/index.tpl119
-rw-r--r--BSF/template/yoga/install.tpl255
-rw-r--r--BSF/template/yoga/layout.css15
-rw-r--r--BSF/template/yoga/mail/index.php30
-rw-r--r--BSF/template/yoga/mail/text/html/admin/cat_group_info.tpl9
-rw-r--r--BSF/template/yoga/mail/text/html/admin/index.php30
-rw-r--r--BSF/template/yoga/mail/text/html/admin/notification_by_mail.tpl57
-rw-r--r--BSF/template/yoga/mail/text/html/footer.tpl20
-rw-r--r--BSF/template/yoga/mail/text/html/global-mail-css.tpl12
-rw-r--r--BSF/template/yoga/mail/text/html/header.tpl19
-rw-r--r--BSF/template/yoga/mail/text/html/images/footer-bg.pngbin0 -> 15656 bytes
-rw-r--r--BSF/template/yoga/mail/text/html/images/header-bg.pngbin0 -> 30525 bytes
-rw-r--r--BSF/template/yoga/mail/text/html/images/index.php30
-rw-r--r--BSF/template/yoga/mail/text/html/images/mailbody-bg.pngbin0 -> 924 bytes
-rw-r--r--BSF/template/yoga/mail/text/html/index.php30
-rw-r--r--BSF/template/yoga/mail/text/index.php30
-rw-r--r--BSF/template/yoga/mail/text/plain/admin/cat_group_info.tpl9
-rw-r--r--BSF/template/yoga/mail/text/plain/admin/index.php30
-rw-r--r--BSF/template/yoga/mail/text/plain/admin/notification_by_mail.tpl42
-rw-r--r--BSF/template/yoga/mail/text/plain/footer.tpl4
-rw-r--r--BSF/template/yoga/mail/text/plain/header.tpl4
-rw-r--r--BSF/template/yoga/mail/text/plain/index.php30
-rw-r--r--BSF/template/yoga/mainpage_categories.tpl27
-rw-r--r--BSF/template/yoga/menubar.css149
-rw-r--r--BSF/template/yoga/menubar.tpl165
-rw-r--r--BSF/template/yoga/month_calendar.tpl70
-rw-r--r--BSF/template/yoga/nbm.tpl31
-rw-r--r--BSF/template/yoga/not-ie.css24
-rw-r--r--BSF/template/yoga/notification.tpl15
-rw-r--r--BSF/template/yoga/password.tpl54
-rw-r--r--BSF/template/yoga/picture.css143
-rw-r--r--BSF/template/yoga/picture.tpl230
-rw-r--r--BSF/template/yoga/picture_content.tpl9
-rw-r--r--BSF/template/yoga/picture_nav_buttons.tpl103
-rw-r--r--BSF/template/yoga/popuphelp.tpl6
-rw-r--r--BSF/template/yoga/print.css14
-rw-r--r--BSF/template/yoga/profile.tpl22
-rw-r--r--BSF/template/yoga/profile_content.tpl109
-rw-r--r--BSF/template/yoga/rating.js90
-rw-r--r--BSF/template/yoga/redirect.tpl3
-rw-r--r--BSF/template/yoga/register.tpl69
-rw-r--r--BSF/template/yoga/search.tpl126
-rw-r--r--BSF/template/yoga/search_rules.tpl56
-rw-r--r--BSF/template/yoga/slideshow.tpl23
-rw-r--r--BSF/template/yoga/tags.tpl19
-rw-r--r--BSF/template/yoga/theme/admin/images/bottom-left-bg.pngbin0 -> 22748 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/content-bg.pngbin0 -> 170 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/header_bottom.pngbin0 -> 190 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/index.php54
-rw-r--r--BSF/template/yoga/theme/admin/images/internal_onglet.pngbin0 -> 239 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/list-hover.pngbin0 -> 273 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/list-image.pngbin0 -> 279 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/menubar-bg.jpgbin0 -> 694 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/menubar-bg.pngbin0 -> 165 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/menubar-bottom.pngbin0 -> 275 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/menubar-detail.pngbin0 -> 196 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/menubar-top.pngbin0 -> 375 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/onglet_actif.pngbin0 -> 1168 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/onglet_actif_transp.pngbin0 -> 1456 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/onglet_inactif.pngbin0 -> 1250 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/onglet_inactif_transp.pngbin0 -> 1498 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/piwigo_logo_sombre_214x100.pngbin0 -> 12154 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/pre-menubar-bg.pngbin0 -> 720 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/tableh1_bg.pngbin0 -> 150 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/tableh2_bg.pngbin0 -> 141 bytes
-rw-r--r--BSF/template/yoga/theme/admin/images/top-left-bg.pngbin0 -> 54307 bytes
-rw-r--r--BSF/template/yoga/theme/admin/index.php54
-rw-r--r--BSF/template/yoga/theme/admin/mail-css.tpl19
-rw-r--r--BSF/template/yoga/theme/admin/theme.css468
-rw-r--r--BSF/template/yoga/theme/admin/themeconf.inc.php72
-rw-r--r--BSF/template/yoga/theme/clear/index.php30
-rw-r--r--BSF/template/yoga/theme/clear/mail-css.tpl13
-rw-r--r--BSF/template/yoga/theme/clear/theme.css94
-rw-r--r--BSF/template/yoga/theme/clear/themeconf.inc.php11
-rw-r--r--BSF/template/yoga/theme/dark/images/index.php30
-rw-r--r--BSF/template/yoga/theme/dark/images/tableh1_bg.pngbin0 -> 271 bytes
-rw-r--r--BSF/template/yoga/theme/dark/images/tableh2_bg.pngbin0 -> 307 bytes
-rw-r--r--BSF/template/yoga/theme/dark/index.php30
-rw-r--r--BSF/template/yoga/theme/dark/mail-css.tpl13
-rw-r--r--BSF/template/yoga/theme/dark/theme.css92
-rw-r--r--BSF/template/yoga/theme/dark/themeconf.inc.php11
-rw-r--r--BSF/template/yoga/theme/index.php30
-rw-r--r--BSF/template/yoga/theme/p0w0/images/button-bg.pngbin0 -> 233 bytes
-rw-r--r--BSF/template/yoga/theme/p0w0/images/index.php30
-rw-r--r--BSF/template/yoga/theme/p0w0/index.php30
-rw-r--r--BSF/template/yoga/theme/p0w0/mail-css.tpl12
-rw-r--r--BSF/template/yoga/theme/p0w0/theme.css269
-rw-r--r--BSF/template/yoga/theme/p0w0/themeconf.inc.php11
-rw-r--r--BSF/template/yoga/theme/wipi/images/index.php30
-rw-r--r--BSF/template/yoga/theme/wipi/images/tableh1_bg.pngbin0 -> 142 bytes
-rw-r--r--BSF/template/yoga/theme/wipi/images/tableh2_bg.pngbin0 -> 141 bytes
-rw-r--r--BSF/template/yoga/theme/wipi/index.php30
-rw-r--r--BSF/template/yoga/theme/wipi/mail-css.tpl19
-rw-r--r--BSF/template/yoga/theme/wipi/theme.css322
-rw-r--r--BSF/template/yoga/theme/wipi/themeconf.inc.php16
-rw-r--r--BSF/template/yoga/thumbnails-fix-ie5-ie6.css27
-rw-r--r--BSF/template/yoga/thumbnails.css60
-rw-r--r--BSF/template/yoga/thumbnails.tpl38
-rw-r--r--BSF/template/yoga/upgrade.tpl44
-rw-r--r--BSF/template/yoga/upload.tpl110
224 files changed, 8820 insertions, 0 deletions
diff --git a/BSF/template/yoga/about.tpl b/BSF/template/yoga/about.tpl
new file mode 100644
index 000000000..62b51839d
--- /dev/null
+++ b/BSF/template/yoga/about.tpl
@@ -0,0 +1,19 @@
+{* $Id$ *}
+<div id="content" class="content">
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li>
+ <a href="{$U_HOME}" title="{'return to homepage'|@translate}">
+ <img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>
+ </a>
+ </li>
+ </ul>
+ <h2>{'About'|@translate}</h2>
+ </div>
+ <ul>
+ {$ABOUT_MESSAGE}
+ {if isset($THEME_ABOUT) }
+ <li>{$THEME_ABOUT}</li>
+ {/if}
+ </ul>
+</div>
diff --git a/BSF/template/yoga/admin.tpl b/BSF/template/yoga/admin.tpl
new file mode 100644
index 000000000..188888951
--- /dev/null
+++ b/BSF/template/yoga/admin.tpl
@@ -0,0 +1,103 @@
+{* $Id$ *}
+<div id="post-header"></div>
+<div id="menubar">
+ <dl>
+ <dt class="rdion">{'Links'|@translate}</dt>
+ <dd>
+ <ul>
+ <li><a href="{$U_RETURN}">{'home'|@translate}</a></li>
+ <li><a href="{$U_FAQ}">{'instructions'|@translate}</a></li>
+ <li><a href="{$U_ADMIN}" title="{'hint_admin'|@translate}">{'admin'|@translate}</a></li>
+ </ul>
+ </dd>
+ </dl>
+ <dl>
+ <dt class="rdion">{'config'|@translate}</dt>
+ <dd>
+ <ul>
+ <li><a href="{$U_CONFIG_GENERAL}">{'conf_general'|@translate}</a></li>
+ <li><a href="{$U_CONFIG_DISPLAY}">{'conf_display'|@translate}</a></li>
+ </ul>
+ </dd>
+ </dl>
+ <dl>
+ <dt class="rdion">{'Categories'|@translate}</dt>
+ <dd>
+ <ul>
+ <li><a href="{$U_SITE_MANAGER}">{'Site manager'|@translate}</a></li>
+ <li><a href="{$U_CAT_UPDATE}">{'update'|@translate}</a><br />&nbsp;</li>
+ <li><a href="{$U_CATEGORIES}">{'manage'|@translate}</a></li>
+ <li><a href="{$U_MOVE}">{'Move'|@translate}</a></li>
+ <li><a href="{$U_CAT_OPTIONS}">{'cat_options_title'|@translate}</a></li>
+ <li><a href="{$U_PERMALINKS}">{'Permalinks'|@translate}</a></li>
+ </ul>
+ </dd>
+ </dl>
+ <dl>
+ <dt class="rdion">{'Pictures'|@translate}</dt>
+ <dd>
+ <ul>
+ <li><a href="{$U_WAITING}">{'waiting'|@translate}</a></li>
+ <li><a href="{$U_THUMBNAILS}">{'thumbnails'|@translate}</a></li>
+ <li><a href="{$U_RATING}">{'Rating'|@translate}</a></li>
+ <li><a href="{$U_TAGS}">{'Tags'|@translate}</a></li>
+ <li><a href="{$U_CADDIE}">{'Caddie'|@translate}</a></li>
+ </ul>
+ </dd>
+ </dl>
+ <dl>
+ <dt class="rdion">{'identification'|@translate}</dt>
+ <dd>
+ <ul>
+ <li><a href="{$U_USERS}">{'users'|@translate}</a></li>
+ <li><a href="{$U_GROUPS}">{'groups'|@translate}</a></li>
+ <li><a href="{$U_NOTIFICATION_BY_MAIL}">{'nbm_item_notification'|@translate}</a></li>
+ </ul>
+ </dd>
+ </dl>
+ <dl>
+ <dt class="rdion">{'special_admin_menu'|@translate}</dt>
+ <dd>
+ <ul>
+ <li><a href="{$U_HISTORY_STAT}">{'History'|@translate}</a></li>
+ <li><a href="{$U_MAINTENANCE}">{'Maintenance'|@translate}</a></li>
+ <li><a href="{$U_ADVANCED_FEATURE}">{'Advanced_features'|@translate}</a></li>
+ {if isset($U_WS_CHECKER) }
+ <li><a href="{$U_WS_CHECKER}">{'web_services'|@translate}</a></li>
+ {/if}
+ <li>
+ {'Plugins'|@translate}
+ <ul>
+{foreach from=$plugin_menu_items item=menu_item}
+ <li><a href="{$menu_item.URL}">{$menu_item.NAME}</a></li>
+{/foreach}
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ </dl>
+</div> <!-- menubar -->
+
+<div id="content" class="content">
+ {if isset($errors)}
+ <div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+ {if isset($infos)}
+ <div class="infos">
+ <ul>
+ {foreach from=$infos item=info}
+ <li>{$info}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+ {$ADMIN_CONTENT}
+</div>
diff --git a/BSF/template/yoga/admin/advanced_feature.tpl b/BSF/template/yoga/admin/advanced_feature.tpl
new file mode 100644
index 000000000..128428ba1
--- /dev/null
+++ b/BSF/template/yoga/admin/advanced_feature.tpl
@@ -0,0 +1,13 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'Advanced_features'|@translate}</h2>
+</div>
+
+<ul>
+ {foreach from=$advanced_features item=feature}
+ <li><a href="{$feature.URL}" {$TAG_INPUT_ENABLED}>{$feature.CAPTION}</a></li>
+ {/foreach}
+</ul>
diff --git a/BSF/template/yoga/admin/cat_list.tpl b/BSF/template/yoga/admin/cat_list.tpl
new file mode 100644
index 000000000..b408a5a50
--- /dev/null
+++ b/BSF/template/yoga/admin/cat_list.tpl
@@ -0,0 +1,65 @@
+{* $Id$ *}
+<h2>{'title_categories'|@translate}</h2>
+
+<h3>{$CATEGORIES_NAV}</h3>
+
+<form id="addVirtual" action="{$F_ACTION}" method="post">
+ <p>
+ {'cat_add'|@translate} : <input type="text" name="virtual_name" />
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submitAdd" {$TAG_INPUT_ENABLED} />
+ {if count($categories)>9 }
+ <a href="#EoP" class="button"><img src="{$themeconf.icon_dir}/page_end.png" class="button" alt="page_end" /></a>
+ {/if}
+ </p>
+</form>
+
+{if count($categories) }
+<form id="categoryOrdering" action="{$F_ACTION}" method="post">
+ <p>
+ <input class="submit" name="submitOrder" type="submit" value="{'Save order'|@translate}" {$TAG_INPUT_ENABLED} />
+ <input class="submit" name="submitOrderAlphaNum" type="submit" value="{'Order alphanumerically'|@translate}" {$TAG_INPUT_ENABLED} />
+ </p>
+ <ul class="categoryUl">
+
+ {foreach from=$categories item=category}
+ <li class="categoryLi{if $category.IS_VIRTUAL} virtual_cat{/if}">
+ <!-- category {$category.ID} -->
+ <ul class="categoryActions">
+ <li><a href="{$category.U_JUMPTO}" title="{'jump to category'|@translate}"><img src="{$themeconf.icon_dir}/category_jump-to.png" class="button" alt="{'jump to category'|@translate}" /></a></li>
+ <li><a href="{$category.U_EDIT}" title="{'edit category informations'|@translate}"><img src="{$themeconf.icon_dir}/category_edit.png" class="button" alt="{'edit'|@translate}"/></a></li>
+ {if isset($category.U_MANAGE_ELEMENTS) }
+ <li><a href="{$category.U_MANAGE_ELEMENTS}" title="{'manage category elements'|@translate}"><img src="{$themeconf.icon_dir}/category_elements.png" class="button" alt="{'elements'|@translate}" /></a></li>
+ {/if}
+ <li><a href="{$category.U_CHILDREN}" title="{'manage sub-categories'|@translate}"><img src="{$themeconf.icon_dir}/category_children.png" class="button" alt="{'sub-categories'|@translate}" /></a></li>
+ {if isset($category.U_MANAGE_PERMISSIONS) }
+ <li><a href="{$category.U_MANAGE_PERMISSIONS}" title="{'edit category permissions'|@translate}" ><img src="{$themeconf.icon_dir}/category_permissions.png" class="button" alt="{'permissions'|@translate}" /></a></li>
+ {/if}
+ {if isset($category.U_DELETE) }
+ <li><a href="{$category.U_DELETE}" title="{'delete category'|@translate}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');"><img src="{$themeconf.icon_dir}/category_delete.png" class="button" alt="{'delete'|@translate}" /></a></li>
+ {/if}
+ </ul>
+
+ <p>
+ <strong><a href="{$category.U_CHILDREN}" title="{'manage sub-categories'|@translate}">{$category.NAME}</a></strong>
+ {if $category.IS_VIRTUAL}
+ <img src="{$themeconf.icon_dir}/virt_category.png" class="button" alt="{'virtual_category'|@translate}" />
+ {/if}
+ </p>
+
+ <p>
+ <label>
+ {'Position'|@translate} :
+ <input type="text" size="4" name="catOrd[{$category.ID}]" maxlength="4" value="{$category.RANK}" />
+ </label>
+ </p>
+
+ </li>
+ {/foreach}
+ </ul>
+ <p>
+ <input class="submit" name="submitOrder" type="submit" value="{'Save order'|@translate}" {$TAG_INPUT_ENABLED} />
+ <input class="submit" name="submitOrderAlphaNum" type="submit" value="{'Order alphanumerically'|@translate}" {$TAG_INPUT_ENABLED} />
+ </p>
+
+</form>
+{/if}
diff --git a/BSF/template/yoga/admin/cat_modify.tpl b/BSF/template/yoga/admin/cat_modify.tpl
new file mode 100644
index 000000000..88e07e329
--- /dev/null
+++ b/BSF/template/yoga/admin/cat_modify.tpl
@@ -0,0 +1,229 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'title_edit_cat'|@translate}</h2>
+</div>
+
+<h3>{$CATEGORIES_NAV}</h3>
+
+<ul class="categoryActions">
+ <li><a href="{$U_JUMPTO}" title="{'jump to category'|@translate}"><img src="{$themeconf.icon_dir}/category_jump-to.png" class="button" alt="{'jump to category'|@translate}" /></a></li>
+ {if isset($U_MANAGE_ELEMENTS) }
+ <li><a href="{$U_MANAGE_ELEMENTS}" title="{'manage category elements'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_elements.png" class="button" alt="{'elements'|@translate}" /></a></li>
+ {/if}
+ <li><a href="{$U_CHILDREN}" title="{'manage sub-categories'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_children.png" class="button" alt="{'sub-categories'|@translate}" /></a></li>
+ {if isset($U_MANAGE_PERMISSIONS) }
+ <li><a href="{$U_MANAGE_PERMISSIONS}" title="{'edit category permissions'|@translate}" ><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_permissions.png" class="button" alt="{'permissions'|@translate}" /></a></li>
+ {/if}
+ {if isset($U_DELETE) }
+ <li><a href="{$U_DELETE}" title="{'delete category'|@translate}" onclick="return confirm('{'Are you sure?'|@translate|@escape:'javascript'}');"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_delete.png" class="button" alt="{'delete'|@translate}" /></a></li>
+ {/if}
+</ul>
+
+<form action="{$F_ACTION}" method="POST" id="catModify">
+
+<fieldset>
+ <legend>{'Informations'|@translate}</legend>
+ <table>
+
+ {if isset($CAT_FULL_DIR) }
+ <tr>
+ <td><strong>{'storage'|@translate}</strong></td>
+ <td class="row1">{$CAT_FULL_DIR}</td>
+ </tr>
+ {/if}
+
+ <tr>
+ <td><strong>{'name'|@translate}</strong></td>
+ <td>
+ <input type="text" name="name" value="{$CAT_NAME}" maxlength="60"/>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>{'description'|@translate}</strong></td>
+ <td>
+ <textarea cols="50" rows="5" name="comment" class="description">{$CAT_COMMENT}</textarea>
+ </td>
+ </tr>
+ </table>
+</fieldset>
+
+{if isset($move_cat_options) }
+<fieldset id="move">
+ <legend>{'Move'|@translate}</legend>
+ {'Parent category'|@translate}
+ <select class="categoryDropDown" name="parent">
+ <option value="0">------------</option>
+ {html_options options=$move_cat_options selected=$move_cat_options_selected }
+ </select>
+</fieldset>
+{/if}
+
+<fieldset id="options">
+ <legend>{'Options'|@translate}</legend>
+ <table>
+ <tr>
+ <td><strong>{'conf_access'|@translate}</strong>
+ <td>
+ {html_radios name='status' values=$status_values output=$status_values|translate selected=$CAT_STATUS}
+ </td>
+ </tr>
+ <tr>
+ <td><strong>{'lock'|@translate}</strong>
+ <td>
+ {html_radios name='visible' values='false,true'|@explode output='No,Yes'|@explode|translate selected=$CAT_VISIBLE}
+ </td>
+ </tr>
+ <tr>
+ <td><strong>{'comments'|@translate}</strong>
+ <td>
+ {html_radios name='commentable' values='false,true'|@explode output='No,Yes'|@explode|translate selected=$CAT_COMMENTABLE}
+ </td>
+ </tr>
+ {if isset($SHOW_UPLOADABLE) }
+ <tr>
+ <td><strong>{'editcat_uploadable'|@translate}</strong>
+ <td>
+ {html_radios name='uploadable' values='false,true'|@explode output='No,Yes'|@explode|translate selected=$CAT_UPLOADABLE}
+ </td>
+ </tr>
+ {/if}
+ </table>
+</fieldset>
+
+<fieldset id="image_order">
+ <legend>{'Sort order'|@translate}</legend>
+ <input type="checkbox" name="image_order_default" id="image_order_default" {$IMG_ORDER_DEFAULT} />
+ <label for="image_order_default">{'Use default sort order'|@translate}</label>
+ <br/>
+ <input type="checkbox" name="image_order_subcats" id="image_order_subcats" />
+ <label for="image_order_subcats">{'Apply to subcategories'|@translate}</label>
+ <br/>
+
+ {foreach from=$image_orders item=order}
+ <select name="order_field_{$order.ID}">
+ {html_options options=$image_order_field_options selected=$order.FIELD }}
+ </select>
+ <select name="order_direction_{$order.ID}">
+ {html_options options=$image_order_direction_options selected=$order.DIRECTION }}
+ </select><br/>
+ {/foreach}
+
+</fieldset>
+
+<p style="text-align:center;">
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="reset" />
+</p>
+
+{if isset($representant) }
+<fieldset id="representant">
+ <legend>{'Representant'|@translate}</legend>
+ <table>
+ <tr>
+ <td align="center">
+ {if isset($representant.picture) }
+ <a href="{$representant.picture.URL}"><img src="{$representant.picture.SRC}" alt="" class="miniature" /></a>
+ {else}
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/category_representant_random.png" class="button" alt="{'Random picture'|@translate}" class="miniature" />
+ {/if}
+ </td>
+ <td>
+ {if $representant.ALLOW_SET_RANDOM }
+ <p><input class="submit" type="submit" name="set_random_representant" value="{'cat_representant'|@translate}" {$TAG_INPUT_ENABLED}/></p>
+ {/if}
+
+ {if isset($representant.ALLOW_DELETE) }
+ <p><input class="submit" type="submit" name="delete_representant" value="{'Delete Representant'|@translate}" /></p>
+ {/if}
+ </td>
+ </tr>
+ </table>
+</fieldset>
+{/if}
+
+</form>
+
+<form action="{$F_ACTION}" method="POST" id="links">
+
+<fieldset id="linkAllNew">
+ <legend>{'Link all category elements to a new category'|@translate}</legend>
+
+ <table>
+ <tr>
+ <td>{'Virtual category name'|@translate}</td>
+ <td><input type="text" name="virtual_name"></td>
+ </tr>
+
+ <tr>
+ <td>{'Parent category'|@translate}</td>
+ <td>
+ <select class="categoryDropDown" name="parent">
+ <option value="0">------------</option>
+ {html_options options=$create_new_parent_options }
+ </select>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submitAdd" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="reset" />
+ </p>
+
+</fieldset>
+
+<fieldset id="linkAllExist">
+ <legend>{'Link all category elements to some existing categories'|@translate}</legend>
+
+ <table>
+ <tr>
+ <td>{'Categories'|@translate}</td>
+ <td>
+ <select class="categoryList" name="destinations[]" multiple="multiple" size="5">
+ {html_options options=$category_destination_options }
+ </select>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submitDestinations" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="reset" />
+ </p>
+
+</fieldset>
+
+{if isset($group_mail_options)}
+<fieldset id="emailCatInfo">
+ <legend>{'Send an information email to group members'|@translate}</legend>
+
+ <table>
+ <tr>
+ <td><strong>{'Group'|@translate}</strong></td>
+ <td>
+ <select name="group">
+ {html_options options=$group_mail_options}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>{'mail_content'|@translate}</strong></td>
+ <td>
+ <textarea cols="50" rows="5" name="mail_content" class="description">{$MAIL_CONTENT}</textarea>
+ </td>
+ </tr>
+
+ </table>
+
+ <p>
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submitEmail" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="reset" />
+ </p>
+
+</fieldset>
+{/if}
+
+</form>
diff --git a/BSF/template/yoga/admin/cat_move.tpl b/BSF/template/yoga/admin/cat_move.tpl
new file mode 100644
index 000000000..318a025ab
--- /dev/null
+++ b/BSF/template/yoga/admin/cat_move.tpl
@@ -0,0 +1,38 @@
+{* $Id$ *}
+
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'Move categories'|@translate}</h2>
+</div>
+
+<form method="post" action="{$F_ACTION}" class="filter" id="catMove">
+ <fieldset>
+ <legend>{'Virtual categories movement'|@translate}</legend>
+
+ <label>
+ {'Virtual categories to move'|@translate}
+
+ <select class="categoryList" name="selection[]" multiple="multiple">
+ {html_options options=$category_to_move_options}
+ </select>
+ </label>
+
+ <label>
+ {'New parent category'|@translate}
+
+ <select class="categoryDropDown" name="parent">
+ <option value="0">------------</option>
+ {html_options options=$category_parent_options}
+ </select>
+ </label>
+
+ </fieldset>
+
+ <p>
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}>
+ <input class="submit" type="reset" name="reset" value="{'Reset'|@translate}">
+ </p>
+
+</form>
diff --git a/BSF/template/yoga/admin/cat_options.tpl b/BSF/template/yoga/admin/cat_options.tpl
new file mode 100644
index 000000000..f9087648a
--- /dev/null
+++ b/BSF/template/yoga/admin/cat_options.tpl
@@ -0,0 +1,16 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'cat_options_title'|@translate} {$TABSHEET_TITLE}</h2>
+ {$TABSHEET}
+</div>
+
+<form method="post" action="{$F_ACTION}" id="cat_options">
+ <fieldset>
+ <legend>{$L_SECTION}</legend>
+ {$DOUBLE_SELECT}
+ </fieldset>
+</form>
+
diff --git a/BSF/template/yoga/admin/cat_perm.tpl b/BSF/template/yoga/admin/cat_perm.tpl
new file mode 100644
index 000000000..857448112
--- /dev/null
+++ b/BSF/template/yoga/admin/cat_perm.tpl
@@ -0,0 +1,68 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'Manage permissions for a category'|@translate}</h2>
+</div>
+
+<h3>{$CATEGORIES_NAV}</h3>
+
+<form action="{$F_ACTION}" method="post" id="categoryPermissions">
+
+ <h4>{'Groups'|@translate}</h4>
+
+ <fieldset>
+ <legend>{'Permission granted'|@translate}</legend>
+ <ul>
+ {foreach from=$group_granted_ids item=id}
+ <li><label><input type="checkbox" name="deny_groups[]" value="{$id}" /> {$all_groups[$id]}</label></li>
+ {/foreach}
+ </ul>
+ <input class="submit" type="submit" name="deny_groups_submit" value="{'Deny selected groups'|@translate}" {$TAG_INPUT_ENABLED}/>
+ </fieldset>
+
+ <fieldset>
+ <legend>{'Permission denied'|@translate}</legend>
+ <ul>
+ {foreach from=$group_denied_ids item=id}
+ <li><label><input type="checkbox" name="grant_groups[]" value="{$id}"> {$all_groups[$id]}</label></li>
+ {/foreach}
+ </ul>
+ <input class="submit" type="submit" name="grant_groups_submit" value="{'Grant selected groups'|@translate}" {$TAG_INPUT_ENABLED}/>
+ </fieldset>
+
+ <h4>{'Users'|@translate}</h4>
+
+ <fieldset>
+ <legend>{'Permission granted'|@translate}</legend>
+ <ul>
+ {foreach from=$user_granted_direct_ids item=id}
+ <li><label><input type="checkbox" name="deny_users[]" value="{$id}" /> {$all_users[$id]}</label></li>
+ {/foreach}
+ </ul>
+ <input class="submit" type="submit" name="deny_users_submit" value="{'Deny selected users'|@translate}" {$TAG_INPUT_ENABLED}/>
+ </fieldset>
+
+ <fieldset>
+ <legend>{'Permission granted thanks to a group'|@translate}</legend>
+ {if isset($user_granted_indirects) }
+ <ul>
+ {foreach from=$user_granted_indirects item=user_group}
+ <li>{$user_group.USER} ({$user_group.GROUP})</li>
+ {/foreach}
+ </ul>
+ {/if}
+ </fieldset>
+
+ <fieldset>
+ <legend>{'Permission denied'|@translate}</legend>
+ <ul>
+ {foreach from=$user_denied_ids item=id}
+ <li><label><input type="checkbox" name="grant_users[]" value="{$id}"> {$all_users[$id]}</label></li>
+ {/foreach}
+ </ul>
+ <input class="submit" type="submit" name="grant_users_submit" value="{'Grant selected users'|@translate}" {$TAG_INPUT_ENABLED}/>
+ </fieldset>
+
+</form>
diff --git a/BSF/template/yoga/admin/check_integrity.tpl b/BSF/template/yoga/admin/check_integrity.tpl
new file mode 100644
index 000000000..1783e69e2
--- /dev/null
+++ b/BSF/template/yoga/admin/check_integrity.tpl
@@ -0,0 +1,84 @@
+{* $Id$ *}
+<dl>
+ <dt>{'c13y_title'|@translate}</dt>
+ <dd>
+ <ul>
+ <form method="post" name="c13y" id="c13y" action="{$F_C13Y_ACTION}">
+ <fieldset>
+ <table class="table2">
+ <tr class="throw">
+ <th></th>
+ <th>{'c13y_Anomaly'|@translate}</th>
+ <th>{'c13y_Correction'|@translate}</th>
+ </tr>
+ {if isset($c13y_list)}
+ {foreach from=$c13y_list item=c13y name=c13y_loop}
+ <tr class="{if $smarty.foreach.c13y_loop.index is odd}row1{else}row2{/if}">
+ <td>
+ {if $c13y.can_select}
+ <input type="checkbox" name="c13y_selection[]" value="{$c13y.id}" id="c13y_selection-{$c13y.id}" /><label for="c13y_selection-{$c13y.id}"></label>
+ {/if}
+ </td>
+ <td><label for="c13y_selection-{$c13y.id}">{$c13y.anomaly}</label></td>
+ <td>
+ <label for="c13y_selection-{$c13y.id}">
+ {if $c13y.show_ignore_msg}
+ {'c13y_ignore_msg1'|@translate}
+ <br />
+ {'c13y_ignore_msg2'|@translate}
+ {/if}
+ {if $c13y.show_correction_fct}
+ {'c13y_Automatic_correction'|@translate}
+ {/if}
+ {if $c13y.show_correction_bad_fct}
+ {'c13y_Impossible_automatic_correction'|@translate}
+ {/if}
+ {if $c13y.show_correction_success_fct}
+ {'c13y_Correction_applied_success'|@translate}
+ {/if}
+ {if !empty($c13y.correction_error_fct)}
+ {'c13y_Correction_applied_error'|@translate}
+ <br />
+ {$c13y.c13y.correction_error_fct}
+ {/if}
+ {if !empty($c13y.correction_msg)}
+ {if $c13y.show_correction_success_fct or !empty($c13y.correction_error_fct) or $c13y.show_correction_fct or $c13y.show_correction_bad_fct }
+ <br />
+ {/if}
+ {$c13y.correction_msg|@nl2br}
+ {/if}
+ </label>
+ </td>
+ </tr>
+ {/foreach}
+ {/if}
+ </table>
+
+ <p>
+ {if $c13y_show_submit_ignore}
+ <a href="#" onclick="SelectAll(document.getElementById('c13y')); return false;">{'Check all'|@translate}</a>
+ / <a href="#" onclick="DeselectAll(document.getElementById('c13y')); return false;">{'Uncheck all'|@translate}</a>
+ {/if}
+ {if isset($c13y_do_check)}
+ / <a href="#" onclick="DeselectAll(document.getElementById('c13y'));
+ {foreach from=$c13y_do_check item=ID}
+ document.getElementById('c13y_selection-{$ID}').checked = true;
+ {/foreach}
+ return false;">{'c13y_check_auto'|@translate}</a>
+ {/if}
+ </p>
+
+ <p>
+ {if $c13y_show_submit_automatic_correction}
+ <input class="submit" type="submit" value="{'c13y_submit_correction'|@translate}" name="c13y_submit_correction" {$TAG_INPUT_ENABLED} />
+ {/if}
+ {if $c13y_show_submit_ignore}
+ <input class="submit" type="submit" value="{'c13y_submit_ignore'|@translate}" name="c13y_submit_ignore" {$TAG_INPUT_ENABLED} />
+ {/if}
+ <input class="submit" type="submit" value="{'c13y_submit_refresh'|@translate}" name="c13y_submit_refresh" />
+ </p>
+
+ </fieldset>
+ </form>
+ </ul>
+ </dd>
diff --git a/BSF/template/yoga/admin/comments.tpl b/BSF/template/yoga/admin/comments.tpl
new file mode 100644
index 000000000..84b1677c6
--- /dev/null
+++ b/BSF/template/yoga/admin/comments.tpl
@@ -0,0 +1,33 @@
+{* $Id$ *}
+<div class="titrePage">
+ <h2>{'waiting'|@translate} {$TABSHEET_TITLE}</h2>
+ {$TABSHEET}
+</div>
+
+<h3>{'User comments validation'|@translate}</h3>
+
+{if !empty($comments) }
+<form method="post" action="{$F_ACTION}">
+
+ {foreach from=$comments item=comment}
+ <div class="comment">
+ <a class="illustration" href="{$comment.U_PICTURE}"><img src="{$comment.TN_SRC}" /></a>
+ <p class="commentHeader"><strong>{$comment.AUTHOR}</strong> - <em>{$comment.DATE}</em></p>
+ <blockquote>{$comment.CONTENT}</blockquote>
+ <ul class="actions">
+ <li><label><input type="radio" name="action-{$comment.ID}" value="reject" />{'Reject'|@translate}</label></li>
+ <li><label><input type="radio" name="action-{$comment.ID}" value="validate" />{'Validate'|@translate}</label></li>
+ </ul>
+ </div>
+ {/foreach}
+
+ <p class="bottomButtons">
+ <input type="hidden" name="list" value="{$LIST}" />
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="submit" name="validate-all" value="{'Validate All'|@translate}" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="submit" name="reject-all" value="{'Reject All'|@translate}" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" />
+ </p>
+
+</form>
+{/if} \ No newline at end of file
diff --git a/BSF/template/yoga/admin/configuration.tpl b/BSF/template/yoga/admin/configuration.tpl
new file mode 100644
index 000000000..04d8c7855
--- /dev/null
+++ b/BSF/template/yoga/admin/configuration.tpl
@@ -0,0 +1,179 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'title_configuration'|@translate} {$TABSHEET_TITLE}</h2>
+ {$TABSHEET}
+</div>
+
+<form method="post" action="{$F_ACTION}" class="properties">
+
+{if isset($main)}
+<fieldset id="mainConf">
+ <ul>
+ <li>
+ <span class="property">
+ <label for="gallery_title">{'Gallery title'|@translate}</label>
+ </span>
+ <input type="text" maxlength="255" size="50" name="gallery_title" id="gallery_title" value="{$main.CONF_GALLERY_TITLE}" />
+ </li>
+
+ <li>
+ <span class="property">
+ <label for="page_banner">{'Page banner'|@translate}</label>
+ </span>
+ <textarea class="description" name="page_banner" id="page_banner">{$main.CONF_PAGE_BANNER}</textarea>
+ </li>
+
+ <li>
+ <span class="property">
+ <label for="gallery_url">{'Gallery URL'|@translate}</label>
+ </span>
+ <input type="text" maxlength="255" size="50" name="gallery_url" id="gallery_url" value="{$main.CONF_GALLERY_URL}" />
+ </li>
+ </ul>
+</fieldset>
+
+<fieldset id="mainConfCheck">
+ <ul>
+
+ <li>
+ <label>
+ <span class="property">{'Lock gallery'|@translate}</span>
+ <input type="checkbox" name="gallery_locked" {if ($main.gallery_locked)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ <li>
+ <label>
+ <span class="property">{'Rating'|@translate}</span>
+ <input type="checkbox" name="rate" {if ($main.rate)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ <li>
+ <label>
+ <span class="property">{'Rating by guests'|@translate}</span>
+ <input type="checkbox" name="rate_anonymous" {if ($main.rate_anonymous)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ <li>
+ <label>
+ <span class="property">{'Allow user registration'|@translate}</span>
+ <input type="checkbox" name="allow_user_registration" {if ($main.allow_user_registration)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ <li>
+ <label>
+ <span class="property">{'obligatory_user_mail_address'|@translate}</span>
+ <input type="checkbox" name="obligatory_user_mail_address" {if ($main.obligatory_user_mail_address)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ <li>
+ <label>
+ <span class="property">{'Email administrators when a new user registers'|@translate}</span>
+ <input type="checkbox" name="email_admin_on_new_user" {if ($main.email_admin_on_new_user)}checked="checked"{/if} />
+ </label>
+ </li>
+ </ul>
+</fieldset>
+{/if}
+
+{if isset($history)}
+<fieldset id="historyConf">
+ <ul>
+ <li>
+ <label><span class="property">{'conf_history_guest'|@translate}</span><input type="checkbox" name="history_guest" {if ($history.history_guest)}checked="checked"{/if} /></label>
+ </li>
+
+ <li>
+ <label><span class="property">{'conf_history_user'|@translate}</span><input type="checkbox" name="log" {if ($history.log)}checked="checked"{/if} /></label>
+ </li>
+
+ <li>
+ <label><span class="property">{'conf_history_admin'|@translate}</span><input type="checkbox" name="history_admin" {if ($history.history_admin)}checked="checked"{/if} /></label>
+ </li>
+ </ul>
+</fieldset>
+{/if}
+
+
+{if isset($comments)}
+<fieldset id="commentsConf">
+ <ul>
+ <li>
+ <label>
+ <span class="property">{'Comments for all'|@translate}</span>
+ <input type="checkbox" name="comments_forall" {if ($comments.comments_forall)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ <li>
+ <span class="property">
+ <label for="nb_comment_page">{'Number of comments per page'|@translate}</label>
+ </span>
+ <input type="text" size="3" maxlength="4" name="nb_comment_page" id="nb_comment_page" value="{$comments.NB_COMMENTS_PAGE}" />
+ </li>
+
+ <li>
+ <label>
+ <span class="property">{'Validation'|@translate}</span>
+ <input type="checkbox" name="comments_validation" {if ($comments.comments_validation)}checked="checked"{/if} />
+ </label>
+ </li>
+
+
+ <li>
+ <label>
+ <span class="property">{'Email administrators when a valid comment is entered'|@translate}</span>
+ <input type="checkbox" name="email_admin_on_comment" {if ($comments.email_admin_on_comment)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ <li>
+ <label>
+ <span class="property">{'Email administrators when a comment requires validation'|@translate}</span>
+ <input type="checkbox" name="email_admin_on_comment_validation" {if ($comments.email_admin_on_comment_validation)}checked="checked"{/if} />
+ </label>
+ </li>
+
+ </ul>
+</fieldset>
+{/if}
+
+{if isset($upload)}
+<fieldset id="uploadConf">
+ <ul>
+ <li>
+ <label><span class="property">{'Show upload link every time'|@translate}</span>
+ <input type="checkbox" name="upload_link_everytime" {if ($upload.upload_link_everytime)}checked="checked"{/if} /></label>
+ </li>
+ <li>
+ <label><span class="property">{'User access level to upload'|@translate}</span>
+ {html_options name="upload_user_access" options=$upload.upload_user_access_options selected=$upload.upload_user_access_options_selected}
+ </li>
+ <li>
+ <label>
+ <span class="property">{'Email administrators when a picture is uploaded'|@translate}</span>
+ <input type="checkbox" name="email_admin_on_picture_uploaded" {if ($upload.email_admin_on_picture_uploaded)}checked="checked"{/if} />
+ </label>
+ </li>
+ </ul>
+</fieldset>
+{/if}
+
+{if isset($default)}
+{$PROFILE_CONTENT}
+{/if}
+
+{if !isset($default)}
+ <p>
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}>
+ <input class="submit" type="reset" name="reset" value="{'Reset'|@translate}">
+ </p>
+{/if}
+</form>
diff --git a/BSF/template/yoga/admin/default-layout.css b/BSF/template/yoga/admin/default-layout.css
new file mode 100644
index 000000000..45e352606
--- /dev/null
+++ b/BSF/template/yoga/admin/default-layout.css
@@ -0,0 +1,245 @@
+/* $Id: */
+BODY#theAdminPage #theHeader P {
+ display: none;
+}
+
+/* History tables */
+TABLE.table2 {
+ border: 1px solid black;
+ margin: 1em auto;
+ padding: 0;
+}
+
+TABLE.table2 TD, TABLE.table2 TH {
+ padding: 0 0.8em;
+}
+
+TABLE.table2 TR {
+ text-align: left;
+}
+
+TABLE.table2 TR.throw {
+ text-align: center;
+}
+
+.hour {
+ white-space: pre;
+}
+
+.number {
+ text-align: right;
+}
+
+TABLE#dailyStats {
+ width: 60%;
+}
+
+TABLE#detailedStats {
+ width: 99%;
+}
+
+/* categoryOrdering */
+SELECT.categoryList {
+ width: 100%;
+}
+
+FORM#categoryOrdering {
+ padding-left: 1em; /* same as FIELDSET margin (there is no fieldset in this form) */
+ padding-right: 1em; /* same as FIELDSET margin (there is no fieldset in this form) */
+}
+FORM#categoryOrdering p {
+ text-align: left;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+UL.categoryUl {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+LI.categoryLi {
+ border: 1px solid gray;
+ padding: 0px 5px;
+ margin-bottom: 5px;
+}
+
+FORM#categoryOrdering UL.categoryActions {
+ float: right;
+ margin-top: 5px;
+}
+/* */
+
+FORM#catModify TABLE { width: auto; }
+
+FIELDSET.elementEdit A {
+ display: block;
+ float: right;
+}
+
+TABLE.doubleSelect {
+ text-align: center;
+ margin: 0 auto;
+ width: 100%;
+}
+
+TABLE.doubleSelect TD {
+ padding: 0 5px;
+ width: 50%;
+}
+
+TABLE.doubleSelect SELECT.categoryList {
+ width: 100%;
+}
+
+FORM#categoryPermissions LI {
+ display:inline;
+ white-space: nowrap;
+}
+
+FIELDSET#mainConfCheck SPAN.property,
+FIELDSET#historyConf SPAN.property,
+FIELDSET#commentsConf SPAN.property,
+FIELDSET#uploadConf SPAN.property {
+ float: right;
+ text-align: left;
+}
+FIELDSET#mainConfCheck INPUT,
+FIELDSET#historyConf INPUT,
+FIELDSET#commentsConf INPUT,
+FIELDSET#uploadConf INPUT {
+ float: none;
+}
+
+FIELDSET#mainConf SPAN.property {
+ width: 25%;
+}
+FIELDSET#mainConf TEXTAREA.description {
+ width: 70%;
+}
+
+FIELDSET#mainConfCheck SPAN.property,
+FIELDSET#historyConf SPAN.property {
+ width: 90%;
+}
+FIELDSET#mainConfCheck INPUT,
+FIELDSET#historyConf INPUT,
+FIELDSET#commentsConf INPUT,
+FIELDSET#uploadConf SELECT,
+FIELDSET#uploadConf INPUT {
+ margin-left: 5%;
+}
+
+FIELDSET#commentsConf SPAN.property {
+ width: 85%;
+}
+
+FIELDSET#uploadConf SPAN.property {
+ width: 75%;
+}
+
+/* PWG Links Menu is fixed Graphic charts */
+.pwgmenu {
+ display: table;
+ list-style-type: none;
+ list-style-image: none; /* for firefox */
+ white-space: nowrap;
+ position: relative;
+ text-decoration : none;
+ font-family: verdana, arial, helvetica, sans-serif;
+ font-size: 70%;
+ line-height: 1.1em;
+ width: 66em;
+ margin: 1px 8px 1px auto;
+ padding: 3px;
+ background: transparent;
+}
+.pwgmenu li {
+ float: left;
+ width: 10em !important;
+ text-align: center;
+ margin: 0 6px;
+ padding: 0;
+
+}
+.pwgmenu a {
+ width: 9em !important;
+ display: block;
+ padding: 4px 8px;
+ background: #69c; /* PWG Graphic charts */
+ color: white;
+ text-align: center;
+ text-decoration: none;
+ font-weight: bold;
+ border: 1px solid #fff; /* Why bordered? in case of #69c background */
+}
+.pwgmenu a:hover {
+ background: #f92;
+ color: white;
+} /* PWG Graphic charts */
+
+
+.statBar {
+ height: 10px;
+ background-color: #66f;
+ border: 1px solid black;
+}
+
+/* Tabsheet */
+UL.tabsheet {
+ list-style: none;
+ white-space: nowrap;
+ text-decoration: none;
+ border-bottom: 1px solid #fff;
+ margin-left: 5px; margin-right: 5px;
+ padding: 3px 5px;
+}
+
+UL.tabsheet LI {
+ display: inline;
+ margin: 0px 6px;
+ font-size: 120%;
+ font-weight: normal;
+ border: 1px solid #fff;
+ border-bottom: none;
+ padding: 3px 2em;
+}
+
+UL.tabsheet LI.selected_tab {
+ font-weight: bold;
+ position: relative;
+ top: 1px;
+ padding-top: 4px;
+}
+
+.over{
+position: relative;
+z-index: 0;
+}
+
+.over:hover{
+background-color: transparent;
+z-index: 50;
+}
+
+.over span{ /*CSS for enlarged image*/
+position: absolute;
+background-color: #eee;
+padding: 5px;
+left: -1000px;
+border: 1px solid #69c;
+visibility: hidden;
+color: black;
+text-decoration: none;
+}
+
+.over span img{ /*CSS for enlarged image*/
+border-width: 0;
+padding: 2px;
+}
+
+.over:hover span{ /*CSS for enlarged image on hover*/
+visibility: visible;
+top: 0;
+left: 60px; /*position where enlarged image should offset horizontally */
+}
diff --git a/BSF/template/yoga/admin/double_select.tpl b/BSF/template/yoga/admin/double_select.tpl
new file mode 100644
index 000000000..aeed8500a
--- /dev/null
+++ b/BSF/template/yoga/admin/double_select.tpl
@@ -0,0 +1,20 @@
+{* $Id$ *}
+<table class="doubleSelect">
+ <tr>
+ <td>
+ <h3>{$L_CAT_OPTIONS_TRUE}</h3>
+ <select class="categoryList" name="cat_true[]" multiple="multiple" size="30">
+ {html_options options=$category_option_true selected=$category_option_true_selected}
+ </select>
+ <p><input class="submit" type="submit" value="&raquo;" name="falsify" style="font-size:15px;" {$TAG_INPUT_ENABLED}/></p>
+ </td>
+
+ <td>
+ <h3>{$L_CAT_OPTIONS_FALSE}</h3>
+ <select class="categoryList" name="cat_false[]" multiple="multiple" size="30">
+ {html_options options=$category_option_false selected=$category_option_false_selected}
+ </select>
+ <p><input class="submit" type="submit" value="&laquo;" name="trueify" style="font-size:15px;" {$TAG_INPUT_ENABLED}/></p>
+ </td>
+ </tr>
+</table>
diff --git a/BSF/template/yoga/admin/element_set_global.tpl b/BSF/template/yoga/admin/element_set_global.tpl
new file mode 100644
index 000000000..fc5a92e70
--- /dev/null
+++ b/BSF/template/yoga/admin/element_set_global.tpl
@@ -0,0 +1,190 @@
+{* $Id$ *}
+
+<h2>{'Batch management'|@translate}</h2>
+
+<h3>{$CATEGORIES_NAV}</h3>
+
+{if !empty($thumbnails)}
+ <p style="text-align:center;">
+ {'global mode'|@translate}
+ | <a href="{$U_UNIT_MODE}">{'unit mode'|@translate}</a>
+ </p>
+
+ <fieldset>
+
+ <legend>{'Display options'|@translate}</legend>
+
+ <p>{'elements per page'|@translate}:
+ <a href="{$U_DISPLAY}&amp;display=20">20</a>
+ | <a href="{$U_DISPLAY}&amp;display=50">50</a>
+ | <a href="{$U_DISPLAY}&amp;display=100">100</a>
+ | <a href="{$U_DISPLAY}&amp;display=all">{'all'|@translate}</a>
+ </p>
+
+ </fieldset>
+
+ <form action="{$F_ACTION}" method="post">
+
+ <fieldset>
+
+ <legend>{'Elements'|@translate}</legend>
+
+ {if !empty($NAV_BAR)}<div class="navigationBar">{$NAV_BAR}</div>{/if}
+
+ {if !empty($thumbnails)}
+ <ul class="thumbnails">
+ {foreach from=$thumbnails item=thumbnail}
+ <li><span class="wrap1">
+ <label>
+ <span class="wrap2">
+ {if $thumbnail.LEVEL > 0}
+ <em class="levelIndicatorB">{$thumbnail.LEVEL}</em>
+ <em class="levelIndicatorF" title="{$pwg->l10n($pwg->sprintf('Level %d',$thumbnail.LEVEL))}">{$thumbnail.LEVEL}</em>
+ {/if}
+ <span>
+ <img src="{$thumbnail.TN_SRC}"
+ alt="{$thumbnail.FILE}"
+ title="{$thumbnail.TITLE}"
+ class="thumbnail" />
+ </span></span>
+ <input type="checkbox" name="selection[]" value="{$thumbnail.ID}" />
+ </label>
+ </span>
+ </li>
+ {/foreach}
+ </ul>
+ {/if}
+
+ </fieldset>
+
+ <fieldset>
+
+ <legend>{'Form'|@translate}</legend>
+
+ <table>
+
+ <tr>
+ <td>{'associate to category'|@translate}</td>
+ <td>
+ <select style="width:400px" name="associate" size="1">
+ <option value="0">------------</option>
+ {html_options options=$associate_options }
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'dissociate from category'|@translate}</td>
+ <td>
+ <select style="width:400px" name="dissociate" size="1">
+ <option value="0">------------</option>
+ {if !empty($dissociate_options)}{html_options options=$dissociate_options }{/if}
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'add tags'|@translate}</td>
+ <td>{if !empty($ADD_TAG_SELECTION)}{$ADD_TAG_SELECTION}{else}<p>{'No tag defined. Use Administration>Pictures>Tags'|@translate}</p>{/if}</td>
+ </tr>
+
+ {if !empty($DEL_TAG_SELECTION)}
+ <tr>
+ <td>{'remove tags'|@translate}</td>
+ <td>{$DEL_TAG_SELECTION}</td>
+ </tr>
+ {/if}
+
+ <tr>
+ <td>{'Author'|@translate}</td>
+ <td>
+ <label><input type="radio" name="author_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="author_action" value="unset" /> {'unset'|@translate}</label>
+ <label><input type="radio" name="author_action" value="set" id="author_action_set" /> {'set to'|@translate}</label>
+ <input onchange="document.getElementById('author_action_set').checked = true;" type="text" name="author" value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'title'|@translate}</td>
+ <td>
+ <label><input type="radio" name="name_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="name_action" value="unset" /> {'unset'|@translate}</label>
+ <label><input type="radio" name="name_action" value="set" id="name_action_set" /> {'set to'|@translate}</label>
+ <input onchange="document.getElementById('name_action_set').checked = true;" type="text" name="name" value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'Creation date'|@translate}</td>
+ <td>
+ <label><input type="radio" name="date_creation_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="date_creation_action" value="unset" /> {'unset'|@translate}</label>
+ <label><input type="radio" name="date_creation_action" value="set" id="date_creation_action_set" /> {'set to'|@translate}</label>
+ <select onchange="document.getElementById('date_creation_action_set').checked = true;" name="date_creation_day">
+ <option value="0">--</option>
+ {section name=day start=1 loop=32}
+ <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$DATE_CREATION_DAY}selected="selected"{/if}>{$smarty.section.day.index}</option>
+ {/section}
+ </select>
+ <select onchange="document.getElementById('date_creation_action_set').checked = true;" name="date_creation_month">
+ {html_options options=$month_list selected=$DATE_CREATION_MONTH}
+ </select>
+ <input onchange="document.getElementById('date_creation_action_set').checked = true;"
+ name="date_creation_year"
+ type="text"
+ size="4"
+ maxlength="4"
+ value="{$DATE_CREATION_YEAR}" />
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'Minimum privacy level'|@translate}</td>
+ <td>
+ <label><input type="radio" name="level_action" value="leave" checked="checked" />{'leave'|@translate}</label>
+ <label><input type="radio" name="level_action" value="set" id="level_action_set" />{'set to'|@translate}</label>
+ <select onchange="document.getElementById('level_action_set').checked = true;" name="level" size="1">
+ {html_options options=$level_options}
+ </select>
+ </td>
+ </tr>
+
+ </table>
+
+ <p>
+ {'target'|@translate}
+ <label><input type="radio" name="target" value="all" /> {'all'|@translate}</label>
+ <label><input type="radio" name="target" value="selection" checked="checked" /> {'selection'|@translate}</label>
+ </p>
+
+
+ <p><input class="submit" type="submit" value="{'Submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED}/></p>
+
+ </fieldset>
+
+ <fieldset>
+
+ <legend>{'Caddie management'|@translate}</legend>
+
+ <ul style="list-style-type:none;">
+ {if ($IN_CADDIE)}
+ <li><label><input type="radio" name="caddie_action" value="empty_all" /> {'Empty caddie'|@translate}</label></li>
+ <li><label><input type="radio" name="caddie_action" value="empty_selected" /> {'Take selected elements out of caddie'|@translate}</label></li>
+ {else}
+ <li><label><input type="radio" name="caddie_action" value="add_selected" /> {'Add selected elements to caddie'|@translate}</label></li>
+ {/if}
+
+ <li><label><input type="radio" name="caddie_action" value="export" /> {'Export data'|@translate}</label></li>
+
+ </ul>
+
+ <p><input class="submit" type="submit" value="{'Submit'|@translate}" name="submit_caddie" /></p>
+
+ </fieldset>
+
+ </form>
+
+{else}
+ <div class="infos"><p>{'Caddie is currently empty'|@translate}</p></div>
+{/if}
diff --git a/BSF/template/yoga/admin/element_set_unit.tpl b/BSF/template/yoga/admin/element_set_unit.tpl
new file mode 100644
index 000000000..34366fada
--- /dev/null
+++ b/BSF/template/yoga/admin/element_set_unit.tpl
@@ -0,0 +1,93 @@
+{* $Id$ *}
+
+<h2>{'Batch management'|@translate}</h2>
+
+<h3>{$CATEGORIES_NAV}</h3>
+
+<p style="text-align:center;">
+ <a href="{$U_GLOBAL_MODE}">{'global mode'|@translate}</a>
+ | {'unit mode'|@translate}
+</p>
+
+<form action="{$F_ACTION}" method="POST">
+<fieldset>
+ <legend>{'Display options'|@translate}</legend>
+ <p>{'elements per page'|@translate} :
+ <a href="{$U_ELEMENTS_PAGE}&amp;display=5">5</a>
+ | <a href="{$U_ELEMENTS_PAGE}&amp;display=10">10</a>
+ | <a href="{$U_ELEMENTS_PAGE}&amp;display=50">50</a>
+ | <a href="{$U_ELEMENTS_PAGE}&amp;display=all">{'all'|@translate}</a>
+ </p>
+
+</fieldset>
+
+{if !empty($NAV_BAR) }
+<div class="navigationBar">{$NAV_BAR}</div>
+{/if}
+
+{if !empty($elements) }
+<input type="hidden" name="element_ids" value="{$ELEMENT_IDS}" />
+{foreach from=$elements item=element}
+<fieldset class="elementEdit">
+ <legend>{$element.LEGEND}</legend>
+
+ <a href="{$element.U_EDIT}"><img src="{$element.TN_SRC}" alt="" title="{'Edit all picture informations'|@translate}" /></a>
+
+ <table>
+
+ <tr>
+ <td><strong>{'Name'|@translate}</strong></td>
+ <td><input type="text" name="name-{$element.ID}" value="{$element.NAME}" /></td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Author'|@translate}</strong></td>
+ <td><input type="text" name="author-{$element.ID}" value="{$element.AUTHOR}" /></td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Creation date'|@translate}</strong></td>
+ <td>
+ <label><input type="radio" name="date_creation_action-{$element.ID}" value="unset" /> {'unset'|@translate}</label>
+ <label><input type="radio" name="date_creation_action-{$element.ID}" value="set" id="date_creation_action_set-{$element.ID}" /> {'set to'|@translate}</label>
+
+ <select onmousedown="document.getElementById('date_creation_action_set-{$element.ID}').checked = true;" name="date_creation_day-{$element.ID}">
+ <option value="0">--</option>
+ {section name=day start=1 loop=32}
+ <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$element.DATE_CREATION_DAY}selected="selected"{/if}>{$smarty.section.day.index}</option>
+ {/section}
+ </select>
+ <select onmousedown="document.getElementById('date_creation_action_set-{$element.ID}').checked = true;" name="date_creation_month-{$element.ID}">
+ {html_options options=$month_list selected=$element.DATE_CREATION_MONTH}
+ </select>
+ <input onmousedown="document.getElementById('date_creation_action_set-{$element.ID}').checked = true;"
+ name="date_creation_year-{$element.ID}"
+ type="text"
+ size="4"
+ maxlength="4"
+ value="{$element.DATE_CREATION_YEAR}" />
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Tags'|@translate}</strong></td>
+ <td>{$element.TAG_SELECTION}</td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Description'|@translate}</strong></td>
+ <td><textarea name="description-{$element.ID}" class="description">{$element.DESCRIPTION}</textarea></td>
+ </tr>
+
+ </table>
+
+</fieldset>
+{/foreach}
+
+<p>
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" />
+</p>
+{/if}
+
+</form>
diff --git a/BSF/template/yoga/admin/group_list.tpl b/BSF/template/yoga/admin/group_list.tpl
new file mode 100644
index 000000000..274445f4b
--- /dev/null
+++ b/BSF/template/yoga/admin/group_list.tpl
@@ -0,0 +1,46 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'title_groups'|@translate}</h2>
+</div>
+
+<form method="post" name="add_user" action="{$F_ADD_ACTION}" class="properties">
+ <fieldset>
+ <legend>{'Add group'|@translate}</legend>
+
+ <span class="property">
+ <label for="groupname">{'Group name'|@translate}</label>
+ </span>
+ <input type="text" id="groupname" name="groupname" maxlength="50" size="20" />
+
+ <p>
+ <input class="submit" type="submit" name="submit_add" value="{'Add'|@translate}" {$TAG_INPUT_ENABLED}/>
+ </p>
+ </fieldset>
+</form>
+
+<table class="table2">
+ <tr class="throw">
+ <th>{'Group name'|@translate}</th>
+ <th>{'Members'|@translate}</th>
+ <th>{'Actions'|@translate}</th>
+ </tr>
+ {if not empty($groups)}
+ {foreach from=$groups item=group name=group_loop}
+ <tr class="{if $smarty.foreach.group_loop.index is odd}row1{else}row2{/if}">
+ <td>{$group.NAME}<i><small>{$group.IS_DEFAULT}</small></i></td>
+ <td><a href="{$group.U_MEMBERS}">{$group.MEMBERS}</a></td>
+ <td style="text-align:center;">
+ <a href="{$group.U_PERM}">
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/permissions.png" class="button" style="border:none" id="btn_permissions" alt="{'permissions'|@translate}" title="{'permissions'|@translate}" /></a>
+ <a href="{$group.U_DELETE}" onclick="return confirm( document.getElementById('btn_delete').title + '\n\n' + '{'Are you sure?'|@translate|@escape:'javascript'}');">
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/delete.png" class="button" style="border:none" id="btn_delete" alt="{'delete'|@translate}" title="{'delete'|@translate}" {$TAG_INPUT_ENABLED}/></a>
+ <a href="{$group.U_ISDEFAULT}" onclick="return confirm( document.getElementById('btn_toggle_is_default_group').title + '\n\n' + '{'Are you sure?'|@translate|@escape:'javascript'}');">
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/toggle_is_default_group.png" class="button" style="border:none" id="btn_toggle_is_default_group" alt="{'toggle_is_default_group'|@translate}" title="{'toggle_is_default_group'|@translate}" {$TAG_INPUT_ENABLED}/></a>
+ </td>
+ </tr>
+ {/foreach}
+ {/if}
+</table>
diff --git a/BSF/template/yoga/admin/group_perm.tpl b/BSF/template/yoga/admin/group_perm.tpl
new file mode 100644
index 000000000..1dded1291
--- /dev/null
+++ b/BSF/template/yoga/admin/group_perm.tpl
@@ -0,0 +1,8 @@
+{* $Id *}
+<h2>{$TITLE}</h2>
+
+<form method="post" action="{$F_ACTION}">
+ {$DOUBLE_SELECT}
+</form>
+
+<p>{'Only private categories are listed'|@translate}</p>
diff --git a/BSF/template/yoga/admin/history.tpl b/BSF/template/yoga/admin/history.tpl
new file mode 100644
index 000000000..a8b7701dc
--- /dev/null
+++ b/BSF/template/yoga/admin/history.tpl
@@ -0,0 +1,151 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li>
+ <a
+ href="{$U_HELP}"
+ onclick="popuphelp(this.href); return false;"
+ title="{'Help'|@translate}"
+ >
+ <img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)">
+ </a>
+ </li>
+ </ul>
+ <h2>{'History'|@translate} {$TABSHEET_TITLE}</h2>
+ {$TABSHEET}
+</div>
+
+<form class="filter" method="post" name="filter" action="{$F_ACTION}">
+<fieldset>
+ <legend>{'Filter'|@translate}</legend>
+ <ul>
+ <li><label>{'search_date_from'|@translate}</label></li>
+ <li>
+ <select name="start_day">
+ <option value="0">--</option>
+ {section name=day start=1 loop=32}
+ <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$START_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+ {/section}
+ </select>
+ <select name="start_month">
+ {html_options options=$month_list selected=$START_MONTH_SELECTED}
+ </select>
+ <input name="start_year" value="{$START_YEAR}" type="text" size="4" maxlength="4" >
+ </li>
+ </ul>
+ <ul>
+ <li><label>{'search_date_to'|@translate}</label></li>
+ <li>
+ <select name="end_day">
+ <option value="0">--</option>
+ {section name=day start=1 loop=32}
+ <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$END_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+ {/section}
+ </select>
+ <select name="end_month">
+ {html_options options=$month_list selected=$END_MONTH_SELECTED}
+ </select>
+ <input name="end_year" value="{$END_YEAR}" type="text" size="4" maxlength="4" >
+ </li>
+ </ul>
+
+ <label>
+ {'Element type'|@translate}
+ <select name="types[]" multiple="multiple" size="4">
+ {html_options values=$type_option_values output=$type_option_values|translate selected=$type_option_selected}
+ </select>
+ </label>
+
+ <label>
+ {'User'|@translate}
+ <select name="user">
+ <option value="-1">------------</option>
+ {html_options options=$user_options selected=$user_options_selected}
+ </select>
+ </label>
+
+ <label>
+ {'Image id'|@translate}
+ <input name="image_id" value="{$IMAGE_ID}" type="text" size="5">
+ </label>
+
+ <label>
+ {'File name'|@translate}
+ <input name="filename" value="{$FILENAME}" type="text">
+ </label>
+
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" />
+</fieldset>
+<fieldset>
+ <legend>{'Display'|@translate}</legend>
+ <ul>
+ <li>
+ {'Thumbnails'|@translate}
+ <select name="display_thumbnail">
+ {html_options values=$display_thumbnail_values output=$display_thumbnail_values|translate selected=$display_thumbnail_selected}
+ </select>
+ </li>
+ </ul>
+</fieldset>
+</form>
+
+{if isset($search_summary)}
+<fieldset>
+ <legend>{'Summary'|@translate}</legend>
+
+ <ul>
+ <li>{$search_summary.NB_LINES}, {$search_summary.FILESIZE}</li>
+ <li>
+ {$search_summary.USERS}
+ <ul>
+ <li>{$search_summary.MEMBERS}</li>
+ <li>{$search_summary.GUESTS}</li>
+ </ul>
+ </li>
+ </ul>
+</fieldset>
+{/if}
+
+
+{if !empty($NAV_BAR)}
+<div class="navigationBar">
+ {$NAV_BAR}
+</div>
+{/if}
+
+
+<table class="table2" id="detailedStats">
+<tr class="throw">
+ <th>{'Date'|@translate}</th>
+ <th>{'time'|@translate}</th>
+ <th>{'user'|@translate}</th>
+ <th>{'IP'|@translate}</th>
+ <th>{'image'|@translate}</th>
+ <th>{'Element type'|@translate}</th>
+ <th>{'section'|@translate}</th>
+ <th>{'category'|@translate}</th>
+ <th>{'tags'|@translate}</th>
+</tr>
+{if !empty($search_results) }
+{foreach from=$search_results item=detail name=res_loop}
+<tr class="{if $smarty.foreach.res_loop.index is odd}row1{else}row2{/if}">
+ <td class="hour">{$detail.DATE}</td>
+ <td class="hour">{$detail.TIME}</td>
+ <td>{$detail.USER}</td>
+ <td>{$detail.IP}</td>
+ <td>{$detail.IMAGE}</td>
+ <td>{$detail.TYPE}</td>
+ <td>{$detail.SECTION}</td>
+ <td>{$detail.CATEGORY}</td>
+ <td>{$detail.TAGS}</td>
+</tr>
+{/foreach}
+{/if}
+</table>
+
+
+{if !empty($NAV_BAR)}
+<div class="navigationBar">
+ {$NAV_BAR}
+</div>
+{/if}
diff --git a/BSF/template/yoga/admin/index.php b/BSF/template/yoga/admin/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/admin/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/admin/intro.tpl b/BSF/template/yoga/admin/intro.tpl
new file mode 100644
index 000000000..069940ecf
--- /dev/null
+++ b/BSF/template/yoga/admin/intro.tpl
@@ -0,0 +1,46 @@
+{* $Id$ *}
+<h2>{'title_default'|@translate}</h2>
+<dl>
+ <dt>{'Piwigo version'|@translate}</dt>
+ <dd>
+ <ul>
+ <li>Piwigo {$PWG_VERSION}</li>
+ <li><a href="{$U_CHECK_UPGRADE}">{'Check for upgrade'|@translate}</a></li>
+ </ul>
+ </dd>
+
+ <dt>{'Environment'|@translate}</dt>
+ <dd>
+ <ul>
+ <li>{'Operating system'|@translate}: {$OS}</li>
+ <li>PHP: {$PHP_VERSION} (<a href="{$U_PHPINFO}">{'Show info'|@translate}</a>) [{$PHP_DATATIME}]</li>
+ <li>MySQL: {$MYSQL_VERSION} [{$DB_DATATIME}]</li>
+ </ul>
+ </dd>
+
+ <dt>{'Database'|@translate}</dt>
+ <dd>
+ <ul>
+ <li>
+ {$DB_ELEMENTS}
+ {if isset($waiting)}
+ (<a href="{$waiting.URL}">{$waiting.INFO}</a>)
+ {/if}
+
+ {if isset($first_added)}
+ ({$first_added.DB_DATE})
+ {/if}
+ </li>
+ <li>{$DB_CATEGORIES} ({$DB_IMAGE_CATEGORY})</li>
+ <li>{$DB_TAGS} ({$DB_IMAGE_TAG})</li>
+ <li>{$DB_USERS}</li>
+ <li>{$DB_GROUPS}</li>
+ <li>
+ {$DB_COMMENTS}
+ {if isset($unvalidated)}
+ (<a href="{$unvalidated.URL}">{$unvalidated.INFO}</a>)
+ {/if}
+ </li>
+ </ul>
+ </dd>
+</dl>
diff --git a/BSF/template/yoga/admin/maintenance.tpl b/BSF/template/yoga/admin/maintenance.tpl
new file mode 100644
index 000000000..59cf4ff82
--- /dev/null
+++ b/BSF/template/yoga/admin/maintenance.tpl
@@ -0,0 +1,25 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'Maintenance'|@translate}</h2>
+</div>
+
+<ul>
+ <li><a href="{$U_MAINT_CATEGORIES}" {$TAG_INPUT_ENABLED}>{'update categories informations'|@translate}</a></li>
+ <li><a href="{$U_MAINT_IMAGES}" {$TAG_INPUT_ENABLED}>{'update images informations'|@translate}</a></li>
+ <li><a href="{$U_MAINT_DATABASE}" {$TAG_INPUT_ENABLED}>{'repair and optimize database'|@translate}</a></li>
+</ul>
+
+<ul>
+ <li><a href="{$U_MAINT_HISTORY_DETAIL}" onclick="return confirm('{'Are you sure?'|@translate}');" {$TAG_INPUT_ENABLED}>{'purge history detail'|@translate}</a></li>
+ <li><a href="{$U_MAINT_HISTORY_SUMMARY}" onclick="return confirm('{'Are you sure?'|@translate}');" {$TAG_INPUT_ENABLED}>{'purge history summary'|@translate}</a></li>
+ <li><a href="{$U_MAINT_SESSIONS}" {$TAG_INPUT_ENABLED}>{'purge sessions'|@translate}</a></li>
+ <li><a href="{$U_MAINT_FEEDS}" {$TAG_INPUT_ENABLED}>{'purge never used notification feeds'|@translate}</a></li>
+ <li><a href="{$U_MAINT_COMPILED_TEMPLATES}" {$TAG_INPUT_ENABLED}>{'Purge compiled templates'|@translate}</a></li>
+</ul>
+
+<ul>
+ <li><a href="{$U_MAINT_C13Y}" {$TAG_INPUT_ENABLED}>{'c13y_maintenance'|@translate}</a></li>
+</ul>
diff --git a/BSF/template/yoga/admin/notification_by_mail.tpl b/BSF/template/yoga/admin/notification_by_mail.tpl
new file mode 100644
index 000000000..eb5e2a0f9
--- /dev/null
+++ b/BSF/template/yoga/admin/notification_by_mail.tpl
@@ -0,0 +1,124 @@
+{* $Id$ *}
+
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'nbm_send_mail_to_users'|@translate} {$TABSHEET_TITLE}</h2>
+ {$TABSHEET}
+</div>
+
+<form method="post" name="notification_by_mail" id="notification_by_mail" action="{$F_ACTION}">
+ {if isset($REPOST_SUBMIT_NAME)}
+ <fieldset>
+ <div class="infos">
+ <input class="submit" type="submit" value="{'nbm_repost_submit'|@translate}" name="{$REPOST_SUBMIT_NAME}" {$TAG_INPUT_ENABLED}/>
+ </div>
+ </fieldset>
+ {/if}
+
+ {if isset($param)}
+ <fieldset>
+ <legend>{'nbm_title_param'|@translate}</legend>
+ <table>
+ <tr>
+ <td><label>{'nbm_send_html_mail'|@translate}</label></td>
+ <td>
+ <label><input type="radio" name="nbm_send_html_mail" value="true" {if $param.SEND_HTML_MAIL}checked="checked"{/if}/>{'Yes'|@translate}</label>
+ <label><input type="radio" name="nbm_send_html_mail" value="false" {if not $param.SEND_HTML_MAIL}checked="checked"{/if}/>{'No'|@translate}</label>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <label for="send_mail_as">{'nbm_send_mail_as'|@translate}</label>
+ <br/><i><small>{'nbm_info_send_mail_as'|@translate}</small></i>
+ </td>
+ <td><input type="text" maxlength="35" size="35" name="nbm_send_mail_as" id="send_mail_as" value="{$param.SEND_MAIL_AS}"/></td>
+ </tr>
+ <tr>
+ <td><label>{'nbm_send_detailed_content'|@translate}</label></td>
+ <td>
+ <label><input type="radio" name="nbm_send_detailed_content" value="true" {if $param.SEND_DETAILED_CONTENT}checked="checked"{/if}/>{'Yes'|@translate}</label>
+ <label><input type="radio" name="nbm_send_detailed_content" value="false" {if not $param.SEND_DETAILED_CONTENT}checked="checked"{/if}/>{'No'|@translate}</label>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="complementary_mail_content">{'nbm_complementary_mail_content'|@translate}</label></td>
+ <td><textarea cols="50" rows="5" name="nbm_complementary_mail_content" id="complementary_mail_content">{$param.COMPLEMENTARY_MAIL_CONTENT}</textarea></td>
+ </tr>
+ <tr>
+ <td>
+ <label>{'nbm_send_recent_post_dates'|@translate}</label>
+ <br/><i><small>{'nbm_info_send_recent_post_dates'|@translate}</small></i>
+ </td>
+ <td>
+ <label><input type="radio" name="nbm_send_recent_post_dates" value="true" {if $param.SEND_RECENT_POST_DATES}checked="checked"{/if}/>{'Yes'|@translate}</label>
+ <label><input type="radio" name="nbm_send_recent_post_dates" value="false" {if not $param.SEND_RECENT_POST_DATES}checked="checked"{/if}/>{'No'|@translate}</label>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <p>
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="param_submit" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="param_reset"/>
+ </p>
+ {/if}{* isset $param*}
+
+ {if isset($subscribe)}
+ <fieldset>
+ <legend>{'nbm_title_subscribe'|@translate}</legend>
+ <p><i>{'nbm_warning_subscribe_unsubscribe'|@translate}</i></p>
+ {$DOUBLE_SELECT}
+ </fieldset>
+ {/if}{* isset $subscribe*}
+
+ {if isset($send)}
+ {if empty($send.users)}
+ <p>{'nbm_no_user_available_to_send_L1'|@translate}</p>
+ <p>
+ {'nbm_no_user_available_to_send_L2'|@translate}<br>
+ {'nbm_no_user_available_to_send_L3'|@translate}
+ </p>
+ {else}
+ <fieldset>
+ <legend>{'nbm_title_send'|@translate}</legend>
+ <table class="table2">
+ <tr class="throw">
+ <th>{'nbm_col_user'|@translate}</th>
+ <th>{'nbm_col_mail'|@translate}</th>
+ <th>{'nbm_col_last_send'|@translate}</th>
+ <th>{'nbm_col_check_user_send_mail'|@translate}</th>
+ </tr>
+ {foreach from=$send.users item=u name=user_loop}
+ <tr class="{if $smarty.foreach.user_loop.index is odd}row1{else}row2{/if}">
+ <td><label for="send_selection-{$u.ID}">{$u.USERNAME}</label></td>
+ <td><label for="send_selection-{$u.ID}">{$u.EMAIL}</label></td>
+ <td><label for="send_selection-{$u.ID}">{$u.LAST_SEND}</label></td>
+ <td><input type="checkbox" name="send_selection[]" value="{$u.ID}" {$u.CHECKED} id="send_selection-{$u.ID}"/></td>
+ </tr>
+ {/foreach}
+ </table>
+ <p>
+ <a href="#" onclick="SelectAll(document.getElementById('notification_by_mail')); return false;">{'Check all'|@translate}</a>
+ / <a href="#" onclick="DeselectAll(document.getElementById('notification_by_mail')); return false;">{'Uncheck all'|@translate}</a>
+ </p>
+ </fieldset>
+
+ <fieldset>
+ <legend>{'nbm_send_options'|@translate}</legend>
+ <table>
+ <tr>
+ <td><label for="send_customize_mail_content">{'nbm_send_complementary_mail_content'|@translate}</label></td>
+ <td><textarea cols="50" rows="5" name="send_customize_mail_content" id="send_customize_mail_content">{$send.CUSTOMIZE_MAIL_CONTENT}</textarea></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <p>
+ <input class="submit" type="submit" value="{'nbm_send_submit'|@translate}" name="send_submit" {$TAG_INPUT_ENABLED}/>
+ </p>
+ {/if}
+ {/if}{* isset $send*}
+
+</form>
diff --git a/BSF/template/yoga/admin/permalinks.tpl b/BSF/template/yoga/admin/permalinks.tpl
new file mode 100644
index 000000000..f6a1d72ac
--- /dev/null
+++ b/BSF/template/yoga/admin/permalinks.tpl
@@ -0,0 +1,70 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'Permalinks'|@translate}</h2>
+</div>
+
+<form method="post" action="{$F_ACTION}">
+<fieldset><legend>{'Add/delete a permalink'|@translate}</legend>
+ <label>{'Category'|@translate}:
+ <select name="cat_id">
+ <option value="0">------</option>
+ {html_options options=$categories selected=$categories_selected}
+ </select>
+ </label>
+
+ <label>{'Permalink'|@translate}:
+ <input name="permalink" />
+ </label>
+
+ <label>{'Save to permalink history'|@translate}:
+ <input type="checkbox" name="save" checked="checked" />
+ </label>
+
+ <p>
+ <input type="submit" class="submit" name="set_permalink" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}/>
+ </p>
+ </fieldset>
+</form>
+
+<h3>{'Permalinks'|@translate}</h3>
+<table class="table2">
+ <tr class="throw">
+ <td>Id {$SORT_ID}</td>
+ <td>{'Category'|@translate} {$SORT_NAME}</td>
+ <td>{'Permalink'|@translate} {$SORT_PERMALINK}</td>
+ </tr>
+{foreach from=$permalinks item=permalink name="permalink_loop"}
+ <tr class="{if $smarty.foreach.permalink_loop.index is odd}row1{else}row2{/if}">
+ <td>{$permalink.id}</td>
+ <td>{$permalink.name}</td>
+ <td>{$permalink.permalink}</td>
+ </tr>
+{/foreach}
+</table>
+
+<h3>{'Permalink history'|@translate} <a name="old_permalinks"></a></h3>
+<table class="table2">
+ <tr class="throw">
+ <td>Id {$SORT_OLD_CAT_ID}</td>
+ <td>{'Category'|@translate}</td>
+ <td>{'Permalink'|@translate} {$SORT_OLD_PERMALINK}</td>
+ <td>Deleted on {$SORT_OLD_DATE_DELETED}</td>
+ <td>Last hit {$SORT_OLD_LAST_HIT}</td>
+ <td>Hit {$SORT_OLD_HIT}</td>
+ <td></td>
+ </tr>
+{foreach from=$deleted_permalinks item=permalink}
+ <tr>
+ <td>{$permalink.cat_id}</td>
+ <td>{$permalink.name}</td>
+ <td>{$permalink.permalink}</td>
+ <td>{$permalink.date_deleted}</td>
+ <td>{$permalink.last_hit}</td>
+ <td>{$permalink.hit}</td>
+ <td><a href="{$permalink.U_DELETE}" {$TAG_INPUT_ENABLED}><img src="{$ROOT_URL}{$themeconf.icon_dir}/delete.png" alt="[{'delete'|@translate}]" class="button"></a></td>
+ </tr>
+{/foreach}
+</table>
diff --git a/BSF/template/yoga/admin/picture_modify.tpl b/BSF/template/yoga/admin/picture_modify.tpl
new file mode 100644
index 000000000..f6243acb9
--- /dev/null
+++ b/BSF/template/yoga/admin/picture_modify.tpl
@@ -0,0 +1,190 @@
+{* $Id$ *}
+<h2>{'title_picmod'|@translate}</h2>
+
+<img src="{$TN_SRC}" alt="{'thumbnail'|@translate}" class="thumbnail" />
+
+<ul class="categoryActions">
+ {if isset($U_JUMPTO) }
+ <li><a href="{$U_JUMPTO}" title="{'jump to image'|@translate}"><img src="{$themeconf.icon_dir}/category_jump-to.png" class="button" alt="{'jump to image'|@translate}" /></a></li>
+ {/if}
+ <li><a href="{$U_SYNC}" title="{'synchronize metadata'|@translate}" {$TAG_INPUT_ENABLED}><img src="{$themeconf.icon_dir}/sync_metadata.png" class="button" alt="{'synchronize'|@translate}" /></a></li>
+</ul>
+
+<form action="{$F_ACTION}" method="post" id="properties">
+
+ <fieldset>
+ <legend>{'Informations'|@translate}</legend>
+
+ <table>
+
+ <tr>
+ <td><strong>{'Path'|@translate}</strong></td>
+ <td>{$PATH}</td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Post date'|@translate}</strong></td>
+ <td>{$REGISTRATION_DATE}</td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Dimensions'|@translate}</strong></td>
+ <td>{$DIMENSIONS}</td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Filesize'|@translate}</strong></td>
+ <td>{$FILESIZE}</td>
+ </tr>
+
+{if isset($HIGH_FILESIZE) }
+ <tr>
+ <td><strong>{'High filesize'|@translate}</strong></td>
+ <td>{$HIGH_FILESIZE}</td>
+ </tr>
+{/if}
+
+ <tr>
+ <td><strong>{'Storage category'|@translate}</strong></td>
+ <td>{$STORAGE_CATEGORY}</td>
+ </tr>
+
+ {if isset($related_categories) }
+ <tr>
+ <td><strong>{'Linked categories'|@translate}</strong></td>
+ <td>
+ <ul>
+ {foreach from=$related_categories item=name}
+ <li>{$name}</li>
+ {/foreach}
+ </ul>
+ </td>
+ </tr>
+ {/if}
+
+ </table>
+
+ </fieldset>
+
+ <fieldset>
+ <legend>{'Properties'|@translate}</legend>
+
+ <table>
+
+ <tr>
+ <td><strong>{'Name'|@translate}</strong></td>
+ <td><input type="text" name="name" value="{$NAME}" /></td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Author'|@translate}</strong></td>
+ <td><input type="text" name="author" value="{$AUTHOR}" /></td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Creation date'|@translate}</strong></td>
+ <td>
+ <label><input type="radio" name="date_creation_action" value="unset" /> {'unset'|@translate}</label>
+ <input type="radio" name="date_creation_action" value="set" id="date_creation_action_set" /> {'set to'|@translate}
+ <select onmousedown="document.getElementById('date_creation_action_set').checked = true;" name="date_creation_day">
+ <option value="0">--</option>
+ {section name=day start=1 loop=32}
+ <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$DATE_CREATION_DAY_VALUE}selected="selected"{/if}>{$smarty.section.day.index}</option>
+ {/section}
+ </select>
+ <select onmousedown="document.getElementById('date_creation_action_set').checked = true;" name="date_creation_month">
+ {html_options options=$month_list selected=$DATE_CREATION_MONTH_VALUE}
+ </select>
+ <input onmousedown="document.getElementById('date_creation_action_set').checked = true;"
+ name="date_creation_year"
+ type="text"
+ size="4"
+ maxlength="4"
+ value="{$DATE_CREATION_YEAR_VALUE}" />
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Tags'|@translate}</strong></td>
+ <td>{$TAG_SELECTION}</td>
+ </tr>
+
+
+ <tr>
+ <td><strong>{'Description'|@translate}</strong></td>
+ <td><textarea name="description" class="description">{$DESCRIPTION}</textarea></td>
+ </tr>
+
+ <tr>
+ <td><strong>{'Minimum privacy level'|@translate}</strong></td>
+ <td>
+ <select name="level" size="1">
+ {html_options options=$level_options selected=$level_options_selected}
+ </select>
+ </td>
+ </tr>
+
+ </table>
+
+ <p style="text-align:center;">
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="reset" />
+ </p>
+
+ </fieldset>
+
+</form>
+
+<form id="associations" method="post" action="{$F_ACTION}#associations">
+ <fieldset>
+ <legend>{'Association to categories'|@translate}</legend>
+
+ <table class="doubleSelect">
+ <tr>
+ <td>
+ <h3>{'Associated'|@translate}</h3>
+ <select class="categoryList" name="cat_associated[]" multiple="multiple" size="30">
+ {html_options options=$associated_options}
+ </select>
+ <p><input class="submit" type="submit" value="&raquo;" name="dissociate" style="font-size:15px;" {$TAG_INPUT_ENABLED}/></p>
+ </td>
+
+ <td>
+ <h3>{'Dissociated'|@translate}</h3>
+ <select class="categoryList" name="cat_dissociated[]" multiple="multiple" size="30">
+ {html_options options=$dissociated_options}
+ </select>
+ <p><input class="submit" type="submit" value="&laquo;" name="associate" style="font-size:15px;" {$TAG_INPUT_ENABLED}/></p>
+ </td>
+ </tr>
+ </table>
+
+ </fieldset>
+</form>
+
+<form id="representation" method="post" action="{$F_ACTION}#representation">
+ <fieldset>
+ <legend>{'Representation of categories'|@translate}</legend>
+
+ <table class="doubleSelect">
+ <tr>
+ <td>
+ <h3>{'Represents'|@translate}</h3>
+ <select class="categoryList" name="cat_elected[]" multiple="multiple" size="30">
+ {html_options options=$elected_options}
+ </select>
+ <p><input class="submit" type="submit" value="&raquo;" name="dismiss" style="font-size:15px;" {$TAG_INPUT_ENABLED}/></p>
+ </td>
+
+ <td>
+ <h3>{'Does not represent'|@translate}</h3>
+ <select class="categoryList" name="cat_dismissed[]" multiple="multiple" size="30">
+ {html_options options=$dismissed_options}
+ </select>
+ <p><input class="submit" type="submit" value="&laquo;" name="elect" style="font-size:15px;" {$TAG_INPUT_ENABLED}/></p>
+ </td>
+ </tr>
+ </table>
+
+ </fieldset>
+</form>
diff --git a/BSF/template/yoga/admin/plugins_list.tpl b/BSF/template/yoga/admin/plugins_list.tpl
new file mode 100644
index 000000000..abba01861
--- /dev/null
+++ b/BSF/template/yoga/admin/plugins_list.tpl
@@ -0,0 +1,51 @@
+<div class="titrePage">
+ <h2>{'Plugins'|@translate}</h2>
+{$TABSHEET}
+</div>
+
+{'Sort order'|@translate} :
+ <select onchange="document.location = this.options[this.selectedIndex].value;" style="width:100px">
+ {html_options options=$order_options selected=$order_selected}
+ </select>
+
+{if isset($plugins)}
+<table class="table2">
+<thead>
+ <tr class="throw">
+ <td>{'Name'|@translate}</td>
+ <td>{'Version'|@translate}</td>
+ <td>{'Description'|@translate}</td>
+ <td>{'Actions'|@translate}</td>
+ </tr>
+</thead>
+{html_head} {*add the style to html head for strict standard compliance*}
+<style type="text/css">
+TABLE.table2 TR TD.pluginState {ldelim}
+ padding-left:16px;
+}
+TABLE.table2 TR TD.active {ldelim}
+ background: url({$ROOT_URL}{$themeconf.admin_icon_dir}/plugin_active.gif) no-repeat center left
+}
+TABLE.table2 TR TD.inactive {ldelim}
+ background: url({$ROOT_URL}{$themeconf.admin_icon_dir}/plugin_inactive.gif) no-repeat center left
+}
+</style>
+{/html_head}
+{foreach from=$plugins item=plugin name=plugins_loop}
+ <tr class="{if $smarty.foreach.plugins_loop.index is odd}row1{else}row2{/if}">
+ <td class="pluginState{if not empty($plugin.STATE)} {$plugin.STATE}{/if}">
+ {$plugin.NAME}
+ </td>
+ <td>{$plugin.VERSION}</td>
+ <td>{$plugin.DESCRIPTION}</td>
+ <td>
+ {foreach from=$plugin.actions item=action}
+ <a href="{$action.U_ACTION}"
+ {if isset($action.CONFIRM)} onclick="return confirm('{$action.CONFIRM|@escape:'javascript'}');"{/if}
+ {$TAG_INPUT_ENABLED}>{$action.L_ACTION}</a>
+ {/foreach}
+ </td>
+ </tr>
+{/foreach}
+</table>
+{/if}
diff --git a/BSF/template/yoga/admin/plugins_new.tpl b/BSF/template/yoga/admin/plugins_new.tpl
new file mode 100644
index 000000000..fa22aaa26
--- /dev/null
+++ b/BSF/template/yoga/admin/plugins_new.tpl
@@ -0,0 +1,37 @@
+<div class="titrePage">
+ <h2>{'Plugins'|@translate}</h2>
+{$TABSHEET}
+</div>
+
+{'Sort order'|@translate} :
+ <select onchange="document.location = this.options[this.selectedIndex].value;" style="width:150px">
+ {html_options options=$order_options selected=$order_selected}
+ </select>
+
+{if isset($plugins)}
+<br>
+<table class="table2">
+<thead>
+ <tr class="throw">
+ <td>{'Name'|@translate}</td>
+ <td>{'Version'|@translate}</td>
+ <td>{'Date'|@translate}</td>
+ <td>{'Author'|@translate}</td>
+ <td>{'Actions'|@translate}</td>
+ </tr>
+</thead>
+{foreach from=$plugins item=plugin name=plugins_loop}
+ <tr class="{if $smarty.foreach.plugins_loop.index is odd}row1{else}row2{/if}">
+ <td><a href="{$plugin.EXT_URL}" onclick="window.open(this.href); return false;" class="tooltip">{$plugin.EXT_NAME}
+ <span>{$plugin.EXT_DESC}</span></a></td>
+ <td style="text-align:center;"><a href="{$plugin.VERSION_URL}" onclick="window.open(this.href); return false;" class="tooltip">{$plugin.VERSION}
+ <span>{$plugin.VER_DESC}</span></a></td>
+ <td>{$plugin.DATE}</td>
+ <td>{$plugin.AUTHOR}</td>
+ <td style="text-align:center;"><a href="{$plugin.URL_INSTALL}" onclick="return confirm('{'plugins_confirm_install'|@translate|@escape:javascript}');">{'plugins_auto_install'|@translate}</a>
+ / <a href="{$plugin.URL_DOWNLOAD}">{'plugins_download'|@translate}</a>
+ </td>
+ </tr>
+{/foreach}
+</table>
+{/if}
diff --git a/BSF/template/yoga/admin/plugins_update.tpl b/BSF/template/yoga/admin/plugins_update.tpl
new file mode 100644
index 000000000..df0ac4ae0
--- /dev/null
+++ b/BSF/template/yoga/admin/plugins_update.tpl
@@ -0,0 +1,71 @@
+<div class="titrePage">
+ <h2>{'Plugins'|@translate}</h2>
+{$TABSHEET}
+</div>
+
+{if isset($plugins_not_uptodate)}
+<br>
+<b>{'plugins_need_update'|@translate}</b>
+<table class="table2">
+<thead>
+ <tr class="throw">
+ <td>{'Name'|@translate}</td>
+ <td>{'plugins_actual_version'|@translate}</td>
+ <td>{'plugins_new_version'|@translate}</td>
+ <td>{'Actions'|@translate}</td>
+ </tr>
+</thead>
+{foreach from=$plugins_not_uptodate item=plugin name=plugins_loop}
+ <tr class="{if $smarty.foreach.plugins_loop.index is odd}row1{else}row2{/if}">
+ <td><a href="{$plugin.EXT_URL}" onclick="window.open(this.href); return false;" class="tooltip">{$plugin.EXT_NAME}
+ <span>{$plugin.EXT_DESC}</span></a></td>
+ <td style="text-align:center;">{$plugin.VERSION}</td>
+ <td style="text-align:center;"><a href="{$plugin.VERSION_URL}" onclick="window.open(this.href); return false;" class="tooltip">{$plugin.NEW_VERSION}
+ <span>{$plugin.NEW_VER_DESC}</span></a></td>
+ <td style="text-align:center;"><a href="{$plugin.URL_UPDATE}" onclick="return confirm('{'plugins_confirm_upgrade'|@translate|@escape:javascript}');">{'plugins_auto_update'|@translate}</a>
+ / <a href="{$plugin.URL_DOWNLOAD}">{'plugins_download'|@translate}</a></td>
+ </tr>
+{/foreach}
+</table>
+{/if}
+
+
+{if isset($plugins_uptodate)}
+<br>
+<b>{'plugins_dontneed_update'|@translate}</b>
+<table class="table2">
+<thead>
+ <tr class="throw">
+ <td>{'Name'|@translate}</td>
+ <td>{'Version'|@translate}</td>
+ </tr>
+</thead>
+{foreach from=$plugins_uptodate item=plugin name=plugins_loop}
+ <tr class="{if $smarty.foreach.plugins_loop.index is odd}row1{else}row2{/if}">
+ <td><a href="{$plugin.URL}" onclick="window.open(this.href); return false;" class="tooltip">{$plugin.NAME}
+ <span>{$plugin.EXT_DESC}</span></a></td>
+ <td style="text-align:center;">{$plugin.VERSION}</td>
+ </tr>
+{/foreach}
+</table>
+{/if}
+
+
+{if isset($plugins_cant_check)}
+<br>
+<b>{'plugins_cant_check'|@translate}</b>
+<table class="table2">
+<thead>
+ <tr class="throw">
+ <td>{'Name'|@translate}</td>
+ <td>{'Version'|@translate}</td>
+ </tr>
+</thead>
+{foreach from=$plugins_cant_check item=plugin name=plugins_loop}
+ <tr class="{if $smarty.foreach.plugins_loop.index is odd}row1{else}row2{/if}">
+ <td>{$plugin.NAME}</td>
+ <td style="text-align:center;">{$plugin.VERSION}</td>
+ </tr>
+{/foreach}
+</table>
+{/if}
diff --git a/BSF/template/yoga/admin/profile.tpl b/BSF/template/yoga/admin/profile.tpl
new file mode 100644
index 000000000..f6326319c
--- /dev/null
+++ b/BSF/template/yoga/admin/profile.tpl
@@ -0,0 +1,6 @@
+{* $Id$ *}
+<div class="titrePage">
+ <h2>{'Profile'|@translate}</h2>
+</div>
+
+{$PROFILE_CONTENT}
diff --git a/BSF/template/yoga/admin/rating.tpl b/BSF/template/yoga/admin/rating.tpl
new file mode 100644
index 000000000..aa91892dc
--- /dev/null
+++ b/BSF/template/yoga/admin/rating.tpl
@@ -0,0 +1,64 @@
+{* $Id$ *}
+<h2>{'Rating'|@translate} [{$NB_ELEMENTS} {'elements'|@translate}]</h2>
+
+<form action="{$F_ACTION}" method="GET" id="update" class="filter">
+ <fieldset>
+ <legend>{'Filter'|@translate}</legend>
+
+ <label>
+ {'Sort by'|@translate}
+ <select name="order_by">
+ {html_options options=$order_by_options selected=$order_by_options_selected}
+ </select>
+ </label>
+
+ <label>
+ {'Users'|@translate}
+ <select name="users">
+ {html_options options=$user_options selected=$user_options_selected}
+ </select>
+ </label>
+
+ <label>
+ {'Number of items'|@translate}
+ <input type="text" name="display" size="2" value="{$DISPLAY}">
+ </label>
+
+ <input class="submit" type="submit" name="submit_filter" value="{'Submit'|@translate}" />
+ <input type="hidden" name="page" value="rating" />
+ </fieldset>
+</form>
+
+<div class="navigationBar">{$NAVBAR}</div>
+<table width="99%">
+<tr class="throw">
+ <td>{'File'|@translate}</td>
+ <td>{'Number of rates'|@translate}</td>
+ <td>{'Average rate'|@translate}</td>
+ <td>{'Controversy'|@translate}</td>
+ <td>{'Sum of rates'|@translate}</td>
+ <td>{'Rate'|@translate}</td>
+ <td>{'Username'|@translate}</td>
+ <td>{'Rate date'|@translate}</td>
+ <td></td>
+</tr>
+{foreach from=$images item=image}
+<tr valign="bottom">
+ <td rowspan="{$image.NB_RATES_TOTAL+1}"><a href="{$image.U_URL}"><img src="{$image.U_THUMB}" alt="{$image.FILE}" title="{$image.FILE}"></a></td>
+ <td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.NB_RATES}/{$image.NB_RATES_TOTAL}</strong></td>
+ <td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.AVG_RATE}</strong></td>
+ <td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.STD_RATE}</strong></td>
+ <td rowspan="{$image.NB_RATES_TOTAL+1}" style="border-right: 1px solid;" ><strong>{$image.SUM_RATE}</strong></td>
+</tr>
+{foreach from=$image.rates item=rate}
+<tr>
+ <td>{$rate.RATE}</td>
+ <td><b>{$rate.USER}</b></td>
+ <td><span class="date">{$rate.DATE}</span></td>
+ <td><a href="{$rate.U_DELETE}" {$TAG_INPUT_ENABLED}><img src="{$themeconf.icon_dir}/delete.png" class="button" style="border:none;vertical-align:middle; margin-left:5px;" alt="[{'delete'|@translate}]"/></a></td>
+</tr>
+{/foreach} {*rates*}
+{/foreach} {*images*}
+</table>
+
+<div class="navigationBar">{$NAVBAR}</div>
diff --git a/BSF/template/yoga/admin/site_manager.tpl b/BSF/template/yoga/admin/site_manager.tpl
new file mode 100644
index 000000000..627181c5a
--- /dev/null
+++ b/BSF/template/yoga/admin/site_manager.tpl
@@ -0,0 +1,73 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'Site manager'|@translate}</h2>
+</div>
+
+{if not empty($remote_output)}
+<div class="remoteOutput">
+ <ul>
+ {foreach from=$remote_output item=remote_line}
+ <li class="{$remote_line.CLASS}">{$remote_line.CONTENT}</li>
+ {/foreach}
+ </ul>
+</div>
+{/if}
+
+{if isset($local_listing)}
+{'remote_site_local_found'|@translate} {$local_listing.URL}
+{if isset($local_listing.CREATE)}
+<form action="{$F_ACTION}" method="post">
+ <p>
+ {'remote_site_local_create'|@translate}:
+ <input type="hidden" name="no_check" value="1"/>
+ <input type="hidden" name="galleries_url" value="{$local_listing.URL}" />
+ <input type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED} />
+ </p>
+</form>
+{/if}
+{if isset($local_listing.U_SYNCHRONIZE)}
+&nbsp;<a href="{$local_listing.U_SYNCHRONIZE}" title="{'remote_site_local_update'|@translate}">{'site_synchronize'|@translate}</a>
+<br/><br/>
+{/if}
+{/if}
+
+{if not empty($sites)}
+<table border="1" cellpadding="0" cellspacing="0">
+ {foreach from=$sites item=site}
+ <tr style="text-align:left"><td>
+ <a href="{$site.NAME}">{$site.NAME}</a><br/>({$site.TYPE}, {$site.CATEGORIES} {'Categories'|@translate}, {$pwg->l10n_dec('%d element','%d elements',$site.IMAGES)})
+ </td><td>
+ [<a href="{$site.U_SYNCHRONIZE}" title="{'site_synchronize_hint'|@translate}">{'site_synchronize'|@translate}</a>]
+ {if isset($site.U_DELETE)}
+ [<a href="{$site.U_DELETE}" onclick="return confirm('{'Are you sure?'|@translate|escape:'javascript'}');"
+ title="{'site_delete_hint'|@translate}" {$TAG_INPUT_ENABLED}>{'site_delete'|@translate}</a>]
+ {/if}
+ {if isset($site.remote)}
+ <br/>
+ [<a href="{$site.remote.U_TEST}" title="{'remote_site_test_hint'|@translate}" {$TAG_INPUT_ENABLED}>{'remote_site_test'|@translate}</a>]
+ [<a href="{$site.remote.U_GENERATE}" title="{'remote_site_generate_hint'|@translate}" {$TAG_INPUT_ENABLED}>{'remote_site_generate'|@translate}</a>]
+ [<a href="{$site.remote.U_CLEAN}" title="{'remote_site_clean_hint'|@translate}" {$TAG_INPUT_ENABLED}>{'remote_site_clean'|@translate}</a>]
+ {/if}
+ {if not empty($site.plugin_links)}
+ <br>
+ {foreach from=$site.plugin_links item=plugin_link}
+ [<a href="{$plugin_link.U_HREF}" title='{$plugin_link.U_HINT}' {$TAG_INPUT_ENABLED}>{$plugin_link.U_CAPTION}</a>]
+ {/foreach}
+ {/if}
+ </td></tr>
+ {/foreach}
+</table>
+{/if}
+
+<form action="{$F_ACTION}" method="post">
+ <p>
+ <label for="galleries_url" >{'site_create'|@translate}</label>
+ <input type="text" name="galleries_url" id="galleries_url" />
+ </p>
+ <p>
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED} />
+ </p>
+</form>
diff --git a/BSF/template/yoga/admin/site_update.tpl b/BSF/template/yoga/admin/site_update.tpl
new file mode 100644
index 000000000..fc0899a90
--- /dev/null
+++ b/BSF/template/yoga/admin/site_update.tpl
@@ -0,0 +1,109 @@
+{* $Id$ *}
+
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'title_update'|@translate}: <a href="{$SITE_URL}">{$SITE_URL}</a></h2>
+</div>
+
+{if isset($update_result)}
+<h3>{$L_RESULT_UPDATE}</h3>
+<ul>
+ <li class="update_summary_new">{$update_result.NB_NEW_CATEGORIES} {'update_nb_new_categories'|@translate}</li>
+ <li class="update_summary_new">{$update_result.NB_NEW_ELEMENTS} {'update_nb_new_elements'|@translate}</li>
+ <li class="update_summary_del">{$update_result.NB_DEL_CATEGORIES} {'update_nb_del_categories'|@translate}</li>
+ <li class="update_summary_del">{$update_result.NB_DEL_ELEMENTS} {'update_nb_del_elements'|@translate}</li>
+ <li>{$update_result.NB_UPD_ELEMENTS} {'update_nb_upd_elements'|@translate}</li>
+ <li class="update_summary_err">{$update_result.NB_ERRORS} {'update_nb_errors'|@translate}</li>
+</ul>
+{/if}
+
+{if isset($metadata_result)}
+<h3>{$L_RESULT_METADATA}</h3>
+<ul>
+ <li>{$metadata_result.NB_ELEMENTS_DONE} {'update_nb_elements_metadata_sync'|@translate}</li>
+ <li>{$metadata_result.NB_ELEMENTS_CANDIDATES} {'update_nb_elements_metadata_available'|@translate}</li>
+ <li>{'update_used_metadata'|@translate} : {$METADATA_LIST}</li>
+</ul>
+{/if}
+
+
+{if not empty($sync_errors)}
+<h3>{'update_error_list_title'|@translate}</h3>
+<div class="errors">
+<ul>
+ {foreach from=$sync_errors item=error}
+ <li>[{$error.ELEMENT}] {$error.LABEL}</li>
+ {/foreach}
+</ul>
+</div>
+<h3>{'update_errors_caption'|@translate}</h3>
+<ul>
+ {foreach from=$sync_error_captions item=caption}
+ <li><strong>{$caption.TYPE}</strong>: {$caption.LABEL}</li>
+ {/foreach}
+</ul>
+{/if}
+
+{if not empty($sync_infos)}
+<h3>{'update_infos_title'|@translate}</h3>
+<div class="infos">
+<ul>
+ {foreach from=$sync_infos item=info}
+ <li>[{$info.ELEMENT}] {$info.LABEL}</li>
+ {/foreach}
+</ul>
+</div>
+{/if}
+
+{if isset($introduction)}
+<h3>{'update_default_title'|@translate}</h3>
+<form action="" method="post" id="update">
+
+ <fieldset id="syncFiles">
+ <legend>{'update_sync_files'|@translate}</legend>
+ <ul>
+ <li><label><input type="radio" name="sync" value="dirs" {if 'dirs'==$introduction.sync}checked="checked"{/if}/> {'update_sync_dirs'|@translate}</label></li>
+ <li><label><input type="radio" name="sync" value="files" {if 'files'==$introduction.sync}checked="checked"{/if}/> {'update_sync_all'|@translate}</label></li>
+ <li><label><input type="checkbox" name="display_info" value="1" {if $introduction.display_info}checked="checked"{/if}/> {'update_display_info'|@translate}</label></li>
+ <li><label><input type="checkbox" name="add_to_caddie" value="1" {if $introduction.add_to_caddie}checked="checked"{/if}/> {'add new elements to caddie'|@translate}</label></li>
+ <li><label>{'Minimum privacy level'|@translate} <select name="privacy_level">{html_options options=$introduction.privacy_level_options selected=$introduction.privacy_level_selected}</select></label></li>
+ </ul>
+ </fieldset>
+
+ <fieldset id="syncMetadata">
+ <legend>{'update_sync_metadata'|@translate}</legend>
+ {'update_used_metadata'|@translate} : {$METADATA_LIST}.<br/>
+ <ul>
+ <li><label><input type="radio" name="sync" value="metadata_new" {if 'metadata_new'==$introduction.sync}checked="checked"{/if}/> {'update_sync_metadata_new'|@translate}</label></li>
+ <li><label><input type="radio" name="sync" value="metadata_all" {if 'metadata_all'==$introduction.sync}checked="checked"{/if}/> {'update_sync_metadata_all'|@translate}</label></li>
+ </ul>
+ </fieldset>
+
+ <fieldset id="syncSimulate">
+ <legend></legend>
+ <ul><li><label><input type="checkbox" name="simulate" value="1" checked="checked" {$TAG_INPUT_ENABLED} /> {'update_simulate'|@translate}</label></li></ul>
+ </fieldset>
+
+ <fieldset id="catSubset">
+ <legend>{'update_cats_subset'|@translate}</legend>
+ <ul>
+ <li>
+ <select class="categoryList" name="cat" size="10">
+ {html_options options=$category_options selected=$category_options_selected}
+ </select>
+ </li>
+
+ <li><label><input type="checkbox" name="subcats-included" value="1" {if $introduction.subcats_included}checked="checked"{/if}/> {'search_subcats_included'|@translate}</label></li>
+ </ul>
+ </fieldset>
+
+ <p class="bottomButtons">
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="submit" />
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="reset" />
+ </p>
+</form>
+{/if}{*isset $introduction*}
+
+<p><a href="{$U_SITE_MANAGER}">{'Site manager'|@translate}</a></p>
diff --git a/BSF/template/yoga/admin/stats.tpl b/BSF/template/yoga/admin/stats.tpl
new file mode 100644
index 000000000..95331b7ef
--- /dev/null
+++ b/BSF/template/yoga/admin/stats.tpl
@@ -0,0 +1,38 @@
+{* $Id$ *}
+
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li>
+ <a
+ href="{$U_HELP}"
+ onclick="popuphelp(this.href); return false;"
+ title="{'Help'|@translate}"
+ >
+ <img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)">
+ </a>
+ </li>
+ </ul>
+ <h2>{'History'|@translate} {$TABSHEET_TITLE}</h2>
+ {$TABSHEET}
+</div>
+
+<h3>{$L_STAT_TITLE}</h3>
+
+<table class="table2" id="dailyStats">
+ <tr class="throw">
+ <th>{$PERIOD_LABEL}</th>
+ <th>{'Pages seen'|@translate}</th>
+ <th></th>
+ </tr>
+
+{if not empty($statrows)}
+{foreach from=$statrows item=row}
+ <tr>
+ <td style="white-space: nowrap">{$row.VALUE}</td>
+ <td class="number">{$row.PAGES}</td>
+ <td><div class="statBar" style="width:{$row.WIDTH}px"></div></td>
+ </tr>
+{/foreach}
+{/if}
+
+</table>
diff --git a/BSF/template/yoga/admin/tabsheet.tpl b/BSF/template/yoga/admin/tabsheet.tpl
new file mode 100644
index 000000000..a89adfd8d
--- /dev/null
+++ b/BSF/template/yoga/admin/tabsheet.tpl
@@ -0,0 +1,8 @@
+{* $Id$ *}
+{if isset($tabsheet) and count($tabsheet)}
+<ul class="tabsheet">
+{foreach from=$tabsheet key=name item=sheet}
+ <li class="{if ($name == $tabsheet_selected)}selected_tab{else}normal_tab{/if}"><a href="{$sheet.url}">{$sheet.caption}</a></li>
+{/foreach}
+</ul>
+{/if} \ No newline at end of file
diff --git a/BSF/template/yoga/admin/tags.tpl b/BSF/template/yoga/admin/tags.tpl
new file mode 100644
index 000000000..b2ce57341
--- /dev/null
+++ b/BSF/template/yoga/admin/tags.tpl
@@ -0,0 +1,54 @@
+{* $Id$ *}
+<div class="titrePage">
+ <h2>{'Manage tags'|@translate}</h2>
+</div>
+
+<form action="{$F_ACTION}" method="post">
+
+ {if isset($EDIT_TAGS_LIST)}
+ <fieldset>
+ <legend>{'Edit tags'|@translate}</legend>
+ <input type="hidden" name="edit_list" value="{$EDIT_TAGS_LIST}" />
+ <table class="table2">
+ <tr class="throw">
+ <th>{'Current name'|@translate}</th>
+ <th>{'New name'|@translate}</th>
+ </tr>
+ {foreach from=$tags item=tag}
+ <tr>
+ <td>{$tag.NAME}</td>
+ <td><input type="text" name="tag_name-{$tag.ID}" value="{$tag.NAME}" /></td>
+ </tr>
+ {/foreach}
+ </table>
+
+ <p>
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED} />
+ <input class="submit" type="reset" value="{'Reset'|@translate}" />
+ </p>
+ </fieldset>
+ {/if}
+
+ <fieldset>
+ <legend>{'Add a tag'|@translate}</legend>
+
+ <label>
+ {'New tag'|@translate}
+ <input type="text" name="add_tag" />
+ </label>
+
+ <p><input class="submit" type="submit" name="add" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}/></p>
+ </fieldset>
+
+ <fieldset>
+ <legend>{'Tag selection'|@translate}</legend>
+
+ {$TAG_SELECTION}
+
+ <p>
+ <input class="submit" type="submit" name="edit" value="{'Edit selected tags'|@translate}"/>
+ <input class="submit" type="submit" name="delete" value="{'Delete selected tags'|@translate}" onclick="return confirm('{'Are you sure?'|@translate}');" {$TAG_INPUT_ENABLED}/>
+ </p>
+ </fieldset>
+
+</form>
diff --git a/BSF/template/yoga/admin/thumbnail.tpl b/BSF/template/yoga/admin/thumbnail.tpl
new file mode 100644
index 000000000..6bb652caa
--- /dev/null
+++ b/BSF/template/yoga/admin/thumbnail.tpl
@@ -0,0 +1,123 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'title_thumbnails'|@translate}</h2>
+</div>
+
+{if isset($results) }
+<div class="admin">{'tn_results_title'|@translate}</div>
+<table style="width:100%;">
+ <tr class="throw">
+ <td>{'path'|@translate}</td>
+ <td>{'thumbnail'|@translate}</td>
+ <td>{'tn_results_gen_time'|@translate}</td>
+ <td>{'filesize'|@translate}</td>
+ <td>{'Dimensions'|@translate}</td>
+ </tr>
+ {foreach from=$results.elements item=elt}
+ <tr>
+ <td>{$elt.PATH}</td>
+ <td><img src="{$elt.TN_FILE_IMG}" /></td>
+ <td style="text-align:right;">{$elt.GEN_TIME}</td>
+ <td style="text-align:right;">{$elt.TN_FILESIZE_IMG}</td>
+ <td style="text-align:right;">{$elt.TN_WIDTH_IMG} x {$elt.TN_HEIGHT_IMG}</td>
+ </tr>
+ {/foreach}
+</table>
+
+<table class="table2">
+ <tr class="throw">
+ <td colspan="2">{'tn_stats'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'tn_stats_nb'|@translate}</td>
+ <td style="text-align:center;">{$results.TN_NB}</td>
+ </tr>
+ <tr>
+ <td>{'tn_stats_total'|@translate}</td>
+ <td style="text-align:right;">{$results.TN_TOTAL}</td>
+ </tr>
+ <tr>
+ <td>{'tn_stats_max'|@translate}</td>
+ <td style="text-align:right;">{$results.TN_MAX}</td>
+ </tr>
+ <tr>
+ <td>{'tn_stats_min'|@translate}</td>
+ <td style="text-align:right;">{$results.TN_MIN}</td>
+ </tr>
+ <tr>
+ <td>{'tn_stats_mean'|@translate}</td>
+ <td style="text-align:right;">{$results.TN_AVERAGE}</td>
+ </tr>
+</table>
+<br />
+{/if}
+
+{if isset($params) }
+<form method="post" action="{$params.F_ACTION}" class="properties">
+
+ <fieldset>
+ <legend>{'tn_params_title'|@translate}</legend>
+
+ <ul>
+ <li>
+ <span class="property">{'tn_params_GD'|@translate}</span>
+ <label>
+ <input type="radio" name="gd" value="2" {if $params.GD_SELECTED==2}checked="checked"{/if} />2.x
+ </label>
+ <label>
+ <input type="radio" name="gd" value="1" {if $params.GD_SELECTED==1}checked="checked"{/if} />1.x
+ </label>
+ </li>
+
+ <li>
+ <span class="property">
+ <label for="width">{'maximum width'|@translate}</label>
+ </span>
+ <input type="text" id="width" name="width" value="{$params.WIDTH_TN}" />
+ </li>
+
+ <li>
+ <span class="property">
+ <label for="height">{'maximum height'|@translate}</label>
+ </span>
+ <input type="text" id="height" name="height" value="{$params.HEIGHT_TN}" />
+ </li>
+
+ <li>
+ <span class="property">{'Number of thumbnails to create'|@translate}</span>
+ <label><input type="radio" name="n" value="5" {if $params.N_SELECTED==5}checked="checked"{/if} /> 5</label>
+ <label><input type="radio" name="n" value="10" {if $params.N_SELECTED==10}checked="checked"{/if} /> 10</label>
+ <label><input type="radio" name="n" value="20" {if $params.N_SELECTED==20}checked="checked"{/if} /> 20</label>
+ <label><input type="radio" name="n" value="all" {if $params.N_SELECTED=='all'}checked="checked"{/if} /> {'tn_all'|@translate}</label>
+ </li>
+ </ul>
+ </fieldset>
+
+ <p><input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}/></p>
+</form>
+{/if} {*isset params*}
+
+{if !empty($remainings) }
+<div class="admin">{$TOTAL_NB_REMAINING} {'tn_alone_title'|@translate}</div>
+<table style="width:100%;">
+ <tr class="throw">
+ <td>&nbsp;</td>
+ <td style="width:60%;">{'path'|@translate}</td>
+ <td>{'filesize'|@translate}</td>
+ <td>{'Dimensions'|@translate}</td>
+ </tr>
+ {foreach from=$remainings item=elt name=remain_loop}
+ <tr class="{if $smarty.foreach.remain_loop.index is odd}row1{else}row2{/if}">
+ <td>{$smarty.foreach.remain_loop.iteration}</td>
+ <td><div style="margin-left:10px;">{$elt.PATH}</div></td>
+ <td><div style="margin-left:10px;">{$elt.FILESIZE_IMG}</div></td>
+ <td><div style="margin-left:10px;">{$elt.WIDTH_IMG} x {$elt.HEIGHT_IMG}</div></td>
+ </tr>
+ {/foreach}
+</table>
+{else}
+<div style="text-align:center;font-weight:bold;margin:10px;"> [ {'tn_no_missing'|@translate} ]</div>
+{/if}
diff --git a/BSF/template/yoga/admin/upload.tpl b/BSF/template/yoga/admin/upload.tpl
new file mode 100644
index 000000000..f95609316
--- /dev/null
+++ b/BSF/template/yoga/admin/upload.tpl
@@ -0,0 +1,53 @@
+{* $Id$ *}
+<div class="titrePage">
+ <h2>{'waiting'|@translate} {$TABSHEET_TITLE}</h2>
+ {$TABSHEET}
+</div>
+
+<h3>{'title_upload'|@translate}</h3>
+
+<form action="{$F_ACTION}" method="post" id="waiting">
+ <table style="width:99%;" >
+ <tr class="throw">
+ <th style="width:20%;">{'category'|@translate}</th>
+ <th style="width:20%;">{'Date'|@translate}</th>
+ <th style="width:20%;">{'file'|@translate}</th>
+ <th style="width:20%;">{'thumbnail'|@translate}</th>
+ <th style="width:20%;">{'Author'|@translate}</th>
+ <th style="width:1px;">&nbsp;</th>
+ </tr>
+
+ {if not empty($pictures) }
+ {foreach from=$pictures item=picture name=picture_loop}
+ <tr class="{if $smarty.foreach.picture_loop.index is odd}row1{else}row2{/if}">
+ <td style="white-space:nowrap;">{$picture.CATEGORY_IMG}</td>
+ <td style="white-space:nowrap;">{$picture.DATE_IMG}</td>
+ <td style="white-space:nowrap;">
+ <a href="{$picture.PREVIEW_URL_IMG}" title="{$picture.FILE_TITLE}">{$picture.FILE_IMG}</a>
+ </td>
+ <td style="white-space:nowrap;">
+ {if not empty($picture.thumbnail) }
+ <a href="{$picture.thumbnail.PREVIEW_URL_TN_IMG}" title="{$picture.thumbnail.FILE_TN_TITLE}">{$picture.thumbnail.FILE_TN_IMG}</a>
+ {/if}
+ </td>
+ <td style="white-space:nowrap;">
+ <a href="mailto:{$picture.UPLOAD_EMAIL}">{$picture.UPLOAD_USERNAME}</a>
+ </td>
+ <td style="white-space:nowrap;">
+ <label><input type="radio" name="action-{$picture.ID_IMG}" value="validate" /> {'Validate'|@translate}</label>
+ <label><input type="radio" name="action-{$picture.ID_IMG}" value="reject" /> {'Reject'|@translate}</label>
+ </td>
+ </tr>
+ {/foreach}
+ {/if}
+ </table>
+
+ <p class="bottomButtons">
+ <input type="hidden" name="list" value="{$LIST}" />
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="submit" name="validate-all" value="{'Validate All'|@translate}" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="submit" name="reject-all" value="{'Reject All'|@translate}" {$TAG_INPUT_ENABLED}/>
+ <input class="submit" type="reset" value="{'Reset'|@translate}" />
+ </p>
+
+</form>
diff --git a/BSF/template/yoga/admin/user_list.tpl b/BSF/template/yoga/admin/user_list.tpl
new file mode 100644
index 000000000..db67093f6
--- /dev/null
+++ b/BSF/template/yoga/admin/user_list.tpl
@@ -0,0 +1,312 @@
+{* $Id$ *}
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'title_liste_users'|@translate}</h2>
+</div>
+
+<form class="filter" method="post" name="add_user" action="{$F_ADD_ACTION}">
+ <fieldset>
+ <legend>{'Add a user'|@translate}</legend>
+ <label>{'Username'|@translate} <input type="text" name="login" maxlength="50" size="20" /></label>
+ <label>{'Password'|@translate} <input type="text" name="password" /></label>
+ <label>{'Email address'|@translate} <input type="text" name="email" /></label>
+ <input class="submit" type="submit" name="submit_add" value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED} />
+ </fieldset>
+</form>
+
+<form class="filter" method="get" name="filter" action="{$F_FILTER_ACTION}">
+<fieldset>
+ <legend>{'Filter'|@translate}</legend>
+ <input type="hidden" name="page" value="user_list" />
+
+ <label>{'Username'|@translate} <input type="text" name="username" value="{$F_USERNAME}" /></label>
+
+ <label>
+ {'status'|@translate}
+ {html_options name=status options=$status_options selected=$status_selected}
+ </label>
+
+ <label>
+ {'group'|@translate}
+ {html_options name=group options=$group_options selected=$group_selected}
+ </label>
+
+ <label>
+ {'Sort by'|@translate}
+ {html_options name=order_by options=$order_options selected=$order_selected}
+ </label>
+
+ <label>
+ {'Sort order'|@translate}
+ {html_options name=direction options=$direction_options selected=$direction_selected}
+ </label>
+
+ <input class="submit" type="submit" value="{'Submit'|@translate}" />
+
+</fieldset>
+
+</form>
+
+<form method="post" name="preferences" action="">
+
+<table class="table2">
+ <tr class="throw">
+ <th>&nbsp;</th>
+ <th>{'Username'|@translate}</th>
+ <th>{'user_status'|@translate}</th>
+ <th>{'Email address'|@translate}</th>
+ <th>{'Groups'|@translate}</th>
+ <th>{'properties'|@translate}</th>
+ {if not empty($plugin_user_list_column_titles)}
+ {foreach from=$plugin_user_list_column_titles item=title}
+ <th>{$title}</th>
+ {/foreach}
+ {/if}
+ <th>{'Actions'|@translate}</th>
+ </tr>
+ {foreach from=$users item=user name=users_loop}
+ <tr class="{if $smarty.foreach.users_loop.index is odd}row1{else}row2{/if}">
+ <td><input type="checkbox" name="selection[]" value="{$user.ID}" {$user.CHECKED} id="selection-{$user.ID}" /></td>
+ <td><label for="selection-{$user.ID}">{$user.USERNAME}</label></td>
+ <td>{$user.STATUS}</td>
+ <td>{$user.EMAIL}</td>
+ <td>{$user.GROUPS}</td>
+ <td>{$user.PROPERTIES}</td>
+ {foreach from=$user.plugin_columns item=data}
+ <td>{$data}</td>
+ {/foreach}
+ <td style="text-align:center;">
+ <a href="{$user.U_PERM}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/permissions.png" class="button" style="border:none" alt="{'permissions'|@translate}" title="{'permissions'|@translate}" /></a>
+ <a href="{$user.U_PROFILE}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/edit_s.png" class="button" style="border:none" alt="{'Profile'|@translate}" title="{'Profile'|@translate}" /></a>
+ {foreach from=$user.plugin_actions item=data}
+ {$data}
+ {/foreach}
+ </td>
+ </tr>
+ {/foreach}
+</table>
+
+<div class="navigationBar">{$NAVBAR}</div>
+
+{* delete the selected users ? *}
+<fieldset>
+ <legend>{'Deletions'|@translate}</legend>
+ <label><input type="checkbox" name="confirm_deletion" value="1" /> {'confirm'|@translate}</label>
+ <input class="submit" type="submit" value="{'Delete selected users'|@translate}" name="delete" {$TAG_INPUT_ENABLED}/>
+</fieldset>
+
+<fieldset>
+ <legend>{'Status'|@translate}</legend>
+
+ <table>
+ <tr>
+ <td>{'Status'|@translate}</td>
+ <td>
+ <label><input type="radio" name="status_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="status_action" value="set" id="status_action_set" /> {'set to'|@translate}</label>
+ <select onchange="document.getElementById('status_action_set').checked = true;" name="status" size="1">
+ {html_options options=$pref_status_options selected=$pref_status_selected}
+ </select>
+ </td>
+ </tr>
+
+ {if isset($adviser)}
+ <tr>
+ <td>{'adviser'|@translate}</td>
+ <td>
+ <label><input type="radio" name="adviser" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ / {'set to'|@translate}
+ <label><input type="radio" name="adviser" value="true" />{'Yes'|@translate}</label>
+ <label><input type="radio" name="adviser" value="false" />{'No'|@translate}</label>
+ </td>
+ </tr>
+ {/if}
+
+ </table>
+</fieldset>
+
+{* form to set properties for many users at once *}
+<fieldset>
+ <legend>{'Groups'|@translate}</legend>
+
+<table>
+
+ <tr>
+ <td>{'associate to group'|@translate}</td>
+ <td>
+ {html_options name=associate options=$association_options selected=$associate_selected}
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'dissociate from group'|@translate}</td>
+ <td>
+ {html_options name=dissociate options=$association_options selected=$dissociate_selected}
+ </td>
+ </tr>
+
+</table>
+
+</fieldset>
+
+{* Properties *}
+<fieldset>
+ <legend>{'properties'|@translate}</legend>
+
+ <table>
+
+ <tr>
+ <td>{'enabled_high'|@translate}</td>
+ <td>
+ <label><input type="radio" name="enabled_high" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ / {'set to'|@translate}
+ <label><input type="radio" name="enabled_high" value="true" />{'Yes'|@translate}</label>
+ <label><input type="radio" name="enabled_high" value="false" />{'No'|@translate}</label>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'Privacy level'|@translate}</td>
+ <td>
+ <label><input type="radio" name="level_action" value="leave" checked="checked" />{'leave'|@translate}</label>
+ <label><input type="radio" name="level_action" value="set" id="level_action_set" />{'set to'|@translate}</label>
+ <select onchange="document.getElementById('level_action_set').checked = true;" name="level" size="1">
+ {html_options options=$level_options selected=$level_selected}
+ </select>
+ </td>
+ </tr>
+
+ </table>
+
+</fieldset>
+
+{* preference *}
+<fieldset>
+ <legend>{'Preferences'|@translate}</legend>
+
+<table>
+
+ <tr>
+ <td>{'nb_image_per_row'|@translate}</td>
+ <td>
+ <label><input type="radio" name="nb_image_line_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="nb_image_line_action" value="set" id="nb_image_line_action_set" /> {'set to'|@translate}</label>
+ <input onmousedown="document.getElementById('nb_image_line_action_set').checked = true;"
+ size="3" maxlength="2" type="text" name="nb_image_line" value="{$NB_IMAGE_LINE}" />
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'nb_row_per_page'|@translate}</td>
+ <td>
+ <label><input type="radio" name="nb_line_page_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="nb_line_page_action" value="set" id="nb_line_page_action_set" /> {'set to'|@translate}</label>
+ <input onmousedown="document.getElementById('nb_line_page_action_set').checked = true;"
+ size="3" maxlength="2" type="text" name="nb_line_page" value="{$NB_LINE_PAGE}" />
+ <td>
+ </tr>
+
+ <tr>
+ <td>{'theme'|@translate}</td>
+ <td>
+ <label><input type="radio" name="template_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="template_action" value="set" id="template_action_set" /> {'set to'|@translate}</label>
+ <select onchange="document.getElementById('template_action_set').checked = true;" name="template" size="1">
+ {html_options values=$template_options output=$template_options selected=$template_selected}
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'language'|@translate}</td>
+ <td>
+ <label><input type="radio" name="language_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="language_action" value="set" id="language_action_set" /> {'set to'|@translate}</label>
+ <select onchange="document.getElementById('language_action_set').checked = true;" name="language" size="1">
+ {html_options options=$language_options selected=$language_selected}
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'recent_period'|@translate}</td>
+ <td>
+ <label><input type="radio" name="recent_period_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="recent_period_action" value="set" id="recent_period_action_set" /> {'set to'|@translate}</label>
+ <input onmousedown="document.getElementById('recent_period_action_set').checked = true;"
+ type="text" size="3" maxlength="2" name="recent_period" value="{$RECENT_PERIOD}" />
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'auto_expand'|@translate}</td>
+ <td>
+ <label><input type="radio" name="expand" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ / {'set to'|@translate}
+ <label><input type="radio" name="expand" value="true" />{'Yes'|@translate}</label>
+ <label><input type="radio" name="expand" value="false" />{'No'|@translate}</label>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'show_nb_comments'|@translate}</td>
+ <td>
+ <label><input type="radio" name="show_nb_comments" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ / {'set to'|@translate}
+ <label><input type="radio" name="show_nb_comments" value="true" />{'Yes'|@translate}</label>
+ <label><input type="radio" name="show_nb_comments" value="false" />{'No'|@translate}</label>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'show_nb_hits'|@translate}</td>
+ <td>
+ <label><input type="radio" name="show_nb_hits" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ / {'set to'|@translate}
+ <label><input type="radio" name="show_nb_hits" value="true" />{'Yes'|@translate}</label>
+ <label><input type="radio" name="show_nb_hits" value="false" />{'No'|@translate}</label>
+ </td>
+ </tr>
+
+ <tr>
+ <td>{'maxwidth'|@translate}</td>
+ <td>
+ <label><input type="radio" name="maxwidth_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="maxwidth_action" value="unset" /> {'unset'|@translate}</label>
+ <label><input type="radio" name="maxwidth_action" value="set" id="maxwidth_action_set" /> {'set to'|@translate}</label>
+ <input onmousedown="document.getElementById('maxwidth_action_set').checked = true;"
+ type="text" size="4" maxlength="4" name="maxwidth" value="{$MAXWIDTH}" />
+ </td>
+ </tr>
+
+
+ <tr>
+ <td>{'maxheight'|@translate}</td>
+ <td>
+ <label><input type="radio" name="maxheight_action" value="leave" checked="checked" /> {'leave'|@translate}</label>
+ <label><input type="radio" name="maxheight_action" value="unset" /> {'unset'|@translate}</label>
+ <label><input type="radio" name="maxheight_action" value="set" id="maxheight_action_set" /> {'set to'|@translate}</label>
+ <input onmousedown="document.getElementById('maxheight_action_set').checked = true;"
+ type="text" size="4" maxlength="4" name="maxheight" value="{$MAXHEIGHT}" />
+ </td>
+ </tr>
+
+
+</table>
+
+</fieldset>
+
+<p>
+ {'target'|@translate}
+ <label><input type="radio" name="target" value="all" /> {'all'|@translate}</label>
+ <label><input type="radio" name="target" value="selection" checked="checked" /> {'selection'|@translate}</label>
+</p>
+
+<p>
+ <input class="submit" type="submit" value="{'Submit'|@translate}" name="pref_submit" {$TAG_INPUT_ENABLED} />
+ <input class="submit" type="reset" value="{'Reset'|@translate}" name="pref_reset" />
+</p>
+
+</form>
diff --git a/BSF/template/yoga/admin/user_perm.tpl b/BSF/template/yoga/admin/user_perm.tpl
new file mode 100644
index 000000000..3183c82e7
--- /dev/null
+++ b/BSF/template/yoga/admin/user_perm.tpl
@@ -0,0 +1,23 @@
+{* $Id$ *}
+<h2>{$TITLE}</h2>
+
+{if isset($categories_because_of_groups) }
+<fieldset>
+ <legend>{'Categories authorized thanks to group associations'|@translate}</legend>
+
+ <ul>
+ {foreach from=$categories_because_of_groups item=cat }
+ <li>{$cat}</li>
+ {/foreach}
+ </ul>
+</fieldset>
+{/if}
+
+
+<fieldset>
+ <legend>{'Other private categories'|@translate}</legend>
+
+ <form method="post" action="{$F_ACTION}">
+ {$DOUBLE_SELECT}
+ </form>
+</fieldset>
diff --git a/BSF/template/yoga/admin/ws_checker.tpl b/BSF/template/yoga/admin/ws_checker.tpl
new file mode 100644
index 000000000..cce3c7f49
--- /dev/null
+++ b/BSF/template/yoga/admin/ws_checker.tpl
@@ -0,0 +1,218 @@
+{* $Id$ *}
+
+<div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ </ul>
+ <h2>{'title_wscheck'|@translate} - {'web_services'|@translate}</h2>
+</div>
+
+{if !empty($update_results)}
+<ul>
+ {foreach from=$update_results item=result}
+ <li>$result</li>
+ {/foreach}
+</ul>
+{/if}
+
+{* Add Access *}
+<form method="post" name="adding_access" action="{$F_STATUS_ACTION}">
+ <!-- Current Default -->
+ <fieldset>
+ <legend>{'ws_adding_legend'|@translate}</legend>
+ <table>
+ {* Access key *}
+ <tr>
+ <td>
+ <label for="KeyName">{'Confidential partner key'|@translate} </label>
+ </td>
+ <td>
+ <input type="text" maxlength="35" size="35" name="add_partner"
+ id="add_partner" value="{$F_ADD_PARTNER}"
+ title="{'Basis of access key calculation'|@translate}" />
+ </td>
+ </tr>
+
+ {* Target (cat/ids, tag/ids, or list/ids ids=id,id-id,...) *}
+ <tr>
+ <td>
+ <label for="Access">{'Target'|@translate}</label>
+ </td>
+ <td>
+ <input type="text" maxlength="128" size="35" name="add_target"
+ id="add_target" value="{$F_ADD_ACCESS}"
+ title="{'Facultative and restrictive option'|@translate}" />
+ <i><small> ({'Access: see help text for more'|@translate})
+ </small></i>
+ </td>
+ </tr>
+
+ {* Restricted access to specific request *}
+ <tr>
+ <td>
+ <label for="add_request">{'Restrict access to'|@translate}</label>
+ </td>
+ <td>
+ <select name="add_request" id="add_request" style="width: 18em"
+ onfocus="this.className='focus';"
+ onblur="this.className='nofocus';">
+ <option value=""></option>
+ {html_options values=$add_requests output=$add_requests}
+ </select>
+ <i><small> ({'ws_Methods'|@translate})</small></i>
+ </td>
+ </tr>
+
+ {* Limit number of images information to be return *}
+ <tr>
+ <td>
+ <label for="add_limit">{'Returned images limit'|@translate}</label>
+ </td>
+ <td>
+ <select name="add_limit" id="add_limit" style="width: 10em"
+ onfocus="this.className='focus';"
+ onblur="this.className='nofocus';">
+ {html_options values=$add_limits output=$add_limits}
+ </select>
+ </td>
+ </tr>
+
+ {* Open service is postponed by n days *}
+ {* In comment currently
+ <tr>
+ <td>
+ <label for="add_start">{'Postponed availability in days'|@translate}</label>
+ </td>
+ <td>
+ <select name="add_start" id="add_start" style="width: 10em"
+ onfocus="this.className='focus';"
+ onblur="this.className='nofocus';">
+ <!-- BEGIN add_start -->
+ <option value="{add_start.VALUE}"
+ {add_start.SELECTED}>{add_start.CONTENT}
+ </option>
+ <!-- END add_start -->
+ </select>
+ </td>
+ </tr>
+ *}
+
+ {* Opened service only for n days *}
+ <tr>
+ <td>
+ <label for="add_end">{'Duration in days'|@translate}</label>
+ </td>
+ <td>
+ <select name="add_end" id="add_end" style="width: 10em"
+ onfocus="this.className='focus';"
+ onblur="this.className='nofocus';">
+ {html_options values=$add_ends output=$add_ends}
+ </select>
+ </td>
+ </tr>
+
+ {* Idendify your partner (name / website / phone) as you want *}
+ <tr>
+ <td>
+ <label for="add_Comment">{'ws_Comment'|@translate}</label>
+ <br />
+ </td>
+ <td>
+ <textarea name="add_comment" id="add_comment"
+ rows="4" cols="80">{'Comment to identify your partner clearly'|@translate}</textarea>
+ </td>
+ </tr>
+
+ {* Add submit button *}
+ <tr>
+ <td>
+ </td>
+ <td>
+ <input class="submit" type="submit" name="wsa_submit" style="width: 10em; padding-top: 3px;"
+ value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}
+ title="{'Add this access definition'|@translate}" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</form>
+
+{if !empty($access_list)}
+<!-- Access list -->
+<form method="post" name="preferences" action="{$F_STATUS_ACTION}">
+ <input type="hidden" name="partner_prev" value="{$F_PREV_PARTNER}">
+ <input type="hidden" name="request_prev" value="{$F_PREV_REQUEST}">
+ <input type="hidden" name="high_prev" value="{$F_PREV_HIGH}">
+ <input type="hidden" name="normal_prev" value="{$F_PREV_NORMAL}">
+ <input type="hidden" name="order_prev" value="{$F_PREV_ORDER}">
+ <input type="hidden" name="dir5n_prev" value="{$F_PREV_DIR5N}">
+ <!-- Delete / Update Selected -->
+ <fieldset>
+ <legend>{'ws_update_legend'|@translate}</legend>
+ <table class="table2">
+ <tr class="throw">
+ <th>&nbsp;</th>
+ <th>{'ws_KeyName'|@translate}</th>
+ <th>{'ws_Access'|@translate}</th>
+ <th>{'ws_End'|@translate}</th>
+ <th>{'ws_Request'|@translate}</th>
+ <th>{'ws_Limit'|@translate}</th>
+ <th>{'ws_Comment'|@translate}</th>
+ </tr>
+ {foreach from=$access_list item=access name=access_loop}
+ <tr class="{if $smarty.foreach.access_loop.index is odd}row1{else}row2{/if}">
+ <td>
+ <input type="radio" name="selection"
+ value="{$access.ID}" id="selection-{$access.ID}">
+ </td>
+ <td><label for="selection-{$access.ID}">{$access.NAME}</label></td>
+ <td>{$access.TARGET}</td>
+ <td>{$access.END}</td>
+ <td>{$access.REQUEST}</td>
+ <td>{$access.LIMIT}</td>
+ <td>{$access.COMMENT}</td>
+ </tr>
+ {/foreach}
+ </table>
+
+ <table>
+ <tr>
+ <td>
+ {'ws_delete_legend'|@translate}
+ </td>
+ <td>
+ <input type="radio" name="delete_confirmation"
+ value="true">
+ <input class="submit" type="submit" name="wsX_submit" style="width: 10em; padding-top: 3px;"
+ value="{'Delete'|@translate}" {$TAG_INPUT_ENABLED}>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ <table>
+ <tr>
+ <td>
+ <span class="property">
+ <label for="upd_end">{'Modify End from Now +'|@translate} </label>
+ </span>
+ <select name="upd_end" id="upd_end" style="width: 10em"
+ onfocus="this.className='focus';"
+ onblur="this.className='nofocus';">
+ {html_options values=$add_ends output=$add_ends}
+ </select>
+ <input class="submit" type="submit" name="wsu_submit" style="width: 10em; padding-top: 3px;"
+ value="{'Submit'|@translate}" {$TAG_INPUT_ENABLED}>
+ </td>
+ <td>
+ <i><small> ({'Web Services availability duration in days'|@translate})</small></i>
+ </td>
+ </tr>
+ </table>
+
+ </fieldset>
+</form>
+{/if}
+
+{if isset($WS_STATUS)}
+ <h3>{$WS_STATUS}</h3>
+{/if}
diff --git a/BSF/template/yoga/comments.tpl b/BSF/template/yoga/comments.tpl
new file mode 100644
index 000000000..2e2beaf34
--- /dev/null
+++ b/BSF/template/yoga/comments.tpl
@@ -0,0 +1,99 @@
+{* $Id$ *}
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'return to homepage'|@translate}"><img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'User comments'|@translate}</h2>
+ </div>
+
+<form class="filter" action="{$F_ACTION}" method="get">
+
+ <fieldset>
+ <legend>{'Filter'|@translate}</legend>
+
+ <label>{'Keyword'|@translate}<input type="text" name="keyword" value="{$F_KEYWORD}" /></label>
+
+ <label>{'Author'|@translate}<input type="text" name="author" value="{$F_AUTHOR}" /></label>
+
+ <label>
+ {'Category'|@translate}
+ <select name="cat">
+ <option value="0">------------</option>
+ {html_options options=$categories selected=$categories_selected}
+ </select>
+ </label>
+
+ <label>
+ {'Since'|@translate}
+ <select name="since">
+ {html_options options=$since_options selected=$since_options_selected}
+ </select>
+ </label>
+
+ </fieldset>
+
+ <fieldset>
+
+ <legend>{'Display'|@translate}</legend>
+
+ <label>
+ {'Sort by'|@translate}
+ <select name="sort_by">
+ {html_options options=$sort_by_options selected=$sort_by_options_selected}
+ </select>
+ </label>
+
+ <label>
+ {'Sort order'|@translate}
+ <select name="sort_order">
+ {html_options options=$sort_order_options selected=$sort_order_options_selected}
+ </select>
+ </label>
+
+ <label>
+ {'Number of items'|@translate}
+ <select name="items_number">
+ {html_options options=$item_number_options selected=$item_number_options_selected}
+ </select>
+ </label>
+
+ </fieldset>
+
+ <p><input class="submit" type="submit" value="{'Filter and display'|@translate}"></p>
+
+</form>
+
+<div class="navigationBar">{$NAVBAR}</div>
+
+{if isset($comments)}
+<div id="comments">
+
+ {foreach from=$comments item=comment}
+ <div class="comment">
+ <a class="illustration" href="{$comment.U_PICTURE}"><img src="{$comment.TN_SRC}" alt="{$comment.ALT}" /></a>
+ <p class="commentHeader"><span class="author">{$comment.AUTHOR}</span> - <span class="date">{$comment.DATE}</span>
+
+ {if isset($comment.U_DELETE)}
+ <a href="{$comment.U_DELETE}" title="{'comments_del'|@translate}">
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/delete.png" class="button" style="border:none;vertical-align:middle; margin-left:5px;" alt="[{'delete'|@translate}]"/>
+ </a>
+ {/if}
+
+ {if isset($comment.U_VALIDATE)}
+ <a href="{$comment.U_VALIDATE}" title="validate this comment">
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/validate_s.png" class="button" style="border:none;vertical-align:middle; margin-left:5px;" alt="[validate]"/>
+ </a>
+ {/if}
+
+ </p>
+ <blockquote>{$comment.CONTENT}</blockquote>
+ <hr class="separation">
+ </div>
+
+ {/foreach}
+</div>
+{/if}
+
+</div> <!-- content -->
diff --git a/BSF/template/yoga/content.css b/BSF/template/yoga/content.css
new file mode 100644
index 000000000..05e246069
--- /dev/null
+++ b/BSF/template/yoga/content.css
@@ -0,0 +1,241 @@
+/* $Id$ */
+.content {
+ margin-right: 1em;
+ margin-bottom: 1em; /* when it's longer than menu bar */
+}
+
+BODY#theCommentsPage .content,
+BODY#theUploadPage .content,
+BODY#theRegisterPage .content,
+BODY#theIdentificationPage .content,
+BODY#theProfilePage .content,
+BODY#theSearchPage .content,
+BODY#theAboutPage .content,
+BODY#thePopuphelpPage .content,
+BODY#thePasswordPage .content,
+BODY#theNotificationPage .content,
+BODY#theTagsPage .content,
+BODY#theNBMPage .content
+{
+ margin: 1em;
+}
+
+.content H3 {
+ margin-bottom: 1ex;
+}
+
+.content H2 { margin-bottom: 3px;} /*<- for IE otherwise calendar select is displaced to middle of page*/
+
+.content H3 {
+ text-align: center;
+}
+
+.content .navigationBar, .content .additional_info {
+ margin: 10px 0;
+ text-align: center;
+}
+
+.content .pageNumberSelected {
+ font-style: italic;
+ font-weight: bold;
+}
+
+.content .additional_info {
+ font-size: 110%;
+}
+
+.content FORM {
+ text-align: left;
+}
+
+/* content defaults */
+.content DL, DD { margin: 10px; }
+.content DT {
+ margin-bottom: 5px;
+ font-style: italic;
+ font-size: 110%;
+}
+
+/* actions */
+UL.categoryActions {
+ margin: 0 2px;
+ width: auto;
+ padding: 0;
+ text-indent: 0;
+ list-style: none;
+ text-align: center;
+}
+
+.content DIV.titrePage UL.categoryActions {
+ float: right;
+ text-align: center;
+}
+
+.content DIV.titrePage {
+ padding: 0 0 3px;
+}
+
+.content UL.categoryActions LI {
+ display: inline;
+}
+
+.content UL.categoryActions A IMG, UL.categoryActions A {
+ border: none;
+ margin-bottom: -5px;
+}
+
+/* User comments */
+
+.content DIV#comments {
+ padding-left: 5px;
+ padding-right: 5px;
+}
+.content DIV.comment {
+ margin: 0 0 0.5em 0;
+ padding: 0;
+ overflow: hidden; /* these 2 lines keep the floating child in the DIV */
+ width: 100%; /* don't ask why. It's a very usefull trick */
+}
+
+.content DIV.comment A.illustration {
+ display: block;
+ float: left;
+ margin: 0.5em 0 0 0.5em;
+}
+
+.content DIV.comment P.commentHeader {
+ text-align: right;
+ margin: 0.5em 0.5em 0 0;
+}
+
+.content DIV.comment UL.actions {
+ text-align: center;
+ margin: 0.2em;
+}
+
+.content DIV.comment BLOCKQUOTE {
+ margin-right: 0.5em;
+ overflow: visible; /*avoid a very strange margin behaviour (all browsers) */
+}
+
+/* begin chronology/calendar elements*/
+.content DIV.calendarViews {
+ display: block;
+ float: right;
+ margin: 2px 0 0;
+}
+
+.content DIV.calendarBar { margin: 8px 4px; }
+
+SPAN.calItem, SPAN.calItemEmpty {
+ font-weight: bold;
+ margin: 0 1px;
+}
+
+SPAN.calItem A { border:0 }
+
+.content DIV.calendarCalBar {
+ margin: 10px 10px;
+ text-align: left;
+}
+
+SPAN.calCalHead {
+ font-weight: bold;
+ font-size: 110%;
+ margin: 0 2px;
+}
+
+SPAN.calCal { margin: 0 2px; }
+
+/* nice looking month calendar*/
+TABLE.calMonth {
+ border: none;
+ border-collapse: collapse;
+ margin-bottom: 10px; /*<-IE ignores this */
+}
+
+TD.calDayCellFull, TD.calDayCellEmpty, TD.calDayCellBlank {
+ text-align:left;
+ vertical-align: top;
+ font: bold 18px Arial, Helvetica, sans-serif;
+}
+
+TD.calDayHead { font: bold 12px Arial, Helvetica, sans-serif; }
+
+DIV.calImg {
+ overflow: hidden;
+ vertical-align: bottom;
+ z-index: 1;
+ position: relative; /*<- this required by IE*/
+}
+
+.calImg img {
+ position: relative;
+ border: 0;
+}
+
+.calBackDate {
+ padding-left: 4px;
+ padding-top: 0px;
+ z-index: 2;
+ position: absolute;
+ text-align: left;
+ vertical-align: top;
+ color: #000;
+}
+
+.calForeDate {
+ padding-left: 5px;
+ padding-top: 1px;
+ z-index: 3;
+ position: absolute;
+ text-align: left;
+ vertical-align: top;
+ color: #fff;
+}
+
+/* Category thumbnails on main page, CSS code inspired from MOD subcatify */
+.content UL.thumbnailCategories {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+}
+
+.content UL.thumbnailCategories LI {
+ margin:0;
+ padding:0;
+ float:left;
+}
+
+.content DIV.thumbnailCategory {
+ display:block;
+ padding: 2px 0px 0px 2px;
+ margin: 5px;
+}
+
+.content DIV.thumbnailCategory DIV.description {
+ font-size: 90%;
+ overflow: auto;
+ /*width: inherit;*/
+}
+
+.content DIV.thumbnailCategory DIV.description H3 {
+ text-align: left;
+ background: transparent;
+ margin: 0;
+ padding: 0.1em;
+ font-size: 120%;
+}
+
+.content DIV.thumbnailCategory DIV.description P {
+ margin: 0;
+}
+
+.content DIV.thumbnailCategory DIV.illustration {
+ text-align: left;
+ margin: 2px 0 0 2px;
+ float: left;
+}
diff --git a/BSF/template/yoga/default-colors.css b/BSF/template/yoga/default-colors.css
new file mode 100644
index 000000000..1534e4f11
--- /dev/null
+++ b/BSF/template/yoga/default-colors.css
@@ -0,0 +1,112 @@
+/* $Id$ */
+
+/* others */
+
+#imageToolBar * {
+ background: inherit;
+}
+
+/* So that non-links are slightly greyed out */
+.content .navigationBar, SPAN.calItemEmpty, TD.calDayCellEmpty {
+ color: #b0b0b0;
+}
+
+/* Tables & forms */
+
+/* IE <= 6 is so bad with this that you can't merge with the following rule */
+INPUT[type="text"], INPUT[type="password"], INPUT[type="button"],
+INPUT[type="submit"], INPUT[type="reset"], INPUT[type="file"] {
+ color:black;
+ background-color: #d3d3d3; /* lightgrey */
+}
+
+INPUT.text, INPUT.password, INPUT.button,
+INPUT.submit, INPUT.reset, INPUT.file,
+SELECT, TEXTAREA {
+ color:black;
+ background-color: #d3d3d3; /* lightgrey */
+}
+
+INPUT:focus, SELECT:focus, TEXTAREA:focus, INPUT.focus, FORM .focus {
+ background-color: #f5f5f5; /* whitesmoke */
+}
+
+/* some theme set a border on INPUT which is not pretty for radio/checkbox */
+INPUT[type="radio"], INPUT[type="checkbox"] {
+ border: none; /* <= Opera needs this */
+}
+
+INPUT.radio, INPUT.checkbox {
+ border: none; /* <= IE6 needs this */
+}
+
+/* rate buttons displayed like links */
+INPUT.rateButton, INPUT.rateButtonSelected, INPUT.rateButtonStarFull, INPUT.rateButtonStarEmpty {
+ color:inherit;
+ background-color:transparent; /* Konqueror doesn't accept transparent here */
+}
+
+.errors { /* Errors display */
+ color: red;
+ background-color: #ffe1e1;
+ font-weight: bold;
+ text-align: left;
+ margin: 5px;
+ border: 1px solid red;
+ background-image: url(icon/admin/errors.png);
+ background-repeat: no-repeat;
+ background-position: top right;
+ padding: 10px 50px 10px 10px;
+}
+
+/**
+ * Informations box in administration
+ */
+.infos {
+ text-align: left;
+ color: #002000;
+ background-color: #98fb98; /* palegreen */
+ background-image: url(icon/admin/infos.png);
+ background-repeat: no-repeat;
+ background-position: top right;
+ margin: 5px;
+ padding: 10px 50px 10px 10px;
+}
+
+/**
+ * Header message like upgrade or adviser mode
+ */
+.header_msgs {
+ text-align:center;
+ font-weight: bold;
+ color:#696969; /* dimgray */
+ background-color: #d3d3d3;
+ margin: 1px;
+ padding: 1px;
+}
+
+/**
+ * Header notes box in public/administration
+ */
+.header_notes {
+ border: 1px solid #aaaaaa; /* border color and style */
+ text-align: center;
+ background-image: url(icon/note.png);
+ background-repeat: no-repeat;
+ background-position: top left;
+ font-weight: bold;
+ margin: 14px;
+ padding: 5px 00px 0px 0px;
+}
+
+LEGEND {
+ font-style: italic;
+}
+
+/*calendar*/
+SPAN.calItem, SPAN.calItemEmpty,
+TD.calDayCellEmpty, TD.calDayCellFull {
+ border: 1px solid gray;
+}
+
+
diff --git a/BSF/template/yoga/default-layout.css b/BSF/template/yoga/default-layout.css
new file mode 100644
index 000000000..c6b229481
--- /dev/null
+++ b/BSF/template/yoga/default-layout.css
@@ -0,0 +1,270 @@
+/* $Id$ */
+@import "admin/default-layout.css";
+BODY {
+ margin: 5px;
+ padding: 0;
+ font-size: 0.8em;
+ font-family: Univers, Helvetica, Optima, "Bitstream Vera Sans", sans-serif;
+ text-align: center; /* be nice to IE5 */
+}
+
+#the_page {
+ /* Just in case another template needs an inner frame */
+}
+
+H1 {
+ text-align: center;
+ font-size: 150%;
+ font-weight: bold;
+ padding: 0;
+ margin: 0.5em 0 1em 0;
+}
+
+H2 {
+ margin: 0;
+ padding: 5px 0.5em 5px 0.5em;
+ text-align: left;
+ font-size: 120%;
+}
+
+A {
+ text-decoration:none;
+ border-bottom: 1px dotted #005e89;
+}
+A:hover {
+ border-bottom: 1px solid #858460;
+}
+A.button, A.button:hover {
+ border: 0;
+}
+IMG {
+ border: none;
+}
+
+HR.separation {
+ visibility: hidden;
+ clear: both;
+}
+
+#copyright {
+ clear: both;
+ font-size: 83%;
+ text-align: center;
+ margin: 0 0 10px 0;
+}
+
+/** General defaults **/
+INPUT, SELECT {
+ margin: 0;
+ font-size: 1em; /* <= some browsers don't set it correctly */
+}
+UL, DL, LI { text-align: left;}
+TABLE { /* horizontaly centered */
+ margin-left: auto;
+ margin-right: auto;
+}
+/* for debugging purpose */
+PRE { text-align:left; }
+
+/** forms **/
+
+FORM { padding: 0em; }
+
+FORM P {
+ text-align: center;
+ margin-top: 2em;
+ margin-bottom: 2em;
+}
+
+FORM FIELDSET P {
+ margin-top: 1em;
+ margin-bottom: 0;
+}
+
+.small {
+ font-size: 80%;
+}
+
+TEXTAREA.description {
+ height: 6em;
+ width: 40em;
+ overflow: auto;
+}
+
+SELECT.categoryList {
+ height: 20em;
+ width: auto;
+}
+
+DIV.comment BLOCKQUOTE {
+ padding: 0.5em;
+ overflow: auto; /* no solution for IE6 */
+ min-height: 2.75em; /* fix a Gecko bug whith scrollbar and 1 line only */
+}
+
+
+/**
+ * Filter forms are displayed label by label with the input (or select...)
+ * below the label. Use an UL to make a group (radiobox for instance).
+ * Use a SPAN to group objects in line
+ */
+FIELDSET {
+ padding: 1em;
+ margin: 1em;
+ overflow: hidden; /* <- makes Opera happy */
+}
+
+FORM.filter FIELDSET UL {
+ margin: 0;
+}
+FORM.filter FIELDSET UL,
+FORM.filter FIELDSET LABEL {
+ display: block;
+ float: left;
+ margin-right: 1em;
+ padding: 0;
+}
+
+FORM.filter FIELDSET LI {
+ list-style: none;
+ margin-bottom: 0.5em;
+}
+
+FORM.filter FIELDSET LI LABEL {
+ display: inline;
+ float: none;
+}
+
+FORM.filter FIELDSET UL.tagSelection LABEL {
+ display: inline;
+ float: none;
+ margin-right:0.5em;/*reduce from above*/
+}
+
+/* cannot use FIELDSET>LABEL because of IE<=6 */
+FORM.filter FIELDSET LABEL INPUT,
+FORM.filter FIELDSET LABEL SELECT,
+FORM.filter FIELDSET LABEL SPAN,
+FORM.filter FIELDSET LABEL TEXTAREA {
+ display: block;
+ margin: 0.5em 0;
+}
+FORM.filter FIELDSET * LABEL INPUT,
+FORM.filter FIELDSET * LABEL SELECT,
+FORM.filter FIELDSET * LABEL TEXTAREA,
+FORM.filter FIELDSET LABEL SPAN INPUT,
+FORM.filter FIELDSET LABEL SPAN SELECT,
+FORM.filter FIELDSET LABEL SPAN TEXTAREA {
+ display: inline;
+ vertical-align: top;
+ margin: 0 0.5em 0 0;
+}
+
+FORM.filter FIELDSET UL.tagSelection LI LABEL INPUT {
+ margin-right:0;
+}
+
+/* following declaration is important to avoid strange FF behaviour */
+FORM.filter FIELDSET LABEL SPAN SELECT {
+ margin: 0;
+}
+
+FORM.filter FIELDSET P
+{
+ clear: left;
+ display: block;
+}
+
+FORM.filter INPUT[type="submit"] {
+ margin-top: 1em;
+}
+
+FORM.properties UL, FORM#update UL {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+
+FORM.properties LI, FORM#update UL {
+ margin-bottom: 0.5em;
+ padding: 0;
+ line-height: 1.8em;
+ clear: left;
+}
+
+FORM.properties SPAN.property {
+ font-weight: bold;
+ float: left;
+ width: 50%;
+ text-align: right;
+ margin: 0;
+ padding: 0 0.5em 0 0;
+}
+
+#theHeader H1 {
+ margin-bottom: 0.5em;
+}
+
+/* button tools */
+UL.actions {
+ text-indent: 0;
+ list-style: none;
+}
+UL.actions LI {
+ display: inline;
+}
+UL.actions A {
+ border: none;
+}
+
+UL.tagSelection {
+ width: 99%;
+ margin: 1em 0 1em 0;
+ padding: 0;
+}
+
+UL.tagSelection LI {
+ display: inline;
+ white-space: nowrap;
+}
+
+#fullTagCloud {
+ font-size: 120%;
+ text-align: justify;
+ padding: 0;
+ margin: 1em 2em 1em 2em;
+}
+
+#fullTagCloud LI {
+ display: inline;
+ white-space: nowrap;
+ margin: 0 2px;
+}
+
+
+.tagLevel5 { font-size: 150%; }
+.tagLevel4 { font-size: 140%; }
+.tagLevel3 { font-size: 120%; }
+.tagLevel2 { font-size: 100%; }
+.tagLevel1 { font-size: 90%; }
+
+
+/* Popup help page */
+BODY#thePopuphelpPage #copyright {
+ display: none;
+}
+
+BODY#thePopuphelpPage .content P {
+ text-align: justify;
+ padding: 0.5em;
+}
+
+BODY#thePopuphelpPage .content OL LI,
+BODY#thePopuphelpPage .content UL LI
+{
+ margin-bottom: 0.5em;
+}
+
+BODY#thePopuphelpPage P#pageBottomActions A {
+ border: none;
+}
diff --git a/BSF/template/yoga/fix-ie5-ie6.css b/BSF/template/yoga/fix-ie5-ie6.css
new file mode 100644
index 000000000..b78bc7bf4
--- /dev/null
+++ b/BSF/template/yoga/fix-ie5-ie6.css
@@ -0,0 +1,23 @@
+/* $Id$ */
+/* Issues in IE from 5 to 6 only not to be used with IE7 */
+
+@import "thumbnails-fix-ie5-ie6.css";
+
+/* to avoid vanishing objects in IE6 */
+H1, #theHeader {
+ width: 100%; /* <- useless but seems to make IE6 happy */
+}
+.content {
+ height: 1em; /* for IE6 it's like min-height */
+}
+
+/* fix category thumbnails on main page */
+.content UL.thumbnailCategories {
+ width: 99%; /* buggy IE box model */
+}
+
+
+/* fix quickconnect layout */
+FORM#quickconnect FIELDSET {
+ width: 99%; /* correct an ugly 1 or 2 px misalignement with IE */
+}
diff --git a/BSF/template/yoga/fix-ie7.css b/BSF/template/yoga/fix-ie7.css
new file mode 100644
index 000000000..33599dd18
--- /dev/null
+++ b/BSF/template/yoga/fix-ie7.css
@@ -0,0 +1,22 @@
+/* $Id$ */
+/* fix IE with another layout for thumbnails */
+
+.content UL.thumbnails SPAN.wrap2 {
+ display: block;
+ position: relative;
+ text-align: left;
+}
+.content UL.thumbnails SPAN.wrap2 A,
+.content UL.thumbnails SPAN.wrap2 SPAN {
+ overflow: visible;
+ position: absolute;
+ top: 50%;
+ text-align: center;
+}
+
+.content UL.thumbnails IMG.thumbnail {
+ position: relative;
+ top: -50%;
+ margin-top: 2%;
+}
+
diff --git a/BSF/template/yoga/fix-khtml.css b/BSF/template/yoga/fix-khtml.css
new file mode 100644
index 000000000..29ffd1877
--- /dev/null
+++ b/BSF/template/yoga/fix-khtml.css
@@ -0,0 +1,20 @@
+/* $Id$ */
+/* Issue in Safari/Konqueror only */
+/* If H2 has a 0 margin-top categoryActions doesn't float right but overwrites H2 */
+.content>DIV.titrePage>H2 {
+ margin: 1px 0 0 0; /* add an arbitrary margin-top */
+}
+
+.content>div.titrePage {
+ position: relative;
+ top: -1px; /* move the container up by the same amount */
+ margin-bottom: 5px;
+}
+
+#menubar #menuTagCloud LI
+{
+ display: inline-block;/* required for Safari 3.1 - otherwise overflows on the right */
+}
+
+/* end Safari/Konqueror */
+
diff --git a/BSF/template/yoga/footer.tpl b/BSF/template/yoga/footer.tpl
new file mode 100644
index 000000000..fff70e1f1
--- /dev/null
+++ b/BSF/template/yoga/footer.tpl
@@ -0,0 +1,32 @@
+{* $Id$ *}
+<div id="copyright">
+ <a name="EoP"></a> <!-- End of Page -->
+ {if isset($debug.TIME) }
+ {'generation_time'|@translate} {$debug.TIME} ({$debug.NB_QUERIES} {'sql_queries_in'|@translate} {$debug.SQL_TIME}) -
+ {/if}
+
+ {* Please, do not remove this copyright. If you really want to,
+ contact us on http://piwigo.org to find a solution on how
+ to show the origin of the script...
+ *}
+
+ {'powered_by'|@translate}
+ <a href="http://piwigo.org" class="PWG">
+ <span class="P">Php</span><span class="W">Web</span><span class="G">Gallery</span></a>
+ {$VERSION}
+ {if isset($CONTACT_MAIL)}
+ - {'send_mail'|@translate}
+ <a href="mailto:{$CONTACT_MAIL}?subject={'title_send_mail'|@translate|@escape:url}">{'Webmaster'|@translate}</a>
+ {/if}
+
+</div> <!-- copyright -->
+{if isset($footer_elements)}
+{foreach from=$footer_elements item=v}
+{$v}
+{/foreach}
+{/if}
+</div> <!-- the_page -->
+
+{if isset($debug.QUERIES_LIST)}{$debug.QUERIES_LIST}{/if}
+</body>
+</html> \ No newline at end of file
diff --git a/BSF/template/yoga/header.tpl b/BSF/template/yoga/header.tpl
new file mode 100644
index 000000000..d0bec5e61
--- /dev/null
+++ b/BSF/template/yoga/header.tpl
@@ -0,0 +1,84 @@
+{* $Id$ *}
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="{$LANG}" dir="{$DIR}">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}">
+<meta name="generator" content="Piwigo (aka PWG), see piwigo.org">
+<title>{$GALLERY_TITLE} :: {$PAGE_TITLE}</title>
+<link rel="shortcut icon" type="image/x-icon" href="{$ROOT_URL}template-common/favicon.ico">
+
+<link rel="start" title="{'home'|@translate}" href="{$U_HOME}" >
+<link rel="search" title="{'Search'|@translate}" href="{$ROOT_URL}search.php" >
+{if isset($first.U_IMG) }<link rel="first" title="{'first_page'|@translate}" href="{$first.U_IMG}" >{/if}
+{if isset($previous.U_IMG)}<link rel="prev" title="{'previous_page'|@translate}" href="{$previous.U_IMG}" >{/if}
+{if isset($next.U_IMG) }<link rel="next" title="{'next_page'|@translate}" href="{$next.U_IMG}" >{/if}
+{if isset($last.U_IMG) }<link rel="last" title="{'last_page'|@translate}" href="{$last.U_IMG}" >{/if}
+{if isset($U_UP) }<link rel="up" title="{'thumbnails'|@translate}" href="{$U_UP}" >{/if}
+
+<link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/layout.css">
+{* the next css is used to fix khtml (Konqueror/Safari) issue the "text/nonsense" prevents gecko based browsers to load it *}
+<link rel="stylesheet" type="text/nonsense" href="{$ROOT_URL}template/{$themeconf.template}/fix-khtml.css">
+<!--[if lt IE 7]>
+ <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/fix-ie5-ie6.css">
+<![endif]-->
+<!--[if gt IE 6]>
+ <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/fix-ie7.css">
+<![endif]-->
+<!--[if !IE]> <-->
+ <link rel="stylesheet" href="{$ROOT_URL}template/{$themeconf.template}/not-ie.css" type="text/css">
+<!--> <![endif]-->
+<link rel="stylesheet" type="text/css" media="print" href="{$ROOT_URL}template/{$themeconf.template}/print.css">
+<link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/default-colors.css">
+<link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/theme.css">
+{$themeconf.local_head}
+{if isset($U_PREFETCH) }<link rel="prefetch" href="{$U_PREFETCH}">{/if}
+
+{if not empty($page_refresh) }<meta http-equiv="refresh" content="{$page_refresh.TIME};url={$page_refresh.U_REFRESH}">{/if}
+
+<script type="text/javascript" src="{$ROOT_URL}template-common/scripts.js"></script>
+<!--[if lt IE 7]>
+<style>
+ {* only because we need {$ROOT_URL} otherwise use fix-ie5-ie6.css *}
+ BODY {ldelim} behavior:url("{$ROOT_URL}template-common/csshover.htc"); }
+ A IMG, .button, .icon {ldelim}
+ behavior:url("{$ROOT_URL}template-common/tooltipfix.htc");
+ }
+ FORM {ldelim} behavior: url("{$ROOT_URL}template-common/inputfix.htc"); }
+</style>
+<script type="text/javascript" src="{$ROOT_URL}template-common/pngfix.js"></script>
+<![endif]-->
+
+{if not empty($head_elements)}
+ {foreach from=$head_elements item=elt}{$elt}{/foreach}
+{/if}
+
+</head>
+
+<body id="{$BODY_ID}">
+<div id="the_page">
+
+{if not empty($header_msgs)}
+<div class="header_msgs">
+ {foreach from=$header_msgs item=elt}
+ <p>{$elt}</p>
+ {/foreach}
+</div>
+{/if}
+
+<div id="theHeader">{$PAGE_BANNER}</div>
+{if isset($pwgmenu)}
+<ul class="pwgmenu">
+ <li><a href="{$pwgmenu.HOME}" onclick="window.open(this.href, ''); return false;"><span class="bg">{'HOME'|@translate}</span></a></li>
+ <li><a href="{$pwgmenu.WIKI}" onclick="window.open(this.href, ''); return false;"><span class="bg">{'WIKI / DOC'|@translate}</span></a></li>
+ <li><a href="{$pwgmenu.FORUM}" onclick="window.open(this.href, ''); return false;"><span class="bg">{'FORUM'|@translate}</span></a></li>
+ <li><a href="{$pwgmenu.EXTENSIONS}" onclick="window.open(this.href, ''); return false;"><span class="bg">{'EXTENSIONS'|@translate}</span></a></li>
+</ul>
+{/if}
+{if not empty($header_notes)}
+<div class="header_notes">
+ {foreach from=$header_notes item=elt}
+ <p>{$elt}</p>
+ {/foreach}
+</div>
+{/if}
diff --git a/BSF/template/yoga/icon/add_tag.png b/BSF/template/yoga/icon/add_tag.png
new file mode 100644
index 000000000..9051a1d26
--- /dev/null
+++ b/BSF/template/yoga/icon/add_tag.png
Binary files differ
diff --git a/BSF/template/yoga/icon/admin/errors.png b/BSF/template/yoga/icon/admin/errors.png
new file mode 100644
index 000000000..3c8a37df5
--- /dev/null
+++ b/BSF/template/yoga/icon/admin/errors.png
Binary files differ
diff --git a/BSF/template/yoga/icon/admin/index.php b/BSF/template/yoga/icon/admin/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/icon/admin/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/icon/admin/infos.png b/BSF/template/yoga/icon/admin/infos.png
new file mode 100644
index 000000000..dc8c8a457
--- /dev/null
+++ b/BSF/template/yoga/icon/admin/infos.png
Binary files differ
diff --git a/BSF/template/yoga/icon/admin/plugin_active.gif b/BSF/template/yoga/icon/admin/plugin_active.gif
new file mode 100644
index 000000000..fe49227da
--- /dev/null
+++ b/BSF/template/yoga/icon/admin/plugin_active.gif
Binary files differ
diff --git a/BSF/template/yoga/icon/admin/plugin_inactive.gif b/BSF/template/yoga/icon/admin/plugin_inactive.gif
new file mode 100644
index 000000000..19d551865
--- /dev/null
+++ b/BSF/template/yoga/icon/admin/plugin_inactive.gif
Binary files differ
diff --git a/BSF/template/yoga/icon/caddie_add.png b/BSF/template/yoga/icon/caddie_add.png
new file mode 100644
index 000000000..eb20f4e06
--- /dev/null
+++ b/BSF/template/yoga/icon/caddie_add.png
Binary files differ
diff --git a/BSF/template/yoga/icon/calendar.png b/BSF/template/yoga/icon/calendar.png
new file mode 100644
index 000000000..e0a44a13d
--- /dev/null
+++ b/BSF/template/yoga/icon/calendar.png
Binary files differ
diff --git a/BSF/template/yoga/icon/calendar_created.png b/BSF/template/yoga/icon/calendar_created.png
new file mode 100644
index 000000000..14a84c43c
--- /dev/null
+++ b/BSF/template/yoga/icon/calendar_created.png
Binary files differ
diff --git a/BSF/template/yoga/icon/category_children.png b/BSF/template/yoga/icon/category_children.png
new file mode 100644
index 000000000..7205c3f61
--- /dev/null
+++ b/BSF/template/yoga/icon/category_children.png
Binary files differ
diff --git a/BSF/template/yoga/icon/category_delete.png b/BSF/template/yoga/icon/category_delete.png
new file mode 100644
index 000000000..da796da11
--- /dev/null
+++ b/BSF/template/yoga/icon/category_delete.png
Binary files differ
diff --git a/BSF/template/yoga/icon/category_edit.png b/BSF/template/yoga/icon/category_edit.png
new file mode 100644
index 000000000..0f3b619ed
--- /dev/null
+++ b/BSF/template/yoga/icon/category_edit.png
Binary files differ
diff --git a/BSF/template/yoga/icon/category_elements.png b/BSF/template/yoga/icon/category_elements.png
new file mode 100644
index 000000000..1d367b38f
--- /dev/null
+++ b/BSF/template/yoga/icon/category_elements.png
Binary files differ
diff --git a/BSF/template/yoga/icon/category_jump-to.png b/BSF/template/yoga/icon/category_jump-to.png
new file mode 100644
index 000000000..62db1f4ee
--- /dev/null
+++ b/BSF/template/yoga/icon/category_jump-to.png
Binary files differ
diff --git a/BSF/template/yoga/icon/category_permissions.png b/BSF/template/yoga/icon/category_permissions.png
new file mode 100644
index 000000000..4780841ae
--- /dev/null
+++ b/BSF/template/yoga/icon/category_permissions.png
Binary files differ
diff --git a/BSF/template/yoga/icon/category_representant_random.png b/BSF/template/yoga/icon/category_representant_random.png
new file mode 100644
index 000000000..dfa69846f
--- /dev/null
+++ b/BSF/template/yoga/icon/category_representant_random.png
Binary files differ
diff --git a/BSF/template/yoga/icon/check.png b/BSF/template/yoga/icon/check.png
new file mode 100644
index 000000000..d9abf2763
--- /dev/null
+++ b/BSF/template/yoga/icon/check.png
Binary files differ
diff --git a/BSF/template/yoga/icon/dec_period.png b/BSF/template/yoga/icon/dec_period.png
new file mode 100644
index 000000000..107cd16ec
--- /dev/null
+++ b/BSF/template/yoga/icon/dec_period.png
Binary files differ
diff --git a/BSF/template/yoga/icon/dec_period_unactive.png b/BSF/template/yoga/icon/dec_period_unactive.png
new file mode 100644
index 000000000..5bc67affd
--- /dev/null
+++ b/BSF/template/yoga/icon/dec_period_unactive.png
Binary files differ
diff --git a/BSF/template/yoga/icon/del_favorite.png b/BSF/template/yoga/icon/del_favorite.png
new file mode 100644
index 000000000..cfc609749
--- /dev/null
+++ b/BSF/template/yoga/icon/del_favorite.png
Binary files differ
diff --git a/BSF/template/yoga/icon/delete.png b/BSF/template/yoga/icon/delete.png
new file mode 100644
index 000000000..af10be03e
--- /dev/null
+++ b/BSF/template/yoga/icon/delete.png
Binary files differ
diff --git a/BSF/template/yoga/icon/edit_s.png b/BSF/template/yoga/icon/edit_s.png
new file mode 100644
index 000000000..e4951d22f
--- /dev/null
+++ b/BSF/template/yoga/icon/edit_s.png
Binary files differ
diff --git a/BSF/template/yoga/icon/exit.png b/BSF/template/yoga/icon/exit.png
new file mode 100644
index 000000000..2aafbb4cb
--- /dev/null
+++ b/BSF/template/yoga/icon/exit.png
Binary files differ
diff --git a/BSF/template/yoga/icon/favorite.png b/BSF/template/yoga/icon/favorite.png
new file mode 100644
index 000000000..58befd9e3
--- /dev/null
+++ b/BSF/template/yoga/icon/favorite.png
Binary files differ
diff --git a/BSF/template/yoga/icon/first.png b/BSF/template/yoga/icon/first.png
new file mode 100644
index 000000000..2b8db1cff
--- /dev/null
+++ b/BSF/template/yoga/icon/first.png
Binary files differ
diff --git a/BSF/template/yoga/icon/first_unactive.png b/BSF/template/yoga/icon/first_unactive.png
new file mode 100644
index 000000000..f0c0364f2
--- /dev/null
+++ b/BSF/template/yoga/icon/first_unactive.png
Binary files differ
diff --git a/BSF/template/yoga/icon/flat.png b/BSF/template/yoga/icon/flat.png
new file mode 100644
index 000000000..43584e825
--- /dev/null
+++ b/BSF/template/yoga/icon/flat.png
Binary files differ
diff --git a/BSF/template/yoga/icon/help.png b/BSF/template/yoga/icon/help.png
new file mode 100644
index 000000000..c76f68292
--- /dev/null
+++ b/BSF/template/yoga/icon/help.png
Binary files differ
diff --git a/BSF/template/yoga/icon/home.png b/BSF/template/yoga/icon/home.png
new file mode 100644
index 000000000..cce450d85
--- /dev/null
+++ b/BSF/template/yoga/icon/home.png
Binary files differ
diff --git a/BSF/template/yoga/icon/inc_period.png b/BSF/template/yoga/icon/inc_period.png
new file mode 100644
index 000000000..28fef3d1b
--- /dev/null
+++ b/BSF/template/yoga/icon/inc_period.png
Binary files differ
diff --git a/BSF/template/yoga/icon/inc_period_unactive.png b/BSF/template/yoga/icon/inc_period_unactive.png
new file mode 100644
index 000000000..f45507dce
--- /dev/null
+++ b/BSF/template/yoga/icon/inc_period_unactive.png
Binary files differ
diff --git a/BSF/template/yoga/icon/index.php b/BSF/template/yoga/icon/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/icon/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/icon/last.png b/BSF/template/yoga/icon/last.png
new file mode 100644
index 000000000..12e1367a7
--- /dev/null
+++ b/BSF/template/yoga/icon/last.png
Binary files differ
diff --git a/BSF/template/yoga/icon/last_unactive.png b/BSF/template/yoga/icon/last_unactive.png
new file mode 100644
index 000000000..90469d5c4
--- /dev/null
+++ b/BSF/template/yoga/icon/last_unactive.png
Binary files differ
diff --git a/BSF/template/yoga/icon/left.png b/BSF/template/yoga/icon/left.png
new file mode 100644
index 000000000..63d306c9c
--- /dev/null
+++ b/BSF/template/yoga/icon/left.png
Binary files differ
diff --git a/BSF/template/yoga/icon/left_unactive.png b/BSF/template/yoga/icon/left_unactive.png
new file mode 100644
index 000000000..0aefc64e4
--- /dev/null
+++ b/BSF/template/yoga/icon/left_unactive.png
Binary files differ
diff --git a/BSF/template/yoga/icon/lost_password.png b/BSF/template/yoga/icon/lost_password.png
new file mode 100644
index 000000000..ad6d71422
--- /dev/null
+++ b/BSF/template/yoga/icon/lost_password.png
Binary files differ
diff --git a/BSF/template/yoga/icon/metadata.png b/BSF/template/yoga/icon/metadata.png
new file mode 100644
index 000000000..d5d8fa6dc
--- /dev/null
+++ b/BSF/template/yoga/icon/metadata.png
Binary files differ
diff --git a/BSF/template/yoga/icon/mimetypes/avi.png b/BSF/template/yoga/icon/mimetypes/avi.png
new file mode 100644
index 000000000..065f0b282
--- /dev/null
+++ b/BSF/template/yoga/icon/mimetypes/avi.png
Binary files differ
diff --git a/BSF/template/yoga/icon/mimetypes/index.php b/BSF/template/yoga/icon/mimetypes/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/icon/mimetypes/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/icon/mimetypes/mp3.png b/BSF/template/yoga/icon/mimetypes/mp3.png
new file mode 100644
index 000000000..afb7e1b0a
--- /dev/null
+++ b/BSF/template/yoga/icon/mimetypes/mp3.png
Binary files differ
diff --git a/BSF/template/yoga/icon/mimetypes/mpg.png b/BSF/template/yoga/icon/mimetypes/mpg.png
new file mode 100644
index 000000000..f7dbd2388
--- /dev/null
+++ b/BSF/template/yoga/icon/mimetypes/mpg.png
Binary files differ
diff --git a/BSF/template/yoga/icon/mimetypes/ogg.png b/BSF/template/yoga/icon/mimetypes/ogg.png
new file mode 100644
index 000000000..ead3f62c3
--- /dev/null
+++ b/BSF/template/yoga/icon/mimetypes/ogg.png
Binary files differ
diff --git a/BSF/template/yoga/icon/mimetypes/zip.png b/BSF/template/yoga/icon/mimetypes/zip.png
new file mode 100644
index 000000000..1f08fe1a3
--- /dev/null
+++ b/BSF/template/yoga/icon/mimetypes/zip.png
Binary files differ
diff --git a/BSF/template/yoga/icon/normal_mode.png b/BSF/template/yoga/icon/normal_mode.png
new file mode 100644
index 000000000..92d27a234
--- /dev/null
+++ b/BSF/template/yoga/icon/normal_mode.png
Binary files differ
diff --git a/BSF/template/yoga/icon/note.png b/BSF/template/yoga/icon/note.png
new file mode 100644
index 000000000..5849f791b
--- /dev/null
+++ b/BSF/template/yoga/icon/note.png
Binary files differ
diff --git a/BSF/template/yoga/icon/page_end.png b/BSF/template/yoga/icon/page_end.png
new file mode 100644
index 000000000..c8f54fb91
--- /dev/null
+++ b/BSF/template/yoga/icon/page_end.png
Binary files differ
diff --git a/BSF/template/yoga/icon/page_top.png b/BSF/template/yoga/icon/page_top.png
new file mode 100644
index 000000000..8b18f13c3
--- /dev/null
+++ b/BSF/template/yoga/icon/page_top.png
Binary files differ
diff --git a/BSF/template/yoga/icon/pause.png b/BSF/template/yoga/icon/pause.png
new file mode 100644
index 000000000..6a3928c51
--- /dev/null
+++ b/BSF/template/yoga/icon/pause.png
Binary files differ
diff --git a/BSF/template/yoga/icon/permissions.png b/BSF/template/yoga/icon/permissions.png
new file mode 100644
index 000000000..33091eb85
--- /dev/null
+++ b/BSF/template/yoga/icon/permissions.png
Binary files differ
diff --git a/BSF/template/yoga/icon/play.png b/BSF/template/yoga/icon/play.png
new file mode 100644
index 000000000..dfde7e96a
--- /dev/null
+++ b/BSF/template/yoga/icon/play.png
Binary files differ
diff --git a/BSF/template/yoga/icon/preferences.png b/BSF/template/yoga/icon/preferences.png
new file mode 100644
index 000000000..0f3b619ed
--- /dev/null
+++ b/BSF/template/yoga/icon/preferences.png
Binary files differ
diff --git a/BSF/template/yoga/icon/rating-stars.gif b/BSF/template/yoga/icon/rating-stars.gif
new file mode 100644
index 000000000..535443e06
--- /dev/null
+++ b/BSF/template/yoga/icon/rating-stars.gif
Binary files differ
diff --git a/BSF/template/yoga/icon/recent.png b/BSF/template/yoga/icon/recent.png
new file mode 100644
index 000000000..78c1428ca
--- /dev/null
+++ b/BSF/template/yoga/icon/recent.png
Binary files differ
diff --git a/BSF/template/yoga/icon/recent_by_child.png b/BSF/template/yoga/icon/recent_by_child.png
new file mode 100644
index 000000000..48e2b4bf7
--- /dev/null
+++ b/BSF/template/yoga/icon/recent_by_child.png
Binary files differ
diff --git a/BSF/template/yoga/icon/register.png b/BSF/template/yoga/icon/register.png
new file mode 100644
index 000000000..d1dd3c834
--- /dev/null
+++ b/BSF/template/yoga/icon/register.png
Binary files differ
diff --git a/BSF/template/yoga/icon/remove_s.png b/BSF/template/yoga/icon/remove_s.png
new file mode 100644
index 000000000..c78c38f17
--- /dev/null
+++ b/BSF/template/yoga/icon/remove_s.png
Binary files differ
diff --git a/BSF/template/yoga/icon/representative.png b/BSF/template/yoga/icon/representative.png
new file mode 100644
index 000000000..f1141d91b
--- /dev/null
+++ b/BSF/template/yoga/icon/representative.png
Binary files differ
diff --git a/BSF/template/yoga/icon/right.png b/BSF/template/yoga/icon/right.png
new file mode 100644
index 000000000..f998098e4
--- /dev/null
+++ b/BSF/template/yoga/icon/right.png
Binary files differ
diff --git a/BSF/template/yoga/icon/right_unactive.png b/BSF/template/yoga/icon/right_unactive.png
new file mode 100644
index 000000000..cf2f9614c
--- /dev/null
+++ b/BSF/template/yoga/icon/right_unactive.png
Binary files differ
diff --git a/BSF/template/yoga/icon/save.png b/BSF/template/yoga/icon/save.png
new file mode 100644
index 000000000..b4b9da08b
--- /dev/null
+++ b/BSF/template/yoga/icon/save.png
Binary files differ
diff --git a/BSF/template/yoga/icon/search_rules.png b/BSF/template/yoga/icon/search_rules.png
new file mode 100644
index 000000000..300186647
--- /dev/null
+++ b/BSF/template/yoga/icon/search_rules.png
Binary files differ
diff --git a/BSF/template/yoga/icon/start_filter.png b/BSF/template/yoga/icon/start_filter.png
new file mode 100644
index 000000000..3d81a4d2e
--- /dev/null
+++ b/BSF/template/yoga/icon/start_filter.png
Binary files differ
diff --git a/BSF/template/yoga/icon/start_repeat.png b/BSF/template/yoga/icon/start_repeat.png
new file mode 100644
index 000000000..74272979e
--- /dev/null
+++ b/BSF/template/yoga/icon/start_repeat.png
Binary files differ
diff --git a/BSF/template/yoga/icon/start_slideshow.png b/BSF/template/yoga/icon/start_slideshow.png
new file mode 100644
index 000000000..9733eb445
--- /dev/null
+++ b/BSF/template/yoga/icon/start_slideshow.png
Binary files differ
diff --git a/BSF/template/yoga/icon/stop_filter.png b/BSF/template/yoga/icon/stop_filter.png
new file mode 100644
index 000000000..1ff012e96
--- /dev/null
+++ b/BSF/template/yoga/icon/stop_filter.png
Binary files differ
diff --git a/BSF/template/yoga/icon/stop_repeat.png b/BSF/template/yoga/icon/stop_repeat.png
new file mode 100644
index 000000000..f1cc1b564
--- /dev/null
+++ b/BSF/template/yoga/icon/stop_repeat.png
Binary files differ
diff --git a/BSF/template/yoga/icon/stop_slideshow.png b/BSF/template/yoga/icon/stop_slideshow.png
new file mode 100644
index 000000000..7b8d3ac26
--- /dev/null
+++ b/BSF/template/yoga/icon/stop_slideshow.png
Binary files differ
diff --git a/BSF/template/yoga/icon/sync_metadata.png b/BSF/template/yoga/icon/sync_metadata.png
new file mode 100644
index 000000000..03570ead6
--- /dev/null
+++ b/BSF/template/yoga/icon/sync_metadata.png
Binary files differ
diff --git a/BSF/template/yoga/icon/toggle_is_default_group.png b/BSF/template/yoga/icon/toggle_is_default_group.png
new file mode 100644
index 000000000..9eaa3c601
--- /dev/null
+++ b/BSF/template/yoga/icon/toggle_is_default_group.png
Binary files differ
diff --git a/BSF/template/yoga/icon/uncheck.png b/BSF/template/yoga/icon/uncheck.png
new file mode 100644
index 000000000..2f7df3503
--- /dev/null
+++ b/BSF/template/yoga/icon/uncheck.png
Binary files differ
diff --git a/BSF/template/yoga/icon/up.png b/BSF/template/yoga/icon/up.png
new file mode 100644
index 000000000..0c9cda5b1
--- /dev/null
+++ b/BSF/template/yoga/icon/up.png
Binary files differ
diff --git a/BSF/template/yoga/icon/validate_s.png b/BSF/template/yoga/icon/validate_s.png
new file mode 100644
index 000000000..400bf8a24
--- /dev/null
+++ b/BSF/template/yoga/icon/validate_s.png
Binary files differ
diff --git a/BSF/template/yoga/icon/virt_category.png b/BSF/template/yoga/icon/virt_category.png
new file mode 100644
index 000000000..15f4f2267
--- /dev/null
+++ b/BSF/template/yoga/icon/virt_category.png
Binary files differ
diff --git a/BSF/template/yoga/identification.tpl b/BSF/template/yoga/identification.tpl
new file mode 100644
index 000000000..71ba02750
--- /dev/null
+++ b/BSF/template/yoga/identification.tpl
@@ -0,0 +1,71 @@
+{* $Id$ *}
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}"></a></li>
+ {if isset($U_REGISTER) }
+ <li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"/></a></li>
+ {/if}
+ <li><a href="{$U_HOME}" title="{'Go through the gallery as a visitor'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'Identification'|@translate}</h2>
+ </div>
+
+ {if isset($errors) }
+ <div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+<form action="{$F_LOGIN_ACTION}" method="post" name="login_form" class="properties">
+ <fieldset>
+ <legend>{'Connection settings'|@translate}</legend>
+
+ <input type="hidden" name="redirect" value="{$U_REDIRECT}">
+
+ <ul>
+ <li>
+ <span class="property">
+ <label for="username">{'Username'|@translate}</label>
+ </span>
+ <input tabindex="1" class="login" type="text" name="username" id="username" size="25" maxlength="40" />
+ </li>
+
+ <li>
+ <span class="property">
+ <label for="password">{'Password'|@translate}</label>
+ </span>
+ <input tabindex="2" class="login" type="password" name="password" id="password" size="25" maxlength="25" />
+ </li>
+
+ {if $authorize_remembering }
+ <li>
+ <span class="property">
+ <label for="remember_me">{'remember_me'|@translate}</label>
+ </span>
+ <input tabindex="3" type="checkbox" name="remember_me" id="remember_me" value="1">
+ </li>
+ {/if}
+ </ul>
+ </fieldset>
+
+ <p><input class="submit" tabindex="4" type="submit" name="login" value="{'Submit'|@translate}"></p>
+</form>
+
+<script type="text/javascript"><!--
+document.login_form.username.focus();
+//--></script>
+
+ <p>
+ {if isset($U_REGISTER) }
+ <a href="{$U_REGISTER}" title="{'Create a new account'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"> {'Register'|@translate}</a>
+ {/if}
+ <a href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}"> {'Forgot your password?'|@translate}</a>
+ </p>
+
+</div> <!-- content -->
diff --git a/BSF/template/yoga/index.php b/BSF/template/yoga/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/index.tpl b/BSF/template/yoga/index.tpl
new file mode 100644
index 000000000..814cce81f
--- /dev/null
+++ b/BSF/template/yoga/index.tpl
@@ -0,0 +1,119 @@
+{* $Id$ *}
+{$MENUBAR}
+{if !empty($PLUGIN_INDEX_CONTENT_BEFORE)}{$PLUGIN_INDEX_CONTENT_BEFORE}{/if}
+<div id="content" class="content">
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li>&nbsp;</li>
+ {if !empty($image_orders) }
+ <li>
+ {'Sort order'|@translate}:
+ <select onchange="document.location = this.options[this.selectedIndex].value;">
+ {foreach from=$image_orders item=image_order }
+ <option value="{$image_order.URL}"{if $image_order.SELECTED} selected="selected"{/if}}>{$image_order.DISPLAY}</option>
+ {/foreach}
+ </select>
+ </li>
+ {/if}
+
+ {if isset($U_CADDIE) }
+ <li><a href="{$U_CADDIE}" title="{'add to caddie'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/caddie_add.png" class="button" alt="{'caddie'|@translate}"/></a></li>
+ {/if}
+
+ {if isset($U_EDIT) }
+ <li><a href="{$U_EDIT}" title="{'edit category informations'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_edit.png" class="button" alt="{'edit'|@translate}"/></a></li>
+ {/if}
+
+ {if isset($U_SEARCH_RULES) }
+ <li><a href="{$U_SEARCH_RULES}" style="border:none;" onclick="popuphelp(this.href); return false;" title="{'Search rules'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/search_rules.png" class="button" alt="(?)"></a></li>
+ {/if}
+
+ {if isset($U_SLIDESHOW) }
+ <li><a href="{$U_SLIDESHOW}" title="{'slideshow'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/start_slideshow.png" class="button" alt="{'slideshow'|@translate}"/></a></li>
+ {/if}
+
+ {if isset($U_MODE_FLAT) }
+ <li><a href="{$U_MODE_FLAT}" title="{'mode_flat_hint'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/flat.png" class="button" alt="{'mode_flat_hint'|@translate}"></a></li>
+ {/if}
+
+ {if isset($U_MODE_NORMAL) }
+ <li><a href="{$U_MODE_NORMAL}" title="{'mode_normal_hint'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/normal_mode.png" class="button" alt="{'mode_normal_hint'|@translate}"></a></li>
+ {/if}
+
+ {if isset($U_MODE_POSTED) }
+ <li><a href="{$U_MODE_POSTED}" title="{'mode_posted_hint'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/calendar.png" class="button" alt="{'mode_posted_hint'|@translate}"></a></li>
+ {/if}
+
+ {if isset($U_MODE_CREATED) }
+ <li><a href="{$U_MODE_CREATED}" title="{'mode_created_hint'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/calendar_created.png" class="button" alt="{'mode_created_hint'|@translate}"></a></li>
+ {/if}
+
+ {if !empty($PLUGIN_INDEX_ACTIONS)}{$PLUGIN_INDEX_ACTIONS}{/if}
+ </ul>
+
+ <h2>{$TITLE}</h2>
+
+ {if isset($chronology_views) }
+ <div class="calendarViews">{'calendar_view'|@translate}:
+ <select onchange="document.location = this.options[this.selectedIndex].value;">
+ {foreach from=$chronology_views item=view}
+ <option value="{$view.VALUE}"{if $view.SELECTED} selected="selected"{/if}>{$view.CONTENT}</option>
+ {/foreach}
+ </select>
+ </div>
+ {/if}
+
+ {if isset($chronology.TITLE) }
+ <h2>{$chronology.TITLE}</h2>
+ {/if}
+
+ </div> <!-- titrePage -->
+
+{if !empty($PLUGIN_INDEX_CONTENT_BEGIN)}{$PLUGIN_INDEX_CONTENT_BEGIN}{/if}
+
+{if !empty($category_search_results) }
+<div style="font-size:16px;text-align:left;margin:10px">{'Category results for'|@translate} <strong>{$QUERY_SEARCH}</strong> :
+ <em><strong>
+ {foreach from=$category_search_results item=res name=res_loop}
+ {if !$smarty.foreach.res_loop.first} &mdash; {/if}
+ {$res}
+ {/foreach}
+ </strong></em>
+</div>
+{/if}
+
+{if !empty($tag_search_results) }
+<div style="font-size:16px;text-align:left;margin:10px">{'Tag results for'|@translate} <strong>{$QUERY_SEARCH}</strong> :
+ <em><strong>
+ {foreach from=$tag_search_results item=res name=res_loop}
+ {if !$smarty.foreach.res_loop.first} &mdash; {/if}
+ {$res}
+ {/foreach}
+ </strong></em>
+</div>
+{/if}
+
+{if isset($FILE_CHRONOLOGY_VIEW) }
+{include file=$FILE_CHRONOLOGY_VIEW}
+{/if}
+
+{if !empty($CATEGORIES) }{$CATEGORIES}{/if}
+{if !empty($THUMBNAILS) }{$THUMBNAILS}{/if}
+
+
+{if !empty($NAV_BAR) }
+<div class="navigationBar">
+ {$NAV_BAR}
+</div>
+{/if}
+
+{if !empty($CONTENT_DESCRIPTION) }
+<div class="additional_info">
+ {$CONTENT_DESCRIPTION}
+</div>
+{/if}
+
+{if !empty($PLUGIN_INDEX_CONTENT_END) }{$PLUGIN_INDEX_CONTENT_END}{/if}
+</div> <!-- content -->
+
+{if !empty($PLUGIN_INDEX_CONTENT_AFTER)}{$PLUGIN_INDEX_CONTENT_AFTER}{/if}
diff --git a/BSF/template/yoga/install.tpl b/BSF/template/yoga/install.tpl
new file mode 100644
index 000000000..9f73c6320
--- /dev/null
+++ b/BSF/template/yoga/install.tpl
@@ -0,0 +1,255 @@
+{* $Id$ *}
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="fr">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset={$T_CONTENT_ENCODING}">
+<meta http-equiv="Content-script-type" content="text/javascript">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<title>Piwigo {$RELEASE}</title>
+{literal}
+<style type="text/css">
+
+body, input, select {
+ background-color:#cde;
+}
+
+body {
+ margin: 5px;
+ padding: 0;
+ font-size: 0.8em;
+ font-family: Univers, Helvetica, Optima, "Bitstream Vera Sans", sans-serif;
+}
+
+body, table, input, form, select {
+ color:#369;
+ text-align:left;
+}
+
+a {
+ text-decoration: none;
+ color: #c60;
+}
+
+a:hover {
+ color: #f92;
+}
+
+table {
+ border-collapse:separate;
+}
+
+.title {
+ letter-spacing: 0.2em;
+ text-align : center;
+ font-size: 150%;
+ font-weight: bold;
+ padding: 0;
+ margin: 0.5em 0 1em 0;
+}
+
+.contenucellule {
+ border-color: #69c;
+ background-color:#eee;
+ margin:12px 20px;
+ border-width: 3px;
+ border-style: solid ;
+}
+
+.error_copy {
+ color: #900;
+}
+
+th, .submit {
+ text-align: center;
+ font-weight: bold;
+ background-color: #369;
+}
+
+th {
+ font-size: 120%;
+ margin-bottom:10px;
+ color:#fff;
+}
+
+td.row {
+ font-size: 90%;
+}
+
+.submit {
+ color: #cde
+}
+
+.header {
+ font-weight: normal;
+ text-align: center;
+ margin: 20px;
+}
+
+.infos {
+ padding: 15px;
+ font-weight: normal;
+ text-align: left;
+}
+
+.infos_title {
+ font-size: 150%;
+ padding: 15px;
+ font-weight: bold;
+ text-align: left;
+}
+
+.errors {
+ text-align: left;
+ margin: 25px;
+ color: #900;
+ background-color: #ffe1e1;
+ border:1px solid red;
+}
+</style>
+{/literal}
+</head>
+<body>
+ <table style="width:100%;height:100%">
+ <tr align="center" valign="middle">
+ <td>
+ <div class="title">Piwigo {$RELEASE}</div>
+ <table class="table1">
+ {if isset($errors)}
+ <tr>
+ <td class="contenucellule" colspan="3">
+ <div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+ </div>
+ </td>
+ </tr>
+ {/if}
+ {if isset($infos)}
+ <tr>
+ <td class="contenucellule" colspan="3">
+ <div class="infos">
+ <ul>
+ {foreach from=$infos item=info}
+ <li>{$info}</li>
+ {/foreach}
+ </ul>
+ </div>
+ </td>
+ </tr>
+ {/if}
+ <tr>
+ <td class="contenucellule">
+
+{if isset($error_copy)}
+{'step1_err_copy'|@translate} :
+<br />-----------------------------------------------------<br />
+<div class="error_copy">{$error_copy}</div>
+-----------------------------------------------------<br />
+{/if}
+
+{if isset($install)}
+<form method="POST" action="{$F_ACTION}" name="install_form">
+ <table>
+ <tr>
+ <th colspan="3">{'Initial_config'|@translate}</th>
+ </tr>
+ <tr>
+ <td style="width:30%;">{'Default_lang'|@translate}</td>
+ <td colspan="2" align="left">
+ <select name="language" onchange="document.location = 'install.php?language='+this.options[this.selectedIndex].value;">
+ {html_options options=$language_options selected=$language_selection}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ <tr>
+ <th colspan="3">{'step1_title'|@translate}</th>
+ </tr>
+ <tr>
+ <td>{'step1_host'|@translate}</td>
+ <td align=center><input type="text" name="dbhost" value="{$F_DB_HOST}" /></td>
+ <td class="row">{'step1_host_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'step1_user'|@translate}</td>
+ <td align=center><input type="text" name="dbuser" value="{$F_DB_USER}" /></td>
+ <td class="row">{'step1_user_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'step1_pass'|@translate}</td>
+ <td align=center><input type="password" name="dbpasswd" value="" /></td>
+ <td class="row">{'step1_pass_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'step1_database'|@translate}</td>
+ <td align=center><input type="text" name="dbname" value="{$F_DB_NAME}" /></td>
+ <td class="row">{'step1_database_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'step1_prefix'|@translate}</td>
+ <td align=center><input type="text" name="prefix" value="{$F_DB_PREFIX}" /></td>
+ <td class="row">{'step1_prefix_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ <tr>
+ <th colspan="3">{'step2_title'|@translate}</th>
+ </tr>
+ <tr>
+ <td>{'install_webmaster'|@translate}</td>
+ <td align="center"><input type="text" name="admin_name" value="{$F_ADMIN}" /></td>
+ <td class="row">{'install_webmaster_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'step2_pwd'|@translate}</td>
+ <td align="center"><input type="password" name="admin_pass1" value="" /></td>
+ <td class="row">{'step2_pwd_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'step2_pwd_conf'|@translate}</td>
+ <td align="center"><input type="password" name="admin_pass2" value="" /></td>
+ <td class="row">{'step2_pwd_conf_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td>{'conf_mail_webmaster'|@translate}</td>
+ <td align="center"><input type="text" name="admin_mail" value="{$F_ADMIN_EMAIL}" /></td>
+ <td class="row">{'conf_mail_webmaster_info'|@translate}</td>
+ </tr>
+ <tr>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan="3" align="center">
+ <input class="submit" type="submit" name="install" value="{'Start_Install'|@translate}" />
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ </table>
+</form>
+{else}
+<div class="infos_title">
+{'install_end_title'|@translate}
+</div>
+<div class="infos">
+{'install_end_message'|@translate}
+</div>
+{/if}
+
+ </td>
+ </tr>
+ </table>
+ <div class="header">{$L_INSTALL_HELP}</div>
+ </td>
+ </tr>
+ </table>
+ </body>
+</html>
diff --git a/BSF/template/yoga/layout.css b/BSF/template/yoga/layout.css
new file mode 100644
index 000000000..348ea2f4c
--- /dev/null
+++ b/BSF/template/yoga/layout.css
@@ -0,0 +1,15 @@
+/* $Id$ */
+
+/* template css */
+@import "menubar.css";
+@import "content.css";
+@import "thumbnails.css";
+@import "picture.css";
+@import "default-layout.css";
+/* Override properties with import local file */
+@import "local-layout.css";
+/* common css */
+@import "../../template-common/default-layout.css";
+/* Override properties with import local file */
+@import "../../template-common/local-layout.css";
+
diff --git a/BSF/template/yoga/mail/index.php b/BSF/template/yoga/mail/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/mail/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/mail/text/html/admin/cat_group_info.tpl b/BSF/template/yoga/mail/text/html/admin/cat_group_info.tpl
new file mode 100644
index 000000000..2c8c45d6a
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/admin/cat_group_info.tpl
@@ -0,0 +1,9 @@
+{* $Id$ *}
+<div id="cat_group_info">
+<h2>{'Informations'|@translate}</h2>
+<p>{$IMG_URL}</p>
+<p>{'Hello,'|@translate}</p>
+<p>{'Come to discover the category:'|@translate} <a href="{$LINK}">{$CAT_NAME}</a></p>
+<p>{$CPL_CONTENT}</p>
+<p>{'See you soon.'|@translate}</p>
+</div>
diff --git a/BSF/template/yoga/mail/text/html/admin/index.php b/BSF/template/yoga/mail/text/html/admin/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/admin/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/mail/text/html/admin/notification_by_mail.tpl b/BSF/template/yoga/mail/text/html/admin/notification_by_mail.tpl
new file mode 100644
index 000000000..52627ebe4
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/admin/notification_by_mail.tpl
@@ -0,0 +1,57 @@
+{* $Id$ *}
+<div id="nbm_message">
+<h2>{'Notification'|@translate}</h2>
+<p>{'nbm_content_hello_1'|@translate}{$USERNAME}{'nbm_content_hello_2'|@translate}</p>
+
+{if isset($subscribe_by_admin)}
+<p>{'nbm_content_subscribe_by_admin'|@translate}</p>
+{/if}
+{if isset($subscribe_by_himself)}
+<p>{'nbm_content_subscribe_by_himself'|@translate}</p>
+{/if}
+{if isset($unsubscribe_by_admin)}
+<p>{'nbm_content_unsubscribe_by_admin'|@translate}</p>
+{/if}
+{if isset($unsubscribe_by_himself)}
+<p>{'nbm_content_unsubscribe_by_himself'|@translate}</p>
+{/if}
+{if isset($content_new_elements_single)}
+<p>{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_single'|@translate}{$content_new_elements_single.DATE_SINGLE}.</p>
+{/if}
+{if isset($content_new_elements_between)}
+<p>{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_between_1'|@translate}{$content_new_elements_between.DATE_BETWEEN_1}{'nbm_content_new_elements_between_2'|@translate}{$content_new_elements_between.DATE_BETWEEN_2}.</p>
+{/if}
+
+{if not empty($global_new_lines)}
+<ul id="nbm_new_line">
+{foreach from=$global_new_lines item=line}
+ <li>{$line}</li>
+{/foreach}
+</ul>
+{/if}
+
+{if not empty($custom_mail_content)}
+<p>{$custom_mail_content}</p>
+{/if}
+
+{if not empty($GOTO_GALLERY_TITLE)}
+<p>{'nbm_content_goto_1'|@translate}<a href="{$GOTO_GALLERY_URL}">{$GOTO_GALLERY_TITLE}</a>{'nbm_content_goto_2'|@translate}</p>
+{/if}
+<p>{'nbm_content_byebye'|@translate}</p>
+<p style="text-align:center">{$SEND_AS_NAME}</p>
+<p>
+<br/><hr/>
+{'nbm_content_unsubscribe_link'|@translate}{'nbm_content_click_on'|@translate}<a href="{$UNSUBSCRIBE_LINK}">{$UNSUBSCRIBE_LINK}</a><br/>
+{'nbm_content_subscribe_link'|@translate}{'nbm_content_click_on'|@translate}<a href="{$SUBSCRIBE_LINK}">{$SUBSCRIBE_LINK}</a><br/>
+{'nbm_content_problem_contact'|@translate}<a href="mailto:{$CONTACT_EMAIL}?subject={'nbm_content_pb_contact_object'|@translate}">{$CONTACT_EMAIL}</a><br/>
+<hr/><br/>
+</p>
+{if not empty($recent_posts)}
+</div>
+<div id="nbm_recent_post">
+ {foreach from=$recent_posts item=recent_post }
+ <h2>{$recent_post.TITLE}</h2>
+ {$recent_post.HTML_DATA}
+ {/foreach}
+{/if}
+</div>
diff --git a/BSF/template/yoga/mail/text/html/footer.tpl b/BSF/template/yoga/mail/text/html/footer.tpl
new file mode 100644
index 000000000..e09201a4f
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/footer.tpl
@@ -0,0 +1,20 @@
+{* $Id$ *}
+</div> <!-- content -->
+<div id="copyright">
+<hr/>
+ {* Please, do not remove this copyright. If you really want to,
+ contact us on http://piwigo.org to find a solution on how
+ to show the origin of the script...*}
+
+ {'powered_by'|@translate}
+ <a href="http://piwigo.org" class="PWG">
+ <span class="P">Pi</span><span class="W">wi</span><span class="G">go</span></a>
+ {$VERSION}
+ - {'send_mail'|@translate}
+ <a href="mailto:{$MAIL}?subject={$TITLE_MAIL}">{'Webmaster'|@translate}</a>
+
+</div> <!-- copyright -->
+</div> <!-- the_page -->
+
+</body>
+</html>
diff --git a/BSF/template/yoga/mail/text/html/global-mail-css.tpl b/BSF/template/yoga/mail/text/html/global-mail-css.tpl
new file mode 100644
index 000000000..29b34f375
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/global-mail-css.tpl
@@ -0,0 +1,12 @@
+{* $Id$ *}
+/* Global mail css */
+
+body {ldelim} font-family: Univers, Helvetica, Optima; font-size:12px; margin:0px; padding:0px; }
+#the_page {ldelim} margin:0px; padding:0px; text-align:left;}
+#content {ldelim} margin:0px; padding:82px 0px 0px 62px; width:732px;}
+hr {ldelim} width:632px; margin-left:0;}
+#copyright {ldelim} font-size:10px; margin:0px; padding:48px 0px 32px 62px;}
+.PWG {ldelim} font-family:verdana, sans-serif !important; font-size:0.9em; font-weight:normal; letter-spacing:0px;}
+h2 {ldelim} padding:7px 15px; width:617px; font-weight:bold;}
+img {ldelim} margin:16px; border:16px solid #aaa; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} padding: 15px; border: 1px solid yellow; -moz-border-radius: 4px; border-radius: 4px 4px; }
diff --git a/BSF/template/yoga/mail/text/html/header.tpl b/BSF/template/yoga/mail/text/html/header.tpl
new file mode 100644
index 000000000..2aeb2b434
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/header.tpl
@@ -0,0 +1,19 @@
+{* $Id$ *}
+-----={$BOUNDARY_KEY}
+Content-Type: {$CONTENT_TYPE}; charset="{$CONTENT_ENCODING}";
+Content-Transfer-Encoding: 8bit
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="{$LANG}" dir="{$DIR}">
+<head>
+<title>Piwigo Mail</title>
+<meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}">
+<style><!-- /* Mini style for mails */
+{if isset($GLOBAL_MAIL_CSS)}{$GLOBAL_MAIL_CSS}{/if}
+{if isset($MAIL_CSS)}{$MAIL_CSS}{/if}
+{if isset($LOCAL_MAIL_CSS)}{$LOCAL_MAIL_CSS}{/if}
+--></style>
+</head>
+<body>
+<div id="the_page">
+<div id="content" class="content">
diff --git a/BSF/template/yoga/mail/text/html/images/footer-bg.png b/BSF/template/yoga/mail/text/html/images/footer-bg.png
new file mode 100644
index 000000000..fd3c2925f
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/images/footer-bg.png
Binary files differ
diff --git a/BSF/template/yoga/mail/text/html/images/header-bg.png b/BSF/template/yoga/mail/text/html/images/header-bg.png
new file mode 100644
index 000000000..1770a3ddc
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/images/header-bg.png
Binary files differ
diff --git a/BSF/template/yoga/mail/text/html/images/index.php b/BSF/template/yoga/mail/text/html/images/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/images/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/mail/text/html/images/mailbody-bg.png b/BSF/template/yoga/mail/text/html/images/mailbody-bg.png
new file mode 100644
index 000000000..722a24f63
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/images/mailbody-bg.png
Binary files differ
diff --git a/BSF/template/yoga/mail/text/html/index.php b/BSF/template/yoga/mail/text/html/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/mail/text/html/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/mail/text/index.php b/BSF/template/yoga/mail/text/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/mail/text/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/mail/text/plain/admin/cat_group_info.tpl b/BSF/template/yoga/mail/text/plain/admin/cat_group_info.tpl
new file mode 100644
index 000000000..d91c0ebcc
--- /dev/null
+++ b/BSF/template/yoga/mail/text/plain/admin/cat_group_info.tpl
@@ -0,0 +1,9 @@
+{* $Id$ *}
+{'Hello,'|@translate}
+
+{'Come to discover the category:'|@translate} {$CAT_NAME}
+{$LINK}
+
+{$CPL_CONTENT}
+
+{'See you soon.'|@translate}
diff --git a/BSF/template/yoga/mail/text/plain/admin/index.php b/BSF/template/yoga/mail/text/plain/admin/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/mail/text/plain/admin/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/mail/text/plain/admin/notification_by_mail.tpl b/BSF/template/yoga/mail/text/plain/admin/notification_by_mail.tpl
new file mode 100644
index 000000000..256232f37
--- /dev/null
+++ b/BSF/template/yoga/mail/text/plain/admin/notification_by_mail.tpl
@@ -0,0 +1,42 @@
+{* $Id$ *}
+{'nbm_content_hello_1'|@translate}{$USERNAME}{'nbm_content_hello_2'|@translate}
+
+{if isset($subscribe_by_admin)}
+{'nbm_content_subscribe_by_admin'|@translate}
+{/if}
+{if isset($subscribe_by_himself)}
+{'nbm_content_subscribe_by_himself'|@translate}
+{/if}
+{if isset($unsubscribe_by_admin)}
+{'nbm_content_unsubscribe_by_admin'|@translate}
+{/if}
+{if isset($unsubscribe_by_himself)}
+{'nbm_content_unsubscribe_by_himself'|@translate}
+{/if}
+{if isset($content_new_elements_single)}
+{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_single'|@translate}{$content_new_elements_single.DATE_SINGLE}.
+{/if}
+{if isset($content_new_elements_between)}
+{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_between_1'|@translate}{$content_new_elements_between.DATE_BETWEEN_1}{'nbm_content_new_elements_between_2'|@translate}{$content_new_elements_between.DATE_BETWEEN_2}.
+{/if}
+{if not empty($global_new_lines)}
+{foreach from=$global_new_lines item=line}
+ o {$line}
+{/foreach}
+{/if}
+{if not empty($custom_mail_content)}
+{$custom_mail_content}
+{/if}
+{if not empty($GOTO_GALLERY_TITLE)}
+{'nbm_content_goto_1'|@translate}{$GOTO_GALLERY_TITLE} {$GOTO_GALLERY_URL} {'nbm_content_goto_2'|@translate}
+{/if}
+
+{'nbm_content_byebye'|@translate}
+ {$SEND_AS_NAME}
+
+______________________________________________________________________________
+
+{'nbm_content_unsubscribe_link'|@translate}{'nbm_content_click_on'|@translate}{$UNSUBSCRIBE_LINK}
+{'nbm_content_subscribe_link'|@translate}{'nbm_content_click_on'|@translate}{$SUBSCRIBE_LINK}
+{'nbm_content_problem_contact'|@translate}{$CONTACT_EMAIL}
+______________________________________________________________________________
diff --git a/BSF/template/yoga/mail/text/plain/footer.tpl b/BSF/template/yoga/mail/text/plain/footer.tpl
new file mode 100644
index 000000000..86ac31e3e
--- /dev/null
+++ b/BSF/template/yoga/mail/text/plain/footer.tpl
@@ -0,0 +1,4 @@
+{* $Id$ *}
+
+------------------------
+Piwigo {$VERSION}
diff --git a/BSF/template/yoga/mail/text/plain/header.tpl b/BSF/template/yoga/mail/text/plain/header.tpl
new file mode 100644
index 000000000..7471010c9
--- /dev/null
+++ b/BSF/template/yoga/mail/text/plain/header.tpl
@@ -0,0 +1,4 @@
+{* $Id$ *}
+-----={$BOUNDARY_KEY}
+Content-Type: {$CONTENT_TYPE}; charset="{$CONTENT_ENCODING}";
+Content-Transfer-Encoding: 8bit
diff --git a/BSF/template/yoga/mail/text/plain/index.php b/BSF/template/yoga/mail/text/plain/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/mail/text/plain/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/mainpage_categories.tpl b/BSF/template/yoga/mainpage_categories.tpl
new file mode 100644
index 000000000..b28c619fb
--- /dev/null
+++ b/BSF/template/yoga/mainpage_categories.tpl
@@ -0,0 +1,27 @@
+{* $Id$ *}
+
+<ul class="thumbnailCategories">
+ {foreach from=$category_thumbnails item=cat}
+ <li>
+ <div class="thumbnailCategory">
+ <div class="illustration">
+ <a href="{$cat.URL}">
+ <img src="{$cat.TN_SRC}" alt="{$cat.ALT}" title="{'hint_category'|@translate}">
+ </a>
+ </div>
+ <div class="description">
+ <h3>
+ <a href="{$cat.URL}">{$cat.NAME}</a>
+ {$cat.ICON}
+ </h3>
+ {if isset($cat.INFO_DATES) }
+ <p>{$cat.INFO_DATES}</p>
+ {/if}
+ <p>{$cat.CAPTION_NB_IMAGES}</p>
+ <p>{$cat.DESCRIPTION}</p>
+ </div>
+ </div>
+ </li>
+ {/foreach}
+</ul>
+
diff --git a/BSF/template/yoga/menubar.css b/BSF/template/yoga/menubar.css
new file mode 100644
index 000000000..e676d5784
--- /dev/null
+++ b/BSF/template/yoga/menubar.css
@@ -0,0 +1,149 @@
+#menubar {
+ float: left;
+ margin: 0 0 10px 1em;
+ padding: 0;
+ /* Fix against the "double margin of a floated item" IE bug */
+ /* Damned: that screws up top_navbar in opera 7.54/Linux! */
+ display: inline;
+ text-align: left; /* follow-up of the "be nice to IE5" rule */
+}
+
+#menubar DL, #menubar DT, #menubar DD {
+ margin: 0; padding: 0; display: block;
+}
+
+#menubar .button {
+ margin: 0 2px;
+ width: auto;
+ padding: 0;
+ text-indent: 0;
+ list-style: none;
+ text-align: center;
+ float: right;
+}
+
+/* H2 properties copied here */
+#menubar DT {
+ font-weight: bold; /* default for h2 */
+ margin: 0;
+ padding: 5px 5px 5px 5px;
+ font-size: 120%;
+ text-align: center;
+}
+
+#menubar UL,
+#menubar HR,
+#menubar FORM,
+#menubar P, /* ooh, careful... */
+#menubar .totalImages {
+ font-size: 92%;
+ margin: 10px 0 10px 10px;
+}
+#menubar UL {
+ list-style-type: square;
+ list-style-position: inside;
+ padding: 0 0 0 2px;
+}
+#menubar UL UL {
+ font-size: 100%;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+#menubar LI.selected A {
+ font-weight: bold;
+}
+
+#menubar LI.selected LI A {
+ font-weight: normal;
+}
+
+#menubar .menuInfoCatByChild {
+ font-size: 80%;
+ font-style: italic;
+}
+
+#menubar HR {
+ display: block;
+ margin: 10px auto;
+ width: 90%;
+}
+#menubar INPUT {
+ text-indent: 2px;
+}
+
+/* quickconnect form */
+FORM#quickconnect {
+ margin: 0;
+ padding: 5px;
+}
+
+FORM#quickconnect FIELDSET {
+ margin: 0;
+ padding: 0 0 0.5em 0;
+}
+
+FORM#quickconnect P {
+ margin-left: 0;
+ font-size: 100%;
+ float: left;
+ clear: left;
+}
+
+FORM#quickconnect P INPUT {
+ margin: 0;
+}
+
+FORM#quickconnect UL.actions {
+ display: inline;
+ float: right;
+ padding: 0;
+ text-align: right; /* Opera 7.5 */
+}
+FORM#quickconnect FIELDSET>UL.actions {
+ width: 40%; /* Opera 7.5 cannot find why width:auto fails :-( */
+}
+
+FORM#quickconnect UL.actions,
+FORM#quickconnect P,
+FORM#quickconnect LABEL {
+ padding: 0 0.5em 0 0.5em;
+}
+
+FORM#quickconnect LABEL {
+ margin:0;
+ width: 100%;
+ box-sizing: border-box; /* CSS3 */
+}
+
+FORM#quickconnect INPUT[type=text],
+FORM#quickconnect INPUT[type=password] {
+ width: 100%; /* mozilla can handle 100% */
+}
+/* same as above for IE with inputfix.htc */
+/* unfortunately IE doesn't handle that correctly */
+/* so you should set a width in em in local_layout.css */
+/*FORM#quickconnect INPUT.text,
+FORM#quickconnect INPUT.password {
+ width: 95%;
+}*/
+
+FORM#quicksearch {
+ margin-top: 4px;
+ margin-bottom: 1px;
+}
+input#qsearchInput {
+ width: 90%;
+}
+#menubar #mbMenu p { margin: 0px; padding: 0px; }
+
+#menubar #menuTagCloud {
+ text-align: center;
+ margin: 5px 0;
+}
+
+#menubar #menuTagCloud LI
+{
+ display: inline;
+ white-space: nowrap; /* No line break in the LI but Opera set nowrap to */
+}
diff --git a/BSF/template/yoga/menubar.tpl b/BSF/template/yoga/menubar.tpl
new file mode 100644
index 000000000..fda136c29
--- /dev/null
+++ b/BSF/template/yoga/menubar.tpl
@@ -0,0 +1,165 @@
+{* $Id$ *}
+
+<div id="menubar">
+{if not empty($links)}
+<dl id="mbLinks">
+ <dt>{'Links'|@translate}</dt>
+ <dd>
+ <ul>
+ {foreach from=$links item=link}
+ <li>
+ <a href="{$link.URL}"
+ {if isset($link.new_window) }onclick="window.open(this.href, '{$link.new_window.NAME|@escape:'javascript'}','{$link.new_window.FEATURES|@escape:'javascript'}'); return false;"{/if}
+ >
+ {$link.LABEL}
+ </a>
+ </li>
+ {/foreach}{*links*}
+ </ul>
+ </dd>
+</dl>
+{/if}{*links*}
+
+ {if isset($U_START_FILTER)}
+ <a href="{$U_START_FILTER}" title="{'start_filter_hint'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/start_filter.png" class="button" alt="{'start_filter_hint'|@translate}"></a>
+ {/if}
+ {if isset($U_STOP_FILTER)}
+ <a href="{$U_STOP_FILTER}" title="{'stop_filter_hint'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_filter.png" class="button" alt="{'stop_filter_hint'|@translate}"></a>
+ {/if}
+
+<dl id="mbCategories">
+ <dt><a href="{$U_CATEGORIES}">{'Categories'|@translate}</a></dt>
+ <dd>
+ {$MENU_CATEGORIES_CONTENT}
+ {if isset($U_UPLOAD)}
+ <ul><li>
+ <a href="{$U_UPLOAD}">{'upload_picture'|@translate}</a>
+ </li></ul>
+ {/if}
+ <p class="totalImages">{$pwg->l10n_dec('%d element', '%d elements', $NB_PICTURE)}</p>
+ </dd>
+</dl>
+
+
+{if not empty($related_tags)}
+<dl id="mbTags">
+ <dt>{'Related tags'|@translate}</dt>
+ <dd>
+ <ul id="menuTagCloud">
+ {foreach from=$related_tags item=tag}
+ <li>
+ {if !empty($tag.add) }
+ <a href="{$tag.add.URL}"
+ title="{$pwg->l10n_dec('%d element are also linked to current tags', '%d elements are also linked to current tags', $tag.add.COUNTER)}"
+ rel="nofollow">
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/add_tag.png" alt="+" />
+ </a>
+ {/if}
+ <a href="{$tag.U_TAG}" class="{$tag.CLASS}" title="{'See elements linked to this tag only'|@translate}">{$tag.NAME}</a>
+ </li>
+ {/foreach}
+ </ul>
+ </dd>
+</dl>
+{/if}
+
+
+<dl id="mbSpecial">
+ <dt>{'special_categories'|@translate}</dt>
+ <dd>
+ <ul>
+ {foreach from=$special_categories item=cat}
+ <li><a href="{$cat.URL}" title="{$cat.TITLE}" {if isset($cat.REL)}{$cat.REL}{/if}>{$cat.NAME}</a></li>
+ {/foreach}
+ </ul>
+ </dd>
+</dl>
+
+
+<dl id="mbMenu">
+ <dt>{'title_menu'|@translate}</dt>
+ <dd>
+ <form action="{$ROOT_URL}qsearch.php" method="get" id="quicksearch">
+ <p>
+ <input type="text" name="q" id="qsearchInput" onfocus="if (value==qsearch_prompt) value='';" onblur="if (value=='') value=qsearch_prompt;" />
+ </p>
+ </form>
+ <script type="text/javascript">var qsearch_prompt="{'qsearch'|@translate|@escape:'javascript'}"; document.getElementById('qsearchInput').value=qsearch_prompt;</script>
+
+ <ul>
+ {foreach from=$summaries item=sum}
+ <li><a href="{$sum.U_SUMMARY}" title="{$sum.TITLE}" {if isset($sum.REL)}{$sum.REL}{/if}>{$sum.NAME}</a></li>
+ {/foreach}
+ </ul>
+ </dd>
+</dl>
+
+
+<dl id="mbIdentification">
+ <dt>{'identification'|@translate}</dt>
+ <dd>
+ {if isset($USERNAME)}
+ <p>{'hello'|@translate}&nbsp;{$USERNAME}&nbsp;!</p>
+ {/if}
+
+ <ul>
+ {if isset($U_REGISTER)}
+ <li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow">{'Register'|@translate}</a></li>
+ {/if}
+
+ {if isset($U_IDENTIFY)}
+ <li><a href="{$U_IDENTIFY}" rel="nofollow">{'Connection'|@translate}</a></li>
+ {/if}
+
+ {if isset($U_LOGOUT)}
+ <li><a href="{$U_LOGOUT}">{'logout'|@translate}</a></li>
+ {/if}
+
+ {if isset($U_PROFILE)}
+ <li><a href="{$U_PROFILE}" title="{'hint_customize'|@translate}">{'customize'|@translate}</a></li>
+ {/if}
+
+ {if isset($U_ADMIN)}
+ <li><a href="{$U_ADMIN}" title="{'hint_admin'|@translate}">{'admin'|@translate}</a></li>
+ {/if}
+ </ul>
+
+ {if isset($U_IDENTIFY)}
+ <form method="post" action="{$U_IDENTIFY}" class="filter" id="quickconnect">
+ <fieldset>
+ <legend>{'Quick connect'|@translate}</legend>
+
+ <label>
+ {'Username'|@translate}
+ <input type="text" name="username" size="15" value="">
+ </label>
+
+ <label>
+ {'Password'|@translate}
+ <input type="password" name="password" size="15">
+ </label>
+
+ {if $AUTHORIZE_REMEMBERING}
+ <label>
+ {'remember_me'|@translate}
+ <input type="checkbox" name="remember_me" value="1">
+ </label>
+ {/if}
+ <p>
+ <input class="submit" type="submit" name="login" value="{'Submit'|@translate}">
+ </p>
+
+ <ul class="actions">
+ <li><a href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}"></a></li>
+ {if isset($U_REGISTER)}
+ <li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"/></a></li>
+ {/if}
+ </ul>
+
+ </fieldset>
+ </form>
+ {/if}
+
+ </dd>
+</dl>
+</div> <!-- menubar -->
diff --git a/BSF/template/yoga/month_calendar.tpl b/BSF/template/yoga/month_calendar.tpl
new file mode 100644
index 000000000..410824b23
--- /dev/null
+++ b/BSF/template/yoga/month_calendar.tpl
@@ -0,0 +1,70 @@
+{* $Id$ *}
+
+{if !empty($chronology_navigation_bars) }
+{foreach from=$chronology_navigation_bars item=bar}
+<div class="calendarBar">
+ {if isset($bar.previous)}
+ <div style="float:left">&laquo; <a href="{$bar.previous.URL}">{$bar.previous.LABEL}</a></div>
+ {/if}
+ {if isset($bar.next)}
+ <div style="float:right"><a href="{$bar.next.URL}">{$bar.next.LABEL}</a> &raquo;</div>
+ {/if}
+ {if isset($bar.CONTENT)}
+ {$bar.CONTENT}
+ {else}
+ &nbsp;
+ {/if}
+</div>
+{/foreach}
+{/if}
+
+{if !empty($chronology_calendar.calendar_bars) }
+{foreach from=$chronology_calendar.calendar_bars item=bar}
+<div class="calendarCalBar">
+ <span class="calCalHead"><a href="{$bar.U_HEAD}">{$bar.HEAD_LABEL}</a> ({$bar.NB_IMAGES})</span><br/>
+ {$bar.NAV_BAR}
+</div>
+{/foreach}
+{/if}
+
+{if isset($chronology_calendar.month_view) }
+<table class="calMonth">
+ <thead>
+ <tr>
+ {foreach from=$chronology_calendar.month_view.wday_labels item=wday}
+ <td class="calDayHead">{$wday}</td>
+ {/foreach}
+ </tr>
+ </thead>
+{html_head} {*add the style to html head for strict standard compliance*}
+<style type="text/css">
+TABLE.calMonth TBODY TD, TABLE.calMonth TBODY TD DIV.calImg {ldelim}
+ width:{$chronology_calendar.month_view.CELL_WIDTH}px;height:{$chronology_calendar.month_view.CELL_HEIGHT}px;
+}
+</style>
+{/html_head}
+ {foreach from=$chronology_calendar.month_view.weeks item=week}
+ <tr>
+ {foreach from=$week item=day}
+ {if !empty($day)}
+ {if isset($day.IMAGE)}
+ <td class="calDayCellFull">
+ <div class="calBackDate">{$day.DAY}</div><div class="calForeDate">{$day.DAY}</div>
+ <div class="calImg">
+ <a href="{$day.U_IMG_LINK}">
+ <img style="{$day.IMAGE_STYLE}" src="{$day.IMAGE}" alt="{$day.IMAGE_ALT}" title="{$pwg->l10n_dec('%d element','%d elements', $day.NB_ELEMENTS)}" />
+ </a>
+ </div>
+ {else}
+ <td class="calDayCellEmpty">{$day.DAY}
+ {/if}
+ {else}
+ <td class="calDayCellBlank">
+ {/if}
+ </td>
+ {/foreach} {*day in week*}
+ </tr>
+ {/foreach} {*week in month*}
+</table>
+{/if}
+
diff --git a/BSF/template/yoga/nbm.tpl b/BSF/template/yoga/nbm.tpl
new file mode 100644
index 000000000..7fa2845eb
--- /dev/null
+++ b/BSF/template/yoga/nbm.tpl
@@ -0,0 +1,31 @@
+{* $Id$ *}
+
+<div id="content" class="content">
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'Go through the gallery as a visitor'|@translate}"><img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'nbm_item_notification'|@translate}</h2>
+ </div>
+
+ {if not empty($errors)}
+ <div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+ {if not empty($infos)}
+ <div class="infos">
+ <ul>
+ {foreach from=$infos item=info}
+ <li>{$info}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+</div>
diff --git a/BSF/template/yoga/not-ie.css b/BSF/template/yoga/not-ie.css
new file mode 100644
index 000000000..9fc85502c
--- /dev/null
+++ b/BSF/template/yoga/not-ie.css
@@ -0,0 +1,24 @@
+/* $Id$ */
+
+/* All directives not supported by IE */
+/* can be overiden in any theme but not hidden to IE */
+
+.content UL.thumbnails SPAN.wrap2 {
+ -moz-border-radius: 4px; /* round corners with Geko */
+ -webkit-border-radius: 4px; /* Safari webkit project */
+}
+.content DIV#comments {
+ padding-left: 5px;
+ padding-right: 5px;
+ -moz-box-sizing: padding-box !important;
+}
+FORM#quickconnect LABEL {
+ margin:0;
+ width: 100%;
+ -moz-box-sizing: padding-box !important;
+ box-sizing: border-box; /* CSS3 */
+}
+ul.tabsheet li {
+ -moz-border-radius: 6px 6px 0px 0px; /* round corners with Geko */
+ -webkit-border-radius: 6px 6px 0px 0px; /* Safari webkit project */
+}
diff --git a/BSF/template/yoga/notification.tpl b/BSF/template/yoga/notification.tpl
new file mode 100644
index 000000000..b62db4bc0
--- /dev/null
+++ b/BSF/template/yoga/notification.tpl
@@ -0,0 +1,15 @@
+{* $Id$ *}
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'return to homepage'|@translate}"><img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'Notification'|@translate}</h2>
+ </div>
+
+ <p>{'The RSS notification feed provides notification on news from this website : new pictures, updated categories, new comments. Use a RSS feed reader.'|@translate}</p>
+
+ <p><a href="{$U_FEED_IMAGE_ONLY}">{'Image only RSS feed'|@translate}</a></p>
+ <p><a href="{$U_FEED}">{'Complete RSS feed'|@translate}</a></p>
+</div>
diff --git a/BSF/template/yoga/password.tpl b/BSF/template/yoga/password.tpl
new file mode 100644
index 000000000..8071b16d2
--- /dev/null
+++ b/BSF/template/yoga/password.tpl
@@ -0,0 +1,54 @@
+{* $Id$ *}
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'Go through the gallery as a visitor'|@translate}"><img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'Password forgotten'|@translate}</h2>
+ </div>
+
+ {if count($errors)}
+ <div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+ {if count($infos)}
+ <div class="infos">
+ <ul>
+ {foreach from=$infos item=info}
+ <li>{$info}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+<form action="{$F_ACTION}" method="post" class="properties">
+ <fieldset>
+ <legend>{'Retrieve password'|@translate}</legend>
+
+ <ul>
+ <li>
+ <span class="property">
+ <label for="mail_address">{'Email address'|@translate}</label>
+ </span>
+ <input class="login" type="text" name="mail_address" id="mail_address" size="40" maxlength="40" >
+ </li>
+ <li>
+ <span class="property">
+ <label for="no_mail_address">{'No email address'|@translate}</label>
+ </span>
+ <input type="checkbox" id="no_mail_address" name="no_mail_address" value="1">
+ </li>
+ </ul>
+ </fieldset>
+
+ <p><input class="submit" type="submit" name="submit" value="{'Send new password'|@translate}"></p>
+</form>
+
+</div> <!-- content -->
diff --git a/BSF/template/yoga/picture.css b/BSF/template/yoga/picture.css
new file mode 100644
index 000000000..839760053
--- /dev/null
+++ b/BSF/template/yoga/picture.css
@@ -0,0 +1,143 @@
+/* $Id$ */
+#imageHeaderBar {
+ padding-top: 2px;
+ padding-bottom: 2px;
+ margin-top: 4px;
+ overflow: hidden;
+ width: 100%;
+}
+
+#imageHeaderBar .browsePath {
+ float: left;
+ margin-left: 10px;
+}
+
+#imageHeaderBar .imageNumber {
+ float: right;
+ margin-right: 10px;
+}
+
+#imageHeaderBar H2 {
+ text-align: center;
+ padding: 0;
+ clear: both;
+}
+
+#imageToolBar {
+ text-align: center;
+ position: relative;
+ clear: both;
+ margin-bottom: 4px;
+ padding: 0;
+}
+
+#imageToolBar {
+ height: 28px;
+}
+#imageToolBar A, #imageToolBar IMG {
+ display: block;
+ border: none;
+ margin: 0; padding: 0;
+}
+#imageToolBar A { width: 48px; }
+#imageToolBar IMG { margin: 2px auto; }
+#imageToolBar .randomButtons A { float: left; }
+#imageToolBar .navButtons A { float: right; }
+
+#theImage {
+ clear: left;
+}
+
+#theImage>IMG {
+ display: block;
+ margin: 0 auto;
+}
+
+#theImage IMG {
+ border-width: 3px;
+ border-style: solid;
+}
+
+.navThumb {
+ margin-top: 2px;
+}
+#thumbPrev {
+ float: left;
+}
+
+#thumbNext {
+ float: right;
+}
+
+#linkPrev {
+ margin-right: 10px;
+ margin-left: 5px;
+}
+
+#linkNext {
+ margin-right: 5px;
+ margin-left: 10px;
+}
+
+TABLE.infoTable .value {
+ text-align: left;
+}
+
+TABLE.infoTable .label {
+ font-weight: bold;
+ text-align: right;
+ padding-right: 0.5em;
+}
+
+TABLE.infoTable TD.value UL {
+ margin: 0;
+ padding: 0 0 0 1.5em;
+ list-style-type: square;
+}
+
+.rateButton, .rateButtonSelected, .rateButtonStarFull, .rateButtonStarEmpty {
+ padding:0;
+ border:0;
+}
+
+.rateButton, .rateButtonStarFull, .rateButtonStarEmpty {
+ cursor: pointer;
+}
+
+.rateButtonSelected {
+ font-weight:bold;
+ font-size:120%;
+}
+
+.rateButtonStarFull {
+ background: url('icon/rating-stars.gif') no-repeat scroll; background-position:-16px center; width:16px;
+}
+
+.rateButtonStarEmpty {
+ background: url('icon/rating-stars.gif') no-repeat scroll; background-position:0 center; width:16px;
+}
+
+#comments {
+ text-align: left;
+}
+
+#comments .comment {
+ margin: 1em 0;
+}
+
+#comments P {
+ margin: 0 0.5em 0 1em;
+}
+
+#comments .author {
+ font-weight: bold;
+}
+
+#thePicturePage #comments BLOCKQUOTE {
+ margin: 0.5em 1em 1em 4em;
+}
+
+#comments P.userCommentDelete {
+ float: right;
+ margin: 0 0.5em 0 0;
+}
diff --git a/BSF/template/yoga/picture.tpl b/BSF/template/yoga/picture.tpl
new file mode 100644
index 000000000..fc5fce450
--- /dev/null
+++ b/BSF/template/yoga/picture.tpl
@@ -0,0 +1,230 @@
+{* $Id$ *}
+{if isset($errors)}
+<div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+</div>
+{/if}
+
+{if isset($infos)}
+<div class="infos">
+ <ul>
+ {foreach from=$infos item=info}
+ <li>{$info}</li>
+ {/foreach}
+ </ul>
+</div>
+{/if}
+
+<div id="imageHeaderBar">
+ <div class="browsePath">
+ <a href="{$U_HOME}" rel="home">{'home'|@translate}</a>
+ {$LEVEL_SEPARATOR}{$SECTION_TITLE}
+ {$LEVEL_SEPARATOR}{$current.TITLE}
+ </div>
+ <div class="imageNumber">{$PHOTO}</div>
+ {if $SHOW_PICTURE_NAME_ON_TITLE }
+ <h2>{$current.TITLE}</h2>
+ {/if}
+</div>
+
+{if !empty($PLUGIN_PICTURE_BEFORE)}{$PLUGIN_PICTURE_BEFORE}{/if}
+<div id="imageToolBar">
+ <div class="randomButtons">
+ {if isset($U_SLIDESHOW_START) }
+ <a href="{$U_SLIDESHOW_START}" title="{'slideshow'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/start_slideshow.png" class="button" alt="{'slideshow'|@translate}"></a>
+ {/if}
+ {if isset($U_SLIDESHOW_STOP) }
+ <a href="{$U_SLIDESHOW_STOP}" title="{'slideshow_stop'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_slideshow.png" class="button" alt="{'slideshow_stop'|@translate}"></a>
+ {/if}
+ <a href="{$U_METADATA}" title="{'picture_show_metadata'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/metadata.png" class="button" alt="metadata" /></a>
+ {if isset($current.U_DOWNLOAD) }
+ <a href="{$current.U_DOWNLOAD}" title="{'download_hint'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/save.png" class="button" alt="{'download'|@translate}"></a>
+ {/if}
+ {if isset($PLUGIN_PICTURE_ACTIONS)}{$PLUGIN_PICTURE_ACTIONS}{/if}
+ {if isset($favorite) }
+ <a href="{$favorite.U_FAVORITE}" title="{$favorite.FAVORITE_HINT}"><img src="{$favorite.FAVORITE_IMG}" class="button" alt="favorite" title="{$favorite.FAVORITE_HINT}"></a>
+ {/if}
+ {if !empty($U_SET_AS_REPRESENTATIVE) }
+ <a href="{$U_SET_AS_REPRESENTATIVE}" title="{'set as category representative'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/representative.png" class="button" alt="{'representative'|@translate}"></a>
+ {/if}
+ {if isset($U_ADMIN) }
+ <a href="{$U_ADMIN}" title="{'link_info_image'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/preferences.png" class="button" alt="{'edit'|@translate}"></a>
+ {/if}
+ {if isset($U_CADDIE) }
+ <a href="{$U_CADDIE}" title="{'add to caddie'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/caddie_add.png" class="button" alt="{'caddie'|@translate}"></a>
+ {/if}
+ </div>
+ {include file=$FILE_PICTURE_NAV_BUTTONS}
+</div> <!-- imageToolBar -->
+
+<div id="theImage">
+{$ELEMENT_CONTENT}
+
+{if isset($COMMENT_IMG)}
+<p>{$COMMENT_IMG}</p>
+{/if}
+
+{if isset($U_SLIDESHOW_STOP) }
+<p>
+ [ <a href="{$U_SLIDESHOW_STOP}">{'slideshow_stop'|@translate}</a> ]
+</p>
+{/if}
+
+</div>
+
+{if isset($previous) }
+<a class="navThumb" id="thumbPrev" href="{$previous.U_IMG}" title="{'previous_page'|@translate} : {$previous.TITLE}" rel="prev">
+ <img src="{$previous.THUMB_SRC}" class="thumbLink" id="linkPrev" alt="{$previous.TITLE}">
+</a>
+{/if}
+{if isset($next) }
+<a class="navThumb" id="thumbNext" href="{$next.U_IMG}" title="{'next_page'|@translate} : {$next.TITLE}" rel="next">
+ <img src="{$next.THUMB_SRC}" class="thumbLink" id="linkNext" alt="{$next.TITLE}">
+</a>
+{/if}
+
+<table class="infoTable" summary="Some info about this picture">
+ <tr>
+ <td class="label">{'Author'|@translate}</td>
+ <td class="value">{if isset($INFO_AUTHOR)}{$INFO_AUTHOR}{else}{'N/A'|@translate}{/if}</td>
+ </tr>
+ <tr>
+ <td class="label">{'Created on'|@translate}</td>
+ <td class="value">{if isset($INFO_CREATION_DATE)}{$INFO_CREATION_DATE}{else}{'N/A'|@translate}{/if}</td>
+ </tr>
+ <tr>
+ <td class="label">{'Posted on'|@translate}</td>
+ <td class="value">{$INFO_POSTED_DATE}</td>
+ </tr>
+ <tr>
+ <td class="label">{'Dimensions'|@translate}</td>
+ <td class="value">{if isset($INFO_DIMENSIONS)}{$INFO_DIMENSIONS}{else}{'N/A'|@translate}{/if}</td>
+ </tr>
+ <tr>
+ <td class="label">{'File'|@translate}</td>
+ <td class="value">{$INFO_FILE}</td>
+ </tr>
+ <tr>
+ <td class="label">{'Filesize'|@translate}</td>
+ <td class="value">{if isset($INFO_FILESIZE)}{$INFO_FILESIZE}{else}{'N/A'|@translate}{/if}</td>
+ </tr>
+ <tr>
+ <td class="label">{'Tags'|@translate}</td>
+ <td class="value">
+ {if isset($related_tags)}
+ {foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}
+ <a href="{$tag.U_TAG}">{$tag.NAME}</a>{/foreach}
+ {/if}
+ </td>
+ </tr>
+ <tr>
+ <td class="label">{'Categories'|@translate}</td>
+ <td class="value">
+ {if isset($related_categories)}
+ <ul>
+ {foreach from=$related_categories item=cat}
+ <li>{$cat}</li>
+ {/foreach}
+ </ul>
+ {/if}
+ </td>
+ </tr>
+ <tr>
+ <td class="label">{'Visits'|@translate}</td>
+ <td class="value">{$INFO_VISITS}</td>
+ </tr>
+ {if isset($rate_summary) }
+ <tr>
+ <td class="label">{'Average rate'|@translate}</td>
+ <td class="value">
+ {if $rate_summary.count}
+ {assign var='rate_text' value='%.2f (rated %d times, standard deviation = %.2f)'|@translate }
+ {$pwg->sprintf($rate_text, $rate_summary.average, $rate_summary.count, $rate_summary.std) }
+ {else}
+ {'no_rate'|@translate}
+ {/if}
+ </td>
+ </tr>
+ {/if}
+</table>
+
+{if isset($metadata)}
+<table class="infoTable" summary="Some more (technical) info about this picture">
+{foreach from=$metadata item=meta}
+ <tr>
+ <th colspan="2">{$meta.TITLE}</th>
+ </tr>
+ {foreach from=$meta.lines item=value key=label}
+ <tr>
+ <td class="label">{$label}</td>
+ <td class="value">{$value}</td>
+ </tr>
+ {/foreach}
+{/foreach}
+</table>
+{/if}
+
+{if isset($rating)}
+<form action="{$rating.F_ACTION}" method="post" id="rateForm">
+<div>
+{if isset($rating.USER_RATE)}{'update_rate'|@translate}{else}{'new_rate'|@translate}{/if}
+:
+{foreach from=$rating.marks item=mark name=rate_loop}
+{if !$smarty.foreach.rate_loop.first} | {/if}
+{if isset($rating.USER_RATE) && $mark==$rating.USER_RATE}
+ <input type="button" name="rate" value="{$mark}" class="rateButtonSelected" />
+{else}
+ <input type="submit" name="rate" value="{$mark}" class="rateButton" />
+{/if}
+{/foreach}
+<script type="text/javascript" src="{$ROOT_URL}{$themeconf.template_dir}/rating.js"></script>
+</div>
+</form>
+{/if}
+
+<hr class="separation">
+
+{if isset($COMMENT_COUNT)}
+<div id="comments">
+ <h2>[{$COMMENT_COUNT}] {'comments_title'|@translate}</h2>
+
+ <div class="navigationBar">{$COMMENT_NAV_BAR}</div>
+
+ {if isset($comments)}
+ {foreach from=$comments item=comment}
+ <div class="comment">
+ {if isset($comment.U_DELETE)}
+ <p class="userCommentDelete">
+ <a href="{$comment.U_DELETE}" title="{'comments_del'|@translate}">
+ <img src="{$ROOT_URL}{$themeconf.icon_dir}/delete.png" class="button" style="border:none;vertical-align:middle; margin-left:5px;" alt="[{'delete'|@translate}]"/>
+ </a>
+ </p>
+ {/if}
+ <p class="commentInfo"><span class="author">{$comment.AUTHOR}</span> - {$comment.DATE}</p>
+ <blockquote>{$comment.CONTENT}</blockquote>
+ </div>
+ {/foreach}
+ {/if}
+
+ {if isset($comment_add)}
+ <form method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
+ <fieldset>
+ <legend>{'comments_add'|@translate}</legend>
+ {if $comment_add.SHOW_AUTHOR}
+ <label>{'upload_author'|@translate}<input type="text" name="author"></label>
+ {/if}
+ <label>{'comment'|@translate}<textarea name="content" rows="5" cols="80">{$comment_add.CONTENT}</textarea></label>
+ <input type="hidden" name="key" value="{$comment_add.KEY}" />
+ <input class="submit" type="submit" value="{'Submit'|@translate}">
+ </fieldset>
+ </form>
+ {/if}
+
+</div>
+{/if} {*comments*}
+
+{if !empty($PLUGIN_PICTURE_AFTER)}{$PLUGIN_PICTURE_AFTER}{/if}
diff --git a/BSF/template/yoga/picture_content.tpl b/BSF/template/yoga/picture_content.tpl
new file mode 100644
index 000000000..7e15a1bb3
--- /dev/null
+++ b/BSF/template/yoga/picture_content.tpl
@@ -0,0 +1,9 @@
+{* $Id$ *}
+{if isset($high) }
+<a href="javascript:phpWGOpenWindow('{$high.U_HIGH}','{$high.UUID}','scrollbars=yes,toolbar=no,status=no,resizable=yes')">
+{/if}
+ <img src="{$SRC_IMG}" style="width:{$WIDTH_IMG}px;height:{$HEIGHT_IMG}px;" alt="{$ALT_IMG}">
+{if isset($high) }
+</a>
+ <p>{'picture_high'|@translate}</p>
+{/if}
diff --git a/BSF/template/yoga/picture_nav_buttons.tpl b/BSF/template/yoga/picture_nav_buttons.tpl
new file mode 100644
index 000000000..081696ee2
--- /dev/null
+++ b/BSF/template/yoga/picture_nav_buttons.tpl
@@ -0,0 +1,103 @@
+{* $Id$ *}
+ <div class="navButtons">
+
+{if isset($last)}
+ <a class="navButton prev" href="{$last.U_IMG}" title="{'last_page'|@translate} : {$last.TITLE}" rel="last"><img src="{$ROOT_URL}{$themeconf.icon_dir}/last.png" class="button" alt="{'last_page'|@translate}"></a>
+{else}
+ <a class="navButton prev"><img src="{$ROOT_URL}{$themeconf.icon_dir}/last_unactive.png" class="button" alt=""></a>
+{/if}
+
+{if isset($next)}
+ <a class="navButton next" href="{$next.U_IMG}" title="{'next_page'|@translate} : {$next.TITLE}" rel="next"><img src="{$ROOT_URL}{$themeconf.icon_dir}/right.png" class="button" alt="{'next_page'|@translate}"></a>
+{else}
+ <a class="navButton next"><img src="{$ROOT_URL}{$themeconf.icon_dir}/right_unactive.png" class="button" alt=""></a>
+{/if}
+
+{if isset($slideshow.U_START_PLAY)}
+ <a class="navButton play" href="{$slideshow.U_START_PLAY}" title="{'start_play'|@translate}" rel="play"><img src="{$ROOT_URL}{$themeconf.icon_dir}/play.png" class="button" alt="{'start_play'|@translate}"></a>
+{/if}
+
+{if isset($slideshow.U_STOP_PLAY)}
+ <a class="navButton play" href="{$slideshow.U_STOP_PLAY}" title="{'stop_play'|@translate}" rel="play"><img src="{$ROOT_URL}{$themeconf.icon_dir}/pause.png" class="button" alt="{'stop_play'|@translate}"></a>
+{/if}
+
+{if isset($U_UP) and !isset($slideshow)}
+ <a class="navButton up" href="{$U_UP}" title="{'thumbnails'|@translate}" rel="up"><img src="{$ROOT_URL}{$themeconf.icon_dir}/up.png" class="button" alt="{'thumbnails'|@translate}"></a>
+{/if}
+
+{if isset($previous)}
+ <a class="navButton prev" href="{$previous.U_IMG}" title="{'previous_page'|@translate} : {$previous.TITLE}" rel="prev"><img src="{$ROOT_URL}{$themeconf.icon_dir}/left.png" class="button" alt="{'previous_page'|@translate}"></a>
+{else}
+ <a class="navButton prev"><img src="{$ROOT_URL}{$themeconf.icon_dir}/left_unactive.png" class="button" alt=""></a>
+{/if}
+
+{if isset($first)}
+ <a class="navButton prev" href="{$first.U_IMG}" title="{'first_page'|@translate} : {$first.TITLE}" rel="first"><img src="{$ROOT_URL}{$themeconf.icon_dir}/first.png" class="button" alt="{'first_page'|@translate}"></a>
+{else}
+ <a class="navButton prev"><img src="{$ROOT_URL}{$themeconf.icon_dir}/first_unactive.png" class="button" alt=""></a>
+{/if}
+
+
+{if isset($slideshow.U_START_REPEAT)}
+ <a class="navButton repeat" href="{$slideshow.U_START_REPEAT}" title="{'start_repeat'|@translate}" rel="repeat"><img src="{$ROOT_URL}{$themeconf.icon_dir}/start_repeat.png" class="button" alt="{'start_repeat'|@translate}"></a>
+{/if}
+
+{if isset($slideshow.U_STOP_REPEAT)}
+ <a class="navButton repeat" href="{$slideshow.U_STOP_REPEAT}" title="{'stop_repeat'|@translate}" rel="repeat"><img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_repeat.png" class="button" alt="{'stop_repeat'|@translate}"></a>
+{/if}
+
+{if isset($slideshow)}
+ {if isset($slideshow.U_DEC_PERIOD)}
+ <a class="navButton dec_period" href="{$slideshow.U_DEC_PERIOD}" title="{'dec_period'|@translate}" rel="repeat"><img src="{$ROOT_URL}{$themeconf.icon_dir}/dec_period.png" class="button" alt="{'dec_period'|@translate}"></a>
+ {else}
+ <a class="navButton dec_period"> <img src="{$ROOT_URL}{$themeconf.icon_dir}/dec_period_unactive.png" class="button" alt=""></a>
+ {/if}
+
+ {if isset($slideshow.U_INC_PERIOD)}
+ <a class="navButton inc_period" href="{$slideshow.U_INC_PERIOD}" title="{'inc_period'|@translate}" rel="repeat"><img src="{$ROOT_URL}{$themeconf.icon_dir}/inc_period.png" class="button" alt="{'inc_period'|@translate}"></a>
+ {else}
+ <a class="navButton inc_period"> <img src="{$ROOT_URL}{$themeconf.icon_dir}/inc_period_unactive.png" class="button" alt=""></a>
+ {/if}
+{/if}
+
+ </div>
+
+<script type="text/javascript">
+{literal}
+function keyboardNavigation(e)
+{
+ if(!e) var e=window.event;
+ if (e.altKey) return true;
+ var target = e.target || e.srcElement;
+ if (target && target.type) return true; //an input editable element
+ var keyCode=e.keyCode || e.which;
+ var docElem = document.documentElement;
+ switch(keyCode) {
+{/literal}
+{if isset($next)}
+ case 63235: case 39: if (e.ctrlKey || docElem.scrollLeft==docElem.scrollWidth-docElem.clientWidth ){ldelim}window.location="{$next.U_IMG}".replace( "&amp;", "&" ); return false; } break;
+{/if}
+{if isset($previous)}
+ case 63234: case 37: if (e.ctrlKey || docElem.scrollLeft==0){ldelim}window.location="{$previous.U_IMG|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($first)}
+ /*Home*/case 36: if (e.ctrlKey){ldelim}window.location="{$first.U_IMG|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($last)}
+ /*End*/case 35: if (e.ctrlKey){ldelim}window.location="{$last.U_IMG|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($U_UP) and !isset($slideshow)}
+ /*Up*/case 38: if (e.ctrlKey){ldelim}window.location="{$U_UP|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+
+{if isset($slideshow.U_START_PLAY)}
+ /*Pause*/case 32: {ldelim}window.location="{$slideshow.U_START_PLAY|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($slideshow.U_STOP_PLAY)}
+ /*Play*/case 32: {ldelim}window.location="{$slideshow.U_STOP_PLAY|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+ }
+ return true;
+}
+document.onkeydown=keyboardNavigation;
+</script>
diff --git a/BSF/template/yoga/popuphelp.tpl b/BSF/template/yoga/popuphelp.tpl
new file mode 100644
index 000000000..af732c554
--- /dev/null
+++ b/BSF/template/yoga/popuphelp.tpl
@@ -0,0 +1,6 @@
+{* $Id$ *}
+<div id="content" class="content">
+{$HELP_CONTENT}
+</div> <!-- content -->
+
+<p id="pageBottomActions"><a href="#" onclick="window.close();" title="{'Close this window'|@translate}"><img src="{$themeconf.icon_dir}/exit.png" class="button" alt="close"></a></p>
diff --git a/BSF/template/yoga/print.css b/BSF/template/yoga/print.css
new file mode 100644
index 000000000..8252f7e44
--- /dev/null
+++ b/BSF/template/yoga/print.css
@@ -0,0 +1,14 @@
+#menubar, .content .navigationBar, UL.categoryActions, .content DIV.calendarViews, .calendarBar,
+#imageToolBar, .navThumb, #addComment {
+ display: none;
+}
+
+BODY {
+ margin: 0;
+ color: #000000;
+ background: #ffffff;
+}
+
+.content {
+ margin: 0;
+}
diff --git a/BSF/template/yoga/profile.tpl b/BSF/template/yoga/profile.tpl
new file mode 100644
index 000000000..75ea61d48
--- /dev/null
+++ b/BSF/template/yoga/profile.tpl
@@ -0,0 +1,22 @@
+{* $Id$ *}
+<div id="content" class="content">
+
+{if isset($errors)}
+<div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+</div>
+{/if}
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'return to homepage'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'Profile'|@translate}</h2>
+ </div>
+
+{$PROFILE_CONTENT}
+</div> <!-- content -->
diff --git a/BSF/template/yoga/profile_content.tpl b/BSF/template/yoga/profile_content.tpl
new file mode 100644
index 000000000..9cabf0a51
--- /dev/null
+++ b/BSF/template/yoga/profile_content.tpl
@@ -0,0 +1,109 @@
+{* $Id$ *}
+<form method="post" name="profile" action="{$F_ACTION}" id="profile" class="properties">
+
+ <fieldset>
+ <legend>{'Registration'|@translate}</legend>
+ <input type="hidden" name="redirect" value="{$REDIRECT}" />
+ <ul>
+ <li>
+ <span class="property">{'Username'|@translate}</span>
+ {$USERNAME}
+ </li>
+{if not $SPECIAL_USER} {* can modify password + email*}
+ <li>
+ <span class="property">
+ <label for="mail_address">{'Email address'|@translate}</label>
+ </span>
+ <input type="text" name="mail_address" id="mail_address" value="{$EMAIL}">
+ </li>
+{if not $IN_ADMIN} {* admins do not need old password*}
+ <li>
+ <span class="property">
+ <label for="password">{'Password'|@translate}</label>
+ </span>
+ <input type="password" name="password" id="password" value="">
+ </li>
+{/if}
+ <li>
+ <span class="property">
+ <label for="use_new_pwd">{'new_password'|@translate}</label>
+ </span>
+ <input type="password" name="use_new_pwd" id="use_new_pwd" value="">
+ </li>
+ <li>
+ <span class="property">
+ <label for="passwordConf">{'Confirm Password'|@translate}</label>
+ </span>
+ <input type="password" name="passwordConf" id="passwordConf" value="">
+ </li>
+ </ul>
+{/if}
+ </fieldset>
+
+ <fieldset>
+ <legend>{'preferences'|@translate}</legend>
+
+ <ul>
+ <li>
+ <span class="property">
+ <label for="nb_image_line">{'nb_image_per_row'|@translate}</label>
+ </span>
+ <input type="text" size="3" maxlength="2" name="nb_image_line" id="nb_image_line" value="{$NB_IMAGE_LINE}">
+ </li>
+ <li>
+ <span class="property">
+ <label for="nb_line_page">{'nb_row_per_page'|@translate}</label>
+ </span>
+ <input type="text" size="3" maxlength="2" name="nb_line_page" id="nb_line_page" value="{$NB_ROW_PAGE}" >
+ </li>
+ <li>
+ <span class="property">
+ <label for="template">{'theme'|@translate}</label>
+ </span>
+ {html_options name=template options=$template_options selected=$template_selection}
+ </li>
+ <li>
+ <span class="property">
+ <label for="language">{'language'|@translate}</label>
+ </span>
+ {html_options name=language options=$language_options selected=$language_selection}
+ </li>
+ <li>
+ <span class="property">
+ <label for="recent_period">{'recent_period'|@translate}</label>
+ </span>
+ <input type="text" size="3" maxlength="2" name="recent_period" id="recent_period" value="{$RECENT_PERIOD}">
+ </li>
+ <li>
+ <span class="property">{'auto_expand'|@translate}</span>
+ {html_radios name='expand' options=$radio_options selected=$EXPAND}
+ </li>
+ <li>
+ <span class="property">{'show_nb_comments'|@translate}</span>
+ {html_radios name='show_nb_comments' options=$radio_options selected=$NB_COMMENTS}
+ </li>
+ <li>
+ <span class="property">{'show_nb_hits'|@translate}</span>
+ {html_radios name='show_nb_hits' options=$radio_options selected=$NB_HITS}
+ </li>
+ <li>
+ <span class="property">
+ <label for="maxwidth">{'maxwidth'|@translate}</label>
+ </span>
+ <input type="text" size="4" maxlength="4" name="maxwidth" id="maxwidth" value="{$MAXWIDTH}">
+ </li>
+ <li>
+ <span class="property">
+ <label for="maxheight">{'maxheight'|@translate}</label>
+ </span>
+ <input type="text" size="4" maxlength="4" name="maxheight" id="maxheight" value="{$MAXHEIGHT}">
+ </li>
+ </ul>
+ </fieldset>
+
+ <p class="bottomButtons">
+ <input class="submit" type="submit" name="validate" value="{'Submit'|@translate}">
+ <input class="submit" type="reset" name="reset" value="{'Reset'|@translate}">
+ </p>
+
+</form>
diff --git a/BSF/template/yoga/rating.js b/BSF/template/yoga/rating.js
new file mode 100644
index 000000000..a4f8f86b8
--- /dev/null
+++ b/BSF/template/yoga/rating.js
@@ -0,0 +1,90 @@
+makeNiceRatingForm();
+
+function makeNiceRatingForm()
+{
+ var form = document.getElementById('rateForm');
+ if (!form) return; //? template changed
+ gRatingButtons = form.getElementsByTagName('input');
+
+ gUserRating = "";
+ for (var i=0; i<gRatingButtons.length; i++)
+ {
+ if ( gRatingButtons[i].type=="button" )
+ {
+ gUserRating = gRatingButtons[i].value;
+ break;
+ }
+ }
+
+ for (var i=0; i<gRatingButtons.length; i++)
+ {
+ var rateButton = gRatingButtons[i];
+ rateButton.initialRateValue = rateButton.value; // save it as a property
+
+ rateButton.value = ""; //hide the text IE/Opera
+ with (rateButton.style)
+ {
+ textIndent = "-50px"; //hide the text FF
+ marginLeft = marginRight = 0;
+ }
+
+ if (i!=gRatingButtons.length-1 && rateButton.nextSibling.nodeType == 3 /*TEXT_NODE*/)
+ rateButton.parentNode.removeChild(rateButton.nextSibling);
+ if (i>0 && rateButton.previousSibling.nodeType == 3 /*TEXT_NODE*/)
+ rateButton.parentNode.removeChild(rateButton.previousSibling);
+
+ if(window.addEventListener){ // Mozilla, Netscape, Firefox
+ rateButton.addEventListener("click", updateRating, false );
+ rateButton.addEventListener("mouseout", resetRatingStarDisplay, false );
+ rateButton.addEventListener("mouseover", updateRatingStarDisplayEvt, false );
+ }
+ else if(window.attachEvent) { // IE
+ rateButton.attachEvent("onclick", updateRating);
+ rateButton.attachEvent("onmouseout", resetRatingStarDisplay);
+ rateButton.attachEvent("onmouseover", updateRatingStarDisplayEvt);
+ }
+ }
+ resetRatingStarDisplay();
+}
+
+function resetRatingStarDisplay()
+{
+ updateRatingStarDisplay( gUserRating );
+}
+
+function updateRatingStarDisplay(userRating)
+{
+ for (i=0; i<gRatingButtons.length; i++)
+ {
+ var rateButton = gRatingButtons[i];
+ if (userRating!=="" && userRating>=rateButton.initialRateValue )
+ {
+ rateButton.className = "rateButtonStarFull";
+ }
+ else
+ {
+ rateButton.className = "rateButtonStarEmpty";
+ }
+ }
+}
+
+function updateRatingStarDisplayEvt(e)
+{
+ if (e.target)
+ updateRatingStarDisplay(e.target.initialRateValue);
+ else //IE
+ updateRatingStarDisplay(e.srcElement.initialRateValue);
+}
+
+function updateRating(e)
+{
+ if (e.target)
+ var rateButton = e.target;
+ else //IE
+ var rateButton = e.srcElement;
+ if (rateButton.initialRateValue == gUserRating)
+ return false; //nothing to do
+ // some ajax here one day would be nice
+ rateButton.value = rateButton.initialRateValue; // put back real value
+ return true;
+} \ No newline at end of file
diff --git a/BSF/template/yoga/redirect.tpl b/BSF/template/yoga/redirect.tpl
new file mode 100644
index 000000000..aa007426f
--- /dev/null
+++ b/BSF/template/yoga/redirect.tpl
@@ -0,0 +1,3 @@
+{* $Id$ *}
+<p>{$REDIRECT_MSG}</p>
+<p><a href="{$page_refresh.U_REFRESH}">{'click_to_redirect'|@translate}</a></p>
diff --git a/BSF/template/yoga/register.tpl b/BSF/template/yoga/register.tpl
new file mode 100644
index 000000000..83bfd8c27
--- /dev/null
+++ b/BSF/template/yoga/register.tpl
@@ -0,0 +1,69 @@
+{* $Id$ *}
+<div id="registerPage">
+
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'return to homepage'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'Registration'|@translate}</h2>
+ </div>
+
+{if isset($errors)}
+ <div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+ </div>
+{/if}
+
+<form method="post" action="{$F_ACTION}" class="properties" name="register_form">
+ <fieldset>
+ <legend>{'Enter your personnal informations'|@translate}</legend>
+
+ <ul>
+ <li>
+ <span class="property">
+ <label for="login">* {'Username'|@translate}</label>
+ </span>
+ <input type="text" name="login" id="login" value="{$F_LOGIN}" >
+ </li>
+ <li>
+ <span class="property">
+ <label for="password">* {'Password'|@translate}</label>
+ </span>
+ <input type="password" name="password" id="password" >
+ </li>
+ <li>
+ <span class="property">
+ <label for="password_conf">* {'Confirm Password'|@translate}</label>
+ </span>
+ <input type="password" name="password_conf" id="password_conf" >
+ </li>
+ <li>
+ <span class="property">
+ <label for="mail_address">{'Mail address'|@translate}</label>
+ </span>
+ <input type="text" name="mail_address" id="mail_address" value="{$F_EMAIL}" >
+ ({'useful when password forgotten'|@translate})
+ </li>
+ </ul>
+
+ </fieldset>
+
+ <p class="bottomButtons">
+ <input class="submit" type="submit" name="submit" value="{'Register'|@translate}">
+ <input class="submit" type="reset" value="{'Reset'|@translate}">
+ </p>
+
+</form>
+
+<script type="text/javascript"><!--
+document.register_form.login.focus();
+//--></script>
+
+</div> <!-- content -->
+</div> <!-- registerPage -->
diff --git a/BSF/template/yoga/search.tpl b/BSF/template/yoga/search.tpl
new file mode 100644
index 000000000..f5b72d138
--- /dev/null
+++ b/BSF/template/yoga/search.tpl
@@ -0,0 +1,126 @@
+{* $Id$ *}
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"></a></li>
+ <li><a href="{$U_HOME}" title="{'return to homepage'|@translate}" rel="home"><img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'Search'|@translate}</h2>
+ </div>
+
+{if isset($errors) }
+<div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+</div>
+{/if}
+
+<form class="filter" method="post" name="search" action="{$F_SEARCH_ACTION}">
+<fieldset>
+ <legend>{'Filter'|@translate}</legend>
+ <label>{'search_keywords'|@translate}
+ <input type="text" style="width: 300px" name="search_allwords" size="30" />
+ </label>
+ <ul>
+ <li><label>
+ <input type="radio" name="mode" value="AND" checked="checked" />{'search_mode_and'|@translate}
+ </label></li>
+ <li><label>
+ <input type="radio" name="mode" value="OR" />{'search_mode_or'|@translate}
+ </label></li>
+ </ul>
+ <label>{'search_author'|@translate}
+ <input type="text" style="width: 300px" name="search_author" size="30" />
+ </label>
+</fieldset>
+
+{if isset($TAG_SELECTION)}
+<fieldset>
+ <legend>{'Search tags'|@translate}</legend>
+ {$TAG_SELECTION}
+ <label><span><input type="radio" name="tag_mode" value="AND" checked="checked" /> {'All tags'|@translate}</span></label>
+ <label><span><input type="radio" name="tag_mode" value="OR" /> {'Any tag'|@translate}</span></label>
+</fieldset>
+{/if}
+
+<fieldset>
+ <legend>{'search_date'|@translate}</legend>
+ <ul>
+ <li><label>{'search_date_type'|@translate}</label></li>
+ <li><label>
+ <input type="radio" name="date_type" value="date_creation" checked="checked" />{'Creation date'|@translate}
+ </label></li>
+ <li><label>
+ <input type="radio" name="date_type" value="date_available" />{'Post date'|@translate}
+ </label></li>
+ </ul>
+ <ul>
+ <li><label>{'search_date_from'|@translate}</label></li>
+ <li>
+ <select name="start_day">
+ <option value="0">--</option>
+ {section name=day start=1 loop=32}
+ <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$START_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+ {/section}
+ </select>
+ <select name="start_month">
+ {html_options options=$month_list selected=$START_MONTH_SELECTED}
+ </select>
+ <input name="start_year" type="text" size="4" maxlength="4" >
+ </li>
+ <li>
+ <a href="#" onClick="document.search.start_day.value={$smarty.now|date_format:"%d"};document.search.start_month.value={$smarty.now|date_format:"%m"};document.search.start_year.value={$smarty.now|date_format:"%Y"};return false;">{'today'|@translate}</a>
+ </li>
+ </ul>
+ <ul>
+ <li><label>{'search_date_to'|@translate}</label></li>
+ <li>
+ <select name="end_day">
+ <option value="0">--</option>
+ {section name=day start=1 loop=32}
+ <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$END_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+ {/section}
+ </select>
+ <select name="end_month">
+ {html_options options=$month_list selected=$END_MONTH_SELECTED}
+ </select>
+ <input name="end_year" type="text" size="4" maxlength="4" >
+ </li>
+ <li>
+ <a href="#" onClick="document.search.end_day.value={$smarty.now|date_format:"%d"};document.search.end_month.value={$smarty.now|date_format:"%m"};document.search.end_year.value={$smarty.now|date_format:"%Y"};return false;">{'today'|@translate}</a>
+ </li>
+ </ul>
+</fieldset>
+
+<fieldset>
+ <legend>{'search_options'|@translate}</legend>
+ <label>{'search_categories'|@translate}
+ <select class="categoryList" name="cat[]" multiple="multiple" >
+ {html_options options=$category_options selected=$category_options_selected}
+ </select>
+ </label>
+ <ul>
+ <li><label>{'search_subcats_included'|@translate}</label></li>
+ <li><label>
+ <input type="radio" name="subcats-included" value="1" checked="checked" />{'Yes'|@translate}
+ </label></li>
+ <li><label>
+ <input type="radio" name="subcats-included" value="0" />{'No'|@translate}
+ </label></li>
+ </ul>
+</fieldset>
+<p>
+ <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" />
+ <input class="submit" type="reset" value="{'Reset'|@translate}" />
+</p>
+</form>
+
+<script type="text/javascript"><!--
+document.search.search_allwords.focus();
+//--></script>
+
+</div> <!-- content -->
diff --git a/BSF/template/yoga/search_rules.tpl b/BSF/template/yoga/search_rules.tpl
new file mode 100644
index 000000000..c7b4a8b88
--- /dev/null
+++ b/BSF/template/yoga/search_rules.tpl
@@ -0,0 +1,56 @@
+{* $Id$ *}
+<div id="content" class="content">
+<h2>{'Search rules'|@translate}</h2>
+
+{if isset($INTRODUCTION) }
+<p>{$INTRODUCTION}</p>
+{/if}
+
+<ul>
+
+ {if isset($search_words) }
+ {foreach from=$search_words item=v}
+ <li>{$v}</li>
+ {/foreach}
+ {/if}
+
+ {if isset($SEARCH_TAGS_MODE) }
+ <li>
+ <p>{if 'AND'==$SEARCH_TAGS_MODE}{'All tags must match'|@translate}{else}{'At least one tag must match'|@translate}{/if}</p>
+ <ul>
+ {foreach from=$search_tags item=v}
+ <li>{$v}</li>
+ {/foreach}
+ </ul>
+ </li>
+ {/if}
+
+ {if isset($DATE_CREATION) }
+ <li>{$DATE_CREATION}</li>
+ {/if}
+
+ {if isset($DATE_AVAILABLE) }
+ <li>{$DATE_AVAILABLE}</li>
+ {/if}
+
+ {if isset($search_categories) }
+ <li>
+ <p>{'Categories'|@translate}</p>
+
+ <ul>
+ {foreach from=$search_categories item=v}
+ <li>{$v}</li>
+ {/foreach}
+ </ul>
+ </li>
+ {/if}
+
+</ul>
+
+</div> <!-- content -->
+
+<p id="pageBottomActions">
+ <a href="#" onclick="window.close();" title="{'Close this window'|@translate}">
+ <img src="{$themeconf.icon_dir}/exit.png" class="button" alt="close">
+ </a>
+</p>
diff --git a/BSF/template/yoga/slideshow.tpl b/BSF/template/yoga/slideshow.tpl
new file mode 100644
index 000000000..1bbc0029f
--- /dev/null
+++ b/BSF/template/yoga/slideshow.tpl
@@ -0,0 +1,23 @@
+{* $Id$ *}
+<div id="imageHeaderBar">
+ <div class="browsePath">
+ {if isset($U_SLIDESHOW_STOP) }
+ [ <a href="{$U_SLIDESHOW_STOP}">{'slideshow_stop'|@translate}</a> ]
+ {/if}
+ </div>
+ <div class="imageNumber">{$PHOTO}</div>
+ {if $SHOW_PICTURE_NAME_ON_TITLE }
+ <h2 class="showtitle">{$current.TITLE}</h2>
+ {/if}
+</div>
+
+<div id="imageToolBar">
+ {include file=$FILE_PICTURE_NAV_BUTTONS}
+</div>
+
+<div id="theImage">
+ {$ELEMENT_CONTENT}
+ {if isset($COMMENT_IMG)}
+ <p class="showlegend">{$COMMENT_IMG}</p>
+ {/if}
+</div>
diff --git a/BSF/template/yoga/tags.tpl b/BSF/template/yoga/tags.tpl
new file mode 100644
index 000000000..98a49cd06
--- /dev/null
+++ b/BSF/template/yoga/tags.tpl
@@ -0,0 +1,19 @@
+{* $Id$ *}
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'return to homepage'|@translate}"><img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'Tags'|@translate}</h2>
+ </div>
+
+ {if isset($tags)}
+ <ul id="fullTagCloud">
+ {foreach from=$tags item=tag}
+ <li><a href="{$tag.URL}" class="{$tag.CLASS}" title="{$tag.TITLE}">{$tag.NAME}</a></li>
+ {/foreach}
+ </ul>
+ {/if}
+
+</div> <!-- content -->
diff --git a/BSF/template/yoga/theme/admin/images/bottom-left-bg.png b/BSF/template/yoga/theme/admin/images/bottom-left-bg.png
new file mode 100644
index 000000000..ce611dfed
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/bottom-left-bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/content-bg.png b/BSF/template/yoga/theme/admin/images/content-bg.png
new file mode 100644
index 000000000..74ccf81bc
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/content-bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/header_bottom.png b/BSF/template/yoga/theme/admin/images/header_bottom.png
new file mode 100644
index 000000000..e4d049881
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/header_bottom.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/index.php b/BSF/template/yoga/theme/admin/images/index.php
new file mode 100644
index 000000000..547a117bf
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/index.php
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file : $Id$
+// | last update : $Date$
+// | last modifier : $Author$
+// | revision : $Revision$
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/admin/images/internal_onglet.png b/BSF/template/yoga/theme/admin/images/internal_onglet.png
new file mode 100644
index 000000000..dd7b1e218
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/internal_onglet.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/list-hover.png b/BSF/template/yoga/theme/admin/images/list-hover.png
new file mode 100644
index 000000000..73b600269
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/list-hover.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/list-image.png b/BSF/template/yoga/theme/admin/images/list-image.png
new file mode 100644
index 000000000..1acdf67e4
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/list-image.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/menubar-bg.jpg b/BSF/template/yoga/theme/admin/images/menubar-bg.jpg
new file mode 100644
index 000000000..f99114277
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/menubar-bg.jpg
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/menubar-bg.png b/BSF/template/yoga/theme/admin/images/menubar-bg.png
new file mode 100644
index 000000000..eb998d35c
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/menubar-bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/menubar-bottom.png b/BSF/template/yoga/theme/admin/images/menubar-bottom.png
new file mode 100644
index 000000000..be74ddca1
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/menubar-bottom.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/menubar-detail.png b/BSF/template/yoga/theme/admin/images/menubar-detail.png
new file mode 100644
index 000000000..e2d411e95
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/menubar-detail.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/menubar-top.png b/BSF/template/yoga/theme/admin/images/menubar-top.png
new file mode 100644
index 000000000..7a1195c5f
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/menubar-top.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/onglet_actif.png b/BSF/template/yoga/theme/admin/images/onglet_actif.png
new file mode 100644
index 000000000..476edb31b
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/onglet_actif.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/onglet_actif_transp.png b/BSF/template/yoga/theme/admin/images/onglet_actif_transp.png
new file mode 100644
index 000000000..fe4b18275
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/onglet_actif_transp.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/onglet_inactif.png b/BSF/template/yoga/theme/admin/images/onglet_inactif.png
new file mode 100644
index 000000000..8411ed119
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/onglet_inactif.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/onglet_inactif_transp.png b/BSF/template/yoga/theme/admin/images/onglet_inactif_transp.png
new file mode 100644
index 000000000..9ad96c14e
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/onglet_inactif_transp.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/piwigo_logo_sombre_214x100.png b/BSF/template/yoga/theme/admin/images/piwigo_logo_sombre_214x100.png
new file mode 100644
index 000000000..106f20add
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/piwigo_logo_sombre_214x100.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/pre-menubar-bg.png b/BSF/template/yoga/theme/admin/images/pre-menubar-bg.png
new file mode 100644
index 000000000..f691a288b
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/pre-menubar-bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/tableh1_bg.png b/BSF/template/yoga/theme/admin/images/tableh1_bg.png
new file mode 100644
index 000000000..38f356b83
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/tableh1_bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/tableh2_bg.png b/BSF/template/yoga/theme/admin/images/tableh2_bg.png
new file mode 100644
index 000000000..be06ee428
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/tableh2_bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/images/top-left-bg.png b/BSF/template/yoga/theme/admin/images/top-left-bg.png
new file mode 100644
index 000000000..2650367b0
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/images/top-left-bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/admin/index.php b/BSF/template/yoga/theme/admin/index.php
new file mode 100644
index 000000000..547a117bf
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/index.php
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file : $Id$
+// | last update : $Date$
+// | last modifier : $Author$
+// | revision : $Revision$
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/admin/mail-css.tpl b/BSF/template/yoga/theme/admin/mail-css.tpl
new file mode 100644
index 000000000..5b3e53c3d
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/mail-css.tpl
@@ -0,0 +1,19 @@
+{* $Id$ *}
+/* Theme wipi mail css */
+
+body {ldelim} background-color:#111; color:#69c;}
+#the_page {ldelim} background: #111 url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;}
+#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;}
+#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom;
+color: #69c;}
+h2 {ldelim} background-color: #222;color:#eee;background-image: url({$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/images/tableh1_bg.png);}
+img {ldelim} margin: 16px; padding:15px;border:1px solid #eee; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} border:1px solid #69c; -moz-border-radius: 4px; border-radius: 4px 4px; }
+a {ldelim} color: #69c; background: transparent; }
+a:hover {ldelim} color: #f92; }
+a.PWG {ldelim} border: 0px; }
+a.PWG .P {ldelim} color : #f92; }
+a.PWG .W {ldelim} color : #aaa; }
+a.PWG .G {ldelim} color : #69c; }
+a.PWG:hover .P {ldelim} color : #69c; }
+a.PWG:hover .G {ldelim} color : #f92; }
diff --git a/BSF/template/yoga/theme/admin/theme.css b/BSF/template/yoga/theme/admin/theme.css
new file mode 100644
index 000000000..7b8e63e9a
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/theme.css
@@ -0,0 +1,468 @@
+/* $Id$ */
+
+/* text color */
+BODY, H1, H3, DT,
+INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {
+ color:#e0e0e0;
+}
+#menubar {
+ margin : 0px;
+ background-color: transparent;
+ border: 0px;
+}
+H2, .throw {
+ color: #eee;
+}
+#menubar DT, #menubar DT A {
+ color: #eee;
+ font-weight: lighter;
+}
+#menubar DT A:hover {
+ color: #69c;
+ font-weight: lighter;
+}
+#menubar .selected A {
+ color: #eee;
+}
+#menubar .selected A:hover {
+ color: #f92;
+}
+#menubar DT:before {
+ content: "__\\_ ";
+ color: #f92;
+}
+#menubar DT:after {
+ content: " _/__";
+ color: #69c;
+}
+#menubar .button {
+ margin: 0 2px 0px 8px;
+ width: auto;
+ padding: 0;
+ text-indent: 0;
+ list-style: none;
+ text-align: center;
+ float: left;
+}
+#theAdminPage #menubar DT:before,
+#theAdminPage #menubar DT:after {
+ content: '';
+}
+.content .pageNumberSelected {
+ color: #f92;
+}
+.content .infos {
+ background-color: #69c;
+ color: #036;
+}
+.content .errors {
+ background-color: #fc5;
+ border-color: #f92;
+ color: #900;
+}
+/* backgrounds */
+BODY {
+ background: #111;
+ margin: 0px;
+ padding: 0px;
+}
+H3, #imageToolBar A:hover, .row1, .tabsheet li {
+ background-color: #222;
+}
+#theAdminPage h2, #theAdminPage h3 { border-bottom: 1px solid #69c; }
+#imageHeaderBar, #theAdminPage #the_page {
+ background-color: transparent;
+}
+#imageToolBar, .header_notes {
+ background-color: #333;
+}
+.selected_tab { background-color: eee !important; }
+A {
+ border-color: #69c;
+}
+A:hover {
+ border-color: #f92;
+}
+.content {
+ background-color: #181818;
+ border: 1px solid #eee;
+ padding: 5px;
+}
+#theAdminPage #the_page .content {
+ background-color: transparent;
+ border-width: 0px;
+ padding: 5px;
+}
+H2, #menubar DT, .throw, TD H3, #theAdminPage H3 {
+ background-image: url(images/tableh1_bg.png);
+ background-repeat: repeat-x;
+}
+.content H2 {
+ background: none;
+ border: 0px;
+ letter-spacing: -0.05em;
+ text-indent: 1em;
+ text-transform: uppercase;
+ font-weight: lighter;
+ margin-bottom: 20px;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description h3,
+.content h3 { text-align: center; }
+.content ul.thumbnailCategories li div.thumbnailCategory .description p {
+ color: #f92; text-indent: 0em;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description p + p {
+ color: #fff;
+}
+.browsePath A {
+ color: #eee;
+}
+.content H2:before, .browsePath:before, .imageNumber:before,
+#imageHeaderBar H2:before {
+ content: "____\\_ ";
+ color: #69c;
+ font-family: Times, Zapf-Chancery, Cottonwood, Helvetica;
+ letter-spacing: 0em;
+}
+.content H2:after, .browsePath:after, .imageNumber:after,
+#imageHeaderBar H2:after {
+ content: " _/____";
+ color: #f92;
+ font-family: Times, Zapf-Chancery, Cottonwood, Helvetica;
+ letter-spacing: 0em;
+}
+#imageHeaderBar H2 {
+ background-image: none;
+ background-color: transparent;
+ border: none;
+}
+#thePicturePage #the_page {
+ background-color: transparent;
+}
+#thePicturePage #imageHeaderBar {
+ background-image: url(images/tableh2_bg.png);
+ background-repeat: repeat-x;
+}
+#thePicturePage #imageToolBar {
+ background-color: transparent;
+ border-bottom: 2px solid #69c;
+}
+#thePicturePage #theImage {
+ background-color: transparent;
+ margin: 0px;
+ padding: 3px 0px 15px 0px;
+}
+
+#thePicturePage #comments H2 {
+ background-image: none;
+ background-color: #222;
+ border-top: 2px solid #69c;
+ border-bottom: 2px solid #69c;
+ color: #69c;
+ font-weight: lighter;
+}
+
+/* borders */
+#comments DIV.comment BLOCKQUOTE {
+ border: 1px solid #000;
+}
+#imageHeaderBar {
+ border-top: 1px solid #000;
+ padding: 8px 0px 3px 0px;
+}
+H2, #imageToolBar {
+ border-bottom: 1px solid #000;
+}
+
+#theImage IMG {
+ border-color: #fff;
+}
+
+.content UL.thumbnail IMG {
+ border: 1px solid #a0a0a0;
+}
+.illustration A {
+ border: 0px;
+}
+FIELDSET, INPUT, SELECT, TEXTAREA,
+.content DIV.comment A.illustration IMG,
+.content DIV.thumbnailCategory {
+ border: 1px solid gray;
+}
+.content DIV.thumbnailCategory {
+ border: 1px solid #69c;
+ margin: 8px 4px;
+}
+#comments DIV.comment BLOCKQUOTE {
+ border-left: 2px solid #696969;
+}
+
+.content UL.thumbnails SPAN.wrap2 {
+ border: 1px solid #aaaaaa; /* thumbnails border color and style */
+ border-radius: 4px 4px; /* round corners with CSS3 compliant browsers */
+}
+
+.content UL.thumbnails SPAN.wrap2:hover,
+.content UL.thumbnailCategories DIV.thumbnailCategory:hover {
+ background-color: #333;
+ border-color: #69c; /* thumbnails border color when mouse cursor is over it */
+}
+
+#menubar .buttonmenu {
+ margin: 0 2px;
+ width: auto;
+ padding: 0;
+ text-indent: 0;
+ list-style: none;
+ text-align: center;
+ float: left;
+}
+
+
+
+
+
+A:hover {
+ color: #f92;
+}
+
+#imageToolBar A, #imageToolBar A:hover {
+ border-bottom: none;
+}
+A.navThumb, A.navThumb:hover {
+ border-bottom: none;
+}
+#the_page {
+ border: 1px dotted #f92;
+ padding-top: 5px;
+ padding-bottom:30px;
+ text-align:center;
+ display:block;
+ margin: 2px;
+}
+#copyright {
+ color: #69c;
+}
+
+label {
+ cursor:pointer
+}
+input#qsearchInput {
+ color: #58c;
+ background-color: #222;
+ border: 1px solid #333;
+ padding: 1px 3px;
+}
+.zero { display: none }
+.nb-hits { color: #69c; }
+.nb-comments { color: #f92; }
+
+FORM#quickconnect,
+FORM#quickconnect FIELDSET,
+FORM#quickconnect P,
+FORM#quickconnect UL.actions,
+FORM#quickconnect FIELDSET>UL.actions,
+FORM#quickconnect UL.actions,
+FORM#quickconnect P,
+FORM#quickconnect LABEL {
+ color: #69c;
+}
+FORM#quickconnect P INPUT,
+FORM#quickconnect INPUT[type=text],
+FORM#quickconnect INPUT[type=password] {
+ width: 85%;
+ color: #58c;
+ background-color: #222;
+ border: 1px solid #333;
+ padding: 1px 3px;
+}
+
+
+.virtual_cat { background: #222 !important; }
+
+.PWG {
+ font-family: verdana, arial, helvetica, sans-serif !important;
+ font-size: 0.9em;
+ font-weight: normal;
+ letter-spacing: 0px;
+}
+a.PWG { border: 0px; }
+a.PWG .P { color : #f92; }
+a.PWG .W { color : #aaa; }
+a.PWG .G { color : #69c; }
+a.PWG:hover .P { color : #69c; }
+a.PWG:hover .G { color : #f92; }
+
+
+
+
+
+
+
+
+.statBar { background-color: #e60; }
+#imageToolBar .randomButtons a:hover,
+#imageToolBar .navButtons a:hover { background-color: transparent; }
+#menubar .menuInfoCat,
+#menubar .menuInfoCatByChild,
+h2.showtitle, #theImage p.showlegend { display: none }
+* { outline-width: 0px; }
+ul.tabsheet, ul.tabsheet li {
+ border-color: #69c;
+}
+ul.tabsheet li.normal_tab {
+ background-image: url(images/tableh1_bg.png);
+ background-repeat: repeat-x;
+}
+ul.tabsheet li.normal_tab:hover { border-color: #f92 }
+ul.tabsheet li {
+ -moz-border-radius: 0px 0px 3px 3px;
+ border-radius: 0px 0px 12px 12px;
+ -webkit-border-radius: 0px 0px 3px 3px;
+}
+/* New in 1.8 : Special Admin */
+body#theAdminPage #menubar {
+ background: transparent url(images/menubar-bg.png)
+ repeat-y scroll right top;
+ border-bottom: #ccc ridge 2px; width:13.5em; padding: 0; margin: 0;
+}
+body#theAdminPage .content { /*default-layout.cs... (line 1)*/
+list-style-type:none; padding: 0px;
+ /*default-layout.cs... (line 23) */
+margin: 0px 0px 0px 200px; background-color: transparent;}
+
+#theAdminPage #menubar ul { list-style-image:url(images/list-image.png); }
+#theAdminPage #menubar ul:hover { list-style-image:url(images/list-hover.png); }
+a, input.rateButton, legend { color:#777; }
+#menubar a { border-bottom:0; text-decoration:none; font-style: italic;}
+body#theAdminPage #theHeader {
+ background:transparent url(images/piwigo_logo_sombre_214x100.png) no-repeat 230px top; height:105px;
+}
+body#theAdminPage #post-header {
+ background-color: transparent;
+ width: 60%; height: 4px; margin-left:40%;
+}
+#theHeader h1 { /*default-layout.cs... (line 204) */
+ font-size:220%; line-height:4em; margin:auto 2em auto auto; text-align:right;
+}
+#the_page { /*theme.css (line 235) */
+border:0; display:block; margin:0px; padding-bottom:0px;
+padding-top:0px; text-align:center; min-height: 100%; position:relative;
+}
+.pwgmenu { /* default-layout.cs... (line 136) */
+background:transparent none repeat scroll 0%;
+display:table; font-family:verdana,arial,helvetica,sans-serif;
+font-size: 8px; line-height:1.1em; list-style-image:none;
+list-style-type:none; margin:1px 8px 1px auto;
+padding:3px; position:relative;
+text-decoration:none; top:-100px;
+white-space:nowrap; width:66em;
+}
+.pwgmenu a { /* default-layout.cs... (line 159) */
+background:#f36 none repeat scroll 0%;
+border:1px solid #FFFFFF;
+color:white;
+display:block;
+font-weight:bold;
+padding:4px 8px;
+text-align:center;
+text-decoration:none;
+width:9em !important;
+}
+
+
+
+
+
+
+
+#theAdminPage #menubar dt.pre-menubar {
+background:transparent none no-repeat scroll left top;
+height: 22px; overflow: hidden; margin: 0px;
+}
+.pwgmenu { /*theme.css (line 335)*/
+background:transparent url(images/header_bottom.png) repeat-x scroll left 25px;
+float:right;
+font-family:verdana,arial,helvetica,sans-serif;
+font-size:8px;
+line-height:1.1em;
+list-style-image:none;
+list-style-type:none;
+margin:1px 8px 1px 0px;
+padding:3px 3px 3px 101px;
+text-decoration:none; top:-35px;
+width:587px;
+}
+.pwgmenu li { /*default-layout.cs... (line 151)*/
+float:left;
+margin:0px;
+padding:0px;
+text-align:center;
+width:126px !important;
+}
+.pwgmenu a { /*theme.css (line 344)*/
+background:transparent url(images/onglet_inactif_transp.png) no-repeat scroll left 3px;
+border:0px none;
+color:#FF3333;
+display:block;
+font-size:8px; height:33px;
+padding:3px 0px 5px 13px; text-align:left;
+text-decoration:none; width:126px !important;
+}
+.pwgmenu a:hover { /*theme.css (line 344)*/
+background:transparent url(images/onglet_actif_transp.png) no-repeat scroll left 2px;
+color: #ff7700; }
+.content h2:before, .content h2:after,
+#menubar DT:before, #menubar DT:after { content: ""; }
+#theHeader h1 { /*theme.css (line 345) */ color:#441100; }
+.content h2 { /*theme.css (line 100)*/
+letter-spacing:0.1em; margin-right:45px; text-align:right; color: #777777;
+text-transform:none; }
+.content dl, dd { /*content.css (line 52) */ margin:5px; }
+.content h2 { /* default-layout.cs... (line 6) */
+font-weight:bold; margin-right:30px; padding-left:2em; }
+#theAdminPage h3 { /* theme.css (line 96) */
+background: transparent none; margin-right:30px; font-weight: lighter;}
+#theAdminPage h2 { /* theme.css (line 72) */ border-bottom:0px; }
+body#theAdminPage { /*theme.css (line 324) */
+background:#111111 url(images/top-left-bg.png) no-repeat scroll left top;}
+#theAdminPage #the_page { /*theme.css (line 73)*/
+background:transparent url(images/bottom-left-bg.png) no-repeat fixed left bottom; }
+#the_page { /*theme.css (line 348)*/ padding-bottom:0px;}
+.content {background-color:transparent;}
+body#theAdminPage #menubar { /* theme.css (line 324) */
+background:transparent none repeat-y scroll right top; border-bottom:0px; margin-top:110px;
+float: none; position: absolute; left: 0px; top: 160px;}
+#theAdminPage #the_page .content { /*theme.css (line 91)*/
+background-color:transparent; border-width:0px; padding:5px 35px 5px 5px; }
+body#theAdminPage #menubar dl.selected dd { padding-bottom: 145px; }
+.header_notes {/*default-colors.cs... (line 91)*/
+background-image:url(icon/note.png); background-position:left top;
+background-repeat:no-repeat; border:1px solid #AAAAAA; font-weight:bold;
+margin:14px; padding:5px 0px 0px; position:absolute; right:31px;
+text-align:center; top:96px; width:502px; }
+#theAdminPage #menubar dl {/*theme.css (line 372)*/
+background:transparent url(images/menubar-top.png) no-repeat scroll left top; width: 198px;
+border:0; box-shadow: none;
+}
+#theAdminPage #menubar dl.selected {/*theme.css (line 372)*/
+background:transparent url(images/menubar-top.png) no-repeat scroll left top;
+}
+#theAdminPage #menubar dt { background: none; left:10px; position:relative; text-align:left; top:-10px;}
+#theAdminPage #menubar dd { background: transparent url(images/menubar-detail.png) repeat-y top left;
+margin: 0px 0px 0px 4px; padding: 0px;}
+span.bg { background-color: #111111; padding-right: 3px; }
+html, body {
+height:100%;
+}
+ul.tabsheet li.normal_tab, ul.tabsheet li.selected_tab {
+background: transparent none repeat-x top left;
+border:0; }
+ul.tabsheet { border:0;
+background: transparent url(images/internal_onglet.png) repeat-x bottom left; }
+ul.tabsheet a { border:0; font-size: 12px;
+font-family: verdana,arial,helvetica,sans-serif; line-height: 14px; }
+ul.tabsheet li.selected_tab > a { color: #ff3333; }
+ul.tabsheet, ul.tabsheet li { border-bottom: #eee solid 1px; }
+ul.tabsheet li.selected_tab {
+font-weight:bold; padding-top:0px; position:relative; top:0px; } \ No newline at end of file
diff --git a/BSF/template/yoga/theme/admin/themeconf.inc.php b/BSF/template/yoga/theme/admin/themeconf.inc.php
new file mode 100644
index 000000000..5a6450e82
--- /dev/null
+++ b/BSF/template/yoga/theme/admin/themeconf.inc.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Accordion menus need to be stable
+ */
+function selected_admin_menu()
+{
+ if (isset($_GET['page']))
+ {
+ switch ($_GET['page']) {
+ case 'configuration':
+ return 1;
+ case 'site_manager':
+ case 'site_update':
+ case 'cat_list':
+ case 'cat_modify':
+ case 'cat_move':
+ case 'cat_options':
+ case 'element_set':
+ case 'cat_perm':
+ case 'permalinks':
+ case 'picture_modify':
+ if (isset($_GET['cat']) and $_GET['cat']=='caddie') {
+ return 3;
+ }
+ return 2;
+ case 'comments':
+ case 'thumbnail':
+ case 'rating':
+ case 'tags':
+ return 3;
+ case 'user_list':
+ case 'group_list':
+ case 'notification_by_mail':
+ return 4;
+ case 'stats':
+ case 'history':
+ case 'maintenance':
+ case 'advanced_feature':
+ case 'ws_checker':
+ case 'plugins_list':
+ case 'plugin':
+ return 5;
+ }
+ }
+ return 0;
+}
+
+$themeconf = array(
+ 'template' => 'yoga',
+ 'theme' => 'admin',
+ 'template_dir' => 'template/yoga',
+ 'icon_dir' => 'template/yoga/icon',
+ 'admin_icon_dir' => 'template/yoga/icon/admin',
+ 'mime_icon_dir' => 'template/yoga/icon/mimetypes/',
+ 'local_head' => '
+<!-- Admin Accordion Menus -->
+ <script type="text/javascript" src="template-common/lib/jquery.js"></script>
+ <script type="text/javascript" src="template-common/lib/chili-1.7.pack.js"></script>
+ <script type="text/javascript" src="template-common/lib/jquery.easing.js"></script>
+ <script type="text/javascript" src="template-common/lib/jquery.dimensions.js"></script>
+ <script type="text/javascript" src="template-common/jquery.accordion.js"></script>
+ <script type="text/javascript">
+ jQuery().ready(function(){
+ jQuery(\'#menubar\').accordion({
+ header: "dt.rdion",
+ event: "mouseover",
+ active: '. selected_admin_menu() . '
+ });
+ });
+ </script>'
+);
+?>
diff --git a/BSF/template/yoga/theme/clear/index.php b/BSF/template/yoga/theme/clear/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/clear/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/clear/mail-css.tpl b/BSF/template/yoga/theme/clear/mail-css.tpl
new file mode 100644
index 000000000..0bda3d715
--- /dev/null
+++ b/BSF/template/yoga/theme/clear/mail-css.tpl
@@ -0,0 +1,13 @@
+{* $Id$ *}
+/* Theme clear mail css */
+
+body {ldelim} background-color:#fff; color:#696969;}
+#the_page {ldelim} background: #fff url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;}
+#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;}
+#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom;
+color: #333;}
+h2 {ldelim} background-color: #ddd;}
+img {ldelim} margin: 16px; border: 16px solid #aaa; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} padding: 15px; border: 1px solid yellow;background-color:#faebd7; -moz-border-radius: 4px; border-radius: 4px 4px; }
+a {ldelim} color: #369; background: transparent; }
+a:hover {ldelim} color: #ddd; }
diff --git a/BSF/template/yoga/theme/clear/theme.css b/BSF/template/yoga/theme/clear/theme.css
new file mode 100644
index 000000000..cff996521
--- /dev/null
+++ b/BSF/template/yoga/theme/clear/theme.css
@@ -0,0 +1,94 @@
+/* $Id$ */
+
+/* text color */
+BODY, H1, H2, H3, DT,
+INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {
+ color:#696969; /* dimgray */
+}
+
+/* backgrounds */
+BODY, H3, .throw {
+ background-color: #ffffff; /* white */
+}
+
+H2, #menubar DT, #imageHeaderBar, #imageToolBar A:hover, .row1 {
+ background-color: #d3d3d3;
+}
+
+#menubar DL, .content, #imageToolBar, .header_notes {
+ background-color: #eeeeee;
+}
+
+/* borders */
+#menubar DL, .content, #imageToolBar,
+#comments DIV.comment BLOCKQUOTE {
+ border: 1px solid #d3d3d3;
+}
+
+#theImage IMG {
+ border-color: #d3d3d3;
+}
+
+.content UL.thumbnail IMG {
+ border: 1px solid #a0a0a0;
+}
+
+FIELDSET, INPUT, SELECT, TEXTAREA,
+.content DIV.comment A.illustration IMG,
+.content DIV.thumbnailCategory {
+ border: 1px solid gray;
+}
+
+#comments DIV.comment BLOCKQUOTE {
+ border-left: 2px solid #696969;
+ background-color: #eee;
+}
+
+.content UL.thumbnails SPAN.wrap2 {
+ border: 1px solid #aaaaaa; /* thumbnails border color and style */
+ border-radius: 4px 4px; /* round corners with CSS3 compliant browsers */
+}
+
+.content UL.thumbnails SPAN.wrap2:hover,
+.content UL.thumbnailCategories DIV.thumbnailCategory:hover,
+.content UL.thumbnailCategories DIV.thumbnailCategory:hover A {
+ background-color: #faebd7;
+ border-color: yellow; /* thumbnails border color when mouse cursor is over it */
+ color: black;
+}
+
+/* links */
+A, INPUT.rateButton {
+ color: #005e89;
+ background: transparent;
+}
+
+A:hover, INPUT.rateButton:hover {
+ color: #858460;
+}
+
+#imageToolBar A, #imageToolBar A:hover {
+ border-bottom: none;
+}
+
+A.navThumb, A.navThumb:hover {
+ border-bottom: none;
+}
+
+/*calendar elements*/
+SPAN.calItem, SPAN.calItemEmpty
+{
+ border: 1px solid silver;
+}
+
+.virtual_cat { background: #fff !important; }
+#mbMenu #quicksearch > p { text-align: left; }
+#qsearchInput { color: #d3d3d3; }
+#qsearchInput:focus { color: #005e89; }
+
+
+UL.tabsheet LI.normal_tab { background-color: #d3d3d3; }
+UL.tabsheet LI.selected_tab { background-color: #eeeeee; }
+
+UL.tabsheet, UL.tabsheet LI {border-color: gray;}
+UL.tabsheet LI.normal_tab:hover { border-color: black; }
diff --git a/BSF/template/yoga/theme/clear/themeconf.inc.php b/BSF/template/yoga/theme/clear/themeconf.inc.php
new file mode 100644
index 000000000..5e3aef9a0
--- /dev/null
+++ b/BSF/template/yoga/theme/clear/themeconf.inc.php
@@ -0,0 +1,11 @@
+<?php
+$themeconf = array(
+ 'template' => 'yoga',
+ 'theme' => 'clear',
+ 'template_dir' => 'template/yoga',
+ 'icon_dir' => 'template/yoga/icon',
+ 'admin_icon_dir' => 'template/yoga/icon/admin',
+ 'mime_icon_dir' => 'template/yoga/icon/mimetypes/',
+ 'local_head' => '<!-- no theme specific head content -->',
+);
+?>
diff --git a/BSF/template/yoga/theme/dark/images/index.php b/BSF/template/yoga/theme/dark/images/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/dark/images/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/dark/images/tableh1_bg.png b/BSF/template/yoga/theme/dark/images/tableh1_bg.png
new file mode 100644
index 000000000..c7785d0f6
--- /dev/null
+++ b/BSF/template/yoga/theme/dark/images/tableh1_bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/dark/images/tableh2_bg.png b/BSF/template/yoga/theme/dark/images/tableh2_bg.png
new file mode 100644
index 000000000..d8c29f93d
--- /dev/null
+++ b/BSF/template/yoga/theme/dark/images/tableh2_bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/dark/index.php b/BSF/template/yoga/theme/dark/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/dark/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/dark/mail-css.tpl b/BSF/template/yoga/theme/dark/mail-css.tpl
new file mode 100644
index 000000000..b17d6c964
--- /dev/null
+++ b/BSF/template/yoga/theme/dark/mail-css.tpl
@@ -0,0 +1,13 @@
+{* $Id$ *}
+/* Theme dark mail css */
+
+body {ldelim} background-color:#444; color:#fff;}
+#the_page {ldelim} background: #444 url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;}
+#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;}
+#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom;
+color: #69c;}
+h2 {ldelim} background-color: #333;color:#fff48e;background-image: url({$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/images/tableh1_bg.png);}
+img {ldelim} margin: 16px; border: 16px solid #111; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} padding: 15px; border: 1px solid yellow;background-color:#444;-moz-border-radius: 4px; border-radius: 4px 4px; }
+a {ldelim} color: #fff48e; background: transparent;border-bottom:1px dotted #005e89; }
+a:hover {ldelim} color: #fff48e;}
diff --git a/BSF/template/yoga/theme/dark/theme.css b/BSF/template/yoga/theme/dark/theme.css
new file mode 100644
index 000000000..690bdda1d
--- /dev/null
+++ b/BSF/template/yoga/theme/dark/theme.css
@@ -0,0 +1,92 @@
+/* $Id$ */
+
+/* text color */
+BODY, H1, H3, DT,
+INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {
+ color:#d0d0d0;
+}
+
+H2, #menubar DT, .throw {
+ color: #fff48e;
+}
+
+
+/* backgrounds */
+
+BODY, H3, #imageHeaderBar, #imageToolBar A:hover, .row1, UL.tabsheet LI.normal_tab {
+ background-color: #2f2f2f;
+}
+
+#menubar DL, .content, #imageToolBar, .header_notes, UL.tabsheet LI.selected_tab {
+ background-color: #505050;
+}
+
+H2, #menubar DT, .throw {
+ background-image: url(images/tableh1_bg.png);
+}
+
+#imageHeaderBar H2 {
+ background-image: none;
+ background-color: transparent;
+ border: none;
+}
+
+#imageHeaderBar {
+ background-image: url(images/tableh2_bg.png);
+ background-repeat: repeat-x;
+ background-position: center;
+}
+
+/* borders */
+#menubar DL, .content,
+#comments DIV.comment BLOCKQUOTE {
+ border: 1px solid #000000;
+}
+
+#imageHeaderBar {
+ border-top: 1px solid #000000;
+}
+H2, #menubar DT, #imageToolBar {
+ border-bottom: 1px solid #000000;
+}
+
+#theImage IMG {
+ border-color: #000000;
+}
+
+FIELDSET, INPUT, SELECT, TEXTAREA,
+.content DIV.comment A.illustration IMG,
+.content DIV.thumbnailCategory {
+ border: 1px solid gray;
+}
+
+#comments DIV.comment BLOCKQUOTE {
+ border-left: 2px solid #696969;
+}
+
+.content UL.thumbnails SPAN.wrap2 {
+ border: 1px solid #aaaaaa; /* thumbnails border color and style */
+ border-radius: 4px 4px; /* round corners with CSS3 compliant browsers */
+}
+
+.content UL.thumbnails SPAN.wrap2:hover,
+.content UL.thumbnailCategories DIV.thumbnailCategory:hover,
+.content UL.thumbnailCategories DIV.thumbnailCategory:hover A {
+ background-color: #faebd7;
+ border-color: yellow; /* thumbnails border color when mouse cursor is over it */
+ color: black;
+}
+
+UL.tabsheet LI.normal_tab:hover { border-color: #fff48e; }
+
+/* links */
+A, INPUT.rateButton {
+ color: #FFFFFF;
+ border: none;
+}
+
+A:hover {
+ color: #FFF48E;
+}
+
+.virtual_cat { background: #3f3f3f; }
diff --git a/BSF/template/yoga/theme/dark/themeconf.inc.php b/BSF/template/yoga/theme/dark/themeconf.inc.php
new file mode 100644
index 000000000..bdee2e443
--- /dev/null
+++ b/BSF/template/yoga/theme/dark/themeconf.inc.php
@@ -0,0 +1,11 @@
+<?php
+$themeconf = array(
+ 'template' => 'yoga',
+ 'theme' => 'dark',
+ 'template_dir' => 'template/yoga',
+ 'icon_dir' => 'template/yoga/icon',
+ 'admin_icon_dir' => 'template/yoga/icon/admin',
+ 'mime_icon_dir' => 'template/yoga/icon/mimetypes/',
+ 'local_head' => '<!-- no theme specific head content -->',
+);
+?>
diff --git a/BSF/template/yoga/theme/index.php b/BSF/template/yoga/theme/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/p0w0/images/button-bg.png b/BSF/template/yoga/theme/p0w0/images/button-bg.png
new file mode 100644
index 000000000..1ea3b3bd0
--- /dev/null
+++ b/BSF/template/yoga/theme/p0w0/images/button-bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/p0w0/images/index.php b/BSF/template/yoga/theme/p0w0/images/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/p0w0/images/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/p0w0/index.php b/BSF/template/yoga/theme/p0w0/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/p0w0/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/p0w0/mail-css.tpl b/BSF/template/yoga/theme/p0w0/mail-css.tpl
new file mode 100644
index 000000000..ffff7c9d8
--- /dev/null
+++ b/BSF/template/yoga/theme/p0w0/mail-css.tpl
@@ -0,0 +1,12 @@
+{* $Id$ *}
+/* Theme p0w0 mail css */
+
+body {ldelim} background-color:#cde; color:#369;}
+#the_page {ldelim} background: #cde url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;}
+#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;}
+#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom;
+color: #69c;}
+h2 {ldelim} color:#fff;background: #369 url({$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/images/button-bg.png);}
+img {ldelim} margin:16px;padding:15px;border:1px solid #69c;background-color:#eef;-moz-border-radius:4px; border-radius:4px 4px; }
+img:hover {ldelim} border: 1px solid #c60; -moz-border-radius:4px; border-radius:4px 4px; }
+a {ldelim} color: #f92; background: transparent; }
diff --git a/BSF/template/yoga/theme/p0w0/theme.css b/BSF/template/yoga/theme/p0w0/theme.css
new file mode 100644
index 000000000..4a04cf44c
--- /dev/null
+++ b/BSF/template/yoga/theme/p0w0/theme.css
@@ -0,0 +1,269 @@
+/* $Id$ */
+
+/**
+ * Color scheme (Remember #6699cc = #69c)
+ * #000000 #336699 #4477aa #6699cc (Black -> Blues)
+ * #cc6600 #ff9933 (Oranges)
+ * #cccccc
+ * #ccddee #dfe8ff #eeeeff #ffffff (Light colors -> White)
+ * */
+/**
+ * Logic
+ * - Texts
+ * - Backgrounds
+ * - Borders, Margins, Padding
+ * - Visibility / Display
+ */
+
+/******************************************************************************/
+/* Texts Only */
+BODY, H1, H3, DT, H2, .throw { color: #369; }
+H2, #menubar DT, .throw, TD H3, #theAdminPage H3 {
+ color: #fff;
+}
+#menubar DT, #menubar DT A {
+ color: #fff;
+ font-weight: bold;
+}
+.content .titrePage .categoryActions li { color: #cde;}
+#menubar DT A:hover {
+ color: #f92;
+ font-weight: bold;
+}
+h1 { font-weight: bold; letter-spacing: 0.2em; }
+#mbIdentification dd p,
+#menubar .selected A { color: #c60; font-weight: bold; }
+#copyright { color: #c60; }
+.content .pageNumberSelected,
+A, INPUT.rateButton, legend { color: #369; }
+A:hover { color: #f92; }
+INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {
+ color:#69c;
+}
+.infoTable,
+#theAdminPage .content,
+input#qsearchInput { color: #369; }
+.content .infos { color: #036; }
+.content .errors { color: #900; }
+.content .titrePage H2 A { color: #dfe8ff; }
+input.rateButtonSelected,
+.content .titrePage H2 A:hover { color: #f92; }
+.content H2 {
+ letter-spacing: 0.01em;
+ text-indent: 1em;
+ font-weight: normal;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description h3,
+.content h3 { text-align: center; }
+.browsePath, .imageNumber,
+#imageHeaderBar H2,
+.browsePath A {
+ color: #eef;
+ font-weight: bold;
+}
+.browsePath A:hover { color: #fff; }
+.content H2:before, .browsePath:before, .imageNumber:before,
+#imageHeaderBar H2:before,
+.content H2:after, .browsePath:after, .imageNumber:after,
+#imageHeaderBar H2:after {
+ content: " ";
+ color: #fff;
+ font-family: sans-serif;
+ font-weight: normal;
+ letter-spacing: 0em;
+}
+#thePicturePage #comments H2 {
+ color: #69c;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description p {
+ color: #c60;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description p + p {
+ color: #369;
+}
+.tabsheet li, .tabsheet li a, #theAdminPage h3 a,
+.content div.thumbnailCategory .description h3 a {
+ color: #fff;
+}
+.tabsheet li a:hover, .content div.thumbnailCategory .description h3 a:hover {
+ color: #f92;
+}
+
+
+/******************************************************************************/
+/* Backgrounds Only */
+BODY { background: #cde; }
+.header_notes,
+#thePicturePage #the_page,
+#thePicturePage #theImage,
+#theAdminPage #the_page,
+.content { background-color: #dfe8ff; }
+#the_page { background-color: #dfe8ff; }
+#menubar, H3, #imageHeaderBar,
+.row1 { background-color: #eef; }
+H2, #menubar DT, .throw, TD H3,
+#imageToolBar,
+#imageHeaderBar, #imageHeaderBar H2, .tabsheet li,
+#theAdminPage H3 { background-color: #369; }
+.content H2 { background-color: #369; }
+.content .infos { background-color: #47a; ;}
+.content .errors { background-color: #fc5; ;}
+#thePicturePage #comments H2 { background-color: #eef; ;}
+.content ul.thumbnailCategories li div.thumbnailCategory .description h3 {
+ background-color: #69c;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory,
+.content UL.thumbnails SPAN.wrap2 { background-color: #eef; }
+.content ul.thumbnailCategories li div.thumbnailCategory:hover,
+#theImage IMG, .navThumb IMG,
+.content UL.thumbnails SPAN.wrap2:hover { background-color: #fff; }
+.content UL.thumbnails SPAN.wrap2:active img {
+ outline: 3px ridge #f92;
+}
+input#qsearchInput { background-color: #cde; }
+.virtual_cat { background: #fff !important; }
+.selected_tab { background-color: #69c !important; }
+/******************************************************************************/
+/* Borders, Margins, Padding Only */
+BODY { margin: 0px; padding: 0px; }
+#menubar {
+ margin : 0px 0px 0px 8px;
+ border: 0px;
+ text-decoration: none;
+ border: 1px solid #369;
+}
+A { border: 0px; text-decoration: none; }
+A:hover { text-decoration: none; border: 0px; }
+.content {
+ border: 1px solid #369;
+ padding: 0px;
+}
+#menubar DT, .content H2 {
+ background-image: url(images/button-bg.png);
+ border: 0px;
+ margin-bottom: 3px;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description h3 {
+ background-image: url(images/button-bg.png);
+ border-width: 1px;
+ border-style: outset;
+ border-color: #369;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description h3:active
+{
+ background: #69c;
+ border: 1px inset #369;
+}
+.content .errors { border-color: #f92; }
+#imageHeaderBar H2 { border: 0px; }
+#thePicturePage #imageToolBar { padding: 0px 25px 5px 25px; }
+#thePicturePage #theImage {
+ margin: 0px;
+ padding: 3px 0px 15px 0px;
+}
+#thePicturePage #comments H2 {
+ border-top: 2px solid #69c;
+ border-bottom: 1px solid #369;
+}
+#comments DIV.comment BLOCKQUOTE {
+ border: 1px solid #fff;
+}
+H2, #imageToolBar {
+ border-bottom: 1px solid #fff;
+}
+.navThumb IMG { border: 1px solid #c60; padding: 1px; opacity: 0.8; }
+.navThumb:hover IMG { border: 1px solid #f92; padding: 1px; opacity: 1; }
+#theImage IMG {
+ border: 3px solid #369;
+ margin: 2px auto;
+ padding: 1px;
+ box-shadow: 0.2em 0.2em #ccc;
+}
+.content UL.thumbnail IMG {
+ border: 1px solid #666;
+}
+.illustration A {
+ border: 0px;
+}
+FIELDSET, INPUT, SELECT, TEXTAREA,
+.content DIV.comment A.illustration IMG,
+.content DIV.thumbnailCategory {
+ border: 1px solid #69c;
+ background-color: #dfe8ff;
+ margin: 3px;
+}
+.content DIV.thumbnailCategory:hover {
+ border: 1px solid #f92;
+}
+.content UL.thumbnails SPAN.wrap2 {
+ border: 1px solid #69c; /* thumbnails border color and style */
+ border-radius: 4px 4px; /* round corners with CSS3 compliant browsers */
+}
+.content UL.thumbnails SPAN.wrap2:hover {
+ border-color: #f92; /* thumbnails border color when mouse cursor is over it */
+}
+A.navThumb, A.navThumb:hover,
+#imageToolBar A, #imageToolBar A:hover {
+ border-bottom: none;
+}
+#the_page {
+ border: 0px;
+ padding: 5px 0px 30px 0px;
+ margin: 0px;
+}
+#theAdminPage .content table td { padding: 2px 8px; }
+ul.tabsheet, ul.tabsheet li { border-color: #369 !important; }
+.tabsheet li:hover { border-color: #f92 !important; }
+
+/******************************************************************************/
+/* Display, Visibility, buttons and others */
+label { cursor:pointer }
+.zero { display: none }
+
+#the_page {
+ text-align:center;
+ display:block;
+}
+
+input[type="text"], input[type="password"], input.button,
+input.submit, input.reset, input.file,
+select, textarea {
+ color: #369;
+ border: 1px solid #369;
+ background-color: #eeeeff;
+}
+input.submit[type="reset"]:focus,
+input.submit:focus {
+ background-color: #369;
+}
+input.submit[type="reset"],
+input.submit {
+ background-image: url(images/button-bg.png);
+ height:22px;
+ font-weight: bold;
+ color: #fff;
+ border-width: 1px;
+ border-style: outset;
+ border-color: #369;
+ padding-left: 2em;
+ padding-right: 2em;
+}
+input.submit[type="reset"]:active,
+input.submit:active {
+ background: #69c;
+ height:22px;
+ border: 1px inset #369;
+}
+#addComment fieldset input.submit[type="submit"] {
+ height: 38px;
+ padding-left: 4em;
+ padding-right: 4em;
+}
+#menubar .menuInfoCat, #menubar .menuInfoCatByChild {
+ font-size: 80%;
+ font-style: normal;
+}
+* { outline: none; }
+
+tr.throw td a { color: #fff; }
+tr.throw td a:focus { color: #f92; } \ No newline at end of file
diff --git a/BSF/template/yoga/theme/p0w0/themeconf.inc.php b/BSF/template/yoga/theme/p0w0/themeconf.inc.php
new file mode 100644
index 000000000..d24b701ca
--- /dev/null
+++ b/BSF/template/yoga/theme/p0w0/themeconf.inc.php
@@ -0,0 +1,11 @@
+<?php
+$themeconf = array(
+ 'template' => 'yoga',
+ 'theme' => 'p0w0',
+ 'template_dir' => 'template/yoga',
+ 'icon_dir' => 'template/yoga/icon',
+ 'admin_icon_dir' => 'template/yoga/icon/admin',
+ 'mime_icon_dir' => 'template/yoga/icon/mimetypes/',
+ 'local_head' => '<!-- no theme specific head content -->',
+);
+?>
diff --git a/BSF/template/yoga/theme/wipi/images/index.php b/BSF/template/yoga/theme/wipi/images/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/wipi/images/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/wipi/images/tableh1_bg.png b/BSF/template/yoga/theme/wipi/images/tableh1_bg.png
new file mode 100644
index 000000000..8163e23bf
--- /dev/null
+++ b/BSF/template/yoga/theme/wipi/images/tableh1_bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/wipi/images/tableh2_bg.png b/BSF/template/yoga/theme/wipi/images/tableh2_bg.png
new file mode 100644
index 000000000..be06ee428
--- /dev/null
+++ b/BSF/template/yoga/theme/wipi/images/tableh2_bg.png
Binary files differ
diff --git a/BSF/template/yoga/theme/wipi/index.php b/BSF/template/yoga/theme/wipi/index.php
new file mode 100644
index 000000000..c15b15795
--- /dev/null
+++ b/BSF/template/yoga/theme/wipi/index.php
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/BSF/template/yoga/theme/wipi/mail-css.tpl b/BSF/template/yoga/theme/wipi/mail-css.tpl
new file mode 100644
index 000000000..5b3e53c3d
--- /dev/null
+++ b/BSF/template/yoga/theme/wipi/mail-css.tpl
@@ -0,0 +1,19 @@
+{* $Id$ *}
+/* Theme wipi mail css */
+
+body {ldelim} background-color:#111; color:#69c;}
+#the_page {ldelim} background: #111 url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;}
+#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;}
+#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom;
+color: #69c;}
+h2 {ldelim} background-color: #222;color:#eee;background-image: url({$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/images/tableh1_bg.png);}
+img {ldelim} margin: 16px; padding:15px;border:1px solid #eee; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} border:1px solid #69c; -moz-border-radius: 4px; border-radius: 4px 4px; }
+a {ldelim} color: #69c; background: transparent; }
+a:hover {ldelim} color: #f92; }
+a.PWG {ldelim} border: 0px; }
+a.PWG .P {ldelim} color : #f92; }
+a.PWG .W {ldelim} color : #aaa; }
+a.PWG .G {ldelim} color : #69c; }
+a.PWG:hover .P {ldelim} color : #69c; }
+a.PWG:hover .G {ldelim} color : #f92; }
diff --git a/BSF/template/yoga/theme/wipi/theme.css b/BSF/template/yoga/theme/wipi/theme.css
new file mode 100644
index 000000000..9c0deea14
--- /dev/null
+++ b/BSF/template/yoga/theme/wipi/theme.css
@@ -0,0 +1,322 @@
+/* $Id$ */
+
+/* text color */
+BODY, H1, H3, DT,
+INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {
+ color:#e0e0e0;
+}
+#menubar {
+ margin : 0px;
+ background-color: transparent;
+ border: 0px;
+}
+H2, .throw {
+ color: #eee;
+}
+#menubar DT, #menubar DT A {
+ color: #eee;
+ font-weight: lighter;
+}
+#menubar DT A:hover {
+ color: #69c;
+ font-weight: lighter;
+}
+#menubar .selected A {
+ color: #eee;
+}
+#menubar .selected A:hover {
+ color: #f92;
+}
+#menubar DT:before {
+ content: "__\\_ ";
+ color: #f92;
+}
+#menubar DT:after {
+ content: " _/__";
+ color: #69c;
+}
+#menubar .button {
+ margin: 0 2px 0px 8px;
+ width: auto;
+ padding: 0;
+ text-indent: 0;
+ list-style: none;
+ text-align: center;
+ float: left;
+}
+#theAdminPage #menubar DT:before,
+#theAdminPage #menubar DT:after {
+ content: '';
+}
+.content .pageNumberSelected {
+ color: #f92;
+}
+.content .infos {
+ background-color: #69c;
+ color: #036;
+}
+.content .errors {
+ background-color: #fc5;
+ border-color: #f92;
+ color: #900;
+}
+/* backgrounds */
+BODY {
+ background: #111;
+ margin: 0px;
+ padding: 0px;
+}
+H3, #imageToolBar A:hover, .row1, .tabsheet li {
+ background-color: #222;
+}
+#theAdminPage h2, #theAdminPage h3 { border-bottom: 1px solid #69c; }
+#imageHeaderBar, #theAdminPage #the_page {
+ background-color: #111;
+}
+#imageToolBar, .header_notes {
+ background-color: #333;
+}
+.selected_tab { background-color: eee !important; }
+A {
+ border-color: #69c;
+}
+A:hover {
+ border-color: #f92;
+}
+.content {
+ background-color: #181818;
+ border: 1px solid #eee;
+ padding: 5px;
+}
+#theAdminPage #the_page .content {
+ background-color: #111;
+ border-width: 0px;
+ padding: 5px;
+}
+H2, #menubar DT, .throw, TD H3, #theAdminPage H3 {
+ background-image: url(images/tableh1_bg.png);
+ background-repeat: repeat-x;
+}
+.content H2 {
+ background: none;
+ border: 0px;
+ letter-spacing: -0.05em;
+ text-indent: 1em;
+ text-transform: uppercase;
+ font-weight: lighter;
+ margin-bottom: 20px;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description h3,
+.content h3 { text-align: center; }
+.content ul.thumbnailCategories li div.thumbnailCategory .description p {
+ color: #f92; text-indent: 0em;
+}
+.content ul.thumbnailCategories li div.thumbnailCategory .description p + p {
+ color: #fff;
+}
+.browsePath A {
+ color: #eee;
+}
+.content H2:before, .browsePath:before, .imageNumber:before,
+#imageHeaderBar H2:before {
+ content: "____\\_ ";
+ color: #69c;
+ font-family: Times, Zapf-Chancery, Cottonwood, Helvetica;
+ letter-spacing: 0em;
+}
+.content H2:after, .browsePath:after, .imageNumber:after,
+#imageHeaderBar H2:after {
+ content: " _/____";
+ color: #f92;
+ font-family: Times, Zapf-Chancery, Cottonwood, Helvetica;
+ letter-spacing: 0em;
+}
+#imageHeaderBar H2 {
+ background-image: none;
+ background-color: transparent;
+ border: none;
+}
+#thePicturePage #the_page {
+ background-color: #111;
+}
+#thePicturePage #imageHeaderBar {
+ background-image: url(images/tableh2_bg.png);
+ background-repeat: repeat-x;
+}
+#thePicturePage #imageToolBar {
+ background-color: #111;
+ border-bottom: 2px solid #69c;
+}
+#thePicturePage #theImage {
+ background-color: #111;
+ margin: 0px;
+ padding: 3px 0px 15px 0px;
+}
+
+#thePicturePage #comments H2 {
+ background-image: none;
+ background-color: #222;
+ border-top: 2px solid #69c;
+ border-bottom: 2px solid #69c;
+ color: #69c;
+ font-weight: lighter;
+}
+
+/* borders */
+#comments DIV.comment BLOCKQUOTE {
+ border: 1px solid #000;
+}
+#imageHeaderBar {
+ border-top: 1px solid #000;
+ padding: 8px 0px 3px 0px;
+}
+H2, #imageToolBar {
+ border-bottom: 1px solid #000;
+}
+
+#theImage IMG {
+ border-color: #fff;
+}
+
+.content UL.thumbnail IMG {
+ border: 1px solid #a0a0a0;
+}
+.illustration A {
+ border: 0px;
+}
+FIELDSET, INPUT, SELECT, TEXTAREA,
+.content DIV.comment A.illustration IMG,
+.content DIV.thumbnailCategory {
+ border: 1px solid gray;
+}
+.content DIV.thumbnailCategory {
+ border: 1px solid #69c;
+ margin: 8px 4px;
+}
+#comments DIV.comment BLOCKQUOTE {
+ border-left: 2px solid #696969;
+}
+
+.content UL.thumbnails SPAN.wrap2 {
+ border: 1px solid #aaaaaa; /* thumbnails border color and style */
+ border-radius: 4px 4px; /* round corners with CSS3 compliant browsers */
+}
+
+.content UL.thumbnails SPAN.wrap2:hover,
+.content UL.thumbnailCategories DIV.thumbnailCategory:hover {
+ background-color: #333;
+ border-color: #69c; /* thumbnails border color when mouse cursor is over it */
+}
+
+#menubar .buttonmenu {
+ margin: 0 2px;
+ width: auto;
+ padding: 0;
+ text-indent: 0;
+ list-style: none;
+ text-align: center;
+ float: left;
+}
+/* links */
+A, INPUT.rateButton, legend {
+ color: #69c;
+}
+
+A:hover {
+ color: #f92;
+}
+
+#imageToolBar A, #imageToolBar A:hover {
+ border-bottom: none;
+}
+A.navThumb, A.navThumb:hover {
+ border-bottom: none;
+}
+#the_page {
+ border: 1px dotted #f92;
+ padding-top: 5px;
+ padding-bottom:30px;
+ text-align:center;
+ display:block;
+ margin: 2px;
+}
+#copyright {
+ color: #69c;
+}
+
+label {
+ cursor:pointer
+}
+input#qsearchInput {
+ color: #58c;
+ background-color: #222;
+ border: 1px solid #333;
+ padding: 1px 3px;
+}
+.zero { display: none }
+.nb-hits { color: #69c; }
+.nb-comments { color: #f92; }
+
+FORM#quickconnect,
+FORM#quickconnect FIELDSET,
+FORM#quickconnect P,
+FORM#quickconnect UL.actions,
+FORM#quickconnect FIELDSET>UL.actions,
+FORM#quickconnect UL.actions,
+FORM#quickconnect P,
+FORM#quickconnect LABEL {
+ color: #69c;
+}
+FORM#quickconnect P INPUT,
+FORM#quickconnect INPUT[type=text],
+FORM#quickconnect INPUT[type=password] {
+ width: 85%;
+ color: #58c;
+ background-color: #222;
+ border: 1px solid #333;
+ padding: 1px 3px;
+}
+
+
+.virtual_cat { background: #222 !important; }
+
+.PWG {
+ font-family: verdana, arial, helvetica, sans-serif !important;
+ font-size: 0.9em;
+ font-weight: normal;
+ letter-spacing: 0px;
+}
+a.PWG { border: 0px; }
+a.PWG .P { color : #f92; }
+a.PWG .W { color : #aaa; }
+a.PWG .G { color : #69c; }
+a.PWG:hover .P { color : #69c; }
+a.PWG:hover .G { color : #f92; }
+#menubar DT {
+ border-top: 1px solid #eef;
+ border-right: 1px solid #69c;
+ border-bottom: 1px solid #69c;
+ border-bottom-right-radius: 12px;
+ -moz-border-radius-bottomright: 12px;
+ box-shadow: 5px 5px #69c;
+}
+.statBar { background-color: #e60; }
+#imageToolBar .randomButtons a:hover,
+#imageToolBar .navButtons a:hover { background-color: #111; }
+#menubar .menuInfoCat,
+#menubar .menuInfoCatByChild,
+h2.showtitle, #theImage p.showlegend { display: none }
+* { outline-width: 0px; }
+ul.tabsheet, ul.tabsheet li {
+ border-color: #69c;
+}
+ul.tabsheet li.normal_tab {
+ background-image: url(images/tableh1_bg.png);
+ background-repeat: repeat-x;
+}
+ul.tabsheet li.normal_tab:hover { border-color: #f92 }
+ul.tabsheet li {
+ -moz-border-radius: 0px 0px 3px 3px;
+ border-radius: 0px 0px 12px 12px;
+ -webkit-border-radius: 0px 0px 3px 3px;
+}
diff --git a/BSF/template/yoga/theme/wipi/themeconf.inc.php b/BSF/template/yoga/theme/wipi/themeconf.inc.php
new file mode 100644
index 000000000..4ac750e46
--- /dev/null
+++ b/BSF/template/yoga/theme/wipi/themeconf.inc.php
@@ -0,0 +1,16 @@
+<?php
+$themeconf = array(
+ 'template' => 'yoga',
+ 'theme' => 'wipi',
+ 'template_dir' => 'template/yoga',
+ 'icon_dir' => 'template/yoga/icon',
+ 'admin_icon_dir' => 'template/yoga/icon/admin',
+ 'mime_icon_dir' => 'template/yoga/icon/mimetypes/',
+ 'local_head' => '<!-- no theme specific head content -->',
+);
+if ( !isset($lang['Theme: wipi']) )
+{
+ $lang['Theme: wipi'] = 'The site is displayed with wipi theme based ' .
+ ' on yoga template, a standard template/theme of PhpWebgallery.';
+}
+?>
diff --git a/BSF/template/yoga/thumbnails-fix-ie5-ie6.css b/BSF/template/yoga/thumbnails-fix-ie5-ie6.css
new file mode 100644
index 000000000..dbffaefc9
--- /dev/null
+++ b/BSF/template/yoga/thumbnails-fix-ie5-ie6.css
@@ -0,0 +1,27 @@
+/* $Id$ */
+/* fix IE with another layout for thumbnails */
+.content UL.thumbnails SPAN.wrap2 {
+ display: block;
+ position: relative;
+ text-align: left;
+}
+.content UL.thumbnails SPAN.wrap2 A,
+.content UL.thumbnails SPAN.wrap2 SPAN {
+ overflow: visible;
+ position: absolute;
+ top: 50%;
+ text-align: center;
+}
+
+.content UL.thumbnails IMG.thumbnail {
+ position: relative;
+ top: -50%;
+ /*\*//*/
+ margin-top: -40%;
+ /**/
+}
+.content UL.thumbnails INPUT {
+ position: absolute;
+ left: 2px;
+ top: 2px; /* same as other browsers but not so pretty */
+}
diff --git a/BSF/template/yoga/thumbnails.css b/BSF/template/yoga/thumbnails.css
new file mode 100644
index 000000000..8d02e7742
--- /dev/null
+++ b/BSF/template/yoga/thumbnails.css
@@ -0,0 +1,60 @@
+/* $Id$ */
+
+/* Thumbnails customization */
+.content UL.thumbnails SPAN.thumbLegend {
+ font-size: 80%; /* font size */
+ overflow: hidden; /* oversized legend is clipped */
+}
+
+/* Thumbnail "elastic" layout */
+.content UL.thumbnails {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ text-align: center; /* to center the whole collection in .content */
+}
+.content UL.thumbnails LI { display: inline }
+
+.content UL.thumbnails SPAN.wrap1 {
+ margin: 0 5px 5px 5px;
+ display: table-cell; display: inline-table;
+ display: inline-block; /* Why 3 display option ??? */
+ vertical-align: top; /* OK with Opera and IE6 not Geko */
+ text-align: center; /* to center the thumbnail and legend in Geko/Opera */
+}
+.content UL.thumbnails SPAN.wrap2 {
+ margin: 0; /* important reset the margins */
+ display: table-cell; /* block prevents vertical-align here */
+ vertical-align: middle; /* Ok with Opera and Geko not IE6 */
+}
+.content UL.thumbnails SPAN.wrap2 A,
+.content UL.thumbnails LABEL {
+ display: block;
+ border-bottom: none;
+}
+.content UL.thumbnails IMG {
+ margin-bottom: -4px; /* why ??? something wrong with Geko and Opera ignored by IE6*/
+}
+
+/* label and input used for caddie in admin section */
+.content UL.thumbnails LABEL {
+ position: relative;
+}
+
+.content UL.thumbnails INPUT {
+ position: relative; /* <= Opera can handle relative here */
+ top: -20px;
+}
+:root .content UL.thumbnails INPUT { /* hide from Opera */
+ position: absolute; /* <= Opera hide 1 checkbox over 2 !!! */
+ left: 2px;
+ top: 2px;
+}
+
+UL.thumbnails .levelIndicatorB {
+display:block; position:absolute; z-index:100;padding:0px 0 0 14px; color:black; font-weight:bold; fontsize:120%;
+}
+
+UL.thumbnails .levelIndicatorF {
+display:block; position:absolute; z-index:101;padding:1px 0 0 15px; color:white; font-weight:bold; fontsize:120%;
+} \ No newline at end of file
diff --git a/BSF/template/yoga/thumbnails.tpl b/BSF/template/yoga/thumbnails.tpl
new file mode 100644
index 000000000..2fd37f649
--- /dev/null
+++ b/BSF/template/yoga/thumbnails.tpl
@@ -0,0 +1,38 @@
+{* $Id$ *}
+
+{if !empty($thumbnails)}
+<ul class="thumbnails">
+{foreach from=$thumbnails item=thumbnail}
+ <li>
+ <span class="wrap1">
+ <span class="wrap2">
+ <a href="{$thumbnail.U_IMG_LINK}">
+ <img class="thumbnail" src="{$thumbnail.IMAGE}" alt="{$thumbnail.IMAGE_ALT}" title="{$thumbnail.IMAGE_TITLE}" />
+ </a>
+ </span>
+ <span class="thumbLegend">
+
+ {if !empty($thumbnail.ELEMENT_NAME)}{$thumbnail.ELEMENT_NAME}{/if}
+ {if !empty($thumbnail.IMAGE_TS)}{$thumbnail.IMAGE_TS}{/if}
+
+ {if isset($thumbnail.NB_COMMENTS)}
+ <span class="{if 0==$thumbnail.NB_COMMENTS}zero {/if}nb-comments">
+ <br />
+ {$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
+ </span>
+ {/if}
+
+ {if isset($thumbnail.NB_HITS)}
+ <span class="{if 0==$thumbnail.NB_HITS}zero {/if}nb-hits">
+ <br />
+ {$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)}
+ </span>
+ {/if}
+ </span>
+ </span>
+ </li>
+{/foreach}
+</ul>
+{/if}
+
+
diff --git a/BSF/template/yoga/upgrade.tpl b/BSF/template/yoga/upgrade.tpl
new file mode 100644
index 000000000..2af91c70e
--- /dev/null
+++ b/BSF/template/yoga/upgrade.tpl
@@ -0,0 +1,44 @@
+{* $Id$ *}
+<!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" xml:lang="en" lang="en">
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>Piwigo : Upgrade to {$RELEASE}</title>
+ </head>
+
+ <body>
+ {if isset($introduction)}
+ <h1>Welcome to Piwigo upgrade page.</h1>
+
+ <p>This page proposes to upgrade your database corresponding to your old
+version of Piwigo to the current version. The upgrade assistant
+thinks you are currently running a
+<strong>release {$introduction.CURRENT_RELEASE}</strong> (or equivalent).</p>
+
+ <p><a href="{$introduction.RUN_UPGRADE_URL}">Upgrade from release
+{$introduction.CURRENT_RELEASE} to {$RELEASE}</a></p>
+ {/if}
+
+ {if isset($upgrade)}
+ <h1>Upgrade from version {$upgrade.VERSION} to {$RELEASE}</h1>
+
+ <p>Statistics</p>
+ <ul>
+ <li>total upgrade time : {$upgrade.TOTAL_TIME}</li>
+ <li>total SQL time : {$upgrade.SQL_TIME}</li>
+ <li>SQL queries : {$upgrade.NB_QUERIES}</li>
+ </ul>
+
+ <p>Upgrade informations</p>
+
+ <ul>
+ {foreach from=$infos item=info}
+ <li>{$info}</li>
+ {/foreach}
+ </ul>
+
+ {/if}
+ </body>
+
+</html>
diff --git a/BSF/template/yoga/upload.tpl b/BSF/template/yoga/upload.tpl
new file mode 100644
index 000000000..b92c918fd
--- /dev/null
+++ b/BSF/template/yoga/upload.tpl
@@ -0,0 +1,110 @@
+{* $Id$ *}
+
+<div id="content" class="content">
+
+ <div class="titrePage">
+ <ul class="categoryActions">
+ <li><a href="{$U_HOME}" title="{'return to homepage'|@translate}"><img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/></a></li>
+ </ul>
+ <h2>{'upload_title'|@translate}</h2>
+ </div>
+
+ {if !empty($errors)}
+ <div class="errors">
+ <ul>
+ {foreach from=$errors item=error}
+ <li>{$error}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+
+ {if not $UPLOAD_SUCCESSFUL }
+ <form enctype="multipart/form-data" method="post" action="{$F_ACTION}">
+ <table style="width:80%;margin-left:auto;margin-right:auto;">
+ <tr>
+ <td colspan="2" class="menu">
+ <div style="text-align:center;">{$ADVISE_TITLE}</div>
+ {if not empty($advises)}
+ <ul>
+ {foreach from=$advises item=advise}
+ <li>{$advise}</li>
+ {/foreach}
+ </ul>
+ {/if}
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">
+ <input name="picture" type="file" value="" />
+ </td>
+ </tr>
+ {if isset($SHOW_FORM_FIELDS) and $SHOW_FORM_FIELDS}
+ <!-- category -->
+ <tr>
+ <td>{'Category'|@translate}</td>
+ <td>
+ {html_options name="category" options=$categories selected=$categories_selected}
+ </td>
+ </tr>
+ <!-- username -->
+ <tr>
+ <td>{'Username'|@translate} <span style="color:red;">*</span></td>
+ <td>
+ <input name="username" type="text" value="{$NAME}" />
+ </td>
+ </tr>
+ <!-- mail address -->
+ <tr>
+ <td>{'mail_address'|@translate} <span style="color:red;">*</span></td>
+ <td>
+ <input name="mail_address" type="text" value="{$EMAIL}" />
+ </td>
+ </tr>
+ <!-- name of the picture -->
+ <tr>
+ <td>{'upload_name'|@translate}</td>
+ <td>
+ <input name="name" type="text" value="{$NAME_IMG}" />
+ </td>
+ </tr>
+ <!-- author -->
+ <tr>
+ <td>{'upload_author'|@translate}</td>
+ <td>
+ <input name="author" type="text" value="{$AUTHOR_IMG}" />
+ </td>
+ </tr>
+ <!-- date of creation -->
+ <tr>
+ <td>{'Creation date'|@translate} (DD/MM/YYYY)</td>
+ <td>
+ <input name="date_creation" type="text" value="{$DATE_IMG}" />
+ </td>
+ </tr>
+ <!-- comment -->
+ <tr>
+ <td>{'comment'|@translate}</td>
+ <td>
+ <textarea name="comment" rows="3" cols="40" style="overflow:auto">{$COMMENT_IMG}</textarea>
+ </td>
+ </tr>
+ {/if}
+ <tr>
+ <td colspan="2" align="center">
+ <input class="submit" name="submit" type="submit" value="{'Submit'|@translate}" />
+ </td>
+ </tr>
+ </table>
+ </form>
+ {else}
+ {'upload_successful'|@translate}<br />
+ <div style="text-align:center;">
+ <a href="{$U_RETURN}">[ {'home'|@translate} ]</a>
+ </div>
+ {/if}
+
+ {if isset($SHOW_FORM_FIELDS) and $SHOW_FORM_FIELDS}
+ <div style="text-align:left;"><span style="color:red;">*</span> : {'mandatory'|@translate}</div>
+ {/if}
+</div> <!-- content -->