Table des matières

Compilation de plugins personnels

Voici une liste des petits plugins que vous pouvez utiliser avec LocalFilesEditor.

Ajouter une barre de navigation en haut

Sur la page des miniatures, si vous avez beaucoup d'éléments, vous pouvez avoir envie d'ajouter une barre de navigation en haut de la page, en plus de celle qui est en bas.

<?php
/*
Plugin Name: Navbar on top
Version: 1.0
Author: Mistic
Author URI: http://www.strangeplanet.fr
*/
 
add_event_handler('loc_end_index', 'top_navbar');
function top_navbar()
{
  global $template;
  $template->set_prefilter('index', 'top_navbar_prefilter');
}
function top_navbar_prefilter($content, &$smarty)
{
  $search = '{if !empty($CATEGORIES)}{$CATEGORIES}{/if}';
  $add = '{if !empty($navbar)}{include file=\'navigation_bar.tpl\'|@get_extent:\'navbar\'}{/if}';
  return str_replace($search, $add.$search, $content);
}
?>

Supprimer le compteur dans le fil d'Ariane

<?php
/*
Plugin Name: Remove breadcrumb photocounter
Version: 1.0
Author: barbichou
*/
 
add_event_handler('loc_end_index', 'no_breadcrumb_counter');
function no_breadcrumb_counter()
{
  global $template;
  $titre = $template->get_template_vars('TITLE');
  $pos = strrpos($titre,"[");
  if ($pos !== false)
  {
    $template->assign('TITLE', substr($titre, 0, $pos));
  }
}
?>

Un seul niveau dans le titre de la page

Ce plugin n'affiche que le dernier album dans le titre de la page, pas l'arborescence complète.

<?php
/*
Plugin Name: One level in page title
Version: 1.0
Author: barbichou
*/
 
add_event_handler('loc_end_page_header', 'one_level_pagetitle');
function one_level_pagetitle()
{
  global $template, $conf;
  $titre = $template->get_template_vars('PAGE_TITLE');
  $pos = strrpos($titre, $conf['level_separator']);
  if ($pos!==false)
  {
    $template->assign('PAGE_TITLE', substr($titre, $pos+strlen($conf['level_separator']))); 
  }
}
?>

Changement de thème par URL

The plugin permet de partager une URL avec un paramètre additional pour forcer le thème. Par exemple : http://mysite.com/picture.php?/246/category/186&temp_theme=Stripped ouvrira l'image avec le thème Stripped quelque soit le thème par défaut. Ne fonctionne que sur picture.php

<?php
/*
Plugin Name: Theme Switch From URL
Version: 1.0
Author: Mistic
Author URI: http://www.strangeplanet.fr
*/
 
add_event_handler('user_init', 'theme_controler_lite1');
add_event_handler('init', 'theme_controler_lite2');
 
function theme_controler_lite1()
{
  global $user;
 
  if ( isset($_GET['temp_theme']) and file_exists(PHPWG_THEMES_PATH.$_GET['temp_theme']) )
  {
    $user['theme'] = $_GET['temp_theme'];
  }
}
function theme_controler_lite2()
{
  global $template;
 
  if ( isset($_GET['temp_theme']) and file_exists(PHPWG_THEMES_PATH.$_GET['temp_theme']) )
  {
    $template->assign('TEMP_THEME', $_GET['temp_theme']);
    $template->set_prefilter('picture', 'theme_controler_lite_prefilter');
  }
}
function theme_controler_lite_prefilter($content)
{
  global $conf;
  if ($conf['question_mark_in_urls']==false)
  {
    $search = '#(action|href)="([^?"]*)"#';
    $replace = '$1="$2?temp_theme={$TEMP_THEME}"';
  }
  else
  {
    $search = '#(action|href)="([^"]*)"#';
    $replace = '$1="$2&amp;temp_theme={$TEMP_THEME}"';
  }
 
  return preg_replace($search, $replace, $content);
}
?>

Scroll To Top

Ajoute un bouton sur toutes les pages pour retourner en douceur en haut de la page, le bouton s'affiche après 100px.

<?php
/*
Plugin Name: Scroll To Top
Version: 1.0
Author: Mistic
Author URI: http://www.strangeplanet.fr
*/
 
add_event_handler('loc_end_page_header', 'scroll_to_top');
 
