Files
web-development/zoesch.de/galerie/themes/bootstrap_darkroom/themeconf.inc.php
Felix Zösch 07c290a453 Initial commit: Backup der Webseiten
- zoesch.de
- blitzkiste.net
- gruene-hassberge (norbert.zoesch.de)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-13 01:17:15 +01:00

238 lines
8.4 KiB
PHP

<?php
/*
Theme Name: Bootstrap Darkroom
Version: 1.5.19
Description: A mobile-ready & feature-rich theme based on Boostrap Default, with PhotoSwipe full-screen slideshow, Slick carousel on picture page, many color styles thanks to Bootswatch and lots of configuration options
Theme URI: http://piwigo.org/ext/extension_view.php?eid=831
Author: Thomas Kuther
Author URI: https://https://github.com/tkuther/piwigo-bootstrap-darkroom
*/
require_once(PHPWG_THEMES_PATH . 'bootstrap_darkroom/include/themecontroller.php');
require_once(PHPWG_THEMES_PATH . 'bootstrap_darkroom/include/config.php');
$themeconf = array(
'name' => 'bootstrap_darkroom',
'parent' => 'bootstrapdefault',
'load_parent_css' => true,
'load_parent_local_head' => true,
'local_head' => 'local_head.tpl',
'url' => 'https://kuther.net/'
);
//debug
//$conf['template_combine_files'] = false;
// always show metadata initially
pwg_set_session_var('show_metadata', true);
// config
add_event_handler('init', 'set_config_values');
function set_config_values()
{
global $template, $pwg_loaded_plugins, $conf;
$template->assign(array(
'loaded_plugins' => $GLOBALS['pwg_loaded_plugins'],
'meta_ref_enabled' => $conf['meta_ref']
));
if (array_key_exists('bootstrap_darkroom_core_js_in_header', $conf)) {
$template->assign('bootstrap_darkroom_core_js_in_header', $conf['bootstrap_darkroom_core_js_in_header']);
} else {
$template->assign('bootstrap_darkroom_core_js_in_header', false);
}
if (isset($pwg_loaded_plugins['language_switch'])) {
add_event_handler('loc_end_search', 'language_controler_flags', 95 );
add_event_handler('loc_end_identification', 'language_controler_flags', 95 );
add_event_handler('loc_end_tags', 'language_controler_flags', 95 );
add_event_handler('loc_begin_about', 'language_controler_flags', 95 );
add_event_handler('loc_end_register', 'language_controler_flags', 95 );
add_event_handler('loc_end_password', 'language_controler_flags', 95 );
}
}
// needed for the carousel and photoswipe
// borrowed from https://github.com/ThomasDaheim/piwigo-stuff/tree/master/picturethumbs
add_event_handler('loc_end_picture', 'get_all_thumbnails_in_category');
// also needed on index.tpl for compatibility with GThumb+/GDThumb
add_event_handler('loc_end_index', 'get_all_thumbnails_in_category');
function get_all_thumbnails_in_category()
{
global $template, $conf, $user, $page;
include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php');
if (!$page['items'] || ($page['section'] == 'categories' && !isset($page['category']))) {
return;
}
// select all pictures for this category
$query = '
SELECT *
FROM '.IMAGES_TABLE.'
WHERE id IN ('.implode(',', $page['items']).')
ORDER BY FIELD(id, '.implode(',', $page['items']).')
;';
$result = pwg_query($query);
$pictures = array();
while ($row = pwg_db_fetch_assoc($result))
{
$pictures[] = $row;
}
$tpl_thumbnails_var = array();
$theme_config = $template->get_template_vars('theme_config_extra');
if ($theme_config->photoswipe_metadata) {
if (array_key_exists('bootstrap_darkroom_ps_exif_mapping', $conf)) {
$exif_mapping = $conf['bootstrap_darkroom_ps_exif_mapping'];
} else {
$exif_mapping = array(
'date_creation' => 'DateTimeOriginal',
'make' => 'Make',
'model' => 'Model',
'lens' => 'UndefinedTag:0xA434',
'shutter_speed' => 'ExposureTime',
'iso' => 'ISOSpeedRatings',
'apperture' => 'FNumber',
'focal_length' => 'FocalLength',
);
}
}
foreach ($pictures as $row)
{
$url = duplicate_picture_url(
array(
'image_id' => $row['id'],
'image_file' => $row['file'],
),
array('start')
);
$name = render_element_name($row);
$desc = render_element_description($row, 'main_page_element_description');
$tpl_var = array_merge( $row, array(
'NAME' => $name,
'TN_ALT' => htmlspecialchars(strip_tags($name)),
'URL' => $url,
'DESCRIPTION' => htmlspecialchars(strip_tags($desc)),
'src_image' => new SrcImage($row),
'SIZE' => $row['width'].'x'.$row['height'],
'PATH' => $row['path'],
'DATE_CREATED' => $row['date_creation'],
) );
if ($theme_config->photoswipe_metadata) {
$tpl_var = array_merge( $tpl_var, array (
'EXIF' => get_exif_data($row['path'], $exif_mapping),
) );
//optional replacements
if (array_key_exists('bootstrap_darkroom_ps_exif_replacements', $conf)) {
foreach ($conf['bootstrap_darkroom_ps_exif_replacements'] as $tag => $replacement) {
if (array_key_exists($tag, $tpl_var['EXIF'])) {
$tpl_var['EXIF'][$tag] = str_replace($replacement[0], $replacement[1], $tpl_var['EXIF'][$tag]);
}
}
}
}
$tpl_thumbnails_var[] = $tpl_var;
}
$template->assign('thumbnails', $tpl_thumbnails_var);
$template->assign( array(
'derivative_params_square' => trigger_change('get_index_derivative_params', ImageStdParams::get_by_type( IMG_SQUARE ) ),
'derivative_params_medium' => trigger_change('get_index_derivative_params', ImageStdParams::get_by_type( IMG_MEDIUM ) ),
'derivative_params_large' => trigger_change('get_index_derivative_params', ImageStdParams::get_by_type( IMG_LARGE ) ),
'derivative_params_xxlarge' => trigger_change('get_index_derivative_params', ImageStdParams::get_by_type( IMG_XXLARGE ) ),
));
unset($tpl_thumbnails_var, $pictures);
}
add_event_handler('loc_begin_index_thumbnails', 'return_page_start');
function return_page_start() {
global $page, $template;
$template->assign('START_ID', $page['start']);
}
add_event_handler('loc_after_page_header', 'strip_breadcrumbs');
function strip_breadcrumbs() {
global $template;
$u_home = $template->get_template_vars('U_HOME');
$l_sep = $template->get_template_vars('LEVEL_SEPARATOR');
$title = $template->get_template_vars('TITLE');
$section_title = $template->get_template_vars('SECTION_TITLE');
if (empty($title)) {
$title = $section_title;
}
if (!empty($title)) {
$splt = strpos($title, "[");
if ($splt) {
$title_links = substr($title, 0, $splt);
$title_count = substr($title, $splt, strlen($title));
$title = $title_links;
}
$dom = new DOMDocument;
$int_err = libxml_use_internal_errors(true);
$dom->loadHTML(mb_convert_encoding($title, 'HTML-ENTITIES', 'UTF-8'));
libxml_use_internal_errors($int_err);
$dom->removeChild($dom->doctype);
$nr_links = $dom->getElementsByTagName('a')->length;
$home_link_orig = $dom->getElementsByTagName('a')->item(0);
$home_link_content = '<a href="' . $u_home . '" title="' . $home_link_orig->nodeValue . '"><i class="fa fa-home" aria-hidden="true"></i></a > ';
$title_new = $home_link_content;
if ($nr_links > 2) {
if (!empty($section_title)) {
$home_link_orig->parentNode->removeChild($home_link_orig);
$home_link_orig = $dom->getElementsByTagName('a')->item(0);
}
while ($nr_links > 2) {
$nr_links = $nr_links - 1;
$home_link_orig->parentNode->removeChild($home_link_orig);
$home_link_orig = $dom->getElementsByTagName('a')->item(0);
$home_link_new = $dom->saveHTML();
if (!empty($section_title)) {
$home_link_new = preg_replace('@'.$l_sep.'@', '', $home_link_new);
} else {
$home_link_new = preg_replace('@'.$l_sep.$l_sep.'@', $l_sep, $home_link_new);
// yes, twice. Don't ask..
$home_link_new = preg_replace('@'.$l_sep.$l_sep.'@', $l_sep, $home_link_new);
}
}
if (!empty($section_title)) {
$title_new = $home_link_content . $l_sep . $home_link_new;
} else {
$title_new = $home_link_content . $home_link_new;
}
$title_new = preg_replace('~<(/?(?:html|body))[^>]*>\s*~i', '', $title_new);
if (empty($section_title)) {
$template->assign('TITLE', $title_new);
} else {
$template->assign('SECTION_TITLE', $title_new);
}
} else {
if ($splt) {
$template->assign('TITLE', $title_links);
}
}
}
}
// register video files
$video_ext = array('mp4','m4v');
$conf['file_ext'] = array_merge ($conf['file_ext'], $video_ext, array_map('strtoupper', $video_ext));
$controller = new \BootstrapDarkroom\ThemeController();
$controller->init();