Changeset 9857 in spip-zone


Ignore:
Timestamp:
Feb 23, 2007, 7:40:15 PM (13 years ago)
Author:
cedric@…
Message:

Complement d'interface generique avec les boites de liaison inter tables, et les vues donnees liees/donnees liantes sur chacune des extremités

Location:
_plugins_/_stable_/forms/forms_et_tables_1_9_1
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/exec/template/donnees_tous.html

    r9852 r9857  
    11#CACHE{0}
     2#SET{colonnes_sans_tri,'0,1'}<BOUCLE_form(FORMS){id_form}>#SET{documents,#DOCUMENTS|=={oui}|?{' '}}</BOUCLE_form>
    23<B_donnees>
    34<div class='verdana2'><p><div id="sorting"><div>Tri en cours, un instant...</div></div><div id="filter"></div></p></div><div style="clear:both">&nbsp;</div>
    4 #SET{colonnes_sans_tri,'0,1'}<BOUCLE_form(FORMS){id_form}>#SET{documents,#DOCUMENTS|=={oui}|?{' '}}</BOUCLE_form>
    55        <link rel="stylesheet" type="text/css" href="#EVAL{_DIR_PLUGIN_FORMS}img_pack/donnees_tous.css" />
    66        <script type="text/javascript" src="#EVAL{_DIR_PLUGIN_FORMS}javascript/jquery.tablesorter.dev.js"></script>
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/exec/template/tables_affichage.php

    r9846 r9857  
    241241                echo $liste;
    242242        }
     243
     244        list($out,$les_donnees,$nombre_donnees) = Forms_afficher_liste_donnees_liees(
     245                "donnee_liee",
     246                $id_donnee,
     247                "donnee",
     248                "forms_donnees_liantes",
     249                "forms_donnees_liantes",
     250                "id_donnee=$id_donnee",
     251                self());
     252        echo "<div id='forms_donnees_liantes'>$out</div>";
     253       
    243254        if ($GLOBALS['spip_version_code']>=1.9203)
    244255                echo fin_gauche();
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/inc/forms.php

    r9823 r9857  
    725725        return $returned;       
    726726}
     727
     728function Forms_afficher_liste_donnees_liees($type_source, $id, $type_lie, $script, $bloc_id, $arg_ajax, $retour){
     729        // article, donnee
     730        // donnee, donnee_liee
     731        // donnee_liee, donnee
     732        $lieeliante = ($type_source=='donnee_liee')?'liante':'liee';
     733        $linkable = $type_source!='donnee_liee';
     734       
     735        $out = "";
     736        $iid = intval($id);
     737
     738        $les_donnees = "0";
     739        $nombre_donnees = 0;
     740        $liste = array();
     741        $forms = array();
     742        $types = array();
     743        $prefixi18n = array();
     744       
     745        $champ_donnee_liee = "id_$type_lie";
     746        $champ_donnee_source = "id_$type_source";
     747        $table_liens = strncmp($type_source,"donnee",6)==0?"spip_forms_donnees_donnees":"spip_forms_donnees_{$type_source}s";
     748       
     749        $res = spip_query("SELECT l.$champ_donnee_liee FROM $table_liens AS l WHERE l.$champ_donnee_source="._q($iid));
     750        $nombre_donnees = $cpt = spip_num_rows($res);
     751        while ($row = spip_fetch_array($res,SPIP_NUM))  $les_donnees.=",".$row[0];
     752
     753        $tranches = ($cpt>1000)?2*_TRANCHES:_TRANCHES;
     754        $tmp_var = $bloc_id;
     755        $nb_aff = floor(1.5 * $tranches);
     756        if ($cpt > $nb_aff) {
     757                $nb_aff = $tranches;
     758                $tranches = afficher_tranches_requete($cpt, $tmp_var, generer_url_ecrire($script,$arg_ajax), $nb_aff);
     759        } else $tranches = '';
     760       
     761        $deb_aff = _request($tmp_var);
     762        $deb_aff = ($deb_aff !== NULL ? intval($deb_aff) : 0);
     763       
     764        $limit = (($deb_aff < 0) ? '' : " LIMIT $deb_aff, $nb_aff");   
     765       
     766        $res = spip_query(
     767        "SELECT dl.$champ_donnee_liee
     768        FROM $table_liens AS dl
     769        JOIN spip_forms_donnees AS d ON d.id_donnee=dl.$champ_donnee_liee
     770        WHERE dl.$champ_donnee_source="._q($iid)."
     771        ORDER BY d.id_form $limit");
     772        while ($row = spip_fetch_array($res)){
     773                list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($row[$champ_donnee_liee],true,$linkable);
     774                if (!count($t))
     775                        list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($row[$champ_donnee_liee], false,$linkable);
     776                if (count($t)){
     777                        $liste[$id_form][$row[$champ_donnee_liee]]=$t;
     778                        $forms[$id_form] = $titreform;
     779                        $types[$id_form] = $type_form;
     780                }
     781        }
     782        foreach($types as $type_form)
     783                $prefixi18n[$type_form] = forms_prefixi18n($type_form);
     784       
     785        if (count($liste) OR $tranches) {
     786                $out .= "<div class='liste liste-donnees'>";
     787                $out .= $tranches;
     788                $out .= "<table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>";
     789                $table = array();
     790                foreach($liste as $id_form=>$donnees){
     791                        $vals = array();
     792                        $vals[] = "";
     793                        $vals[] = "<a href='".generer_url_ecrire("donnees_tous","id_form=$id_form&retour=".urlencode($retour))."'>".$forms[$id_form]."</a>";
     794                        $vals[] = "";
     795                        $table[] = $vals;
     796                        foreach($donnees as $id_donnee=>$champs){
     797                                $vals = array();
     798                                $vals[] = $id_donnee;
     799                                $vals[] = "<a href='".generer_url_ecrire("donnees_edit","id_form=$id_form&id_donnee=$id_donnee&retour=".urlencode($retour))."'>"
     800                                        .implode(", ",$champs)."</a>";
     801                                $redirect = ancre_url((_DIR_RESTREINT?"":_DIR_RESTREINT_ABS).self(),'tables');
     802                                if ($lieeliante=='liee')
     803                                        $action = generer_action_auteur("forms_lier_donnees","$id,$type_source,retirer,$id_donnee",urlencode($redirect));
     804                                else
     805                                        $action = generer_action_auteur("forms_lier_donnees","$id_donnee,$type_lie,retirer,$id",urlencode($redirect));
     806                                $action = ancre_url($action,$bloc_id);
     807                                $redirajax = generer_url_ecrire($script,$arg_ajax);
     808                                $vals[] = "<a href='$action' rel='$redirajax' class='ajaxAction' >"
     809                                        . _T($prefixi18n[$types[$id_form]].":lien_retirer_donnee_$lieeliante")."&nbsp;". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'")
     810                                        . "</a>";
     811                                $table[] = $vals;
     812                        }
     813                }
     814                $largeurs = array('', '', '', '', '');
     815                $styles = array('arial11', 'arial11', 'arial2', 'arial11', 'arial11');
     816                $out .= afficher_liste($largeurs, $table, $styles, false);
     817       
     818                $out .= "</table></div>\n";
     819        }
     820        return array($out,$les_donnees,$nombre_donnees) ;
     821}
     822
     823function Forms_liste_decrit_donnee($id_donnee, $specifiant=true, $linkable=true){
     824        $t = array();$titreform="";
     825        if ($specifiant) $specifiant = "c.specifiant='oui' AND ";
     826        else $specifiant="";
     827        if ($linkable) $linkable = " AND f.linkable='oui'";
     828        else $linkable = "";
     829        $res2 = spip_query("SELECT c.titre,dc.valeur,f.titre AS titreform,f.id_form,f.type_form FROM spip_forms_donnees_champs AS dc
     830        JOIN spip_forms_donnees AS d ON d.id_donnee=dc.id_donnee
     831        JOIN spip_forms_champs AS c ON c.champ=dc.champ AND c.id_form=d.id_form
     832        JOIN spip_forms AS f ON f.id_form=d.id_form
     833        WHERE $specifiant dc.id_donnee="._q($id_donnee)."$linkable ORDER BY c.rang");
     834        while ($row2 = spip_fetch_array($res2)){
     835                $t[$row2['titre']] = $row2['valeur'];
     836                $titreform = $row2['titreform'];
     837                $id_form = $row2['id_form'];
     838                $type_form = $row2['type_form'];
     839        }
     840        return array($id_form,$titreform,$type_form,$t);
     841}
     842
    727843?>
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/inc/forms_lier_donnees.php

    r9852 r9857  
    119119
    120120function Forms_formulaire_objet_afficher_donnees($type,$id, $script, $type_table='table'){
    121         $out = "";
    122         $prefixi18n = forms_prefixi18n($type_table);
    123         $iid = intval($id);
    124 
    125         $les_donnees = array();
    126         $nombre_donnees = 0;
    127         $liste = array();
    128         $forms = array();
    129         $retour = self();
    130        
    131         $champ_donnee = 'id_donnee';
    132         if ($type == 'donnee')
    133                 $champ_donnee = 'id_donnee_liee';
    134         $res = spip_query("SELECT $champ_donnee FROM spip_forms_donnees_{$type}s AS d WHERE d.id_$type="._q($iid));
    135         $nombre_donnees = $cpt = spip_num_rows($res);
    136         while ($row = spip_fetch_array($res))   $les_donnees[] = $row[$champ_donnee];
    137 
    138         $tmp_var = "forms_lier_donnees-$id";
    139         $nb_aff = floor(1.5 * _TRANCHES);
    140         if ($cpt > $nb_aff) {
    141                 $nb_aff = _TRANCHES;
    142                 $tranches = afficher_tranches_requete($cpt, $tmp_var, generer_url_ecrire('forms_lier_donnees',"type=$type&id_$type=$id"), $nb_aff);
    143         } else $tranches = '';
    144        
    145         $deb_aff = _request($tmp_var);
    146         $deb_aff = ($deb_aff !== NULL ? intval($deb_aff) : 0);
    147        
    148         $limit = (($deb_aff < 0) ? '' : " LIMIT $deb_aff, $nb_aff");   
    149        
    150         $res = spip_query(
    151         "SELECT dl.$champ_donnee
    152         FROM spip_forms_donnees_{$type}s AS dl
    153         JOIN spip_forms_donnees AS d ON d.id_donnee=dl.$champ_donnee
    154         WHERE dl.id_$type="._q($iid)."
    155         ORDER BY d.id_form $limit");
    156         while ($row = spip_fetch_array($res)){
    157                 list($id_form,$titreform,$t) = Forms_liste_decrit_donnee($row[$champ_donnee]);
    158                 if (!count($t))
    159                         list($id_form,$titreform,$t) = Forms_liste_decrit_donnee($row[$champ_donnee], false);
    160                 if (count($t)){
    161                         $liste[$id_form][$row[$champ_donnee]]=$t;
    162                         $forms[$id_form] = $titreform;
    163                 }
    164         }
    165        
    166         if (count($liste) OR $tranches) {
    167                 $out .= "<div class='liste liste-donnees'>";
    168                 $out .= $tranches;
    169                 $out .= "<table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>";
    170                 $table = array();
    171                 foreach($liste as $id_form=>$donnees){
    172                         $vals = array();
    173                         $vals[] = "";
    174                         $vals[] = "<a href='".generer_url_ecrire("donnees_tous","id_form=$id_form&retour=".urlencode($retour))."'>".$forms[$id_form]."</a>";
    175                         $vals[] = "";
    176                         $table[] = $vals;
    177                         foreach($donnees as $id_donnee=>$champs){
    178                                 $vals = array();
    179                                 $vals[] = $id_donnee;
    180                                 $vals[] = "<a href='".generer_url_ecrire("donnees_edit","id_form=$id_form&id_donnee=$id_donnee&retour=".urlencode($retour))."'>"
    181                                         .implode(", ",$champs)."</a>";
    182                                 $redirect = ancre_url(generer_url_ecrire($script,"type=$type&id_$type=$iid"),'tables');
    183                                 $action = generer_action_auteur("forms_lier_donnees","$id,$type,retirer,$id_donnee",urlencode($redirect));
    184                                 $action = ancre_url($action,"forms_lier_donnees-$id");
    185                                 $redirajax = generer_url_ecrire("forms_lier_donnees","type=$type&id_$type=$id");
    186                                 $vals[] = "<a href='$action' rel='$redirajax' class='ajaxAction' >"
    187                                         . _T("$prefixi18n:lien_retirer_donnee")."&nbsp;". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'")
    188                                         . "</a>";
    189                                 $table[] = $vals;
    190                         }
    191                 }
    192                 $largeurs = array('', '', '', '', '');
    193                 $styles = array('arial11', 'arial11', 'arial2', 'arial11', 'arial11');
    194                 $out .= afficher_liste($largeurs, $table, $styles, false);
    195        
    196                 $out .= "</table></div>\n";
    197         }
    198         $les_donnees = implode (',',$les_donnees);
    199         return array($out,$les_donnees,$nombre_donnees) ;
     121        return Forms_afficher_liste_donnees_liees(
     122                $type,
     123                $id,
     124                strncmp($type,"donnee",6)==0?"donnee_liee":"donnee",
     125                'forms_lier_donnees',
     126                "forms_lier_donnees-$id",
     127                "type=$type&id_$type=$id",
     128                self());
    200129}
    201130
     
    247176                }
    248177                while ($row = spip_fetch_array($res)){
    249                         list($id_form,$titreform,$t) = Forms_liste_decrit_donnee($row['id_donnee']);
     178                        list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($row['id_donnee']);
    250179                        if (!count($t))
    251                                 list($id_form,$titreform,$t) = Forms_liste_decrit_donnee($row['id_donnee'],false);
     180                                list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($row['id_donnee'],false);
    252181                        if (count($t))
    253182                                $table[$titreform][$row['id_donnee']]=$t;
     
    257186}
    258187
    259 function Forms_liste_decrit_donnee($id_donnee, $specifiant=true){
    260         $t = array();$titreform="";
    261         if ($specifiant) $specifiant = "c.specifiant='oui' AND ";
    262         else $specifiant="";
    263         $res2 = spip_query("SELECT c.titre,dc.valeur,f.titre AS titreform,f.id_form FROM spip_forms_donnees_champs AS dc
    264         JOIN spip_forms_donnees AS d ON d.id_donnee=dc.id_donnee
    265         JOIN spip_forms_champs AS c ON c.champ=dc.champ AND c.id_form=d.id_form
    266         JOIN spip_forms AS f ON f.id_form=d.id_form
    267         WHERE $specifiant dc.id_donnee="._q($id_donnee)." AND f.linkable='oui' ORDER BY c.rang");
    268         /*var_dump("SELECT c.titre,dc.valeur FROM spip_forms_donnees_champs AS dc
    269         JOIN spip_forms_donnees AS d ON d.id_donnee=dc.id_donnee
    270         JOIN spip_forms_champs AS c ON c.champ=dc.champ AND c.id_form=d.id_form
    271         WHERE c.specifiant='oui' AND dc.id_donnee="._q($row['id_donnee'])." ORDER BY c.rang");*/
    272         while ($row2 = spip_fetch_array($res2)){
    273                 $t[$row2['titre']] = $row2['valeur'];
    274                 $titreform = $row2['titreform'];
    275                 $id_form = $row2['id_form'];
    276         }
    277         return array($id_form,$titreform,$t);
    278 }
    279188?>
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/javascript/forms_lier_donnees.js

    r9722 r9857  
    6767$(document).ready(function(){
    6868                $('#forms_lier_donnees').ajaxAction();
     69                $('#forms_donnees_liantes').ajaxAction();
    6970});
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/lang/forms_fr.php

    r9828 r9857  
    9696
    9797'liste_choix' => "Liste des choix propos&eacute;s",
    98 'lien_retirer_donnee' =>"Retirer le lien",
     98'lien_retirer_donnee_liee' =>"Retirer le lien",
     99'lien_retirer_donnee_liante' =>"Retirer le lien",
    99100'lier_articles' => "Permettre d'associer les donn&eacute;es aux articles",
    100101'lier_documents' => "Permettre de joindre des documents aux donn&eacute;es",
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/lang/table_fr.php

    r9828 r9857  
    1616
    1717// page donnees_edit
    18 'lien_retirer_donnee' => "Retirer cette donn&eacute;e",
     18'lien_retirer_donnee_liee' => "Retirer cette donn&eacute;e",
     19'lien_retirer_donnee_liante' => "Retirer le lien depuis cette donn&eacute;e",
    1920'articles_utilisant'=> "Articles utilisant cette table",
    2021'suivi_reponses' => "Voir les donn&eacute;es",
Note: See TracChangeset for help on using the changeset viewer.