source: spip-zone/_plugins_/ckeditor-spip-plugin/trunk/filebrowser.html @ 70486

Last change on this file since 70486 was 70486, checked in by fredlefred@…, 7 years ago

fix: certains pb d'instances ckeditor non supprimées (mais ça ne regle pas tout)
fix: pb lié aux fichiers ayant des extensions en maj plutot que minuscule
maj: ckeditor 3.6.6.1
maj: version 0.16.6

File size: 11.1 KB
Line 
1#CACHE{0}
2[(#HTTP_HEADER{Content-type: text/html[; charset=(#CHARSET)]})]
3<BOUCLE_si(CONDITION){si #SESSION{statut}|<{2}}>
4<?php
5        $funcNum = intval(_request('CKEditorFuncNum')) ;
6        $CKEditor = _request('CKEditor') ;
7        $langCode = _request('langCode') ;
8
9        include_spip('inc/ckeditor_tools') ;
10        include_spip('inc/ckeditor_lire_config') ;
11        include_spip('inc/ckeditor_constantes') ;
12
13        define('_FILEBROWSER_IMG_EXT_REGEX', '~^(jpe?g|png|gif)$~i') ; 
14        define('_FILEBROWSER_UPLOAD_MAXSIZE', 4) ; // 4Mo
15        define('_MO', 1024*1024) ;
16        switch (_request('type')) {
17                case 'flash':
18                        define('_FILEBROWSER_DIR',
19                                _DIR_RACINE . ckeditor_lire_config('base_dir', _CKE_DIR_UPLOAD_DEF) . '/' . preg_replace('~^.*/~','',ckeditor_lire_config('flash_dir', _CKE_FLASH_UPLOAD_DEF))) ;
20
21                        break ;
22                case 'files':
23                        define('_FILEBROWSER_DIR',
24                                _DIR_RACINE . ckeditor_lire_config('base_dir', _CKE_DIR_UPLOAD_DEF) . '/' . preg_replace('~^.*/~','',ckeditor_lire_config('files_dir', _CKE_FILES_UPLOAD_DEF))) ;
25                        break ;
26                default:
27                        define('_FILEBROWSER_DIR',
28                                _DIR_RACINE . ckeditor_lire_config('base_dir', _CKE_DIR_UPLOAD_DEF) . '/' . preg_replace('~^.*/~','',ckeditor_lire_config('images_dir', _CKE_IMAGES_UPLOAD_DEF)));
29                        break ;
30        }
31        define('_FILEBROWSER_FILES_BASE_URL', lire_meta('adresse_site').'/'.preg_replace("~".preg_quote( _DIR_RACINE,'~')."~", '', _FILEBROWSER_DIR).'/') ;
32
33        define('_FILEBROWSER_HIDE_DOT_FILES', true) ;
34
35        error_reporting(E_ERROR | E_PARSE);
36       
37        $lang = (_request('langCode')?_request('langCode'):'fr') ;     
38
39        $cke_request = "&CKEditor=".$CKEditor."&CKEditorFuncNum=".$funcNum."&langCode=".$langCode ;
40        $request_dir = _request('dir') ;
41        $request_dir = preg_replace(array('#^(\.\./)+#', '#/(\.\./)+#'), array('', '/'),  $request_dir) ;
42        $dir_name = _FILEBROWSER_DIR .'/'. $request_dir ;
43
44?><!DOCTYPE html
45     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
46     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
47<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $lang ; ?>" lang="<?php echo $lang ; ?>">
48<head>
49        <title><?php echo _T('ckeditor:explorateur_titre'); ?></title>
50        <link rel="stylesheet" type="text/css" href="#CHEMIN{css/filebrowser.css}" />
51        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
52        <script type="text/javascript"> 
53        function loadFile(url) { 
54                var parent_window = (window.parent == window) ? window.opener : window.parent ; 
55                parent_window.CKEDITOR.tools.callFunction( <?php echo intval(_request('CKEditorFuncNum')); ?>, url, ''); 
56                window.close(); 
57        } 
58        </script>
59</head>
60<body>
61<?php
62        $autorise_parcours = ckeditor_lire_config('autorise_parcours', _CKE_PARCOURS_DEF) ;
63        $autorise_admin_telecharger = ckeditor_lire_config('autorise_telechargement', _CKE_UPLOAD_DEF) ;
64        $autorise_redac_telecharger = $autorise_admin_telecharger && ckeditor_lire_config('autorise_telechargement_redacteur', _CKE_UPLOAD_REDAC_DEF) ;
65        $autorise_admin_mkdir = ckeditor_lire_config('autorise_mkdir', _CKE_MKDIR_DEF) ;
66        $autorise_redac_mkdir = $autorise_admin_mkdir && ckeditor_lire_config('autorise_mkdir_redacteur', _CKE_MKDIR_REDAC_DEF) ;
67
68        $est_admin = ($auteur_session['statut'] == '0minirezo') ;
69        $est_redac = ($auteur_session['statut'] == '0minirezo') || ($auteur_session['statut'] == '1comite') ;
70       
71        $peut_parcourir = ($autorise_parcours && $est_redac) ;
72        $peut_telecharger = ( ($autorise_admin_telecharger && $est_admin) || ($autorise_redac_telecharger && $est_redac) ) ;
73        $peut_mkdir = ( ($autorise_admin_mkdir && $est_admin) || ($autorise_redac_mkdir && $est_redac) ) ;
74
75        if ($peut_parcourir) {
76                switch (_request('type')) {
77                        case 'flash':
78                                define ('_FILEBROWSER_FILETYPE_REGEX', '#('.preg_replace(
79                                        '~\s*;\s*~', '|', $extauth = ckeditor_lire_config('flash_extensions_autorisees', _CKE_FLASH_EXT_DEF)
80                                ).')#ei') ;
81                                break ;
82                        case 'files':
83                                define ('_FILEBROWSER_FILETYPE_REGEX', '#('.preg_replace(
84                                        '~\s*;\s*~', '|', $extauth = ckeditor_lire_config('files_extensions_autorisees', _CKE_FILES_EXT_DEF)
85                                ).')#ei') ;
86                                break ;
87                        default:
88                                define ('_FILEBROWSER_FILETYPE_REGEX', '#('.preg_replace(
89                                        '~\s*;\s*~', '|', $extauth = ckeditor_lire_config('images_extensions_autorisees', _CKE_IMAGES_EXT_DEF)
90                                ).')#ei') ;
91                                break ;
92                }
93                if (_request('mode') == 'direct') {
94                                $url = $message = '' ;
95                                if ($peut_telecharger) {
96                                        $tmp_file = $_FILES['upload']['tmp_name'];
97
98                                        $erreur = false ;
99                                        if( is_uploaded_file($tmp_file) ) {
100                                                $name_file = $_FILES['upload']['name'];
101                                                if (preg_match(_FILEBROWSER_FILETYPE_REGEX, $name_file)) {
102                                                        if (!move_uploaded_file($tmp_file, $dir_name .'/'. $name_file)) {
103                                                                $erreur = 3 ;
104                                                        }
105                                                } else { $erreur = 2 ; }
106                                        } else { $erreur = 1 ; }
107
108                                        if ($erreur) {
109                                                @unlink($tmp_file) ;
110                                                $errmsg = array(
111                                                        1=>_T('ckeditor:erreur_transmission'),
112                                                        2=>_T('ckeditor:type_fichier_interdit'),
113                                                        3=>_T('ckeditor:erreur_droits')
114                                                ) ;
115                                                $message = strip_tags(_T('ckeditor:copie_impossible', array('fichier'=> $name_file, 'errmsg'=>$errmsg[$erreur]))) ;
116                                        } else {
117                                                $url =  _FILEBROWSER_FILES_BASE_URL.$request_dir.$name_file ;
118                                        }
119                                } else {
120                                        $message = strip_tags(_T('ckeditor:acces_interdit')) ;
121                                }
122                                echo "<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction($funcNum, '$url', '$message');</script>";
123
124                } else  {
125
126                        if (_request('upload') == 'form') {
127                                if ($peut_telecharger) {
128                                        print('<div id="upload"><button onclick="window.location=\'?page=filebrowser&dir='.$request_dir.$cke_request.'\';">'._T('ckeditor:retour').'</button></div>'."\n") ;
129                                        print('<h1>'._T('ckeditor:telecharger_document').'</h1>'."\n") ;
130                                        print(_T('ckeditor:liste_telechargements_autorises', array('liste' => $extauth))) ;
131                                        print(_T('ckeditor:taille_maximale_telechargements', array('taille' => _FILEBROWSER_UPLOAD_MAXSIZE))) ;
132                                        print('<form method="post" action="?page=filebrowser&dir='.$request_dir.$cke_request.'&upload=post" enctype="multipart/form-data" name="upload">'."\n") ;
133                                        print('<input type="hidden" name="MAX_FILE_SIZE" value="'.(_FILEBROWSER_UPLOAD_MAXSIZE*_MO).'" />'."\n") ;
134                                        print('<div class="centre">'."\n");
135                                        print('<input type="file" name="fichier" size="30" />'."\n") ;
136                                        print('<input type="submit" name="upload" value="'._T('ckeditor:telecharger').'" />'."\n") ;
137                                        print('</div>'."\n");
138                                        print('</form>'."\n") ;
139                                } else {
140                                        print("<p>"._T('ckeditor:acces_interdit')."</p>") ;
141                                }
142                        } elseif (_request('upload') == 'post') {
143                                if ($peut_telecharger) {
144                                        $tmp_file = $_FILES['fichier']['tmp_name'];
145
146                                        $erreur = -1 ;
147                                        if( is_uploaded_file($tmp_file) ) {
148                                                $name_file = $_FILES['fichier']['name'];
149                                                if (preg_match(_FILEBROWSER_FILETYPE_REGEX, $name_file)) {
150                                                        if (move_uploaded_file($tmp_file, $dir_name .'/'. $name_file)) {
151                                                                $erreur = false ;
152                                                        } else { $erreur = 3 ; }
153                                                } else { $erreur = 2 ; }
154                                        } else { $erreur = 1 ; }
155
156                                        print('<div id="upload"><button onclick="window.location=\'?page=filebrowser&dir='.$request_dir.$cke_request.'\';">'._T('ckeditor:retour').'</button></div>'."\n") ;
157                                        print('<h1>'._T('ckeditor:telecharger_document').'</h1>'."\n") ;
158
159                                        if ($erreur) {
160                                                @unlink($tmp_file) ;
161                                                $errmsg = array(
162                                                        1=>_T('ckeditor:erreur_transmission'),
163                                                        2=>_T('ckeditor:type_fichier_interdit'),
164                                                        3=>_T('ckeditor:erreur_droits')
165                                                ) ;
166                                                print(_T('ckeditor:copie_impossible', array('fichier'=> $name_file, 'errmsg'=>$errmsg[$erreur]))) ;
167                                        } else {
168                                                print('<p>'._T('ckeditor:copie_reussie', array('fichier'=> $name_file)).'</p>') ;
169                                                $txt = _T('ckeditor:utiliser_fichier', array('fichier'=> $name_file)) ;
170                                                print('<p><button onclick="javascript:loadFile(\''._FILEBROWSER_FILES_BASE_URL.$request_dir.$name_file.'\');">'.$txt.'</button></p>');
171                                        }
172                                } else {
173                                        print("<p>"._T('ckeditor:acces_interdit')."</p>") ;
174                                }
175                        } else {
176                                if ($peut_mkdir && ($mkdir = _request('mkdir'))) {
177                                        @mkdir($dir_name.'/'.$mkdir) ;
178                                }
179
180                                $h_dir = @opendir($dir_name) ;
181                                $dirs = array() ;
182                                $files = array() ;
183
184                                if ($h_dir) {
185                                        while ($filename = @readdir($h_dir)) {
186                                                if (_FILEBROWSER_HIDE_DOT_FILES && (strpos($filename, '.') === 0)) {
187                                                        continue ;
188                                                }
189                                                if (filetype($dir_name . '/' . $filename) == 'dir') {
190                                                        if ( ($filename != '.') && ($filename != '..') ) {
191                                                                $dirs[] = array($filename,$request_dir.($request_dir?'/':'').$filename, _T('ckeditor:acceder_repertoire', array('repertoire'=>$filename))) ;
192                                                        }
193                                                } else {
194                                                        $files[]= $filename ;
195                                                }
196                                        }
197                                        print('<div id="fichiers">'."\n") ;
198                                        natsort($dirs) ;
199                                        if ($request_dir && ($request_dir != '.')) {
200                                                array_unshift($dirs, array('↑', dirname($request_dir), _T('ckeditor:repertoire_parent'), ' updir')) ;
201                                        }
202                                        $img = "<img src='".find_in_path('images/folder.png')."' alt=''/>" ;
203                                        foreach($dirs as $dir) {
204                                                print('<div class="repertoire'.$dir[3].'"><a title="'.$dir[2].'" href="?page=filebrowser&dir='.$dir[1].$cke_request.'"><div class="rep-apercu">'.$img.'</div><div class="rep-nom">'.$dir[0]. '</div></a></div>'."\n") ;
205                                        }
206                                        if ($peut_mkdir) {
207                                                print('<div class="repertoire"><a href="#" onclick="var mkdir=prompt(\''._T('ckeditor:nom_repertoire_creer').'\');if (mkdir) window.location=\'?page=filebrowser&dir='.$request_dir.$cke_request.'&mkdir=\'+encodeURIComponent(mkdir);"><div class="rep-apercu"><img src="'.find_in_path('images/folder-new.png').'" alt=""/></div><div class="rep-nom action">'._T('ckeditor:nouveau').'</div></a></div>');
208                                        }
209                                        print('<div class="clear"></div>'."\n") ;
210                                        natsort($files) ;
211                                        if ($request_dir == '.') { $request_dir = '' ; }
212                                        if ($request_dir) { $request_dir .= '/' ; }
213                                        $GLOBALS['meta']['formats_graphiques'] = $GLOBALS['meta']['gd_formats'] ;
214                                        include_spip('inc/filtres_images_mini') ;
215                                        foreach($files as $file) {
216                                                if (preg_match(_FILEBROWSER_FILETYPE_REGEX, $file)) {
217                                                        $fileinfo = pathinfo($file) ;
218                                                        if (preg_match(_FILEBROWSER_IMG_EXT_REGEX, $fileinfo['extension'], $match)) {
219                                                                $img = image_reduire("<img src='"._FILEBROWSER_DIR."/$request_dir$file' style='' alt='$file'/>",50,50) ;
220                                                        } else if ($img = find_in_path('vignettes/'.$fileinfo['extension'].'.png')) {
221                                                                $img = "<img src='".$img."' alt='$file'/>" ;
222                                                        } else {
223                                                                $img = "<img src='".find_in_path('vignettes/defaut.png')."' alt='$file'/>" ;
224                                                        }
225                                                        print('<div class="fichier"><a href="#" onclick="javascript:loadFile(\''._FILEBROWSER_FILES_BASE_URL.$request_dir.$file.'\');" title="'._T('ckeditor:utiliser_fichier', array('fichier'=> $file)). '"><div class="fichier-apercu">'.$img.'</div><div class="fichier-nom">'.$file.'</div></a></div>'."\n") ;
226                                                }
227                                        }
228                                        $peut_telecharger && print('<div class="fichier"><a href="#" onclick="window.location=\'?page=filebrowser&dir='.$request_dir.$cke_request.'&upload=form\';"><div class="fichier-apercu"><img src="'.find_in_path('images/document-new.png').'" alt=""/></div><div class="fichier-nom action">'._T('ckeditor:telecharger').'</div></a></div>'."\n") ;
229                                        print('<div class="clear"></div></div>'."\n") ;
230
231                                }
232                        }
233                }
234        } else {
235                print("<p>"._T('ckeditor:acces_interdit')."</p>") ;
236        }
237 ?>
238</body>
239</html>
240</BOUCLE_si>
Note: See TracBrowser for help on using the repository browser.