Skip to content
Extraits de code Groupes Projets
Valider 18be3316 rédigé par RastaPopoulos's avatar RastaPopoulos
Parcourir les fichiers

Report de toutes les améliorations du sélecteur générique.

parent 2d7b16ea
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 170 ajouts et 136 suppressions
...@@ -276,6 +276,8 @@ prive/aide_body.css -text ...@@ -276,6 +276,8 @@ prive/aide_body.css -text
prive/aide_menu.html -text prive/aide_menu.html -text
prive/ajax_item_pick.html -text prive/ajax_item_pick.html -text
prive/ajax_item_pick_fonctions.php -text prive/ajax_item_pick_fonctions.php -text
prive/ajax_selecteur.html -text
prive/ajax_selecteur_fonctions.php -text
prive/echafaudage/contenu/objet.html -text prive/echafaudage/contenu/objet.html -text
prive/echafaudage/contenu/objet_edit.html -text prive/echafaudage/contenu/objet_edit.html -text
prive/echafaudage/contenu/objet_edit.sans_rubrique.html -text prive/echafaudage/contenu/objet_edit.sans_rubrique.html -text
......
[(#REM)
Squelette
(c) xxx
Distribue sous licence GPL
][(#HTTP_HEADER{Content-type: text/javascript[; charset=(#CHARSET)]})
]#CACHE{3600}[(#ENV{ref}|picker_identifie_id_rapide{#ENV{objets}})]
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('formulaires/selecteur/generique_fonctions');
?>
...@@ -2,25 +2,25 @@ ...@@ -2,25 +2,25 @@
[(#REM) Afficher un bouton ajax Modifier a la premiere fois ] [(#REM) Afficher un bouton ajax Modifier a la premiere fois ]
[(#ENV{picker,''}|non) [(#ENV{picker,''}|non)
<div class='picker_bouton'>&#91;<a href='[(#SELF|parametre_url{picker,1})]' class='ajax'>#GET{bouton_modif}</a>&#93;</div> <div class='picker_bouton'><a href='[(#SELF|parametre_url{picker,1})]' class="ajax nohistory">#GET{bouton_modif}</a></div>
] ]
[(#REM) Afficher un bouton Fermer/Modifier ensuite ] [(#REM) Afficher un bouton Fermer/Modifier ensuite ]
[(#ENV{picker,''}|oui) [(#ENV{picker,''}|oui)
<div class='picker_bouton'> <div class="picker_bouton">
&#91;<a <a
class='close' class="close"
href='[(#SELF|parametre_url{picker,0})]' href="[(#SELF|parametre_url{picker,0})]"
onclick="jQuery(this).parent().picker_toggle();return false;" onclick="jQuery(this).parent().picker_toggle();return false;"
><:bouton_fermer:></a><a ><:bouton_fermer:></a><a
class='edit' class="edit"
href='[(#SELF|parametre_url{picker,1})]' href="[(#SELF|parametre_url{picker,1})]"
onclick="jQuery(this).parent().picker_toggle();return false;" onclick="jQuery(this).parent().picker_toggle();return false;"
style='display:none;'>#GET{bouton_modif}</a>&#93; style="display:none;">#GET{bouton_modif}</a>
</div> </div>
[(#REM) et enfin le navigateur ------] [(#REM) et enfin le navigateur (et l'ajout rapide) ------]
<div class='browser'> <div class="browser">
<div class="choix choix_rapide"> <div class="choix choix_rapide">
<label for="picker_rapide_#ENV{name}"><:label_ajout_id_rapide:></label> <label for="picker_rapide_#ENV{name}"><:label_ajout_id_rapide:></label>
<input type="text" value="" id="picker_rapide_#ENV{name}" size="10" /> <input type="text" value="" id="picker_rapide_#ENV{name}" size="10" />
...@@ -31,9 +31,8 @@ ...@@ -31,9 +31,8 @@
jQuery.ajax({ jQuery.ajax({
dataType: 'json', dataType: 'json',
url: '[(#URL_PAGE{ajax_selecteur})]', url: '[(#URL_PAGE{ajax_selecteur})]',
data: { data: {
rubriques: '#ENV{rubriques}', objets:[(#ENV{objets/selectionner}|json_encode|sinon{\[\]}),]
articles: '#ENV{articles}',
ref: jQuery('#picker_rapide_#ENV{name}').attr('value') ref: jQuery('#picker_rapide_#ENV{name}').attr('value')
}, },
success: function(r, statut, xhr){ success: function(r, statut, xhr){
...@@ -62,6 +61,8 @@ ...@@ -62,6 +61,8 @@
[(#ENV{objet}|=={racine}|ou{#ENV{id_objet}|=={0}}|non) [(#ENV{objet}|=={racine}|ou{#ENV{id_objet}|=={0}}|non)
[(#SET{skel, [(#ENV{objet}|table_objet)]})] [(#SET{skel, [(#ENV{objet}|table_objet)]})]
] ]
<div class="navigateur">
<INCLURE{fond=formulaires/selecteur/hierarchie-#GET{skel}, env}> <INCLURE{fond=formulaires/selecteur/hierarchie-#GET{skel}, env}>
</div>
</div> </div>
] ]
#SET{img_unpick, #CHEMIN_IMAGE{supprimer-12.png}} #SET{img_unpick, #CHEMIN_IMAGE{supprimer-12.png}}
<script type='text/javascript'>var identifiant_selecteur = 'selecteur_#ENV{name}'; var img_unpick='#GET{img_unpick}';</script> [(#SET{label_supprimer, <:lien_supprimer:>})]
<script type='text/javascript'>var identifiant_selecteur = 'selecteur_#ENV{name}'; var img_unpick='#GET{img_unpick}'; var selecteur_label_supprimer='#GET{label_supprimer}';</script>
<script type='text/javascript' src='#CHEMIN{formulaires/selecteur/jquery.picker.js}'></script> <script type='text/javascript' src='#CHEMIN{formulaires/selecteur/jquery.picker.js}'></script>
[(#REM) [(#REM)
...@@ -18,7 +19,8 @@ afficher la selection dans un ul class item_picked ...@@ -18,7 +19,8 @@ afficher la selection dans un ul class item_picked
[(#REM) On commence par chercher la liste des objets disposant d'un sélecteur ] [(#REM) On commence par chercher la liste des objets disposant d'un sélecteur ]
[(#SET{objets, [(#ENV{whitelist,#ARRAY}|selecteur_lister_objets{#ENV{blacklist,#ARRAY}})]})] [(#SET{objets, [(#ENV{whitelist,#ARRAY}|selecteur_lister_objets{#ENV{blacklist,#ARRAY}})]})]
<div id="selecteur_#ENV{name}"> [(#REM) S'il n'y a qu'un type d'objet affiché et sélectionnable, on ajoute une classe (on fait -1 car il y a toujours la racine dans "afficher" ]
<div id="selecteur_#ENV{name}" class="selecteur[ (#GET{objets/afficher}|count|moins{1}|=={1}|et{#GET{objets/selectionner}|count|=={1}})selecteur_type_unique]">
<ul class="item_picked[ (#ENV{select,''}|?{select})][ (#ENV{obligatoire}|?{obligatoire})]"> <ul class="item_picked[ (#ENV{select,''}|?{select})][ (#ENV{obligatoire}|?{obligatoire})]">
<BOUCLE_selected(POUR){tableau #ENV{selected}|picker_selected}> <BOUCLE_selected(POUR){tableau #ENV{selected}|picker_selected}>
...@@ -45,7 +47,7 @@ afficher la selection dans un ul class item_picked ...@@ -45,7 +47,7 @@ afficher la selection dans un ul class item_picked
#SET{id_objet, #ENV{id_objet,0}} #SET{id_objet, #ENV{id_objet,0}}
[(#REM) Attention si l'objet passé ne fait pas parti des objets adéquats, on va sur la racine ] [(#REM) Attention si l'objet passé ne fait pas parti des objets adéquats, on va sur la racine ]
[(#GET{objet}|table_objet|in_array{#GET{objets}|table_valeur{afficher}}|non) [(#GET{objet}|table_objet|in_array{#GET{objets/afficher}}|non)
#SET{objet, racine} #SET{objet, racine}
#SET{id_objet, 0} #SET{id_objet, 0}
] ]
......
...@@ -4,13 +4,23 @@ if (!defined('_ECRIRE_INC_VERSION')) return; ...@@ -4,13 +4,23 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
/* /*
* Fournit la liste des objets ayant un sélecteur * Fournit la liste des objets ayant un sélecteur
* Concrètement, va chercher tous les formulaires/selecteur/hierarchie-truc.html * Concrètement, va chercher tous les formulaires/selecteur/hierarchie-trucs.html
* Ensuite on ajoute les parents obligatoires éventuels * Ensuite on ajoute les parents obligatoires éventuels
*
* @param array $whitelist Liste blanche décrivant les objets à lister
* @param array $blacklist Liste noire décrivant les objets à ne pas lister
* @return array Retourne un tableau de deux entrées listant les objets à lister et les objets sélectionnables
* selectionner : tableau des objets que l'on pourra sélectionner (avec un +)
* afficher : tableau des objets à afficher (mais pas forcément sélectionnables)
*/ */
function selecteur_lister_objets($whitelist=array(), $blacklist=array()){ function selecteur_lister_objets($whitelist=array(), $blacklist=array()){
$liste = find_all_in_path('formulaires/selecteur/', 'hierarchie-[\w]+[.]html$'); static $liste_selecteurs, $liste_parents;
if (!$liste_selecteurs){
$liste_selecteurs = find_all_in_path('formulaires/selecteur/', 'hierarchie-[\w]+[.]html$');
}
$objets_selectionner = array(); $objets_selectionner = array();
foreach ($liste as $fichier=>$chemin){ foreach ($liste_selecteurs as $fichier=>$chemin){
$objets_selectionner[] = preg_replace('/^hierarchie-([\w]+)[.]html$/', '$1', $fichier); $objets_selectionner[] = preg_replace('/^hierarchie-([\w]+)[.]html$/', '$1', $fichier);
} }
...@@ -27,15 +37,18 @@ function selecteur_lister_objets($whitelist=array(), $blacklist=array()){ ...@@ -27,15 +37,18 @@ function selecteur_lister_objets($whitelist=array(), $blacklist=array()){
// Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner // Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner
$objets_afficher = $objets_selectionner; $objets_afficher = $objets_selectionner;
// Il faut alors chercher d'éventuels parents obligatoires :
// Il faut alors chercher d'éventuels parents obligatoires en plus :
// lister-trucs-bidules.html => on doit afficher des "trucs" pour trouver des "bidules" // lister-trucs-bidules.html => on doit afficher des "trucs" pour trouver des "bidules"
$liste = find_all_in_path('formulaires/selecteur/', 'lister-[\w]+-[\w]+[.]html$'); if (!$liste_parents){
foreach ($liste as $fichier=>$chemin){ $liste_parents = find_all_in_path('formulaires/selecteur/', 'lister-[\w]+-[\w]+[.]html$');
}
foreach ($liste_parents as $fichier=>$chemin){
preg_match('/^lister-([\w]+)-([\w]+)[.]html$/', $fichier, $captures); preg_match('/^lister-([\w]+)-([\w]+)[.]html$/', $fichier, $captures);
$parent = $captures[1]; $parent = $captures[1];
$type = $captures[2]; $type = $captures[2];
// Si le type fait partie de ce qu'on veut sélectionner alors on ajoute le parent à l'affichage // Si le type fait partie de ce qu'on doit afficher alors on ajoute aussi le parent à l'affichage
if (in_array($type, $objets_selectionner)){ if (in_array($type, $objets_afficher)){
$objets_afficher[] = $parent; $objets_afficher[] = $parent;
} }
} }
...@@ -85,20 +98,49 @@ function picker_selected($selected, $type=''){ ...@@ -85,20 +98,49 @@ function picker_selected($selected, $type=''){
return $select; return $select;
} }
function picker_identifie_id_rapide($ref,$rubriques=0,$articles=0){ /*
include_spip("inc/json"); * Récupère des informations sur un objet pour pouvoir l'ajouter aux éléments sélectionnés
include_spip("inc/lien"); *
if (!($match = typer_raccourci($ref))) * @param string $ref Référence de l'objet à chercher, de la forme "type|id", par exemple "rubrique|123".
* @param mixed $rubriques_ou_objets Soit un booléen (pouvant être une chaîne vide aussi) indiquant que les rubriques sont sélectionnables soit un tableau complet des objets sélectionnables.
* @param bool $articles Booléen indiquant si les articles sont sélectionnables
*/
function picker_identifie_id_rapide($ref, $rubriques_ou_objets=false, $articles=false){
include_spip('inc/json');
include_spip('inc/lien');
// On construit un tableau des objets sélectionnables suivant les paramètres
$objets = array();
if ($rubriques_ou_objets and is_array($rubriques_ou_objets)){
$objets = $rubriques_ou_objets;
}
else{
if ($rubriques_ou_objets){ $objets[] = 'rubriques'; }
if ($articles){ $objets[] = 'articles'; }
}
// Si la référence ne correspond à rien, c'est fini
if (!($match = typer_raccourci($ref))){
return json_export(false); return json_export(false);
}
// Sinon on récupère les infos utiles
@list($type,,$id,,,,) = $match; @list($type,,$id,,,,) = $match;
if (!in_array($type,array($rubriques?'rubrique':'x',$articles?'article':'x')))
// On regarde si le type trouvé fait partie des objets sélectionnables
if (!in_array(table_objet($type), $objets)){
return json_export(false); return json_export(false);
$table_sql = table_objet_sql($type); }
$id_table_objet = id_table_objet($type);
if (!$titre = sql_getfetsel('titre',$table_sql,"$id_table_objet=".intval($id))) // Maintenant que tout est bon, on cherche les informations sur cet objet
include_spip('inc/filtres');
if (!$titre = generer_info_entite($id, $type, 'titre')){
return json_export(false); return json_export(false);
$titre = attribut_html(extraire_multi($titre)); }
return json_export(array('type'=>$type,'id'=>"$type|$id",'titre'=>$titre));
// On simplifie le texte
$titre = attribut_html($titre);
return json_export(array('type' => $type, 'id' => "$type|$id", 'titre' => $titre));
} }
?> ?>
<BOUCLE_art(ARTICLES){tout}{id_article=#ENV{id_objet}}{statut?}> <BOUCLE_art(ARTICLES){tout}{id_article=#ENV{id_objet}}{statut?}>
<div class="chemin"> <div class="chemin">
<a href="[(#SELF|parametre_url{objet,racine}|parametre_url{id_objet,0})]" class="ajax"><:info_racine_site:></a> <a href="[(#SELF|parametre_url{objet,racine}|parametre_url{id_objet,0})]" class="ajax nohistory"><:info_racine_site:></a><span class="sep divider">
<BOUCLE_chemin(HIERARCHIE){id_rubrique}> &gt; <a href="[(#SELF|parametre_url{id_objet,#ID_RUBRIQUE})]" class="ajax">#TITRE</a></BOUCLE_chemin> &gt; <strong class="on">#TITRE</strong> &gt; </span><BOUCLE_chemin(HIERARCHIE){id_rubrique}><a href="[(#SELF|parametre_url{id_objet,#ID_RUBRIQUE})]" class="ajax nohistory">#TITRE</a><span class="sep divider">
&gt; </span></BOUCLE_chemin><h3 class="on">#TITRE</h3>
</div> </div>
<B_contenu> <div class="liste">
[(#REM) afficher la racine si la profondeur le permet]
<BOUCLE_test_racine(CONDITION){si (#_contenu:GRAND_TOTAL|<{#_contenu:TOTAL_BOUCLE}|oui)}>
<div class="frame[ total_(#_contenu:GRAND_TOTAL|max{#_contenu:TOTAL_BOUCLE|moins{1}})] frame_0">
<h2>
[(#ENV{racine}|oui)
<a href="#" onclick="jQuery(this).item_pick('racine|0','#ENV{name,id_item}','<:info_racine_site:>','racine');return false;">
<img class="add" src="#CHEMIN_IMAGE{ajouter-16.png}" alt="ajouter" width="16" height="16" />
</a>
]
<:info_racine_site:>
</h2>
#INCLURE{fond=formulaires/selecteur/lister, quoi=racine, env}
</div>
</BOUCLE_test_racine>
<BOUCLE_contenu(HIERARCHIE){id_rubrique}{tout}{n-4,4}>
<div class="frame[ total_(#GRAND_TOTAL|min{#TOTAL_BOUCLE|moins{1}})][ frame_(#COMPTEUR_BOUCLE|moins{#GRAND_TOTAL|plus{1}|max{#TOTAL_BOUCLE}}|plus{#TOTAL_BOUCLE})]">
<a href="[(#SELF|parametre_url{id_objet,#ID_PARENT|?{#ID_PARENT,0}})]" class="frame_close ajax"><img src="#CHEMIN_IMAGE{fermer-16}" alt="fermer" width="16" height="16" /></a>
<h2><a class="ajax" href="[(#SELF|parametre_url{id_objet,#ID_RUBRIQUE})]">#TITRE</a></h2>
#INCLURE{fond=formulaires/selecteur/lister, quoi=rubriques, id_rubrique, env} #INCLURE{fond=formulaires/selecteur/lister, quoi=rubriques, id_rubrique, env}
</div> </div>
</BOUCLE_contenu>
</BOUCLE_art> </BOUCLE_art>
<div class="chemin"> <div class="chemin">
<strong class="on"><:info_racine_site:></strong> <h3 class="on"><:info_racine_site:></h3>
</div> </div>
<div class="frame total_0 frame_0"> <div class="liste">
<h2>
[(#ENV{racine}|oui)
<a href="#" onclick="jQuery(this).item_pick('racine|0','#ENV{name,id_item}','<:info_racine_site:>','racine');return false;">
<img class="add" src="#CHEMIN_IMAGE{ajouter-16.png}" alt="ajouter" width="16" height="16" />
</a>
]
<:info_racine_site:>
</h2>
#INCLURE{fond=formulaires/selecteur/lister, quoi=racine, env} #INCLURE{fond=formulaires/selecteur/lister, quoi=racine, env}
</div> </div>
<BOUCLE_rub(RUBRIQUES){tout}{id_rubrique=#ENV{id_objet}}{statut?}> <BOUCLE_rub(RUBRIQUES){tout}{id_rubrique=#ENV{id_objet}}{statut?}>
<div class="chemin"> <div class="chemin">
<a href="[(#SELF|parametre_url{objet,racine}|parametre_url{id_objet,0})]" class="ajax"><:info_racine_site:></a> <a href="[(#SELF|parametre_url{objet,racine}|parametre_url{id_objet,0})]" class="ajax nohistory"><:info_racine_site:></a><span class="sep divider">
<BOUCLE_chemin(HIERARCHIE){id_rubrique}> &gt; <a href="[(#SELF|parametre_url{id_objet,#ID_RUBRIQUE})]" class="ajax">#TITRE</a></BOUCLE_chemin> &gt; <strong class="on">#TITRE</strong> &gt; </span><BOUCLE_chemin(HIERARCHIE){id_rubrique}><a href="[(#SELF|parametre_url{id_objet,#ID_RUBRIQUE})]" class="ajax nohistory">#TITRE</a><span class="sep divider">
&gt; </span></BOUCLE_chemin><h3 class="on">#TITRE</h3>
</div> </div>
<B_contenu> <div class="liste">
[(#REM) afficher la racine si la profondeur le permet]
<BOUCLE_test_racine(CONDITION){si (#_contenu:GRAND_TOTAL|<{#_contenu:TOTAL_BOUCLE}|oui)}>
<div class="frame[ total_(#_contenu:GRAND_TOTAL|max{#_contenu:TOTAL_BOUCLE|moins{1}})] frame_0">
<h2>
[(#ENV{racine}|oui)
<a href="#" onclick="jQuery(this).item_pick('racine|0','#ENV{name,id_item}','<:info_racine_site:>','racine');return false;">
<img class="add" src="#CHEMIN_IMAGE{ajouter-16.png}" alt="ajouter" width="16" height="16" />
</a>
]
<:info_racine_site:>
</h2>
#INCLURE{fond=formulaires/selecteur/lister, quoi=racine, env}
</div>
</BOUCLE_test_racine>
<BOUCLE_contenu(HIERARCHIE){id_rubrique}{tout}{n-4,4}>
<div class="frame[ total_(#GRAND_TOTAL|min{#TOTAL_BOUCLE|moins{1}})][ frame_(#COMPTEUR_BOUCLE|moins{#GRAND_TOTAL|plus{1}|max{#TOTAL_BOUCLE}}|plus{#TOTAL_BOUCLE})]">
<a href="[(#SELF|parametre_url{id_objet,#ID_PARENT|?{#ID_PARENT,0}})]" class="frame_close ajax"><img src="#CHEMIN_IMAGE{fermer-16}" alt="fermer" width="16" height="16" /></a>
<h2><a class="ajax" href="[(#SELF|parametre_url{id_objet,#ID_RUBRIQUE})]">#TITRE</a></h2>
#INCLURE{fond=formulaires/selecteur/lister, quoi=rubriques, id_rubrique, env} #INCLURE{fond=formulaires/selecteur/lister, quoi=rubriques, id_rubrique, env}
</div> </div>
</BOUCLE_contenu>
</BOUCLE_rub> </BOUCLE_rub>
...@@ -44,6 +44,7 @@ item_picked et picker doivent seulement etre voisins ...@@ -44,6 +44,7 @@ item_picked et picker doivent seulement etre voisins
} }
jQuery.fn.item_pick = function(id_item,name,title,type){ jQuery.fn.item_pick = function(id_item,name,title,type){
var label_supprimer = (typeof selecteur_label_supprimer != 'undefined') ? selecteur_label_supprimer : 'del';
var picker = this.parents('.item_picker'); var picker = this.parents('.item_picker');
var picked = picker.siblings('ul.item_picked'); var picked = picker.siblings('ul.item_picked');
if (!picked.length) { if (!picked.length) {
...@@ -51,7 +52,7 @@ item_picked et picker doivent seulement etre voisins ...@@ -51,7 +52,7 @@ item_picked et picker doivent seulement etre voisins
picked = picker.siblings('ul.item_picked'); picked = picker.siblings('ul.item_picked');
} }
var select = picked.is('.select'); var select = picked.is('.select');
var obligatoire = picked.is('obligatoire'); var obligatoire = picked.is('.obligatoire');
if (select) if (select)
picked.html(''); picked.html('');
else else
...@@ -65,8 +66,8 @@ item_picked et picker doivent seulement etre voisins ...@@ -65,8 +66,8 @@ item_picked et picker doivent seulement etre voisins
picked.append('<li class="last on '+type+'">' picked.append('<li class="last on '+type+'">'
+'<input type="hidden" name="'+name+'[]" value="'+id_item+'"/>' +'<input type="hidden" name="'+name+'[]" value="'+id_item+'"/>'
+ title + title
+((select&&obligatoire)?"":" <a href='#' onclick='jQuery(this).item_unpick();return false;'>" +((select&&obligatoire)?"":" <a title='"+label_supprimer+"' href='#' onclick='jQuery(this).item_unpick();return false;'>"
+"<img src='"+img_unpick+"' /></a>" +"<img alt='"+label_supprimer+"' src='"+img_unpick+"' /></a>"
) )
+'<span class="sep">, </span></li>').removeClass('changing').stopAnimeajax(); +'<span class="sep">, </span></li>').removeClass('changing').stopAnimeajax();
// masquer le selecteur apres un pick // masquer le selecteur apres un pick
......
...@@ -4,16 +4,15 @@ ...@@ -4,16 +4,15 @@
<ul class="items"> <ul class="items">
<BOUCLE_enfants(ARTICLES){id_rubrique<=0}{statut?}{pagination 100 #GET{p}}{par num titre, titre}> <BOUCLE_enfants(ARTICLES){id_rubrique<=0}{statut?}{pagination 100 #GET{p}}{par num titre, titre}>
<li class="article"> <li class="article">
[(#ENV{bouton_selectionner}|oui)<a <a
class="ouvrir ajax nohistory"
href="[(#SELF|parametre_url{objet,article}|parametre_url{id_objet,#ID_ARTICLE})]"
>#TITRE</a>[(#ENV{bouton_selectionner}|oui)<a
title="<:bouton_choisir:> : [(#TITRE|attribut_html|couper{80})]"
class="choisir"
href="#" href="#"
onclick="jQuery(this).item_pick('article|#ID_ARTICLE','#ENV{name,id_item}','#TITRE','article');return false;" onclick="jQuery(this).item_pick('article|#ID_ARTICLE','#ENV{name,id_item}','#TITRE','article');return false;"
><img ><:bouton_choisir:></a>]
class="add"
src="#CHEMIN_IMAGE{ajouter-16.png}"
alt="ajouter"
width="16"
height="16"
/></a>]#TITRE
</li> </li>
</BOUCLE_enfants> </BOUCLE_enfants>
</ul> </ul>
......
...@@ -4,19 +4,15 @@ ...@@ -4,19 +4,15 @@
<ul class="items"> <ul class="items">
<BOUCLE_enfants(RUBRIQUES){id_parent=0}{statut?}{id_secteur?}{pagination 100 #GET{p}}{par num titre, titre}> <BOUCLE_enfants(RUBRIQUES){id_parent=0}{statut?}{id_secteur?}{pagination 100 #GET{p}}{par num titre, titre}>
<li class="rubrique"> <li class="rubrique">
[(#ENV{bouton_selectionner}|oui)<a <a
class="ouvrir ajax nohistory"
href="[(#SELF|parametre_url{objet,rubrique}|parametre_url{id_objet,#ID_RUBRIQUE})]"
>#TITRE</a>[(#ENV{bouton_selectionner}|oui)<a
title="<:bouton_choisir:> : [(#TITRE|attribut_html|couper{80})]"
class="choisir"
href="#" href="#"
onclick="jQuery(this).item_pick('rubrique|#ID_RUBRIQUE','#ENV{name,id_item}','#TITRE','rubrique');return false;" onclick="jQuery(this).item_pick('rubrique|#ID_RUBRIQUE','#ENV{name,id_item}','#TITRE','rubrique');return false;"
><img ><:bouton_choisir:></a>]
class="add"
src="#CHEMIN_IMAGE{ajouter-16.png}"
alt="ajouter"
width="16"
height="16"
/></a>]#TITRE<a
class="ajax"
href="[(#SELF|parametre_url{objet,rubrique}|parametre_url{id_objet,#ID_RUBRIQUE})]"><img
class="ouvrir" src="#CHEMIN_IMAGE{fleche-droite-16.png}" alt="" /></a>
</li> </li>
</BOUCLE_enfants> </BOUCLE_enfants>
</ul> </ul>
......
...@@ -4,16 +4,15 @@ ...@@ -4,16 +4,15 @@
<ul class="items"> <ul class="items">
<BOUCLE_enfants(ARTICLES){id_rubrique}{statut?}{pagination 100 #GET{p}}{par num titre, titre}> <BOUCLE_enfants(ARTICLES){id_rubrique}{statut?}{pagination 100 #GET{p}}{par num titre, titre}>
<li class="article"> <li class="article">
[(#ENV{bouton_selectionner}|oui)<a <a
class="ouvrir ajax nohistory"
href="[(#SELF|parametre_url{objet,article}|parametre_url{id_objet,#ID_ARTICLE})]"
>#TITRE</a>[(#ENV{bouton_selectionner}|oui)<a
title="<:bouton_choisir:> : [(#TITRE|attribut_html|couper{80})]"
class="choisir"
href="#" href="#"
onclick="jQuery(this).item_pick('article|#ID_ARTICLE','#ENV{name,id_item}','#TITRE','article');return false;" onclick="jQuery(this).item_pick('article|#ID_ARTICLE','#ENV{name,id_item}','#TITRE','article');return false;"
><img ><:bouton_choisir:></a>]
class="add"
src="#CHEMIN_IMAGE{ajouter-16.png}"
alt="ajouter"
width="16"
height="16"
/></a>]#TITRE
</li> </li>
</BOUCLE_enfants> </BOUCLE_enfants>
</ul> </ul>
......
...@@ -4,19 +4,15 @@ ...@@ -4,19 +4,15 @@
<ul class="items"> <ul class="items">
<BOUCLE_enfants(RUBRIQUES){id_parent=#ENV{id_rubrique}}{statut?}{id_secteur?}{pagination 100 #GET{p}}{par num titre, titre}> <BOUCLE_enfants(RUBRIQUES){id_parent=#ENV{id_rubrique}}{statut?}{id_secteur?}{pagination 100 #GET{p}}{par num titre, titre}>
<li class="rubrique"> <li class="rubrique">
[(#ENV{bouton_selectionner}|oui)<a <a
class="ouvrir ajax nohistory"
href="[(#SELF|parametre_url{objet,rubrique}|parametre_url{id_objet,#ID_RUBRIQUE})]"
>#TITRE</a>[(#ENV{bouton_selectionner}|oui)<a
title="<:bouton_choisir:> : [(#TITRE|attribut_html|couper{80})]"
class="choisir"
href="#" href="#"
onclick="jQuery(this).item_pick('rubrique|#ID_RUBRIQUE','#ENV{name,id_item}','#TITRE','rubrique');return false;" onclick="jQuery(this).item_pick('rubrique|#ID_RUBRIQUE','#ENV{name,id_item}','#TITRE','rubrique');return false;"
><img ><:bouton_choisir:></a>]
class="add"
src="#CHEMIN_IMAGE{ajouter-16.png}"
alt="ajouter"
width="16"
height="16"
/></a>]#TITRE<a
class="ajax"
href="[(#SELF|parametre_url{objet,rubrique}|parametre_url{id_objet,#ID_RUBRIQUE})]"><img
class="ouvrir" src="#CHEMIN_IMAGE{fleche-droite-16.png}" alt="" /></a>
</li> </li>
</BOUCLE_enfants> </BOUCLE_enfants>
</ul> </ul>
......
<BOUCLE_objets(POUR){tableau #ENV{objets}|table_valeur{afficher}}> [(#ENV{quoi}|in_array{#ENV{objets/selectionner}}|ou{#ENV{quoi}|=={racine}|et{#ENV{racine}|oui}})
[(#SET{titre,[(#ENV{quoi}|=={racine}|?{<:info_racine_site:>,#INFO_TITRE{#ENV{quoi},#ENV{id_objet}}})]})]
<a
href="#"
class="choisir_ici"
title="<:bouton_choisir:> : #GET{titre}"
onclick="jQuery(this).item_pick('#ENV{quoi}|#ENV{id_objet}','#ENV{name,id_item}','#GET{titre}','#ENV{quoi}');return false;"
><span><:bouton_choisir:></span></a>
]
<BOUCLE_objets(POUR){tableau #ENV{objets/afficher}}>
[(#CHEMIN{formulaires/selecteur/lister-#ENV{quoi}-#VALEUR.html}|oui) [(#CHEMIN{formulaires/selecteur/lister-#ENV{quoi}-#VALEUR.html}|oui)
[(#SET{bouton_selectionner, [(#VALEUR|in_array{[(#ENV{objets}|table_valeur{selectionner})]}|?{' ',''})]})] #SET{bouton_selectionner, #VALEUR|in_array{#ENV{objets/selectionner}}|oui}
[[<strong>(#VALEUR|table_objet_sql|lister_tables_objets_sql|table_valeur{texte_objets}|_T)</strong>] [<div class="#VALEUR">[<h4 class="type_objet">(#VALEUR|table_objet_sql|lister_tables_objets_sql|table_valeur{texte_objets}|_T)</h4>]
(#INCLURE{fond=formulaires/selecteur/lister-#ENV{quoi}-#VALEUR, bouton_selectionner=#GET{bouton_selectionner}, env})] (#INCLURE{fond=formulaires/selecteur/lister-#ENV{quoi}-#VALEUR, bouton_selectionner=#GET{bouton_selectionner}, env})</div>]
] ]
</BOUCLE_objets> </BOUCLE_objets>
...@@ -55,25 +55,41 @@ div.rub-ouverte, a.rub-ouverte { padding-#GET{right}: 10px; background: url([(#C ...@@ -55,25 +55,41 @@ div.rub-ouverte, a.rub-ouverte { padding-#GET{right}: 10px; background: url([(#C
/* Les éléments propres à chaque objet */ /* Les éléments propres à chaque objet */
<BOUCLE_objets(POUR){tableau (#REM|lister_tables_objets_sql)}> <BOUCLE_objets(POUR){tableau (#REM|lister_tables_objets_sql)}>
[(#SET{petite_icone, [(#CHEMIN_IMAGE{#VALEUR{icone_objet}-12.png}|sinon{[(#CHEMIN_IMAGE{#VALEUR{icone_objet}-16.png}|image_reduire{12}|extraire_attribut{src})]})]})] [(#SET{petite_icone, [(#CHEMIN_IMAGE{#VALEUR{icone_objet}-12.png}|sinon{[(#CHEMIN_IMAGE{#VALEUR{icone_objet}-16.png}|image_reduire{12}|extraire_attribut{src})]})]})]
.item_picker .frame ul li.#VALEUR{type} {background:url(#GET{petite_icone}) no-repeat[ (#GET{left}) ]2px;}
ul.item_picked li.#VALEUR{type} {padding-#GET{left}:15px;background-image:url(#GET{petite_icone});} ul.item_picked li.#VALEUR{type} {padding-#GET{left}:15px;background-image:url(#GET{petite_icone});}
.item_picker .[(#VALEUR{table_objet})] .type_objet {padding-#GET{left}:15px; background:url(#GET{petite_icone}) no-repeat[ (#GET{left}) ]center;}
.item_picker .frame ul li.#VALEUR{type} {background:url(#GET{petite_icone}) no-repeat[ (#GET{left}) ]2px;}
</BOUCLE_objets> </BOUCLE_objets>
/* Styles des éléments déjà sélectionnés */
ul.item_picked,fieldset ul.item_picked {list-style:none;margin:0;padding:0;float:left;} ul.item_picked,fieldset ul.item_picked {list-style:none;margin:0;padding:0;float:left;}
ul.item_picked li {margin:0 2px 2px;padding:2px;background:#eee;border:1px solid #GET{claire};float:#GET{left};clear:none;background-repeat:no-repeat;background-position: [(#GET{left}) ]center;} ul.item_picked li {margin:0 2px 2px;padding:2px;background:#eee;border:1px solid #GET{claire};float:#GET{left};clear:none;background-repeat:no-repeat;background-position: [(#GET{left}) ]center;}
ul.item_picked li span.sep {display:none;} ul.item_picked li span.sep {display:none;}
ul.item_picked li label {margin:0;display:inline;float:none;} ul.item_picked li label {margin:0;display:inline;float:none;}
.js ul.item_picked li .checkbox {display: none;} .js ul.item_picked li .checkbox {display: none;}
ul.item_picked.select li {padding:2px 0;border:0;font-weight:bold;background:none;float:none;} ul.item_picked.select li {padding:2px 0;border:0;font-weight:bold;background:none;float:none;}
ul.item_picked.select ul > li {float:#GET{left};} ul.item_picked.select ul > li {float:#GET{left};}
ul.item_picked.changing {} ul.item_picked.changing {}
/* Le bouton pour ouvrir le sélecteur */
.picker_bouton {float:#GET{right};clear:both;} .picker_bouton {float:#GET{right};clear:both;}
/* Styles de la partie contenant le sélecteur */
.item_picker {clear:#GET{left};font-size:0.95em;} .item_picker {clear:#GET{left};font-size:0.95em;}
.item_picker .chemin {border-bottom:1px solid #GET{claire};margin:0.5em 0 0.25em;clear:both;} .item_picker .navigateur{border:1px solid #GET{claire};padding:0.2em;width:20em;} /* pas trop large pour une meilleure lecture */
.item_picker .chemin {background:#GET{claire}; margin:0 0 0.25em 0;padding:0.3em;clear:both;}
.item_picker .chemin .on {margin:0;}
.item_picker a.choisir_ici {display:block;text-align:center;margin:0.2em 0;}
.item_picker a.choisir_ici span{padding-#GET{left}:18px;background:transparent url('#CHEMIN_IMAGE{ajouter-16.png}') no-repeat [ (#GET{left}) ] center;}
.item_picker .liste {margin:0;max-height:300px;overflow:auto;}
.item_picker .liste .type_objet {margin:0;}
.selecteur_type_unique .item_picker .liste .type_objet{display:none;}
.item_picker .liste ul {list-style:none;margin:0;padding:0;}
.item_picker .liste li {display:block;clear:both;line-height:1.1em;list-style:none;margin:0;padding:0;position:relative;}
.item_picker .liste li:hover {background-color:[#(#GET{claire}|couleur_eclaircir)];}
.item_picker .liste a.ouvrir {color:black;text-decoration:none;display:block;line-height:16px;margin-#GET{right}:20px;padding:0.3em 0;padding-#GET{left}:2px;padding-#GET{right}:20px;background:transparent url('#CHEMIN_IMAGE{fleche-droite-16.png}') no-repeat [ (#GET{right}) ] 0.3em;}
.item_picker .liste a.choisir {display:block;width:16px;height:16px;position:absolute;#GET{right}:0;top:0;padding:0.3em 2px;text-indent:-10000px;background:url('#CHEMIN_IMAGE{ajouter-16.png}') no-repeat center center;}
.item_picker .liste a:hover,.item_picker .liste a:focus {background-color:#GET{claire};}
.item_picker .frame {background:#fff;border:1px solid #GET{foncee};width:159px;height:400px;float:#GET{left};overflow:auto;position:relative;} .item_picker .frame {background:#fff;border:1px solid #GET{foncee};width:159px;height:400px;float:#GET{left};overflow:auto;position:relative;}
.cadre .cadre_padding .item_picker .frame {width:153px;} .cadre .cadre_padding .item_picker .frame {width:153px;}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter