Browse Source

debut d'interface auteur et #FORMULAIRE_EDITER_LIENS{xxx} generique reposant sur deux vues prive/listes/xxx_lies et prive/listes_xxx_associer

il suffit de decomenter la ligne dans inc/editer_auteur pour tester
svn/root/tags/spip-3.0.0-alpha1
Cerdic 11 years ago
parent
commit
ab60fb432a
  1. 7
      .gitattributes
  2. 6
      ecrire/inc/editer_auteurs.php
  3. 3
      prive/editer/liens.html
  4. 44
      prive/formulaires/editer_liens.html
  5. 69
      prive/formulaires/editer_liens.php
  6. 56
      prive/listes/auteurs_associer.html
  7. 15
      prive/listes/auteurs_associer_fonctions.php
  8. 4
      prive/listes/auteurs_fonctions.php
  9. 44
      prive/listes/auteurs_lies.html
  10. 15
      prive/listes/auteurs_lies_fonctions.php
  11. 10
      prive/style_prive.html
  12. 6
      prive/style_prive_formulaires.html
  13. 8
      prive/style_prive_plugins.html

7
.gitattributes

@ -334,6 +334,7 @@ prive/contenu/rubrique.html -text
prive/editer/article.html -text
prive/editer/auteur.html -text
prive/editer/dater.html -text
prive/editer/liens.html -text
prive/editer/logo.html -text
prive/editer/rediriger_article.html -text
prive/editer/rubrique.html -text
@ -384,6 +385,8 @@ prive/formulaires/editer_article.html -text
prive/formulaires/editer_article.php -text
prive/formulaires/editer_auteur.html -text
prive/formulaires/editer_auteur.php -text
prive/formulaires/editer_liens.html -text
prive/formulaires/editer_liens.php -text
prive/formulaires/editer_logo.html -text
prive/formulaires/editer_logo.php -text
prive/formulaires/editer_rubrique.html -text
@ -654,7 +657,11 @@ prive/javascript/pause.js -text
prive/javascript/sha256.js -text
prive/listes/articles.html -text
prive/listes/auteurs.html -text
prive/listes/auteurs_associer.html -text
prive/listes/auteurs_associer_fonctions.php -text
prive/listes/auteurs_fonctions.php -text
prive/listes/auteurs_lies.html -text
prive/listes/auteurs_lies_fonctions.php -text
prive/listes/rubriques.html -text
prive/listes/visiteurs.html -text
prive/listes/visiteurs_fonctions.php -text

6
ecrire/inc/editer_auteurs.php

@ -35,7 +35,11 @@ function inc_editer_auteurs_dist($type, $id, $flag, $cherche_auteur, $ids, $titr
$futurs = ajouter_auteurs_objet($type, $id, '',$script_edit_objet, $arg_ajax);
} else $futurs = '';
return editer_auteurs_objet($type, $id, $flag, $cherche_auteur, $ids, $aff_les_auteurs, $futurs, $dummy,$titre_boite,$script_edit_objet, $arg_ajax);
return
#recuperer_fond('prive/editer/liens',array('table_source'=>'auteurs','objet'=>$type,'id_objet'=>$id))
#.
editer_auteurs_objet($type, $id, $flag, $cherche_auteur, $ids, $aff_les_auteurs, $futurs, $dummy,$titre_boite,$script_edit_objet, $arg_ajax)
;
}
// http://doc.spip.org/@editer_auteurs_objet

3
prive/editer/liens.html

@ -0,0 +1,3 @@
<div class="ajax">
#FORMULAIRE_EDITER_LIENS{#ENV{table_source},#ENV{objet},#ENV{id_objet}}
</div>

44
prive/formulaires/editer_liens.html

@ -0,0 +1,44 @@
<div class="formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id}">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<input type="hidden" name="visible" value="#ENV{visible,0}" id="visible-#ENV{id}"/>
<p class='boutons'[(#ENV{_saisie_en_cours}|non)style="display:none;"]><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_changer:>' /></p>
<INCLURE{fond=prive/listes/#ENV{_vue_liee},env,ajax}>
[(#ENV{visible,0}|oui)
<div class="opened">
<h3 class="titrem">[(#VAL{titre_ajouter_un_}|concat{#ENV{objet_source}}|_T)]</h3>
<INCLURE{fond=prive/listes/#ENV{_vue_ajout},env,ajax}>
[(#AUTORISER{creer,#ENV{objet_source}}|oui)
[(#REM|generer_url_entite{#ENV{objet_source}}
|parametre_url{new,oui}
|parametre_url{associer,#ENV{objet}|concat{'|',#ENV{id_objet}}}
|icone_horizontale{<:creer_et_associer:>,#ENV{objet_source},new})]
]
<div class="changer">
&#91;<a href="#"
onclick="jQuery(this).parents('div.opened').hide('fast').siblings('.changer').show();jQuery('#visible-#ENV{id}').attr('value',0);return false;"
><:bouton_fermer:></a>&#93;
</div>
</div>
<div class="changer" style="display:none;">
&#91;<a href="#"
onclick="jQuery(this).parents('div.changer').hide('fast').siblings('.opened').show('fast');jQuery('#visible-#ENV{id}').attr('value',1);return false;"
><:bouton_changer:></a>&#93;
</div>
]
[(#ENV{visible,0}|non)
<div class="changer">
&#91;<button class="link" name="visible" value="1"><:bouton_changer:></button>&#93;
</div>
]
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
</div></form>
]
</div>

69
prive/formulaires/editer_liens.php

@ -0,0 +1,69 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* 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. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* #FORMULAIRE_EDITER_LIENS{auteurs,article,23}
*
* @param string $table_source
* table des objets associes, doit correspondre a une table xxx_liens
* @param string $objet
* objet auquel associer
* @param int $id_objet
* id_objet auquel associer
* @return array
*/
function formulaires_editer_liens_charger_dist($table_source,$objet,$id_objet){
$objet_source = objet_type($table_source);
$table_sql_source = table_objet_sql($objet_source);
// verifier existence de la table xxx_liens
include_spip('action/editer_liens');
if (!objet_associable($objet_source))
return false;
$valeurs = array(
'id'=>"$table_source-$objet-$id_objet", // identifiant unique pour les id du form
'_vue_liee' => $table_source."_lies",
'_vue_ajout' => $table_source."_associer",
'objet'=>$objet,
'id_objet'=>$id_objet,
'objet_source'=>$objet_source,
'recherche'=>'',
'visible'=>0,
);
return $valeurs;
}
function formulaires_editer_liens_traiter_dist($table_source,$objet,$id_objet){
if ($ajouter = _request('ajouter_lien')){
$ajouter_lien = charger_fonction('ajouter_lien','action');
foreach($ajouter as $lien=>$dummy)
$ajouter_lien($lien);
}
if ($supprimer = _request('supprimer_lien')){
$supprimer_lien = charger_fonction('supprimer_lien','action');
foreach($supprimer as $lien=>$dummy)
$supprimer_lien($lien);
}
$res = array('editable'=>true);
return $res;
}
?>

56
prive/listes/auteurs_associer.html

@ -0,0 +1,56 @@
[(#SET{defaut_tri,#ARRAY{
statut,1,
multi nom,1,
site,1,
compteur_articles,-1
}})
]
<BOUCLE_exclus(AUTEURS){tout}{id_objet}{objet}{doublons 1}{doublons 2} />
<B_liste_aut>
#SET{afficher_lettres,#TRI|=={'multi nom'}|oui}
#SET{debut,#ENV{debutauta,#EVAL{_request("debutauta");}}}
#ANCRE_PAGINATION
[<h3><:info_resultat_recherche:> &laquo;(#ENV{recherche})&raquo;</h3>]
<div class="liste-objets liste-objets-associer auteurs">
<table class='spip liste'>
[<caption><span class="caption"><strong>(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_auteur,info_nb_auteurs}})</strong>
<span class="recherche"><label for="recherche-#ENV{id}"><:info_rechercher_02:></label> <input type="text" class="recherche" name="recherche" id="recherche-#ENV{id}" value="#ENV{recherche}" /></span>
</span>
</caption>]
<thead>
<B_lettre><tr><td colspan="5"><p class='pagination'><BOUCLE_lettre(AUTEURS){doublons 1}{tout}{where?}{recherche?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
(#NOM**|extraire_multi|initiale|unique|oui)
[(#SELF|parametre_url{debutaut,@#ID_AUTEUR}|ancre_url{paginationaut}|afficher_initiale{[(#NOM**|extraire_multi|initiale)],#COMPTEUR_BOUCLE,#GET{debut},#ENV{nb,10}})]
]#SAUTER{#ENV{nb,10}|moins{#COMPTEUR_BOUCLE|=={1}|?{2,1}}}</BOUCLE_lettre>[
(#REM|afficher_initiale{#REM,#TOTAL_BOUCLE,#GET{debut},#ENV{nb,10}})
]</p></td></tr></B_lettre>
[<tr><td colspan="5"><p class='pagination'>(#PAGINATION{prive})</p></td></tr>]
<tr class='first_row'>
<th class='statut'>[(#TRI{statut,#CHEMIN{images/admin-12.gif}|balise_img{<:afficher_objets:info_statut|attribut_html:>},ajax})]</th>
<th class='nom'>[(#TRI{multi nom,<:info_nom:>,ajax})]</th>
<th class='email'>[(#TRI{email,<:email:>,ajax})]</th>
<th class='nombre'>[(#TRI{compteur_articles,<:info_articles:>,ajax})]</th>
<th class='action'>&nbsp;</th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_aut(AUTEURS){doublons 2}{tout}{where?}{recherche?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} auta}{!compteur_articles_filtres #ENV{filtre_statut_articles,"'poubelle'"}}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)]">
<td class='statut'>[(#ID_AUTEUR|puce_changement_statut{#STATUT,0,auteur})]</td>
<td class='nom[ (#NOM|non)vide]'>[(#LOGO_AUTEUR|image_reduire{20,20})]<a href="[(#ID_AUTEUR|generer_url_entite{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[(#RANG). ][(#NOM|sinon{<:texte_vide:>})]</a></td>
<td class='email'>[<a href='mailto:(#EMAIL)'>[(#EMAIL|couper{30})]</a>]</td>
<td class='nombre'>[(#COMPTEUR_ARTICLES|singulier_ou_pluriel{info_1_article,info_nb_articles})][<br /><span>(#PIPELINE{'compter_contributions_auteur',#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},data,#ARRAY{}}}|implode{'<br />'})</span>]</td>
<td class='action'><button class="button link" name="ajouter_lien[auteur-#ID_AUTEUR-#OBJET-#ID_OBJET]" value="+">[(#CHEMIN_IMAGE{ajouter-8.png}|balise_img{'+'}|concat{<:lien_ajouter_auteur:>})]</button></td>
</tr>
</BOUCLE_liste_aut>
</tbody>
</table>
[<p class='pagination'>(#PAGINATION{prive})</p>]
</div>
</B_liste_aut>
<div class="liste-objets auteurs">
<span class="caption"><strong>[(#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}})]</strong>
<span class="recherche"><label for="recherche-#ENV{id}"><:info_rechercher_02:></label> <input type="text" class="recherche" name="recherche" id="recherche-#ENV{id}" value="#ENV{recherche}" /></span>
</span>
</div>
<//B_liste_aut>

15
prive/listes/auteurs_associer_fonctions.php

@ -0,0 +1,15 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* 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. *
\***************************************************************************/
include_spip('prive/listes/auteurs_fonctions');
?>

4
prive/listes/auteurs_fonctions.php

@ -81,7 +81,7 @@ function afficher_initiale($url,$initiale,$compteur,$debut,$pas){
){
$newcompt = intval(floor(($compteur-1)/$pas)*$pas);
// si fin de la pagination et une seule entree, ne pas l'afficher, ca ne sert a rien
if (!$initiale AND !$url AND !$memo['entree']) return "";
if (!$initiale AND !$url AND !$memo['compteur']) $memo=null;
if ($memo){
$on = (($memo['compteur']<=$debut)
AND (
@ -92,6 +92,8 @@ function afficher_initiale($url,$initiale,$compteur,$debut,$pas){
if ($initiale)
$memo = array('entree'=>isset($memo['entree'])?$memo['entree']+1:0,'initiale'=>$initiale,'url'=>parametre_url($url,'i',$initiale),'compteur'=>$newcompt);
}
if (!$initiale AND !$url)
$memo=null;
return $res;
}

44
prive/listes/auteurs_lies.html

@ -0,0 +1,44 @@
[(#SET{defaut_tri,#ARRAY{
statut,1,
multi nom,1,
site,1,
compteur_articles,-1
}})
]<B_liste_aut>
#SET{afficher_lettres,#TRI|=={'multi nom'}|oui}
#SET{debut,#ENV{debutautl,#EVAL{_request("debutautl");}}}
#ANCRE_PAGINATION
<div class="liste-objets liste-objets-lies auteurs">
<table class='spip liste'>
[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_auteur,info_nb_auteurs}}) #AIDER{artauteur}</strong></caption>]
<thead>
<B_lettre><tr><td colspan="5"><p class='pagination'><BOUCLE_lettre(AUTEURS){tout}{id_objet?}{objet}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
(#NOM**|extraire_multi|initiale|unique|oui)
[(#SELF|parametre_url{debutaut,@#ID_AUTEUR}|ancre_url{paginationaut}|afficher_initiale{[(#NOM**|extraire_multi|initiale)],#COMPTEUR_BOUCLE,#GET{debut},#ENV{nb,10}})]
]#SAUTER{#ENV{nb,10}|moins{#COMPTEUR_BOUCLE|=={1}|?{2,1}}}</BOUCLE_lettre>[
(#REM|afficher_initiale{#REM,#TOTAL_BOUCLE,#GET{debut},#ENV{nb,10}})
]</p></td></tr></B_lettre>
[<tr><td colspan="5"><p class='pagination'>(#PAGINATION{prive})</p></td></tr>]
<tr class='first_row'>
<th class='statut'>[(#TRI{statut,#CHEMIN{images/admin-12.gif}|balise_img{<:afficher_objets:info_statut|attribut_html:>},ajax})]</th>
<th class='nom'>[(#TRI{multi nom,<:info_nom:>,ajax})]</th>
<th class='email'>[(#TRI{email,<:email:>,ajax})]</th>
<th class='nombre'>[(#TRI{compteur_articles,<:info_articles:>,ajax})]</th>
<th class='action'>&nbsp;</th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_aut(AUTEURS){tout}{id_objet?}{objet}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} autl}{!compteur_articles_filtres #ENV{filtre_statut_articles,"'poubelle'"}}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)]">
<td class='statut'>[(#ID_AUTEUR|puce_changement_statut{#STATUT,0,auteur})]</td>
<td class='nom[ (#NOM|non)vide]'>[(#LOGO_AUTEUR|image_reduire{20,20})]<a href="[(#ID_AUTEUR|generer_url_entite{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[(#RANG). ][(#NOM|sinon{<:texte_vide:>})]</a></td>
<td class='email'>[<a href='mailto:(#EMAIL)'>[(#EMAIL|couper{30})]</a>]</td>
<td class='nombre'>[(#COMPTEUR_ARTICLES|singulier_ou_pluriel{info_1_article,info_nb_articles})][<br /><span>(#PIPELINE{'compter_contributions_auteur',#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},data,#ARRAY{}}}|implode{'<br />'})</span>]</td>
<td class='action'><button class="button link" name="supprimer_lien[auteur-#ID_AUTEUR-#OBJET-#ID_OBJET]" value="X"><:lien_retirer_auteur:> [(#CHEMIN_IMAGE{supprimer-8.png}|balise_img{'X'})]</button></td>
</tr>
</BOUCLE_liste_aut>
</tbody>
</table>
[<p class='pagination'>(#PAGINATION{prive})</p>]
</div>
</B_liste_aut>

15
prive/listes/auteurs_lies_fonctions.php

@ -0,0 +1,15 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* 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. *
\***************************************************************************/
include_spip('prive/listes/auteurs_fonctions');
?>

10
prive/style_prive.html

@ -523,10 +523,12 @@ td.message, a.message { background: url([(#CHEMIN_IMAGE{m_envoi[(#GET{rtl})].gif
font-size:.95em;
border: 1px solid #dfdfdf;
}
.liste-objets-lies,.liste-objets-associer {margin:0 0 20px;}
.cadre .liste-objets{font-size:1em;}
.liste-objets .pagination {
margin-top:0; padding:1px 5px;
.liste-objets .pagination,.liste-objets p.pagination {
margin:0; padding:1px 5px;
background:#eee; border:none;
}
.liste-objets .pagination .separateur {color:#aaa;}
@ -556,7 +558,7 @@ td.message, a.message { background: url([(#CHEMIN_IMAGE{m_envoi[(#GET{rtl})].gif
.liste-objets tr td.secondaire {font-size:0.85em;}
.liste-objets tr td.principale {font-size:1.025em;}
.liste-objets tr td > span {font-size:0.85em;}
.liste-objets .bouton_action_post .submit {font-size:1em;}
.liste-objets .bouton_action_post .submit,.liste-objets .button {font-size:1em;}
.liste-objets .action a {color:inherit;}
.liste-objets.syndic_articles tr > .action {width: 50px;}
@ -570,6 +572,8 @@ td.message, a.message { background: url([(#CHEMIN_IMAGE{m_envoi[(#GET{rtl})].gif
.liste-objets.breves .caption {background-image:url(#CHEMIN_IMAGE{breve-24.gif});padding-#GET{left}:30px;}
.liste-objets.sites .caption {background-image:url(#CHEMIN_IMAGE{site-24.gif});padding-#GET{left}:30px;}
.liste-objets.syndic_articles .caption {background-image:url(#CHEMIN_IMAGE{site-24.gif});padding-#GET{left}:30px;}
.liste-objets.auteurs .caption {background-image:url(#CHEMIN_IMAGE{auteur-24.gif});padding-#GET{left}:30px;}
/* dans une colonne laterale, ne visualiser que l'info principale, le statut et l'id */
#navigation .liste-objets tr > .secondaire,

6
prive/style_prive_formulaires.html

@ -593,3 +593,9 @@ input[type="submit"] {
.formulaire_dater li {padding-bottom:0;padding-top:0;}
.formulaire_dater li label {font-weight: bold;text-transform: uppercase;padding-top:0;}
.formulaire_dater .affiche {font-weight: bold;text-transform: uppercase;}
/* editer_liens */
.formulaire_editer_liens .liste-objets-associer .caption span.recherche {float:#GET{right};margin-top:-3px;}
.formulaire_editer_liens .liste-objets-lies {margin-bottom: 0;}
.formulaire_editer_liens .changer {text-align:#GET{right};margin-top:0.5em;}

8
prive/style_prive_plugins.html

@ -62,10 +62,10 @@ ul.menu li .on {background-color:[#(#GET{claire}|couleur_eclaircir|couleur_eclai
/* les boutons action */
form.bouton_action_post, form.bouton_action_post div {display:inline;}
form.bouton_action_post.link button.submit, .formulaire_spip .boutons input.link,.formulaire_spip .boutons button.link {margin:0;font-weight:normal;}
form.bouton_action_post.link button.submit, .formulaire_spip .boutons input.link,.formulaire_spip button.link {margin:0;font-weight:normal;}
.formulaire_spip .boutons button {cursor:pointer;}
form.bouton_action_post.link button.submit, .formulaire_spip .boutons input.link,.formulaire_spip .boutons button.link {background:none;border:0;cursor:pointer;padding:0 0 1px;}
form.bouton_action_post.link button.submit:hover, .formulaire_spip .boutons input.link:hover,.formulaire_spip .boutons button.link:hover {border-bottom:1px solid;padding:0;}
.formulaire_spip button {cursor:pointer;}
form.bouton_action_post.link button.submit, .formulaire_spip .boutons input.link,.formulaire_spip button.link {background:none;border:0;cursor:pointer;padding:0 0 1px;}
form.bouton_action_post.link button.submit:hover, .formulaire_spip .boutons input.link:hover,.formulaire_spip button.link:hover {border-bottom:1px solid;padding:0;}
[(#INCLURE{fond=#VAL{prive/}|tous_les_fonds{/style_prive_plugin_}}{env}{couleur_claire}{couleur_foncee}{lang}{ltr})]
Loading…
Cancel
Save