Dotclear

source: plugins/smiliesEditor/index.php @ 1836

Revision 1836, 14.8 KB checked in by Osku, 14 years ago (diff)

smiliesEditor 0.1.3

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

Sites map