Dotclear

source: plugins/smiliesEditor/index.php @ 2153

Revision 2153, 15.0 KB checked in by Osku, 14 years ago (diff)

Plugin smiliesEditor - O2: add an option to download smilies dir (backup).

  • Property svn:executable set to *
Line 
1<?php
2# -- BEGIN LICENSE BLOCK ----------------------------------
3#
4# This file is part of smiliesEditor, a plugin for Dotclear 2.
5#
6# Copyright (c) 2009-2010 Osku and contributors
7#
8# Licensed under the GPL version 2.0 license.
9# A copy of this license is available in LICENSE file or at
10# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11#
12# -- END LICENSE BLOCK ------------------------------------
13
14if (!defined('DC_CONTEXT_ADMIN')) { return; }
15
16// Init
17$smg_writable =  false;
18$combo_action[__('Definition')] = array(
19__('update smilies set') => 'update',
20__('save smilies order') => 'saveorder',
21__('delete smilies definition') => 'delete'
22);
23
24$combo_action[__('Toolbar')] = array(
25__('display in smilies bar') => 'display',
26__('hide in smilies bar') => 'hide',
27);
28
29$smilies_bar_flag = (boolean)$core->blog->settings->smilies_bar_flag;
30$smilies_preview_flag = (boolean)$core->blog->settings->smilies_preview_flag;
31
32// Get theme Infos
33$core->themes = new dcThemes($core);
34$core->themes->loadModules($core->blog->themes_path,null);
35$T = $core->themes->getModules($core->blog->settings->theme);
36
37// Get smilies code
38$o = new smiliesEditor($core);
39$smilies = $o->getSmilies();
40
41// Try to create the subdirectory smilies
42if (!empty($_POST['create_dir']) )
43{
44     try {
45          $o->createDir();
46     } catch (Exception $e) {
47          $core->error->add($e->getMessage());
48     }
49         
50     if (!$core->error->flag()) {
51          http::redirect($p_url.'&creadir=1');
52     }
53}
54
55// Init the filemanager
56try 
57{
58     $smilies_files = $o->getFiles();
59     $smg_writable = $o->filemanager->writable();
60}
61catch (Exception $e) {
62     $core->error->add($e->getMessage());
63}
64
65if (!empty($_POST['saveconfig']))
66{
67     try
68     {
69          $core->blog->settings->setNameSpace('smilieseditor');
70
71          $show = (empty($_POST['smilies_bar_flag']))?false:true;
72          $preview = (empty($_POST['smilies_preview_flag']))?false:true;
73
74          $core->blog->settings->put('smilies_bar_flag',$show,'boolean');
75          $core->blog->settings->put('smilies_preview_flag',$preview,'boolean');
76         
77          $core->blog->triggerBlog();
78          http::redirect($p_url.'&config=1');
79
80     }
81     catch (Exception $e)
82     {
83          $core->error->add($e->getMessage());
84     }
85}
86
87// Create array of used smilies filename
88$smileys_list = array();
89foreach ($smilies as $k => $v) {
90     $smileys_list= array_merge($smileys_list, array($v['name']=> $v['name']));
91}
92
93// Delete all unused images
94if (!empty($_POST['rm_unused_img']) )
95{
96     if (!empty($o->images_list))
97     {
98          foreach ($o->images_list as $k => $v) 
99          { 
100               if (!array_key_exists($v['name'],$smileys_list))
101               { 
102                    try {
103                         $o->filemanager->removeItem($v['name']);
104                    } catch (Exception $e) {
105                         $core->error->add($e->getMessage());
106                    }
107               }
108          }
109     }
110               
111     if (!$core->error->flag()) {
112          http::redirect($p_url.'&dircleaned=1');
113     }
114}
115
116if (!empty($_FILES['upfile']))
117{
118     try
119     {
120          files::uploadStatus($_FILES['upfile']);
121          //$f_name = (isset($_POST['upsmiletitle']) ? $_POST['upsmiletitle'] : '');
122          $file = $o->uploadSmile($_FILES['upfile']['tmp_name'],$_FILES['upfile']['name']);
123         
124     }
125     catch (Exception $e)
126     {
127          $core->error->add($e->getMessage());
128     }
129                   
130     if (!$core->error->flag()) {
131          http::redirect($p_url.'&upok='.$file);
132     }
133}
134
135// Create the combo of all images available in directory
136if (!empty($o->images_list))
137{
138     $smileys_combo = array();
139     foreach ($o->images_list as $k => $v) {
140          $smileys_combo= array_merge($smileys_combo, array($v['name']=> $v['name']));
141     }
142}
143
144$order = array();
145if (empty($_POST['smilies_order']) && !empty($_POST['order'])) {
146     $order = $_POST['order'];
147     asort($order);
148     $order = array_keys($order);
149} elseif (!empty($_POST['smilies_order'])) {
150     $order = explode(',',$_POST['smilies_order']);
151}
152
153if (!empty($_POST['actionsmilies']))
154{
155     $action = $_POST['actionsmilies'];
156     
157     if($action == 'delete' && !empty($_POST['select']))
158     {
159          foreach ($_POST['select'] as $k => $v)
160          {
161               unset ($smilies[$v]);
162               
163               try {
164                    $o->setSmilies($smilies);
165                    $o->setConfig($new_smilies);
166               } catch (Exception $e) {
167                    $core->error->add($e->getMessage());
168                    break;
169               }
170          }
171         
172          if (!$core->error->flag()) {
173               http::redirect($p_url.'&remove=1');
174          }
175     } 
176
177     elseif($action == 'update' && !empty($_POST['select']))
178     {
179          foreach ($_POST['select'] as $k => $v)
180          {
181               $new_smilies = $smilies;
182               $new_smilies[$v]['code'] = isset($_POST['code'][$v]) ? preg_replace('/[\s]+/','',$_POST['code'][$v]) : $smilies[$v]['code'] ;
183               $new_smilies[$v]['name'] = isset($_POST['name'][$v]) ? $_POST['name'][$v] : $smilies[$v]['name'];
184               
185               try {
186                    $o->setSmilies($new_smilies);
187               } catch (Exception $e) {
188                    $core->error->add($e->getMessage());
189                    break;
190               }
191          }
192         
193          if (!$core->error->flag()) {
194               http::redirect($p_url.'&update=1');
195          }
196         
197     } 
198     
199     elseif($action == 'saveorder' && !empty($order))
200     {
201          foreach ($order as $k => $v)
202          { 
203               $new_smilies[$v] = $smilies[$v]; 
204          }
205         
206          try {
207               $o->setSmilies($new_smilies);
208          } catch (Exception $e) {
209               $core->error->add($e->getMessage());
210               break;
211          }
212         
213          if (!$core->error->flag()) {
214               http::redirect($p_url.'&neworder=1');
215          }
216         
217     } 
218     
219     elseif($action == 'display' && !empty($_POST['select']))
220     {
221          foreach ($_POST['select'] as $k => $v)
222          { 
223               $smilies[$v]['onSmilebar'] = true;
224          }
225         
226          try {
227               $o->setConfig($smilies);
228          } catch (Exception $e) {
229               $core->error->add($e->getMessage());
230               break;
231          }
232         
233          if (!$core->error->flag()) {
234               http::redirect($p_url.'&display=1');
235          }
236         
237     } 
238     
239     elseif($action == 'hide' && !empty($_POST['select']))
240     {
241          foreach ($_POST['select'] as $k => $v)
242          { 
243               $smilies[$v]['onSmilebar'] = false;
244          }
245         
246          try {
247               $o->setConfig($smilies);
248          } catch (Exception $e) {
249               $core->error->add($e->getMessage());
250               break;
251          }
252         
253          if (!$core->error->flag()) {
254               http::redirect($p_url.'&hide=1');
255          }
256         
257     } 
258}
259
260if (!empty($_POST['smilecode']) && !empty($_POST['smilepic']))
261{
262     $count = count($smilies);
263     $smilies[$count]['code'] = preg_replace('/[\s]+/','',$_POST['smilecode']);
264     $smilies[$count]['name'] = $_POST['smilepic'];
265
266     try {
267          $o->setSmilies($smilies);
268     } catch (Exception $e) {
269          $core->error->add($e->getMessage());
270     }
271         
272     if (!$core->error->flag()) {
273          http::redirect($p_url.'&addsmile=1');
274     }
275}
276
277# Zip download
278if (!empty($_GET['zipdl']))
279{
280     try
281     {
282          @set_time_limit(300);
283          $fp = fopen('php://output','wb');
284          $zip = new fileZip($fp);
285          //$zip->addExclusion('#(^|/).(.*?)_(m|s|sq|t).jpg$#');
286//  $this->core->themes->moduleInfo($core->blog->settings->theme,'root').'/smilies'
287          $zip->addDirectory($core->themes->moduleInfo($core->blog->settings->theme,'root').'/smilies','',true);
288          header('Content-Disposition: attachment;filename=smilies-'.$core->blog->settings->theme.'.zip');
289          header('Content-Type: application/x-zip');
290          $zip->write();
291          unset($zip);
292          exit;
293     }
294     catch (Exception $e)
295     {
296          $core->error->add($e->getMessage());
297     }
298}
299?>
300<html>
301<head>
302     <title><?php echo __('Smilies Editor'); ?></title>
303     <?php echo dcPage::jsToolMan(); ?>
304     <?php echo dcPage::jsLoad('index.php?pf=smiliesEditor/js/_smilies.js'); ?>
305     
306       <script type="text/javascript">
307       //<![CDATA[
308       dotclear.msg.confirm_image_delete = '<?php echo html::escapeJS(sprintf(__('Are you sure you want to remove these %s ?'),'images')) ?>';
309       $(function() {
310         $('#del_form').submit(function() {
311           return window.confirm(dotclear.msg.confirm_image_delete);
312         });
313       });
314       //]]>
315       </script>
316
317     
318     <style type="text/css">
319          option[selected=selected] {color:#c00;}
320          a.add {background:inherit url(images/plus.png) top left;}
321     </style>
322</head>
323
324<body>
325
326<?php
327
328if ($core->blog->settings->theme == 'default') {
329     echo '<p class="error">'.__("You can't edit default theme.").'</p>';
330}
331     
332if (!empty($o->images_list))
333{
334     $images_all = $o->images_list;
335     foreach ($o->images_list as $k => $v) 
336     { 
337          if (array_key_exists($v['name'],$smileys_list))
338               { 
339                    unset ($o->images_list[$k]);
340               }
341     }
342}
343
344if (!empty($_GET['config'])) {
345     echo '<p class="message">'.__('Configuration successfully updated.').'</p>';
346}
347
348if (!empty($_GET['creadir'])) {
349     echo '<p class="message">'.__('The subfolder has been successfully created').'</p>';
350}
351
352if (!empty($_GET['dircleaned'])) {
353          echo '<p class="message">'.__('Unused images have been successfully removed.').'</p>';
354}
355
356if (!empty($_GET['upok'])) {
357          echo '<p class="message">'. sprintf(__('The image <em>%s</em> has been successfully uploaded.'),$_GET['upok']).'</p>';
358}
359
360if (!empty($_GET['remove'])) {
361          echo '<p class="message">'.__('Smilies has been successfully removed.').'</p>';
362}
363
364if (!empty($_GET['update'])) {
365          echo '<p class="message">'.__('Smilies has been successfully updated.').'</p>';
366}
367
368if (!empty($_GET['neworder'])) {
369          echo '<p class="message">'.__('Order of smilies has been successfully changed.').'</p>';
370}
371
372if (!empty($_GET['hide'])) {
373          echo '<p class="message">'.__('These selected smilies are now hidden on toolbar.').'</p>';
374}
375
376if (!empty($_GET['display'])) {
377          echo '<p class="message">'.__('These selected smilies are now displayed on toolbar').'</p>';
378}
379
380if (!empty($_GET['addsmile'])) {
381          echo '<p class="message">'.__('A new smiley has been successfully created').'</p>';
382}
383
384echo
385'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="blog_theme.php">'.__('Blog aspect').'</a> &rsaquo; '.__('Smilies Editor').'</h2>';
386
387echo
388'<p><strong>'.sprintf(__('Your current theme on this blog is "%s".'),html::escapeHTML($T['name'])).'</strong></p>';
389
390if (empty($smilies))
391{
392     echo '<p>'.__('No defined smiley').'</p>';
393}
394else
395{
396     echo
397          '<p class="zip-dl"><a href="'.html::escapeURL($p_url).'&amp;zipdl=1">'.
398          __('Download the smilies directory as a zip file').'</a></p>'.
399          '<h3>'.__('Smilies set').'</h3>'.
400          '<form action="'.$p_url.'" method="post" id="links-form">'.
401          '<table class="maximal dragable">'.
402          '<thead>'.
403          '<tr>'.
404          '<th colspan="3">'.__('Code').'</th>'.
405          '<th>'.__('Filename').'</th>'.
406          '<th>'.__('Image').'</th>'.
407          '<th>'.__('Displayed in toolbar').'</th>'.
408          '</tr>'.
409          '</thead>'.
410     
411     '<tbody id="smilies-list">';
412     foreach ($smilies as $k => $v)
413     {
414          if($v['onSmilebar']) {
415               $line = '';
416               $status = '<img alt="'.__('displayed').'" title="'.__('displayed').'" src="images/check-on.png" />';
417          }
418          else
419          {
420               $line = 'offline';
421               $status = '<img alt="'.__('undisplayed').'" title="'.__('undisplayed').'" src="images/check-off.png" />';
422          }
423
424          echo
425          '<tr class="line '.$line.'" id="l_'.($k).'">'.
426          '<td class="handle minimal">'.form::field(array('order['.$k.']'),2,5,$k).'</td>'.
427          '<td class="minimal">'.form::checkbox(array('select[]'),$k).'</td>'.
428          '<td class="minimal">'.form::field(array('code[]','c'.$k),10,255,html::escapeHTML($v['code'])).'</td>'.
429          '<td class="nowrap">'.form::combo(array('name[]','n'.$k),$smileys_list,$v['name']).'</td>'.
430          '<td class="nowrap status"><img src="'.$o->smilies_base_url.$v['name'].'" alt="'.$v['code'].'" /></td>'.
431          '<td class="nowrap status">'.$status.'</td>'.
432          '</tr>';
433     }
434     
435     
436     echo '</tbody></table>';
437
438     echo '<div class="two-cols">'.
439          '<p class="col checkboxes-helpers"></p>';
440
441     echo '<p class="col right">'.__('Selected smilies action:').' '.
442          form::hidden('smilies_order','').
443          form::hidden(array('p'),'smiliesEditor').
444          form::combo('actionsmilies',$combo_action).
445          $core->formNonce().
446          '<input type="submit" value="'.__('ok').'" /></p></div></form>';
447}
448
449?>
450
451<?php 
452if (empty($images_all))
453{
454     echo '<p>'.__('No smiley available').'</p>';
455     
456     if (empty($o->filemanager))
457     {
458          echo '<div><form action="'.$p_url.'" method="post" id="dir_form"><p>'.form::hidden(array('p'),'smiliesEditor').
459          $core->formNonce().
460          '<input type="submit" name="create_dir" value="'.__('create smilies directory').'" /></p></form></div>';
461     }
462}
463else
464{
465     echo
466          '<div class="three-cols">'.
467          '<div class="col">'.
468          '<form action="'.$p_url.'" method="post" id="add-smiley-form">'.
469          '<fieldset>'.
470          '<legend>'.__('Create a smiley').'</legend>'.
471          '<p><label class="classic required" title="'.__('Required field').'">'.__('Code:').' '.
472          form::field('smilecode',10,255).'</label></p>'.
473
474          '<p><label class="classic required" title="'.__('Required field').'">'.__('Image:').' '.
475          form::combo('smilepic',$smileys_combo).'</label></p>'.
476
477          '<p>'.form::hidden(array('p'),'smiliesEditor').
478          $core->formNonce().
479          '<input type="submit" name="add_message" value="'.__('Create').'" /></p>'.
480          '</fieldset>'.
481          '</form></div>';
482         
483     if (!empty($o->images_list))
484     {
485          echo '<div class="col"><form action="'.$p_url.'" method="post" id="del_form">'.
486          '<fieldset><legend>'.__('Unset Smilies').'</legend>'.
487               '<p>'.__('Here you have displayed the unset smilies. Pass your mouse over the image to get the filename.').'</p>';
488         
489          echo '<p>';
490          foreach ($o->images_list as $k => $v)
491          {
492               echo '<img src="'.$v['url'].'" alt="'.$v['name'].'" title="'.$v['name'].'" />';
493          }
494          echo '</p>';
495         
496          echo 
497          '<p>'.form::hidden(array('p'),'smiliesEditor').
498          $core->formNonce().
499          '<input type="submit" name="rm_unused_img"
500          value="'.__('Delete all unused images').'"
501          /></p></fieldset></form></div>';
502     }
503     
504
505     
506}
507
508if ($smg_writable)
509{
510     echo
511     '<div id="upl-smile" class="col">'.
512     '<form id="upl-smile-form" action="'.html::escapeURL($p_url).'" method="post" enctype="multipart/form-data">'.
513     '<fieldset id="add-file-f">'.
514     '<legend>'.__('Add files').'</legend>'.
515     '<p>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
516     $core->formNonce().
517     '<label>'.__('Choose a file:').
518     ' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.
519     '<input type="file" name="upfile" size="20" />'.
520     '</label></p>'.
521     '<p><input type="submit" value="'.__('send').'" />'.
522     form::hidden(array('d'),null).'</p>'.
523     '<p class="form-note">'.__('Please take care to publish media that you own and that are not protected by copyright.').'</p>'.
524     '</fieldset>'.
525     '</form>'.
526     '</div>';
527}
528
529if (!empty($images_all))
530{
531     echo '</div>';
532}
533
534if (!empty($smilies))
535{
536     echo
537     '<div class="clear" id="smilies_options">'.
538     '<form action="plugin.php" method="post" id="form_tribune_options">'.
539          '<fieldset>'.
540               '<legend>'.__('Smilies configuration').'</legend>'.
541                    '<div>'.
542                         '<p class="field">'.
543                              form::checkbox('smilies_bar_flag', 1, $smilies_bar_flag).
544                              '<label class=" classic" for="smilies_bar_flag">'.__('Show toolbar smilies').'</label>'.
545                         '</p>'.
546                         '<p class="field">'.
547                              form::checkbox('smilies_preview_flag', 1, $smilies_preview_flag).
548                              '<label class=" classic" for="smilies_preview_flag">'.__('Show smilies on preview').'</label>'.
549                         '</p>'.
550                         '<p class="form-note">'.
551                              sprintf(__('Don\'t forget to <a href="%s">display smilies</a> on your blog configuration.'),'blog_pref.php').
552                         '</p>'.
553                         '<p>'.
554                              form::hidden(array('p'),'smiliesEditor').
555                              $core->formNonce().
556                              '<input type="submit" name="saveconfig" value="'.__('Save configuration').'" />'.
557                         '</p>'.
558                    '</div>'.
559
560          '</fieldset>'.
561     '</form></div>';
562}
563?>
564
565<?php dcPage::helpBlock('pouet');?>
566</body>
567</html>
Note: See TracBrowser for help on using the repository browser.

Sites map