spip_nursit/ecrire/inc/presentation.php
2023-06-01 17:30:12 +02:00

265 lines
7.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2019 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Fonctions pour l'affichage privé des pages exec PHP
*
* @package SPIP\Core\Presentation
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/presentation_mini');
include_spip('inc/layer');
include_spip('inc/texte');
include_spip('inc/filtres');
include_spip('inc/boutons');
include_spip('inc/actions');
include_spip('inc/puce_statut');
include_spip('inc/filtres_ecrire');
include_spip('inc/filtres_boites');
// http://code.spip.net/@debut_cadre
function debut_cadre($style, $icone = "", $fonction = "", $titre = "", $id = "", $class = "", $padding = true) {
$style_mapping = array(
'r' => 'simple',
'e' => 'raccourcis',
'couleur' => 'basic highlight',
'couleur-foncee' => 'basic highlight',
'trait-couleur' => 'important',
'alerte' => 'notice',
'info' => 'info',
'sous_rub' => 'simple sous-rub'
);
$style_titre_mapping = array('couleur' => 'topper', 'trait-couleur' => 'section');
$c = isset($style_mapping[$style]) ? $style_mapping[$style] : 'simple';
$class = $c . ($class ? " $class" : "");
if (!$padding) {
$class .= ($class ? " " : "") . "no-padding";
}
//($id?"id='$id' ":"")
if (strlen($icone) > 1) {
if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
list($fond, $fonction) = $icone_renommer($icone, $fonction);
}
$size = 24;
if (preg_match("/-([0-9]{1,3})[.](gif|png)$/i", $fond, $match)) {
$size = $match[1];
}
if ($fonction) {
// 2 images pour composer l'icone : le fond (article) en background,
// la fonction (new) en image
$icone = http_img_pack($fonction, "", "class='cadre-icone' width='$size' height='$size'\n" .
http_style_background($fond, "no-repeat center center"));
} else {
$icone = http_img_pack($fond, "", "class='cadre-icone' width='$size' height='$size'");
}
$titre = $icone . $titre;
}
return boite_ouvrir($titre, $class, isset($style_titre_mapping[$style]) ? $style_titre_mapping[$style] : '', $id);
}
// http://code.spip.net/@fin_cadre
function fin_cadre() { return boite_fermer(); }
function debut_cadre_relief(
$icone = '',
$dummy = '',
$fonction = '',
$titre = '',
$id = "",
$class = ""
) {
return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
}
function fin_cadre_relief() { return fin_cadre('r'); }
function debut_cadre_enfonce(
$icone = '',
$dummy = '',
$fonction = '',
$titre = '',
$id = "",
$class = ""
) {
return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
}
function fin_cadre_enfonce() { return fin_cadre('e'); }
function debut_cadre_sous_rub(
$icone = '',
$dummy = '',
$fonction = '',
$titre = '',
$id = "",
$class = ""
) {
return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
}
function fin_cadre_sous_rub() { return fin_cadre('sous_rub'); }
function debut_cadre_couleur(
$icone = '',
$dummy = '',
$fonction = '',
$titre = '',
$id = "",
$class = ""
) {
return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
}
function fin_cadre_couleur() { return fin_cadre('couleur'); }
function debut_cadre_trait_couleur(
$icone = '',
$dummy = '',
$fonction = '',
$titre = '',
$id = "",
$class = ""
) {
return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
}
function fin_cadre_trait_couleur() { return fin_cadre('trait-couleur'); }
function debut_boite_alerte() { return debut_cadre('alerte', '', '', '', '', ''); }
function fin_boite_alerte() { return fin_cadre('alerte'); }
function debut_boite_info() { return debut_cadre('info', '', '', '', '', ''); }
function fin_boite_info() { return fin_cadre('info'); }
/**
* Affiche le titre dune page de linterface privée. Utilisée par la plupart des fichiers `exec/xx.php`.
*
* @param string $titre Le titre en question
* @param string $ze_logo Une image de logo
* @return string Code PHP.
**/
function gros_titre(
$titre,
$ze_logo = ''
) {
return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
}
// La boite des raccourcis
// Se place a droite si l'ecran est en mode panoramique.
// http://code.spip.net/@bloc_des_raccourcis
function bloc_des_raccourcis($bloc) {
return creer_colonne_droite()
. boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
}
//
// Fonctions d'affichage
//
// Fonctions onglets
// http://code.spip.net/@debut_onglet
// @param string $sous_classe prend la valeur second pour definir les onglet de deuxieme niveau
function debut_onglet($classe = "barre_onglet") { return "<div class = '$classe clearfix'><ul>\n"; }
// http://code.spip.net/@fin_onglet
function fin_onglet() { return "</ul></div>\n"; }
// http://code.spip.net/@onglet
function onglet($texte, $lien, $onglet_ref, $onglet, $icone = "") {
return "<li>"
. ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
. lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
. "</li>";
}
/**
* Crée un lien précédé d'une icone au dessus du texte
*
* @uses icone_base()
* @see filtre_icone_verticale_dist() Pour l'usage en tant que filtre
*
* @example
* ```
* $icone = icone_verticale(_T('sites:info_sites_referencer'),
* generer_url_ecrire('site_edit', "id_rubrique=$id_rubrique"),
* "site-24.png", "new", 'right')
* ```
*
* @param string $texte
* Texte du lien
* @param string $lien
* URL du lien
* @param string $fond
* Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
* @param string $fonction
* Fonction du lien (`edit`, `new`, `del`)
* @param string $align
* Classe CSS, tel que `left`, `right` pour définir un alignement
* @param string $javascript
* Javascript ajouté sur le lien
* @return string
* Code HTML du lien
**/
function icone_verticale($texte, $lien, $fond, $fonction = "", $align = "", $javascript = "") {
// cas d'ajax_action_auteur: faut defaire le boulot
// (il faudrait fusionner avec le cas $javascript)
if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
list($x, $lien, $atts, $texte) = $r;
$javascript .= $atts;
}
return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
}
/**
* Crée un lien précédé d'une icone horizontale
*
* @uses icone_base()
* @see filtre_icone_horizontale_dist() Pour l'usage en tant que filtre
*
* @param string $texte
* Texte du lien
* @param string $lien
* URL du lien
* @param string $fond
* Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
* @param string $fonction
* Fonction du lien (`edit`, `new`, `del`)
* @param string $dummy
* Inutilisé
* @param string $javascript
* Javascript ajouté sur le lien
* @return string
* Code HTML du lien
**/
function icone_horizontale($texte, $lien, $fond, $fonction = "", $dummy = "", $javascript = "") {
$retour = '';
// cas d'ajax_action_auteur: faut defaire le boulot
// (il faudrait fusionner avec le cas $javascript)
if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
list($x, $lien, $atts, $texte) = $r;
$javascript .= $atts;
}
$retour = icone_base($lien, $texte, $fond, $fonction, "horizontale", $javascript);
return $retour;
}