You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
inserer_modeles/inserer_modeles_pipelines.php

182 lines
5.4 KiB
PHP

<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function inserer_modeles_header_prive($flux) {
$js = find_in_path('javascript/autosize.min.js');
$flux .= "\n<script type='text/javascript' src='$js'></script>\n";
return $flux;
}
function inserer_modeles_insert_head($flux){
if(lire_config('barre_outils_public') == 'oui'){
$js = find_in_path('javascript/autosize.min.js');
$flux .= "\n<script type='text/javascript' src='$js'></script>\n";
}
return $flux;
}
function inserer_modeles_affiche_droite($flux) {
$objets = inserer_modeles_objets();
if (in_array($flux['args']['exec'], $objets)) {
include_spip('inc/inserer_modeles');
if (count(inserer_modeles_lister_formulaires_modeles(true)) > 0) {
$flux['data'] .= recuperer_fond('inserer_modeles', $flux['args']);
}
}
return $flux;
}
// Insertion dans le porte-plume
function inserer_modeles_porte_plume_barre_pre_charger($barres) {
include_spip('inc/inserer_modeles');
$formulaires_modeles = inserer_modeles_lister_formulaires_modeles(true);
if (count($formulaires_modeles) > 0) {
$barre = &$barres['edition'];
$barre->ajouterApres('grpCaracteres', array(
'id' => 'sepInsMod',
'separator' => '---------------',
'display' => true,
));
$sous_menu = array();
foreach ($formulaires_modeles as $nom => $formulaire) {
if (substr($nom, -5) == '.yaml') {
$nom = substr($nom, 0, -5);
}
$sous_menu[] = array(
'id' => 'inserer_modele_'.$nom,
'name' => $formulaire['nom'],
'className' => 'outil_inserer_modele_'.$nom,
'beforeInsert' => "function(markitup) {
url = $(\"input[type=hidden][name='url_inserer_modeles']\", $(markitup.textarea.form)).val() + '&formulaire_modele=$nom';
jQuery.modalboxload(url,{minHeight: '90%', type: 'ajax'});}
",
'display' => true,
);
}
$barre->ajouterApres('sepInsMod', array(
//groupe inserer_modeles et bouton inserer_modeles
'id' => 'inserer_modeles',
'name' => _T('inserer_modeles:outil_inserer_modeles'),
'key' => 'M',
'className' => 'outil_inserer_modeles',
'beforeInsert' => "function(markitup) {
url = $(\"input[type=hidden][name='url_inserer_modeles']\", $(markitup.textarea.form)).val();
jQuery.modalboxload(url,{minHeight: '90%', type: 'ajax'});}
",
'display' => true,
'dropMenu' => $sous_menu,
));
}
return $barres;
}
// Icones pour le porte-plume
function inserer_modeles_porte_plume_lien_classe_vers_icone($flux) {
include_spip('inc/inserer_modeles');
$formulaires_modeles = inserer_modeles_lister_formulaires_modeles(true);
if (count($formulaires_modeles) > 0) {
$icones = array();
$icones['outil_inserer_modeles'] = inserer_modeles_find_icone_barre_path('modele-xx.svg');
foreach ($formulaires_modeles as $nom => $formulaire) {
if (substr($nom, -5) == '.yaml') {
$nom = substr($nom, 0, -5);
}
$icones['outil_inserer_modele_'.$nom] = $formulaire['icone_barre'];
}
return array_merge($flux, $icones);
} else {
return $flux;
}
}
/**
* Retourner la liste des pages où insérer le formulaire du plugin
**/
function inserer_modeles_objets() {
include_spip('inc/config');
$objets = lire_config('inserer_modeles/objets',
array('spip_articles', 'spip_breves', 'spip_rubriques', 'spip_mots')
);
// Comme on utilise la saisie choisir_objets,
// on retravaille les objets selectionnes pour avoir leur url_edit
foreach ($objets as $key => $objet) {
$objets[$key] = objet_info($objet, 'url_edit');
}
return $objets;
}
/**
* Sur les formulaires d'édition d'objet
* Inserer dans un champ caché l'url de la mediabox d'inserer_modeles en prenant en compte l'object concerné
**/
function inserer_modeles_formulaire_fond($flux) {
if (stripos($flux['data'], '<textarea') === false) {
return $flux;
}
if (substr($flux['args']['form'], 0, 7) === 'editer_') {
if (isset($flux['args']['args']['type']) and isset($flux['args']['args']['id'])) {
$objet = $flux['args']['args']['type'];
$id = $flux['args']['args']['id'];
$hidden = inserer_modele_generer_hidden_url_modalbox($objet, $id);
} else {
$hidden = inserer_modele_generer_hidden_url_modalbox();
}
} else {
$hidden = inserer_modele_generer_hidden_url_modalbox();
}
$flux['data'] = str_replace('</form>', "$hidden</form>", $flux['data']);
return $flux;
}
/**
* Sur les formulaires de crayons
* Inserer dans un champ caché l'url de la mediabox d'inserer_modeles en prenant en compte l'object concerné
**/
function inserer_modeles_recuperer_fond($flux) {
if (stripos($flux['data']['texte'], '<textarea') === false) {
return $flux;
}
if (substr($flux['args']['fond'], 0, 12) === 'controleurs/') {
$objet = $flux['args']['contexte']['crayon_type'];
if (isset($flux['args']['contexte']["id_$objet"])) {
$id = $flux['args']['contexte']["id_$objet"];
$hidden = inserer_modele_generer_hidden_url_modalbox($objet, $id);
$flux['data']['texte'] .= $hidden;
}
}
return $flux;
}
/**
* Return un hidden contenant l'url de la modalbox
* @param str $objet
* @param int|str $id
* @return str champ hidden
**/
function inserer_modele_generer_hidden_url_modalbox($objet = '', $id = '') {
$url_inserer_modeles = url_absolue(generer_url_public('inserer_modeles'));
$url_inserer_modeles = parametre_url($url_inserer_modeles, 'modalbox', 'oui');
if ($objet and $id) {
$url_inserer_modeles = parametre_url($url_inserer_modeles, "id_$objet", $id);
}
$hidden = "<input type='hidden' disabled='disabled' name='url_inserer_modeles' value='$url_inserer_modeles' />";
return $hidden;
}