
commit
2bf6cf59c0
20 changed files with 1167 additions and 0 deletions
@ -0,0 +1,20 @@
|
||||
* text=auto !eol |
||||
exec/inserer_modeles.php -text |
||||
formulaires/inserer_modeles.html -text |
||||
formulaires/inserer_modeles.php -text |
||||
icones_barre/inserer_modeles.png -text |
||||
images/inserer_modeles-24.png -text |
||||
images/inserer_modeles-32.png -text |
||||
images/inserer_modeles-48.png -text |
||||
images/inserer_modeles-96.png -text |
||||
inc/inserer_modeles.php -text |
||||
/inserer_modeles_pipelines.php -text |
||||
lang/inserer_modeles_fr.php -text |
||||
modalbox/jquery.simplemodal-1.3.3.js -text |
||||
modalbox/modal_closebox.png -text |
||||
modalbox/modalbox.js -text |
||||
modalbox/modalbox_pipelines.php -text |
||||
modalbox/style_prive_plugin_modalbox.html -text |
||||
/plugin.xml -text |
||||
prive/inserer_modeles.html -text |
||||
saisies/param_modele.html -text |
@ -0,0 +1,26 @@
|
||||
<?php |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
include_spip('inc/presentation'); |
||||
|
||||
function exec_inserer_modeles(){ |
||||
|
||||
if (defined('_AJAX') AND _AJAX){ |
||||
$contexte = array_merge(array('modalbox' => 'oui'),$_GET); |
||||
$res = '<p />'.recuperer_fond('prive/inserer_modeles',$contexte); |
||||
include_spip('inc/actions'); |
||||
ajax_retour($res); |
||||
return; |
||||
} |
||||
|
||||
$commencer_page = charger_fonction('commencer_page','inc'); |
||||
echo $commencer_page(_T('inserer_modeles:titre_inserer_modeles')); |
||||
echo gros_titre(_T('inserer_modeles:titre_inserer_modeles'),'',false); |
||||
echo debut_grand_cadre(true); |
||||
echo recuperer_fond('prive/inserer_modeles',$_GET); |
||||
echo fin_grand_cadre(true),fin_page(); |
||||
|
||||
} |
||||
|
||||
?> |
@ -0,0 +1,52 @@
|
||||
<div class="formulaire_spip formulaire_inserer_modeles"> |
||||
[(#ENV{formulaire_modele}|non)<h3 class="titrem"> |
||||
[(#CHEMIN{images/inserer_modeles-24.png}|image_reduire{24}|inserer_attribut{class, 'cadre-icone'}|inserer_attribut{alt, ''})] |
||||
<:inserer_modeles:titre_inserer_modeles:> |
||||
</h3>] |
||||
[(#ENV{formulaire_modele}|oui)<h3 class="titrem"> |
||||
[(#CHEMIN{#ENV{logo}}|image_reduire{24}|inserer_attribut{class, 'cadre-icone'})] |
||||
<:inserer_modeles:titre_inserer{modele=#ENV{_nom}}:> |
||||
</h3>] |
||||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] |
||||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] |
||||
<form action="#ENV{action}" method="post"><div> |
||||
#ACTION_FORMULAIRE{#ENV{action}} |
||||
<BOUCLE_deja_choisi(CONDITION){si #ENV{formulaire_modele}}> |
||||
[<textarea readonly="readonly" id="code_modele" >(#ENV**{_code_modele})</textarea>] |
||||
[(#REM) Si on appelle depuis le porte-plume on renvoie le code au porte-plume ] |
||||
[(#ENV{modalbox}|et{#ENV{_code_modele}}|oui)<script> |
||||
$(document).ready(function(){ |
||||
var code_modele = $("#code_modele").text(); |
||||
if (code_modele != '') { |
||||
parent.$.markItUp( { replaceWith: code_modele } ); |
||||
jQuery.modalboxclose(); |
||||
} |
||||
}); |
||||
</script>] |
||||
<input type="hidden" name="formulaire_modele" value="#ENV{formulaire_modele}" /> |
||||
<ul> |
||||
#GENERER_SAISIES{#ENV{_saisies}} |
||||
</ul> |
||||
<p class="boutons"> |
||||
<input type="submit" class="submit" name="inserer" value="<:inserer_modeles:bouton_inserer:>" /> |
||||
[(#ENV{ne_pas_afficher_bouton_annuler}|non)<input type="submit" class="submit link" name="annuler" value="<:bouton_annuler:>" />] |
||||
</p> |
||||
</BOUCLE_deja_choisi> |
||||
<B_choix> |
||||
<strong><:inserer_modeles:choisir_modele:></strong> |
||||
<ul> |
||||
<BOUCLE_choix(POUR){tableau #ENV{_liste_formulaires_modeles}}{par valeur}> |
||||
<li class="choix"> |
||||
[(#CHEMIN{#VALEUR|table_valeur{logo}}|image_reduire{24}|inserer_attribut{'alt',''})] |
||||
<input type="radio" class="radio" name="formulaire_modele" id="#CLE" value="#CLE" style="vertical-align:top;" /> |
||||
<label for="#CLE">[(#VALEUR|table_valeur{nom}|_T_ou_typo)]</label> |
||||
</li> |
||||
</BOUCLE_choix> |
||||
</ul> |
||||
<p class="boutons"> |
||||
<input type="submit" class="submit" name="choisir" value="<:inserer_modeles:bouton_choisir:>" /> |
||||
</p> |
||||
</B_choix> |
||||
<//B_deja_choisi> |
||||
</div></form> |
||||
</div> |
@ -0,0 +1,112 @@
|
||||
<?php |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
function formulaires_inserer_modeles_charger_dist($id_article,$id_rubrique,$id_breve,$formulaire_modele='',$modalbox='') { |
||||
include_spip('inc/inserer_modeles'); |
||||
$contexte = array(); |
||||
|
||||
if ((!_request('formulaire_modele') && $formulaire_modele=='') || _request('annuler')) { |
||||
$contexte['_liste_formulaires_modeles'] = inserer_modeles_lister_formulaires_modeles(); |
||||
} else { |
||||
if ($formulaire_modele!='') |
||||
$contexte['ne_pas_afficher_bouton_annuler'] = 'on'; |
||||
if ($formulaire_modele=='') |
||||
$formulaire_modele = _request('formulaire_modele'); |
||||
$infos_modele = charger_infos_formulaire_modele($formulaire_modele); |
||||
include_spip('inc/saisies'); |
||||
$champs_saisies = saisies_charger_champs($infos_modele['parametres']); |
||||
// On charge les valeurs éventuellement passées par l'url |
||||
foreach($champs_saisies as $champ => $val) { |
||||
if (_request($champ)) |
||||
$champs_saisies[$champ] = _request($champ); |
||||
} |
||||
$contexte = array_merge($contexte,$champs_saisies); |
||||
|
||||
$contexte['formulaire_modele'] = $formulaire_modele; |
||||
$contexte['_nom'] = _T_ou_typo($infos_modele['nom']); |
||||
$contexte['logo'] = $infos_modele['logo']; |
||||
$contexte['_saisies'] = $infos_modele['parametres']; |
||||
if (_request('_code_modele')) |
||||
$contexte['_code_modele'] = _request('_code_modele'); |
||||
} |
||||
|
||||
if (is_numeric($id_article)) |
||||
$contexte['id_article'] = $id_article; |
||||
if (is_numeric($id_rubrique)) |
||||
$contexte['id_rubrique'] = $id_rubrique; |
||||
if (is_numeric($id_breve)) |
||||
$contexte['id_breve'] = $id_breve; |
||||
if ($modalbox!='') { |
||||
$contexte['modalbox'] = 'oui'; |
||||
$_modalbox_retour = url_absolue(generer_url_ecrire('inserer_modeles','',true)); |
||||
if (substr($formulaire_modele,-5)=='.yaml') |
||||
$formulaire_modele = substr($formulaire_modele,0,-5); |
||||
$_modalbox_retour = parametre_url($_modalbox_retour,'formulaire_modele',$formulaire_modele,'&'); |
||||
if (is_numeric($id_article)) |
||||
$_modalbox_retour = parametre_url($_modalbox_retour,'id_article',$id_article,'&'); |
||||
if (is_numeric($id_rubrique)) |
||||
$_modalbox_retour = parametre_url($_modalbox_retour,'id_rubrique',$id_rubrique,'&'); |
||||
if (is_numeric($id_breve)) |
||||
$_modalbox_retour = parametre_url($_modalbox_retour,'id_breve',$id_breve,'&'); |
||||
$contexte['_modalbox_retour'] = $_modalbox_retour; |
||||
} |
||||
|
||||
return $contexte; |
||||
} |
||||
|
||||
function formulaires_inserer_modeles_verifier_dist() { |
||||
$erreurs = array(); |
||||
|
||||
if (_request('choisir') && !_request('formulaire_modele')) |
||||
$erreurs['message_erreur'] = _T('inserer_modeles:erreur_choix_modele'); |
||||
|
||||
if (_request('inserer')) { |
||||
include_spip('inc/saisies'); |
||||
include_spip('inc/inserer_modeles'); |
||||
$infos = charger_infos_formulaire_modele(_request('formulaire_modele')); |
||||
$erreurs = saisies_verifier($infos['parametres']); |
||||
} |
||||
spip_log("formulaires_inserer_modeles_verifier_dist "._request('id_modele'),"bug"); |
||||
return $erreurs; |
||||
} |
||||
|
||||
function formulaires_inserer_modeles_traiter_dist() { |
||||
if (_request('inserer')) { |
||||
include_spip('inc/saisies'); |
||||
include_spip('inc/inserer_modeles'); |
||||
$infos = charger_infos_formulaire_modele(_request('formulaire_modele')); |
||||
$champs = saisies_lister_champs($infos['parametres'],false); |
||||
if(isset($infos['traiter'])) |
||||
$f = charger_fonction($infos['traiter'],'formulaires',true); |
||||
else $f=false; |
||||
if ($f) |
||||
$code = $f($champs); |
||||
else { |
||||
$code = '<'._request('modele'); |
||||
if (_request('id_modele') && _request('id_modele')!='') |
||||
$code .= _request('id_modele'); |
||||
if (_request('variante') && _request('variante')!='') |
||||
$code .= '|'._request('variante'); |
||||
if (_request('classe') && _request('classe')!='') |
||||
$code .= '|'._request('classe'); |
||||
if (_request('align') && _request('align')!='') |
||||
$code .= '|'._request('align'); |
||||
foreach ($champs as $champ) { |
||||
if($champ != 'modele' && $champ != 'variante' && $champ != 'classe' && $champ != 'id_modele' && $champ != 'align' && _request($champ) && _request($champ)!='') { |
||||
if($champ == _request($champ)) |
||||
$code .= "|$champ"; |
||||
// On transforme les tableaux en une liste |
||||
elseif (is_array(_request($champ))) |
||||
$code .= "|$champ=".implode(',',_request($champ)); |
||||
else |
||||
$code .= "|$champ="._request($champ); |
||||
} |
||||
} |
||||
$code .= '>'; |
||||
} |
||||
set_request('_code_modele',$code); |
||||
return array('message_ok' => _T('inserer_modeles:message_copier_code')); |
||||
} |
||||
} |
||||
|
||||
?> |
After Width: | Height: | Size: 758 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 5.4 KiB |
@ -0,0 +1,49 @@
|
||||
<?php |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
/** |
||||
* Lister les formulaires de modèles disponibles dans les dossiers modeles/ |
||||
* |
||||
* @staticvar array $liste_formulaires_modeles |
||||
* @return array |
||||
*/ |
||||
function inserer_modeles_lister_formulaires_modeles(){ |
||||
static $liste_formulaires_modeles = false; |
||||
|
||||
if ($liste_formulaires_modeles === false) { |
||||
$liste_formulaires_modeles = array(); |
||||
$match = "[^-]*[.]yaml$"; |
||||
$liste = find_all_in_path('modeles/', $match); |
||||
|
||||
if (count($liste)){ |
||||
include_spip('inc/yaml'); |
||||
foreach($liste as $formulaire => $chemin) |
||||
$liste_formulaires_modeles[$formulaire] = yaml_charger_inclusions(yaml_decode_file($chemin)); |
||||
} |
||||
} |
||||
|
||||
return $liste_formulaires_modeles; |
||||
} |
||||
|
||||
/** |
||||
* Charger les informations d'un formulaire de modele |
||||
* |
||||
* @staticvar array $infos_formulaires_modeles |
||||
* @return array |
||||
*/ |
||||
function charger_infos_formulaire_modele($formulaire){ |
||||
static $infos_formulaires_modeles = array(); |
||||
|
||||
if (!isset($infos_formulaires_modeles[$formulaire])) { |
||||
if (substr($formulaire,-5)!='.yaml') |
||||
$formulaire .= '.yaml'; |
||||
if ($chemin = find_in_path($formulaire,'modeles/')) { |
||||
include_spip('inc/yaml'); |
||||
$infos_formulaires_modeles[$formulaire] = yaml_charger_inclusions(yaml_decode_file($chemin)); |
||||
} |
||||
} |
||||
|
||||
return $infos_formulaires_modeles[$formulaire]; |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,81 @@
|
||||
<?php |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
// On passe pour le moment via affiche_droite |
||||
// Mais envisager dans le futur une intégration au porte plume |
||||
function inserer_modeles_affiche_droite($flux){ |
||||
if (in_array($flux['args']['exec'],array('articles_edit','breves_edit','rubriques_edit','mots_edit'))) { |
||||
include_spip('inc/inserer_modeles'); |
||||
if (count(inserer_modeles_lister_formulaires_modeles())>0) |
||||
$flux['data'] .= recuperer_fond('prive/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(); |
||||
|
||||
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" => _T_ou_typo($formulaire['nom']), |
||||
"className" => 'outil_inserer_modele_'.$nom, |
||||
"beforeInsert" => "function() {jQuery.modalboxload('".generer_url_ecrire( |
||||
'inserer_modeles', |
||||
"formulaire_modele=$nom&id_article='+$(\"[name='id_article']\").val()+'&id_rubrique='+$(\"[name='id_rubrique']\").val()+'&id_breve='+$(\"[name='id_breve']\").val()" |
||||
).",{minHeight: '90%'});}", |
||||
"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() {jQuery.modalboxload('".generer_url_ecrire( |
||||
'inserer_modeles', |
||||
"id_article='+$(\"[name='id_article']\").val()+'&id_rubrique='+$(\"[name='id_rubrique']\").val()+'&id_breve='+$(\"[name='id_breve']\").val()" |
||||
).",{minHeight: '90%'});}", |
||||
"display" => true, |
||||
"dropMenu" => $sous_menu |
||||
)); |
||||
} |
||||
|
||||
return $barres; |
||||
} |
||||
|
||||
// Icônes 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(); |
||||
if (count($formulaires_modeles)>0) { |
||||
$icones = array(); |
||||
$icones['outil_inserer_modeles'] = 'inserer_modeles.png'; |
||||
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; |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,20 @@
|
||||
<?php |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
'titre_inserer_modeles' => 'Insérer un modèle', |
||||
'choisir_modele' => 'Que souhaitez-vous insérer ?', |
||||
'bouton_choisir' => 'Choisir', |
||||
'bouton_inserer' => 'Insérer', |
||||
'item_center' => 'au centre', |
||||
'item_left' => 'à gauche', |
||||
'item_right' => 'à droite', |
||||
'titre_inserer' => 'Insérer @modele@', |
||||
'erreur_choix_modele' => 'Vous devez choisir un modèle.', |
||||
'label_alignement' => 'Alignement :', |
||||
'message_copier_code' => 'Vous pouvez recopier le code ci-dessous dans votre texte ou modifier les paramètres de votre modèle.', |
||||
'outil_inserer_modeles' => 'Insérer un modèle', |
||||
); |
||||
|
||||
?> |
@ -0,0 +1,612 @@
|
||||
/* |
||||
* SimpleModal 1.3.3 - jQuery Plugin |
||||
* http://www.ericmmartin.com/projects/simplemodal/
|
||||
* Copyright (c) 2009 Eric Martin (http://twitter.com/EricMMartin)
|
||||
* Dual licensed under the MIT and GPL licenses |
||||
* Revision: $Id: jquery.simplemodal.js 228 2009-10-30 13:34:27Z emartin24 $ |
||||
*/ |
||||
|
||||
/** |
||||
* SimpleModal is a lightweight jQuery plugin that provides a simple |
||||
* interface to create a modal dialog. |
||||
* |
||||
* The goal of SimpleModal is to provide developers with a cross-browser |
||||
* overlay and container that will be populated with data provided to |
||||
* SimpleModal. |
||||
* |
||||
* There are two ways to call SimpleModal: |
||||
* 1) As a chained function on a jQuery object, like $('#myDiv').modal();. |
||||
* This call would place the DOM object, #myDiv, inside a modal dialog. |
||||
* Chaining requires a jQuery object. An optional options object can be |
||||
* passed as a parameter. |
||||
* |
||||
* @example $('<div>my data</div>').modal({options}); |
||||
* @example $('#myDiv').modal({options}); |
||||
* @example jQueryObject.modal({options}); |
||||
* |
||||
* 2) As a stand-alone function, like $.modal(data). The data parameter |
||||
* is required and an optional options object can be passed as a second |
||||
* parameter. This method provides more flexibility in the types of data |
||||
* that are allowed. The data could be a DOM object, a jQuery object, HTML |
||||
* or a string. |
||||
* |
||||
* @example $.modal('<div>my data</div>', {options}); |
||||
* @example $.modal('my data', {options}); |
||||
* @example $.modal($('#myDiv'), {options}); |
||||
* @example $.modal(jQueryObject, {options}); |
||||
* @example $.modal(document.getElementById('myDiv'), {options}); |
||||
* |
||||
* A SimpleModal call can contain multiple elements, but only one modal |
||||
* dialog can be created at a time. Which means that all of the matched |
||||
* elements will be displayed within the modal container. |
||||
* |
||||
* SimpleModal internally sets the CSS needed to display the modal dialog |
||||
* properly in all browsers, yet provides the developer with the flexibility |
||||
* to easily control the look and feel. The styling for SimpleModal can be |
||||
* done through external stylesheets, or through SimpleModal, using the |
||||
* overlayCss and/or containerCss options. |
||||
* |
||||
* SimpleModal has been tested in the following browsers: |
||||
* - IE 6, 7, 8 |
||||
* - Firefox 2, 3 |
||||
* - Opera 9, 10 |
||||
* - Safari 3, 4 |
||||
* - Chrome 1, 2 |
||||
* |
||||
* @name SimpleModal |
||||
* @type jQuery |
||||
* @requires jQuery v1.2.2 |
||||
* @cat Plugins/Windows and Overlays |
||||
* @author Eric Martin (http://ericmmartin.com)
|
||||
* @version 1.3.3 |
||||
*/ |
||||
;(function ($) { |
||||
var ie6 = $.browser.msie && parseInt($.browser.version) == 6 && typeof window['XMLHttpRequest'] != "object", |
||||
ieQuirks = null, |
||||
w = []; |
||||
|
||||
/* |
||||
* Stand-alone function to create a modal dialog. |
||||
* |
||||
* @param {string, object} data A string, jQuery object or DOM object |
||||
* @param {object} [options] An optional object containing options overrides |
||||
*/ |
||||
$.modal = function (data, options) { |
||||
return $.modal.impl.init(data, options); |
||||
}; |
||||
|
||||
/* |
||||
* Stand-alone close function to close the modal dialog |
||||
*/ |
||||
$.modal.close = function () { |
||||
$.modal.impl.close(); |
||||
}; |
||||
|
||||
/* |
||||
* Chained function to create a modal dialog. |
||||
* |
||||
* @param {object} [options] An optional object containing options overrides |
||||
*/ |
||||
$.fn.modal = function (options) { |
||||
return $.modal.impl.init(this, options); |
||||
}; |
||||
|
||||
/* |
||||
* SimpleModal default options |
||||
* |
||||
* appendTo: (String:'body') The jQuery selector to append the elements to. For ASP.NET, use 'form'. |
||||
* focus: (Boolean:true) Forces focus to remain on the modal dialog |
||||
* opacity: (Number:50) The opacity value for the overlay div, from 0 - 100 |
||||
* overlayId: (String:'simplemodal-overlay') The DOM element id for the overlay div |
||||
* overlayCss: (Object:{}) The CSS styling for the overlay div |
||||
* containerId: (String:'simplemodal-container') The DOM element id for the container div |
||||
* containerCss: (Object:{}) The CSS styling for the container div |
||||
* dataId: (String:'simplemodal-data') The DOM element id for the data div |
||||
* dataCss: (Object:{}) The CSS styling for the data div |
||||
* minHeight: (Number:200) The minimum height for the container |
||||
* minWidth: (Number:200) The minimum width for the container |
||||
* maxHeight: (Number:null) The maximum height for the container. If not specified, the window height is used. |
||||
* maxWidth: (Number:null) The maximum width for the container. If not specified, the window width is used. |
||||
* autoResize: (Boolean:false) Resize container on window resize? Use with caution - this may have undesirable side-effects. |
||||
* autoPosition: (Boolean:true) Reposition container on window resize? |
||||
* zIndex: (Number: 1000) Starting z-index value |
||||
* close: (Boolean:true) If true, closeHTML, escClose and overClose will be used if set. |
||||
If false, none of them will be used. |
||||
* closeHTML: (String:'<a class="modalCloseImg" title="Close"></a>') The HTML for the |
||||
default close link. SimpleModal will automatically add the closeClass to this element. |
||||
* closeClass: (String:'simplemodal-close') The CSS class used to bind to the close event |
||||
* escClose: (Boolean:true) Allow Esc keypress to close the dialog? |
||||
* overlayClose: (Boolean:false) Allow click on overlay to close the dialog? |
||||
* position: (Array:null) Position of container [top, left]. Can be number of pixels or percentage |
||||
* persist: (Boolean:false) Persist the data across modal calls? Only used for existing |
||||
DOM elements. If true, the data will be maintained across modal calls, if false, |
||||
the data will be reverted to its original state. |
||||
* onOpen: (Function:null) The callback function used in place of SimpleModal's open |
||||
* onShow: (Function:null) The callback function used after the modal dialog has opened |
||||
* onClose: (Function:null) The callback function used in place of SimpleModal's close |
||||
*/ |
||||
$.modal.defaults = { |
||||
appendTo: 'body', |
||||
focus: true, |
||||
opacity: 50, |
||||
overlayId: 'simplemodal-overlay', |
||||
overlayCss: {}, |
||||
containerId: 'simplemodal-container', |
||||
containerCss: {}, |
||||
dataId: 'simplemodal-data', |
||||
dataCss: {}, |
||||
minHeight: 200, |
||||
minWidth: 300, |
||||
maxHeight: null, |
||||
maxWidth: null, |
||||
autoResize: false, |
||||
autoPosition: true, |
||||
zIndex: 1000, |
||||
close: true, |
||||
closeHTML: '<a class="modalCloseImg" title="Close"></a>', |
||||
closeClass: 'simplemodal-close', |
||||
escClose: true, |
||||
overlayClose: false, |
||||
position: null, |
||||
persist: false, |
||||
onOpen: null, |
||||
onShow: null, |
||||
onClose: null |
||||
}; |
||||
|
||||
/* |
||||
* Main modal object |
||||
*/ |
||||
$.modal.impl = { |
||||
/* |
||||
* Modal dialog options |
||||
*/ |
||||
o: null, |
||||
/* |
||||
* Contains the modal dialog elements and is the object passed |
||||
* back to the callback (onOpen, onShow, onClose) functions |
||||
*/ |
||||
d: {}, |
||||
/* |
||||
* Initialize the modal dialog |
||||
*/ |
||||
init: function (data, options) { |
||||
var s = this; |
||||
|
||||
// don't allow multiple calls
|
||||
if (s.d.data) { |
||||
return false; |
||||
} |
||||
|
||||
// $.boxModel is undefined if checked earlier
|
||||
ieQuirks = $.browser.msie && !$.boxModel; |
||||
|
||||
// merge defaults and user options
|
||||
s.o = $.extend({}, $.modal.defaults, options); |
||||
|
||||
// keep track of z-index
|
||||
s.zIndex = s.o.zIndex; |
||||
|
||||
// set the onClose callback flag
|
||||
s.occb = false; |
||||
|
||||
// determine how to handle the data based on its type
|
||||
if (typeof data == 'object') { |
||||
// convert DOM object to a jQuery object
|
||||
data = data instanceof jQuery ? data : $(data); |
||||
|
||||
// if the object came from the DOM, keep track of its parent
|
||||
if (data.parent().parent().size() > 0) { |
||||
s.d.parentNode = data.parent(); |
||||
|
||||
// persist changes? if not, make a clone of the element
|
||||
if (!s.o.persist) { |
||||
s.d.orig = data.clone(true); |
||||
} |
||||
} |
||||
} |
||||
else if (typeof data == 'string' || typeof data == 'number') { |
||||
// just insert the data as innerHTML
|
||||
data = $('<div></div>').html(data); |
||||
} |
||||
else { |
||||
// unsupported data type!
|
||||
alert('SimpleModal Error: Unsupported data type: ' + typeof data); |
||||
return s; |
||||
} |
||||
|
||||
// create the modal overlay, container and, if necessary, iframe
|
||||
s.create(data); |
||||
data = null; |
||||
|
||||
// display the modal dialog
|
||||
s.open(); |
||||
|
||||
// useful for adding events/manipulating data in the modal dialog
|
||||
if ($.isFunction(s.o.onShow)) { |
||||
s.o.onShow.apply(s, [s.d]); |
||||
} |
||||
|
||||
// don't break the chain =)
|
||||
return s; |
||||
}, |
||||
/* |
||||
* Create and add the modal overlay and container to the page |
||||
*/ |
||||
create: function (data) { |
||||
var s = this; |
||||
|
||||
// get the window properties
|
||||
w = s.getDimensions(); |
||||
|
||||
// add an iframe to prevent select options from bleeding through
|
||||
if (ie6) { |
||||
s.d.iframe = $('<iframe src="javascript:false;"></iframe>') |
||||
.css($.extend(s.o.iframeCss, { |
||||
display: 'none', |
||||
opacity: 0, |
||||
position: 'fixed', |
||||
height: w[0], |
||||
width: w[1], |
||||
zIndex: s.o.zIndex, |
||||
top: 0, |
||||
left: 0 |
||||
})) |
||||
.appendTo(s.o.appendTo); |
||||
} |
||||
|
||||
// create the overlay
|
||||
s.d.overlay = $('<div></div>') |
||||
.attr('id', s.o.overlayId) |
||||
.addClass('simplemodal-overlay') |
||||
.css($.extend(s.o.overlayCss, { |
||||
display: 'none', |
||||
opacity: s.o.opacity / 100, |
||||
height: w[0], |
||||
width: w[1], |
||||
position: 'fixed', |
||||
left: 0, |
||||
top: 0, |
||||
zIndex: s.o.zIndex + 1 |
||||
})) |
||||
.appendTo(s.o.appendTo); |
||||
|
||||
// create the container
|
||||
s.d.container = $('<div></div>') |
||||
.attr('id', s.o.containerId) |
||||
.addClass('simplemodal-container') |
||||
.css($.extend(s.o.containerCss, { |
||||
display: 'none', |
||||
position: 'fixed', |
||||
zIndex: s.o.zIndex + 2 |
||||
})) |
||||
.append(s.o.close && s.o.closeHTML |
||||
? $(s.o.closeHTML).addClass(s.o.closeClass) |
||||
: '') |
||||
.appendTo(s.o.appendTo); |
||||
|
||||
s.d.wrap = $('<div></div>') |
||||
.attr('tabIndex', -1) |
||||
.addClass('simplemodal-wrap') |
||||
.css({height: '100%', outline: 0, width: '100%'}) |
||||
.appendTo(s.d.container); |
||||
|
||||
// add styling and attributes to the data
|
||||
// append to body to get correct dimensions, then move to wrap
|
||||
s.d.data = data |
||||
.attr('id', data.attr('id') || s.o.dataId) |
||||
.addClass('simplemodal-data') |
||||
.css($.extend(s.o.dataCss, { |
||||
display: 'none' |
||||
})) |
||||
.appendTo('body'); |
||||
data = null; |
||||
|
||||
s.setContainerDimensions(); |
||||
s.d.data.appendTo(s.d.wrap); |
||||
|
||||
// fix issues with IE
|
||||
if (ie6 || ieQuirks) { |
||||
s.fixIE(); |
||||
} |
||||
}, |
||||
/* |
||||
* Bind events |
||||
*/ |
||||
bindEvents: function () { |
||||
var s = this; |
||||
|
||||
// bind the close event to any element with the closeClass class
|
||||
$('.' + s.o.closeClass).bind('click.simplemodal', function (e) { |
||||
e.preventDefault(); |
||||
s.close(); |
||||
}); |
||||
|
||||
// bind the overlay click to the close function, if enabled
|
||||
if (s.o.close && s.o.overlayClose) { |
||||
s.d.overlay.bind('click.simplemodal', function (e) { |
||||
e.preventDefault(); |
||||
s.close(); |
||||
}); |
||||
} |
||||
|
||||
// bind keydown events
|
||||
$(document).bind('keydown.simplemodal', function (e) { |
||||
if (s.o.focus && e.keyCode == 9) { // TAB
|
||||
s.watchTab(e); |
||||
} |
||||
else if ((s.o.close && s.o.escClose) && e.keyCode == 27) { // ESC
|
||||
e.preventDefault(); |
||||
s.close(); |
||||
} |
||||
}); |
||||
|
||||
// update window size
|
||||
$(window).bind('resize.simplemodal', function () { |
||||
// redetermine the window width/height
|
||||
w = s.getDimensions(); |
||||
|
||||
// reposition the dialog
|
||||
s.setContainerDimensions(true); |
||||
|
||||
if (ie6 || ieQuirks) { |
||||
s.fixIE(); |
||||
} |
||||
else { |
||||
// update the iframe & overlay
|
||||
s.d.iframe && s.d.iframe.css({height: w[0], width: w[1]}); |
||||
s.d.overlay.css({height: w[0], width: w[1]}); |
||||
} |
||||
}); |
||||
}, |
||||
/* |
||||
* Unbind events |
||||
*/ |
||||
unbindEvents: function () { |
||||
$('.' + this.o.closeClass).unbind('click.simplemodal'); |
||||
$(document).unbind('keydown.simplemodal'); |
||||
$(window).unbind('resize.simplemodal'); |
||||
this.d.overlay.unbind('click.simplemodal'); |
||||
}, |
||||
/* |
||||
* Fix issues in IE6 and IE7 in quirks mode |
||||
*/ |
||||
fixIE: function () { |
||||
var s=this, p = s.o.position; |
||||
|
||||
// simulate fixed position - adapted from BlockUI
|
||||
$.each([s.d.iframe || null, s.d.overlay, s.d.container], function (i, el) { |
||||
if (el) { |
||||
var bch = 'document.body.clientHeight', bcw = 'document.body.clientWidth', |
||||
bsh = 'document.body.scrollHeight', bsl = 'document.body.scrollLeft', |
||||
bst = 'document.body.scrollTop', bsw = 'document.body.scrollWidth', |
||||
ch = 'document.documentElement.clientHeight', cw = 'document.documentElement.clientWidth', |
||||
sl = 'document.documentElement.scrollLeft', st = 'document.documentElement.scrollTop', |
||||
s = el[0].style; |
||||
|
||||
s.position = 'absolute'; |
||||
if (i < 2) { |
||||
s.removeExpression('height'); |
||||
s.removeExpression('width'); |
||||
s.setExpression('height','' + bsh + ' > ' + bch + ' ? ' + bsh + ' : ' + bch + ' + "px"'); |
||||
s.setExpression('width','' + bsw + ' > ' + bcw + ' ? ' + bsw + ' : ' + bcw + ' + "px"'); |
||||
} |
||||
else { |
||||
var te, le; |
||||
if (p && p.constructor == Array) { |
||||
var top = p[0] |
||||
? typeof p[0] == 'number' ? p[0].toString() : p[0].replace(/px/, '') |
||||
: el.css('top').replace(/px/, ''); |
||||
te = top.indexOf('%') == -1 |
||||
? top + ' + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"' |
||||
: parseInt(top.replace(/%/, '')) + ' * ((' + ch + ' || ' + bch + ') / 100) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; |
||||
|
||||
if (p[1]) { |
||||
var left = typeof p[1] == 'number' ? p[1].toString() : p[1].replace(/px/, ''); |
||||
le = left.indexOf('%') == -1 |
||||
? left + ' + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"' |
||||
: parseInt(left.replace(/%/, '')) + ' * ((' + cw + ' || ' + bcw + ') / 100) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; |
||||
} |
||||
} |
||||
else { |
||||
te = '(' + ch + ' || ' + bch + ') / 2 - (this.offsetHeight / 2) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; |
||||
le = '(' + cw + ' || ' + bcw + ') / 2 - (this.offsetWidth / 2) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; |
||||
} |
||||
s.removeExpression('top'); |
||||
s.removeExpression('left'); |
||||
s.setExpression('top', te); |
||||
s.setExpression('left', le); |
||||
} |
||||
} |
||||
}); |
||||
}, |
||||
focus: function (pos) { |
||||
var s = this, p = pos || 'first'; |
||||
|
||||
// focus on dialog or the first visible/enabled input element
|
||||
var input = $(':input:enabled:visible:' + p, s.d.wrap); |
||||
input.length > 0 ? input.focus() : s.d.wrap.focus(); |
||||
}, |
||||
getDimensions: function () { |
||||
var el = $(window); |
||||
|
||||
// fix a jQuery/Opera bug with determining the window height
|
||||
var h = $.browser.opera && $.browser.version > '9.5' && $.fn.jquery <= '1.2.6' ? document.documentElement['clientHeight'] : |
||||
$.browser.opera && $.browser.version < '9.5' && $.fn.jquery > '1.2.6' ? window.innerHeight : |
||||
el.height(); |
||||
|
||||
return [h, el.width()]; |
||||
}, |
||||
getVal: function (v) { |
||||
return v == 'auto' ? 0 |
||||
: v.indexOf('%') > 0 ? v |
||||
: parseInt(v.replace(/px/, '')); |
||||
}, |
||||
setContainerDimensions: function (resize) { |
||||
var s = this; |
||||
|
||||
if (!resize || (resize && s.o.autoResize)) { |
||||
// get the dimensions for the container and data
|
||||
var ch = s.getVal(s.d.container.css('height')), cw = s.getVal(s.d.container.css('width')), |
||||
dh = s.d.data.outerHeight(true), dw = s.d.data.outerWidth(true); |
||||
|
||||
var mh = s.o.maxHeight && s.o.maxHeight < w[0] ? s.o.maxHeight : w[0], |
||||
mw = s.o.maxWidth && s.o.maxWidth < w[1] ? s.o.maxWidth : w[1]; |
||||
|
||||
// height
|
||||
if (!ch) { |
||||
if (!dh) {ch = s.o.minHeight;} |
||||
else { |
||||
if (dh > mh) {ch = mh;} |
||||
else if (dh < s.o.minHeight) {ch = s.o.minHeight;} |
||||
else {ch = dh;} |
||||
} |
||||
} |
||||
else { |
||||
ch = ch > mh ? mh : ch; |
||||
} |
||||
|
||||
// width
|
||||
if (!cw) { |
||||
if (!dw) {cw = s.o.minWidth;} |
||||
else { |
||||
if (dw > mw) {cw = mw;} |
||||
else if (dw < s.o.minWidth) {cw = s.o.minWidth;} |
||||
else {cw = dw;} |
||||
} |
||||
} |
||||
else { |
||||
cw = cw > mw ? mw : cw; |
||||
} |
||||
|
||||
s.d.container.css({height: ch, width: cw}); |
||||
if (dh > ch || dw > cw) { |
||||
s.d.wrap.css({overflow:'auto'}); |
||||
} |
||||
} |
||||
|
||||
if (s.o.autoPosition) { |
||||
s.setPosition(); |
||||
} |
||||
}, |
||||
setPosition: function () { |
||||
var s = this, top, left, |
||||
hc = (w[0]/2) - (s.d.container.outerHeight(true)/2), |
||||
vc = (w[1]/2) - (s.d.container.outerWidth(true)/2); |
||||
|
||||
if (s.o.position && Object.prototype.toString.call(s.o.position) === "[object Array]") { |
||||
top = s.o.position[0] || hc; |
||||
left = s.o.position[1] || vc; |
||||
} else { |
||||
top = hc; |
||||
left = vc; |
||||
} |
||||
s.d.container.css({left: left, top: top}); |
||||
}, |
||||
watchTab: function (e) { |
||||
var s = this; |
||||
|
||||
if ($(e.target).parents('.simplemodal-container').length > 0) { |
||||
// save the list of inputs
|
||||
s.inputs = $(':input:enabled:visible:first, :input:enabled:visible:last', s.d.data[0]); |
||||
|
||||
// if it's the first or last tabbable element, refocus
|
||||
if ((!e.shiftKey && e.target == s.inputs[s.inputs.length -1]) || |
||||
(e.shiftKey && e.target == s.inputs[0]) || |
||||
s.inputs.length == 0) { |
||||
e.preventDefault(); |
||||
var pos = e.shiftKey ? 'last' : 'first'; |
||||
setTimeout(function () {s.focus(pos);}, 10); |
||||
} |
||||
} |
||||
else { |
||||
// might be necessary when custom onShow callback is used
|
||||
e.preventDefault(); |
||||
setTimeout(function () {s.focus();}, 10); |
||||
} |
||||
}, |
||||
/* |
||||
* Open the modal dialog elements |
||||
* - Note: If you use the onOpen callback, you must "show" the |
||||
* overlay and container elements manually |
||||
* (the iframe will be handled by SimpleModal) |
||||
*/ |
||||
open: function () { |
||||
var s = this; |
||||
// display the iframe
|
||||
s.d.iframe && s.d.iframe.show(); |
||||
|
||||
if ($.isFunction(s.o.onOpen)) { |
||||
// execute the onOpen callback
|
||||
s.o.onOpen.apply(s, [s.d]); |
||||
} |
||||
else { |
||||
// display the remaining elements
|
||||
s.d.overlay.show(); |
||||
s.d.container.show(); |
||||
s.d.data.show(); |
||||
} |
||||
|
||||
s.focus(); |
||||
|
||||
// bind default events
|
||||
s.bindEvents(); |
||||
}, |
||||
/* |
||||
* Close the modal dialog |
||||
* - Note: If you use an onClose callback, you must remove the |
||||
* overlay, container and iframe elements manually |
||||
* |
||||
* @param {boolean} external Indicates whether the call to this |
||||
* function was internal or external. If it was external, the |
||||
* onClose callback will be ignored |
||||
*/ |
||||
close: function () { |
||||
var s = this; |
||||
|
||||
// prevent close when dialog does not exist
|
||||
if (!s.d.data) { |
||||
return false; |
||||
} |
||||
|
||||
// remove the default events
|
||||
s.unbindEvents(); |
||||
|
||||
if ($.isFunction(s.o.onClose) && !s.occb) { |
||||
// set the onClose callback flag
|
||||
s.occb = true; |
||||
|
||||
// execute the onClose callback
|
||||
s.o.onClose.apply(s, [s.d]); |
||||
} |
||||
else { |
||||
// if the data came from the DOM, put it back
|
||||
if (s.d.parentNode) { |
||||
// save changes to the data?
|
||||
if (s.o.persist) { |
||||
// insert the (possibly) modified data back into the DOM
|
||||
s.d.data.hide().appendTo(s.d.parentNode); |
||||
} |
||||
else { |
||||
// remove the current and insert the original,
|
||||
// unmodified data back into the DOM
|
||||
s.d.data.hide().remove(); |
||||
s.d.orig.appendTo(s.d.parentNode); |
||||
} |
||||
} |
||||
else { |
||||
// otherwise, remove it
|
||||
s.d.data.hide().remove(); |
||||
} |
||||
|
||||
// remove the remaining elements
|
||||
s.d.container.hide().remove(); |
||||
s.d.overlay.hide().remove(); |
||||
s.d.iframe && s.d.iframe.hide().remove(); |
||||
|
||||
// reset the dialog object
|
||||
s.d = {}; |
||||
} |
||||
} |
||||
}; |
||||
})(jQuery); |
After Width: | Height: | Size: 1.9 KiB |
@ -0,0 +1,34 @@
|
||||
/* |
||||
* To change this template, choose Tools | Templates |
||||
* and open the template in the editor. |
||||
*/ |
||||
|
||||
|
||||
;(function ($) { |
||||
|
||||
$.modalbox = function (data, options) { |
||||
if ($.isFunction(options.onClose)){ |
||||
var onClosefunc = options.onClose; |
||||
options.onClose = function(dialog){ |
||||
$.modal.close(); |
||||
onClosefunc.apply($.modal, [dialog]) |
||||
} |
||||
} |
||||
return $.modal(data, options); |
||||
}; |
||||
|
||||
$.modalboxload = function (url, options) { |
||||
$.ajax({ |
||||
url: url, |
||||
dataType: "html", |
||||
success: function(c){ |
||||
$.modalbox(c,options); |
||||
} |
||||
}); |
||||
}; |
||||
|
||||
$.modalboxclose = function () { |
||||
$.modal.close(); |
||||
}; |
||||
|
||||
})(jQuery); |
@ -0,0 +1,16 @@
|
||||
<?php |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
function inserer_modeles_modalbox_insert_head($flux){ |
||||
if (!defined('_DIR_PLUGIN_MEDIABOX') && !defined('_DIR_PLUGIN_GESTDOC') && !defined('_DIR_PLUGIN_MEDIAS')) { |
||||
// Insertion des librairies js |
||||
$flux .='<script src="'.find_in_path('modalbox/jquery.simplemodal-1.3.3.js').'" type="text/javascript"></script>'; |
||||
$flux .='<script src="'.find_in_path('modalbox/modalbox.js').'" type="text/javascript"></script>'; |
||||
$css = generer_url_public('modalbox/style_prive_plugin_modalbox'); |
||||
$flux .= "\n<link rel='stylesheet' href='$css' type='text/css' />\n"; |
||||
} |
||||
|
||||
return $flux; |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,51 @@
|
||||
[(#REM) |
||||
|
||||
Ce squelette definit les styles de l'espace prive |
||||
|
||||
Note: l'entete "Vary:" sert a repousser l'entete par |
||||
defaut "Vary: Cookie,Accept-Encoding", qui est (un peu) |
||||
genant en cas de "rotation du cookie de session" apres |
||||
un changement d'IP (effet de clignotement). |
||||
|
||||
ATTENTION: il faut absolument le charset sinon Firefox croit que |
||||
c'est du text/html ! |
||||
<style> |
||||
] |
||||
#CACHE{3600*100,cache-client} |
||||
#HTTP_HEADER{Content-Type: text/css; charset=iso-8859-15} |
||||
#HTTP_HEADER{Vary: Accept-Encoding} |
||||
|
||||
#SET{claire,##ENV{couleur_claire,edf3fe}} |
||||
#SET{foncee,##ENV{couleur_foncee,3874b0}} |
||||
#SET{left,#ENV{ltr}|choixsiegal{left,left,right}} |
||||
#SET{right,#ENV{ltr}|choixsiegal{left,right,left}} |
||||
|
||||
/* |
||||
* SimpleModal Basic Modal Dialog |
||||
* http://www.ericmmartin.com/projects/simplemodal/ |
||||
* http://code.google.com/p/simplemodal/ |
||||
* |
||||
* Copyright (c) 2009 Eric Martin - http://ericmmartin.com |
||||
* |
||||
* Licensed under the MIT license: |
||||
* http://www.opensource.org/licenses/mit-license.php |
||||
* |
||||
* Revision: $Id: basic.css 185 2009-02-09 21:51:12Z emartin24 $ |
||||
* |
||||
*/ |
||||
|
||||
|
||||
/* Overlay */ |
||||
#simplemodal-overlay {background-color:#000; cursor:wait;} |
||||
|
||||
/* Container */ |
||||
#simplemodal-container {min-height:500px; min-width:600px; background-color:#[(#GET{claire}|couleur_eclaircir|couleur_eclaircir)]; border:10px solid #[(#GET{claire}|couleur_eclaircir)];} |
||||
.simplemodal-wrap {overflow:auto;} |
||||
#simplemodal-container a.modalCloseImg {background:url(#CHEMIN{modalbox/modal_closebox.png}) no-repeat; width:30px; height:30px; display:inline; z-index:3200; position:absolute; top:-12px; #GET{right}:-15px; cursor:pointer;} |
||||
#simplemodal-container #basicModalContent {padding:8px;} |
||||
|
||||
#simplemodal-data .formulaire_spip {border:0;} |
||||
#simplemodal-data .entete-formulaire {border:0;} |
||||
|
||||
|
||||
[(#REM)</style>] |
@ -0,0 +1,37 @@
|
||||
<plugin> |
||||
<nom>Insérer Modèles</nom> |
||||
<slogan>Une aide à l'insertion des modèles dans vos textes</slogan> |
||||
<auteur>Joseph</auteur> |
||||
<licence>GPL v3</licence> |
||||
<version>0.4.4</version> |
||||
<etat>stable</etat> |
||||
<description> |
||||
Ce plugin fournit une aide à l'insertion des modèles dans vos textes à travers des formulaires de saisies. Ces formulaires sont accessibles dans la colonne de droite ou via un bouton dans le porte-plume. |
||||
</description> |
||||
<lien>http://www.spip-contrib.net/?article3631</lien> |
||||
<icon>images/inserer_modeles-48.png</icon> |
||||
<prefix>inserer_modeles</prefix> |
||||
<pipeline> |
||||
<nom>affiche_droite</nom> |
||||
<inclure>inserer_modeles_pipelines.php</inclure> |
||||
</pipeline> |
||||
<pipeline> |
||||
<nom>porte_plume_barre_pre_charger</nom> |
||||
<inclure>inserer_modeles_pipelines.php</inclure> |
||||
</pipeline> |
||||
<pipeline> |
||||
<nom>porte_plume_lien_classe_vers_icone</nom> |
||||
<inclure>inserer_modeles_pipelines.php</inclure> |
||||
</pipeline> |
||||
<categorie>edition</categorie> |
||||
<necessite id="SPIP" version="[2.1.0;3.0.99]" /> |
||||
<necessite id="spip_bonux" version="[1.8.10;]" /> |
||||
<necessite id="saisies" version="[1.8.4;]" /> |
||||
<necessite id="verifier" version="[0.1.1;]" /> |
||||
<necessite id="yaml" version="[1.4.1;]" /> |
||||
<pipeline> |
||||
<nom>header_prive</nom> |
||||
<action>modalbox_insert_head</action> |
||||
<inclure>modalbox/modalbox_pipelines.php</inclure> |
||||
</pipeline> |
||||
</plugin> |
@ -0,0 +1,3 @@
|
||||
<div class="ajax" id="inserer_modeles"> |
||||
#FORMULAIRE_INSERER_MODELES{#ENV{id_article},#ENV{id_rubrique},#ENV{id_breve},#ENV{formulaire_modele},#ENV{modalbox}} |
||||
</div> |
@ -0,0 +1,54 @@
|
||||
[(#REM) |
||||
Saisie pour les paramètres de modèle personnalisable pouvant être de la forme |param (auquel cas param=param) ou |param=valeur personnalisée |
||||
On crée alors un select et un input, gérant les différents cas par javascript |
||||
Parametres supplementaire : |
||||
- defaut : valeur par defaut du parametre |
||||
- type : type de l'input (defaut: text) |
||||
- class : classe(s) css ajoutes a l'input |
||||
- size : taille du champ |
||||
- maxlength : nombre de caracteres maximum |
||||
- disable : champ insaisissable ? 'oui' (defaut : '') |
||||
- option_vide : chaine de langue pour le cas où on ne rebvoie rien |
||||
- option_identique : chaine de langue pour le cas où param=param |
||||
- option_personnalise : chaîne de lanque pour le cas où on saisie une valeur personnalisée |
||||
- explication_personnalise : explication pour le champs personnalise |
||||
] |
||||
#SET{type,#ENV{type,text}} |
||||
[(#REM) Ajout d'un marqueur unique au cas où le formulaire serait présent deux fois dans la page ] |
||||
[(#SET{id_unique,#EVAL{'rand();'}})] |
||||
[(#SET{valeur,#ENV{valeur,#ENV{defaut}}})] |
||||
<select name="select_#ENV{nom}" id="select_#ENV{nom}" style="display:none;" class="select_#ENV{nom}_#GET{id_unique}[ (#ENV{class})]"[ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]> |
||||
<option value="" [(#GET{valeur}|non) selected="selected"]>#ENV{option_vide}</option> |
||||
<option value="identique" [(#GET{valeur}|=={#ENV{nom}}|oui) selected="selected"]>#ENV{option_identique}</option> |
||||
<option value="personnalise" [(#GET{valeur}|!={#ENV{nom}}|et{#GET{valeur}|oui}) selected="selected"]>#ENV{option_personnalise}</option> |
||||
</select> |
||||
|
||||
[<p class="explication explication_#ENV{nom}_#GET{id_unique}">(#ENV{explication_personnalise})</p>] |
||||
<input type="#GET{type}" name="#ENV{nom}" class="[(#GET{type})] champ_#ENV{nom}_#GET{id_unique}[ (#ENV{class})]" id="champ_#ENV{nom}"[ value="(#GET{valeur})"][ size="(#ENV{size})"][ maxlength="(#ENV{maxlength})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"][(#ENV{obligatoire}|et{#HTML5}|oui) required="required"] /> |
||||
|
||||
<script type="text/javascript">// <![CDATA[ |
||||
$(document).ready(function(){ |
||||
$(".select_#ENV{nom}_#GET{id_unique}").show(400); |
||||
verifier_#ENV{nom}_#GET{id_unique} = function(){ |
||||
if($(".select_#ENV{nom}_#GET{id_unique}").val() == ''){ |
||||
$(".champ_#ENV{nom}_#GET{id_unique}").val(''); |
||||
$(".champ_#ENV{nom}_#GET{id_unique}").hide(400); |
||||
$(".explication_#ENV{nom}_#GET{id_unique}").hide(400); |
||||
} |
||||
if($(".select_#ENV{nom}_#GET{id_unique}").val() == 'identique'){ |
||||
$(".champ_#ENV{nom}_#GET{id_unique}").val('#ENV{nom}'); |
||||
$(".champ_#ENV{nom}_#GET{id_unique}").hide(400); |
||||
$(".explication_#ENV{nom}_#GET{id_unique}").hide(400); |
||||
} |
||||
if($(".select_#ENV{nom}_#GET{id_unique}").val() == 'personnalise'){ |
||||
$(".champ_#ENV{nom}_#GET{id_unique}").show(400); |
||||
$(".explication_#ENV{nom}_#GET{id_unique}").show(400); |
||||
} |
||||
}; |
||||
verifier_#ENV{nom}_#GET{id_unique}(); |
||||
$(".select_#ENV{nom}_#GET{id_unique}").change(function(){ |
||||
$(".champ_#ENV{nom}_#GET{id_unique}").val(''); |
||||
verifier_#ENV{nom}_#GET{id_unique}(); |
||||
}); |
||||
}); |
||||
//]]></script> |
Loading…
Reference in new issue