Subversion Repositories Applications.papyrus

Rev

Rev 465 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
448 ddelon 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU General Public                                                  |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | General Public License for more details.                                                             |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU General Public                                            |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
474 alexandre_ 22
// CVS : $Id: HTML_listeDocuments.class.php,v 1.3 2005-09-27 16:42:00 alexandre_tb Exp $
448 ddelon 23
/**
24
* Application projet
25
*
26
* La classe HTML_listeDocuments
27
*
28
*@package projet
29
//Auteur original :
30
*@author        Alexandre Granier <alexandre@tela-botanica.org>
31
//Autres auteurs :
32
*@author        Aucun
33
*@copyright     Tela-Botanica 2000-2004
474 alexandre_ 34
*@version       $Revision: 1.3 $
448 ddelon 35
// +------------------------------------------------------------------------------------------------------+
36
*/
37
 
38
 
39
// +------------------------------------------------------------------------------------------------------+
40
// |                                            ENTETE du PROGRAMME                                       |
41
// +------------------------------------------------------------------------------------------------------+
42
 
43
 
44
// +------------------------------------------------------------------------------------------------------+
45
// |                                           LISTE des constantes                                       |
46
// +------------------------------------------------------------------------------------------------------+
47
 
48
define ("FICHIER_ICONE_COUPER", "cut.gif") ;
49
define ("FICHIER_ICONE_COLLER", "paste.gif") ;
50
define ("FICHIER_ICONE_SUPPRIMER", "trash.gif") ;
51
define ("FICHIER_ICONE_MODIFIER", "modif.png") ;
52
 
53
/**
54
 * class HTML_listeDocuments
55
 *
56
 */