function scroll_to_top()
{
  global $template;
  $template->set_prefilter('header', 'scroll_to_top_pref', 100);
}
 
function scroll_to_top_pref($content)
{
  $search = '<body id="{$BODY_ID}">';
  $scroll = '
{html_style}{literal}
.scrollup {
    width:48px; height:48px; opacity:0.7; position:fixed; border-radius:24px;
    bottom:50px; right:50px; display:none; text-indent:-9999px;
    background: rgba(255,255,255,0.8) url("http://cdn4.iconfinder.com/data/icons/cc_mono_icon_set/blacks/48x48/round_and_up.png") no-repeat;
    z-index:1000; border:none !important; text-decoration:none !important;
}
.scrollup:hover { opacity:1; }
{/literal}{/html_style}
{footer_script}{literal}
jQuery(window).scroll(function(){
    if (jQuery(this).scrollTop() > 100) {
        jQuery(".scrollup").fadeIn();
    } else {
        jQuery(".scrollup").fadeOut();
    }
});
jQuery(".scrollup").click(function(){
    jQuery("html, body").animate({ scrollTop: 0 }, 600);
    return false;
});
{/literal}{/footer_script}
<a href="#" class="scrollup">Scroll</a>';
 
  return str_replace($search, $search.$scroll, $content);
}
?>

Afficher la langue des utilisateurs dans le panneau de gestion

Pour Piwigo 2.5 et plus anciens Ajoute une colonne affichant la langue de chaque utilisateur dans le panneau de gestion des utilisateurs.

<?php
/*
Plugin Name: AddUserLanguage
Version: 2.2
Description: Displays users language in user management panel
Author: Eric
Author URI: http://www.infernoweb.net
*/
 
/* Add language colomn in user management panel */
add_event_handler('loc_visible_user_list', 'personal_loc_visible_user_list');
 
function personal_loc_visible_user_list($visible_user_list)
{
  global $template;
 
  $template->append('plugin_user_list_column_titles', l10n('Language'));
 
  $user_ids = array();
  foreach ($visible_user_list as $i => $user)
  {
    $user_ids[$i] = $user['id'];
  }
  $user_nums = array_flip($user_ids);
 
  $languages = get_languages();
 
/* Sql request to fill the language fields */
  if (!empty($user_ids))
  {
    $query = '
SELECT DISTINCT user_id, language
  FROM '.USER_INFOS_TABLE.'
  WHERE user_id IN ('.implode(',', $user_ids).')
;';
    $result = pwg_query($query);
    while ($row = pwg_db_fetch_assoc($result))
    {
      $visible_user_list[$user_nums[$row['user_id']]]['plugin_columns'][] = $languages[$row['language']];;
    }
  }
  return $visible_user_list;
}
?>

Une image sur le plugin GuestBook

<?php
/*
Plugin Name: Image on Guestbook
Version: 1.0
Author: Mistic
*/
 
define('GB_IMAGE_ID', 77);
define('GB_IMAGE_SIZE', IMG_SMALL);
 
add_event_handler('loc_end_index', 'add_guestbook_image', EVENT_HANDLER_PRIORITY_NEUTRAL-10);
 
function add_guestbook_image()
{
  global $page, $template;
 
  if (@$page['section'] == 'guestbook')
  {
    $query = 'SELECT * FROM ' . IMAGES_TABLE . ' WHERE id = ' . GB_IMAGE_ID . ';';
    $picture = pwg_db_fetch_assoc(pwg_query($query));
 
    // -- Piwigo 2.5
    $src_image = new SrcImage($picture);
    $derivatives = DerivativeImage::get_all($src_image);
    $selected_derivative = $derivatives[GB_IMAGE_SIZE];
    // -- Piwigo 2.6
    //$selected_derivative = DerivativeImage::get_one(GB_IMAGE_SIZE, $picture);
 
    $template->assign('gb_image', $selected_derivative);
    $template->set_prefilter('index', 'add_guestbook_image_prefilter');
  }
}
 
function add_guestbook_image_prefilter($content)
{
  $search = '{if isset($comment_add)}';
  $add = '<div style="text-align:center;"><img src="{$gb_image->get_url()}" {$gb_image->get_size_htm()}"></div>';
 
  return str_replace($search, $add."\n".$search, $content);
}
?>

More to come…

Plus à venir…