57
class HTML_listeDocuments extends HTML_Liste
58
{
59
    /*** Attributes: ***/
60
 
61
    /**
62
     * Une url.
63
     * @access private
64
     */
65
    var $_url;
66
 
67
    /**
68
     * Tableau contenant les actions possibles. "couper" => 1, "modifier" => 2,
69
     * "supprimer" => 3 Elles seront passées en paramètre aux url des icones des
70
     * documents.
71
     * @access private
72
     */
73
    var $_actions = array ("couper" => 1, "modifier" => 2, "supprimer" => 3) ;
74
 
75
    /**
76
     * Indique le chemin des icones couper, coller, modifier, supprimer.
77
     * @access private
78
     */
79
    var $_chemin_icone = "icones/";
80
 
81
    /**
82
     * L'identifiant du répertoire que l'on est en train d'observer.
83
     * @access private
84
     */
85
    var $_id_repertoire;
86
 
87
    /**
88
     * Un tableau contenant les id et les noms du chemin des répertoires. 0 => ["id"],
89
     * ["nom"] etc.
90
     * @access private
91
     */
92
    var $_chemin_navigation = array ();
93
 
94
    /**
95
     * un pointeur vers une authentificatin PEAR
96
     * @access private
97
     */
98
    var $_auth ;
99
    /**
100
     *
101
     *
102
     * @param bool utilise_pager Indique l'utilisation ou non du Pager.
103
     * @return void
104
     * @access public
105
     */
106
    function HTML_listeDocuments(&$url,  $utilise_pager = false, $id_repertoire = 0, $auth = '' )
107
    {
108
        HTML_Liste::HTML_Liste($utilise_pager, array('class' => 'table_cadre')) ;
109
        $this->_url = $url ;
110
 
111
        $this->_id_repertoire = $id_repertoire ;
112
        if (is_object($auth)) {
113
            $this->_auth = $auth ;
114
        }
115
    } // end of member function HTML_listeDocuments
116
 
117
    /**
118
     *
119
     *
120
     * @param bool utilise_pager Voir HTML_listeDocuments
121
     * @return void
122
     * @access public
123
     */
474 alexandre_ 124
    function __construct( $utilise_pager )
448 ddelon 125
    {
126
 
127
    } // end of member function __construct
128
 
129
    /**
130
     *
131
     *
132
     * @param Array tableau_label Un tableau contenant les labels à afficher dans l'entête.
133
     * @return void
134
     * @access public
135
     */
136
    function construitEntete( $tableau_label )
137
    {
138
        $this->addRow ($tableau_label, NULL, 'TH') ;
139
    } // end of member function construitEntete
140
 
141
    /**
142
     *
143
     *
144
     * @param Array tableau_label Un tableau à deux dimensions avec les labels à afficher dans le corps du
145
     * tableau.
146
     * @return void
147
     * @access public
148
     */
149
    function construitListe( &$tableau_document, $droits, $mode = '', $objetDB = '')
150
    {
151
        $compteur = 0 ;$class[0] = 'ligne_impaire'; $class[1] = 'ligne_paire' ;
152
 
153
        for ($i = 0; $i < count ($tableau_document) ; $i++) {
154
            // Première condition : est-ce que le fichier a pour père le répertoire courant, si oui on l'affiche
155
            if ($tableau_document[$i]->_id_pere == $this->_id_repertoire || $mode == 'ignore_repertoire') {
156
                // d'abord l'image
157
                $icone = '<img src="'.$tableau_document[$i]->getCheminIcone().'" />' ;
158
                // Si le document est un répertoire, on ajoute id_repertoire au lien.
159
                if ($tableau_document[$i]->isRepertoire()) {
160
                    $this->_url->addQueryString ('id_repertoire', $tableau_document[$i]->getChemin()) ;
161
                    $lien = $this->_url->getURL() ;
162
                } else {    //  Si c'est un fichier, on fait un lien direct
163
                    $lien = $tableau_document[$i]->getChemin() ;
164
                }
165
                // pour éviter des effets de bords, on enlève id_repertoire de l'url
166
                // dans le cas d'un répertoire, pour les fichiers on le laisse pour
167
                // qu'après une opération, on reste dans le répertoire où a eu lieu l'opération
168
                if ($tableau_document[$i]->isRepertoire()) $this->_url->removeQueryString('id_repertoire') ;
169
 
170
                // on insère le lien
171
                $lien_nom = '<a href="'.$lien.'">'.$icone.' '.$tableau_document[$i]->getNomLong()."</a>\n" ;
172
 
173
                // Pour la taille on divise par 1000 et on écrit Ko
174
                $taille = round($tableau_document[$i]->getTaille() / 1000).'&nbsp;Ko' ;
175
 
176
                // Récupération de l'auteur
177
                include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ;
178
                $annuaire = new annuaire($objetDB, array('table' => PROJET_ANNUAIRE, 'identifiant' => PROJET_CHAMPS_ID,
179
                                            'nom' => PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ;
180
                $annuaire->setId($tableau_document[$i]->_id_proprietaire) ;
181
                $nom_prenom = $annuaire->getInfo('nom').' '.$annuaire->getInfo('prenom') ;
182
                // On rempli le tableau à donner en paramètre à HTML_Table avec toutes ces infos, une par colonne
183
                $ligne_tableau = array($lien_nom, $taille, $nom_prenom, $tableau_document[$i]->getDateMiseAJour()) ;
184
                if ($droits <= PROJET_DROIT_CONTRIBUTEUR) array_push ($ligne_tableau, $tableau_document[$i]->getVisibilite()) ;
185
 
186
                // On ajoute au tableau, les action couper / modifier / supprimer
187
                if ($droits <= PROJET_DROIT_COORDINATEUR || $this->_auth->getAuthData(PROJET_CHAMPS_ID) == $tableau_document[$i]->_id_proprietaire)
188
                                                array_push ($ligne_tableau, $this->_actions ($tableau_document[$i])) ;
189
                $this->addRow ($ligne_tableau, array('class' => $class[$compteur]), 'TD', true) ;
190
                // enfin , s'il y a une description, on l'ajoute, mais sur une ligne entière (colspan)
191
                if ($tableau_document[$i]->getDescription() != "") {
192
                    $this->addRow (array ($tableau_document[$i]->getDescription()), array ("colspan" => count ($ligne_tableau), 'class' => $class[$compteur]), 'TD', true) ;
193
                }
194
                $compteur++;
195
            }
196
 
197
            if ($compteur == 2) $compteur = 0 ;
198
        }
199
        $this->updateColAttributes(0, array ('class' => 'col1')) ;
200
    } // end of member function construitListe
201
 
202
    /**
203
     *
204
     *
205
     * @param Array actions Un tableau avec les valeurs d'actions comme clé. "couper", modifier",
206
     * "supprimer".
207
     * @return void
208
     * @access public
209
     */
210
    function setAction( $actions )
211
    {
212
        $this->_actions = $actions ;
213
    } // end of member function setAction
214
 
215
    /**
216
     *
217
     *
218
     * @param string chemin Le chemin vers les icones couper, coller ...
219
     * @return void
220
     * @access public
221
     */
222
    function setCheminIcones( $chemin )
223
    {
224
        $this->_chemin_icone = $chemin ;
225
    } // end of member function setCheminIcones
226
 
227
    /**
228
     * Surcharge de l'opération de la classe mère. Ajoute la navigation dans les
229
     * répertoires.
230
     *
231
     * @return string
232
     * @access public
233
     */
234
    function toHTML( )
235
    {
236
        $chemin_navig = "" ;
237
        if ($this->_id_repertoire != "") {
474 alexandre_ 238
            $this->_url->removeQueryString(PROJET_VARIABLE_ID_REPERTOIRE) ;
448 ddelon 239
            $chemin_navig = "<p>" ;
240
            $chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".PROJET_RACINE."</a>\n" ;
474 alexandre_ 241
            $this->_url->addQueryString(PROJET_VARIABLE_ID_REPERTOIRE, $this->_id_repertoire) ;
448 ddelon 242
            for ($i = 0; $i < count ($this->_chemin_navigation); $i+=2) {
243
                $chemin_navig .= "&gt;&nbsp;" ;
244
                $nom = $this->_chemin_navigation[$i+1] ;
245
                $this->_url->addQueryString ('id_repertoire', $this->_chemin_navigation[$i]) ;
246
                $chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".$nom."</a>\n" ;
247
            }
248
            $chemin_navig .= "</p>\n" ;
249
        }
250
        $res = $chemin_navig.HTML_Liste::toHTML() ;
251
        if ($this->getRowCount() == 1 && $this->_id_repertoire == '') {
252
            return '<div>'.PROJET_PAS_DE_DOCUMENTS.'</div>'."\n";
253
        }
254
        return $res ;
255
    } // end of member function toHTML
256
 
257
    /**
258
     *
259
     *
260
     * @param Array tableau_navigation Un tableau contenant les identifiants et les noms des répertoires.  0 => ["id"],
261
     * ["nom"] etc.
262
     * @return void
263
     * @access public
264
     */
265
    function setCheminNavigation( $tableau_navigation )
266
    {
267
        $this->_chemin_navigation = $tableau_navigation ;
268
    } // end of member function setCheminNavigation
269
 
270
    /**
271
     * Affiche la légende des actions du module "documents"
272
     *
273
     * @return string
274
     * @access public
275
     */
276
    function affLegende( )
277
    {
278
        $res = "<h2 class=\"titre2_projet\">".PROJET_LEGENDE."</h2>\n" ;
279
        $res .= "<p><img src=\"".$this->_chemin_icone."/cut.gif\" title=\"couper\" alt=\"couper\">".PROJET_LEGENDE_DEPLACE."</p>\n" ;
280
        $res .= "<p><img src=\"".$this->_chemin_icone."/modif.png\" title=\"modifier\" alt=\"modifier\"> ".PROJET_LEGENDE_MODIFIE."</p>\n" ;
281
        $res .= "<p><img src=\"".$this->_chemin_icone."/trash.gif\" title=\"supprimer\" alt=\"supprimer\"> ".PROJET_LEGENDE_SUPPR."</p>\n" ;
282
        return $res ;
283
    } // end of member function affLegende
284
 
285
 
286
    /**
287
     * Renvoie le chemin HTML, depuis le répertoire courant jusqu'à la racine.
288
     *
289
     * @return string
290
     * @access private
291
     */
292
    function _getCheminHTML( )
293
    {
294
        $path = "" ;
295
 
296
        return $path ;
297
    } // end of member function _getCheminHTML
298
 
299
 
300
 
301
    /**
302
     * Renvoie une chaine contenant le code html des icones des actions possibles sur un
303
     * fichier, c'est à dire couper, modifier, supprimer.
304
     *
305
     * @return string
306
     * @access private
307
     */
308
    function _actions($document)
309
    {
310
        $this->_url->addQueryString ('id_document', $document->getIdDocument()) ;
311
 
312
        $this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["couper"]) ;
313
        $couper = '&nbsp;'.PROJET_FICHIER_COUPER ;
314
        if (!$document->isRepertoire()) $couper = '<a href="'.$this->_url->getURL().'">'.$couper.'</a>' ;
315
 
316
        $this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["modifier"]) ;
317
        $modifier = '<a href="'.$this->_url->getURL().'">'.PROJET_FICHIER_MODIFIER.'</a>&nbsp;' ;
318
        $this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["supprimer"]) ;
319
        $supprimer= '<a href="'.$this->_url->getURL().'" onclick="javascript:return confirm (\''.PROJET_FICHIER_SUPPRIMER.' ?\');">'.PROJET_FICHIER_SUPPRIMER.'</a>' ;
320
        $this->_url->removeQueryString ('id_document') ;
321
        $this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_DOCUMENT) ;
322
        return $modifier.$supprimer.$couper ;
323
    } // end of member function _action
324
 
325
 
326
} // end of HTML_listeDocuments
327
?>