Dotclear

source: inc/admin/lib.dc.page.php @ 512:42f125d2b53b

Revision 512:42f125d2b53b, 24.9 KB checked in by kozlika, 14 years ago (diff)

Liens d'aide dans le header.

Je passe la main aux codeurs pour le js d'ajout du lien "Aide de cette page" lorsqu'elle existe et que ce lien déclenche l'ouverture de la boîte d'aide (et virer du coup le help-button actuel que j'ai mis en display:none pour le moment).

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_RC_PATH')) { return; }
13
14define('DC_AUTH_PAGE','auth.php');
15
16class dcPage
17{
18     private static $loaded_js=array();
19
20     # Auth check
21     public static function check($permissions)
22     {
23          global $core;
24         
25          if ($core->blog && $core->auth->check($permissions,$core->blog->id))
26          {
27               return;
28          }
29         
30          if (session_id()) {
31               $core->session->destroy();
32          }
33          http::redirect(DC_AUTH_PAGE);
34     }
35     
36     # Check super admin
37     public static function checkSuper()
38     {
39          global $core;
40         
41          if (!$core->auth->isSuperAdmin())
42          {
43               if (session_id()) {
44                    $core->session->destroy();
45               }
46               http::redirect(DC_AUTH_PAGE);
47          }
48     }
49     
50     # Top of admin page
51     public static function open($title='', $head='')
52     {
53          global $core;
54         
55          # List of user's blogs
56          if ($core->auth->blog_count == 1 || $core->auth->blog_count > 20)
57          {
58               $blog_box =
59               __('Blog:').' <strong title="'.html::escapeHTML($core->blog->url).'">'.
60               html::escapeHTML($core->blog->name).'</strong>';
61               
62               if ($core->auth->blog_count > 20) {
63                    $blog_box .= ' - <a href="blogs.php">'.__('Change blog').'</a>';
64               }
65          }
66          else
67          {
68               $rs_blogs = $core->getBlogs(array('order'=>'LOWER(blog_name)','limit'=>20));
69               $blogs = array();
70               while ($rs_blogs->fetch()) {
71                    $blogs[html::escapeHTML($rs_blogs->blog_name.' - '.$rs_blogs->blog_url)] = $rs_blogs->blog_id;
72               }
73               $blog_box =
74               '<label for="switchblog" class="classic">'.
75               __('Blogs:').' '.
76               $core->formNonce().
77               form::combo('switchblog',$blogs,$core->blog->id).
78               '</label>'.
79               '<noscript><div><input type="submit" value="'.__('ok').'" /></div></noscript>';
80          }
81         
82          $safe_mode = isset($_SESSION['sess_safe_mode']) && $_SESSION['sess_safe_mode'];
83         
84          # Display
85          header('Content-Type: text/html; charset=UTF-8');
86          echo
87          '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '.
88          ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n".
89          '<html xmlns="http://www.w3.org/1999/xhtml" '.
90          'xml:lang="'.$core->auth->getInfo('user_lang').'" '.
91          'lang="'.$core->auth->getInfo('user_lang').'">'."\n".
92          "<head>\n".
93          '  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n".
94          '  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n".
95         
96          '  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n".
97          '  <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n".
98         
99          self::jsLoadIE7().
100          '    <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n"; 
101          if (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl') {
102               echo
103          '    <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n"; 
104          }
105
106          $core->auth->user_prefs->addWorkspace('interface');
107          $user_ui_hide_std_favicon = $core->auth->user_prefs->interface->hide_std_favicon;
108          if (!$user_ui_hide_std_favicon) {
109               echo '<link rel="icon" type="image/png" href="images/favicon.png" />';
110          }
111         
112          echo
113          self::jsCommon().
114          $head;
115         
116          # --BEHAVIOR-- adminPageHTMLHead
117          $core->callBehavior('adminPageHTMLHead');
118         
119          echo
120          "</head>\n".
121          '<body id="dotclear-admin'.
122          ($safe_mode ? ' safe-mode' : '').
123          '">'."\n".
124         
125          '<div id=header>'.
126          '<ul id="prelude"><li><a href="#content">Aller au contenu</a></li><li><a href="#main-menu">Aller au menu</a></li></ul>'."\n".
127          '<div id="top"><h1><a href="index.php">'.DC_VENDOR_NAME.'</a></h1></div>'."\n"; 
128         
129          echo
130          '<div id="info-boxes">'.
131          '<div id="info-box1">'.
132          '<form action="index.php" method="post">'.
133          $blog_box.
134          '<a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'.
135          '</form>'.
136          '</div>'.
137          '<div id="info-box2">'.
138          '<a'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="index.php">'.__('My dashboard').'</a>'.
139          '<span> | </span><a'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="preferences.php">'.__('My preferences').'</a>'.
140          '<span> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'.
141          '</div>'.
142          '</div>'.
143          '<p id="helplinks">'.
144          '<a href="#">Aide de cette page</a><span> | </span>'.
145          '<a'.(preg_match('/help.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="help.php">'.__('Global help').'</a>'.
146          '</p>'.
147          '</div>';
148         
149          echo
150          '<div id="wrapper">'."\n".
151          '<div id="main">'."\n".
152          '<div id="content">'."\n";
153         
154          # Safe mode
155          if ($safe_mode)
156          {
157               echo
158               '<div class="error"><h3>'.__('Safe mode').'</h3>'.
159               '<p>'.__('You are in safe mode. All plugins have been temporarily disabled. Remind to log out then log in again normally to get back all functionalities').'</p>'.
160               '</div>';
161          }
162         
163          if ($core->error->flag()) {
164               echo
165               '<div class="error"><strong>'.__('Errors:').'</strong>'.
166               $core->error->toHTML().
167               '</div>';
168          }
169     }
170     
171     public static function close()
172     {
173          $menu =& $GLOBALS['_menu'];
174         
175          echo
176          "</div>\n".         // End of #content
177          "</div>\n".         // End of #main
178         
179          '<div id="main-menu">'."\n";
180         
181          foreach ($menu as $k => $v) {
182               echo $menu[$k]->draw();
183          }
184         
185          echo
186          '</div>'."\n".      // End of #main-menu
187          '<div id="footer"><p>'.
188          '<a class="helplink'.(preg_match('/help.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="help.php">'.__('Global help').'</a>'.
189          sprintf(__('Thank you for using %s.'),'<a href="http://dotclear.org/">Dotclear '.DC_VERSION.'</a>').
190          ' <span class="credit"> (Icons by <a href="http://dryicons.com/">Dryicons</a>)</span>'.
191          '</p></div>'."\n".
192          "</div>\n";         // End of #wrapper
193         
194          if (defined('DC_DEV') && DC_DEV === true) {
195               echo self::debugInfo();
196          }
197         
198          echo
199          '</body></html>';
200     }
201     
202     public static function openPopup($title='', $head='')
203     {
204          global $core;
205         
206          # Display
207          header('Content-Type: text/html; charset=UTF-8');
208          echo
209          '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '.
210          ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n".
211          '<html xmlns="http://www.w3.org/1999/xhtml" '.
212          'xml:lang="'.$core->auth->getInfo('user_lang').'" '.
213          'lang="'.$core->auth->getInfo('user_lang').'">'."\n".
214          "<head>\n".
215          '  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n".
216          '  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n".
217         
218          '  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n".
219          '  <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n".
220         
221          self::jsLoadIE7().
222          '    <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n"; 
223          if (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl') {
224               echo
225               '    <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n"; 
226          }
227         
228          echo
229          self::jsCommon().
230          $head;
231         
232          # --BEHAVIOR-- adminPageHTMLHead
233          $core->callBehavior('adminPageHTMLHead');
234         
235          echo
236          "</head>\n".
237          '<body id="dotclear-admin" class="popup">'."\n".
238         
239          '<div id="top"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n";
240         
241          echo
242          '<div id="wrapper">'."\n".
243          '<div id="main">'."\n".
244          '<div id="content">'."\n";
245         
246          if ($core->error->flag()) {
247               echo
248               '<div class="error"><strong>'.__('Errors:').'</strong>'.
249               $core->error->toHTML().
250               '</div>';
251          }
252     }
253     
254     public static function closePopup()
255     {
256          echo
257          "</div>\n".         // End of #content
258          "</div>\n".         // End of #main
259          '<div id="footer"><p>&nbsp;</p></div>'."\n".
260          "</div>\n".         // End of #wrapper
261          '</body></html>';
262     }
263     
264     private static function debugInfo()
265     {
266          $global_vars = implode(', ',array_keys($GLOBALS));
267         
268          $res =
269          '<div id="debug"><div>'.
270          '<p>memory usage: '.memory_get_usage().' ('.files::size(memory_get_usage()).')</p>';
271         
272          if (function_exists('xdebug_get_profiler_filename'))
273          {
274               $res .= '<p>Elapsed time: '.xdebug_time_index().' seconds</p>';
275               
276               $prof_file = xdebug_get_profiler_filename();
277               if ($prof_file) {
278                    $res .= '<p>Profiler file : '.xdebug_get_profiler_filename().'</p>';
279               } else {
280                    $prof_url = http::getSelfURI();
281                    $prof_url .= (strpos($prof_url,'?') === false) ? '?' : '&';
282                    $prof_url .= 'XDEBUG_PROFILE';
283                    $res .= '<p><a href="'.html::escapeURL($prof_url).'">Trigger profiler</a></p>';
284               }
285               
286               /* xdebug configuration:
287               zend_extension = /.../xdebug.so
288               xdebug.auto_trace = On
289               xdebug.trace_format = 0
290               xdebug.trace_options = 1
291               xdebug.show_mem_delta = On
292               xdebug.profiler_enable = 0
293               xdebug.profiler_enable_trigger = 1
294               xdebug.profiler_output_dir = /tmp
295               xdebug.profiler_append = 0
296               xdebug.profiler_output_name = timestamp
297               */
298          }
299         
300          $res .=
301          '<p>Global vars: '.$global_vars.'</p>'.
302          '</div></div>';
303         
304          return $res;
305     }
306     
307     public static function help($page,$index='')
308     {
309          # Deprecated but we keep this for plugins.
310     }
311     
312     public static function helpBlock()
313     {
314          $args = func_get_args();
315          if (empty($args)) {
316               return;
317          };
318         
319          global $__resources;
320          if (empty($__resources['help'])) {
321               return;
322          }
323         
324          $content = '';
325          foreach ($args as $v)
326          {
327               if (is_object($v) && isset($v->content)) {
328                    $content .= $v->content;
329                    continue;
330               }
331               
332               if (!isset($__resources['help'][$v])) {
333                    continue;
334               }
335               $f = $__resources['help'][$v];
336               if (!file_exists($f) || !is_readable($f)) {
337                    continue;
338               }
339               
340               $fc = file_get_contents($f);
341               if (preg_match('|<body[^>]*?>(.*?)</body>|ms',$fc,$matches)) {
342                    $content .= $matches[1];
343               } else {
344                    $content .= $fc;
345               }
346          }
347         
348          if (trim($content) == '') {
349               return;
350          }
351         
352          echo
353          '<div id="help"><hr /><div class="help-content clear"><h2>'.__('Help').'</h2>'.
354          $content.
355          '</div>'.
356          '<div id="helplink"><hr />'.
357          '<p>'.
358          sprintf(__('See also %s'),sprintf('<a href="help.php">%s</a>',__('the global help'))).
359          '</p>'.
360          '</div></div>';
361     }
362     
363     public static function jsLoad($src)
364     {
365          $escaped_src = html::escapeHTML($src);
366          if (!isset(self::$loaded_js[$escaped_src])) {
367               self::$loaded_js[$escaped_src]=true;
368               return '<script type="text/javascript" src="'.$escaped_src.'"></script>'."\n";
369          }
370     }
371     
372     public static function jsVar($n,$v)
373     {
374          return $n." = '".html::escapeJS($v)."';\n";
375     }
376     
377     public static function jsCommon()
378     {
379          return
380          self::jsLoad('js/jquery/jquery.js').
381          self::jsLoad('js/jquery/jquery.biscuit.js').
382          self::jsLoad('js/jquery/jquery.bgFade.js').
383          self::jsLoad('js/common.js').
384          self::jsLoad('js/prelude.js').
385         
386          '<script type="text/javascript">'."\n".
387          "//<![CDATA[\n".
388          self::jsVar('dotclear.nonce',$GLOBALS['core']->getNonce()).
389         
390          self::jsVar('dotclear.img_plus_src','images/plus.png').
391          self::jsVar('dotclear.img_plus_alt',__('uncover')).
392          self::jsVar('dotclear.img_minus_src','images/minus.png').
393          self::jsVar('dotclear.img_minus_alt',__('hide')).
394          self::jsVar('dotclear.img_menu_on','images/menu_on.png').
395          self::jsVar('dotclear.img_menu_off','images/menu_off.png').
396         
397          self::jsVar('dotclear.msg.help',
398               __('help')).
399          self::jsVar('dotclear.msg.no_selection',
400               __('no selection')).
401          self::jsVar('dotclear.msg.select_all',
402               __('select all')).
403          self::jsVar('dotclear.msg.invert_sel',
404               __('invert selection')).
405          self::jsVar('dotclear.msg.website',
406               __('Web site:')).
407          self::jsVar('dotclear.msg.email',
408               __('Email:')).
409          self::jsVar('dotclear.msg.ip_address',
410               __('IP address:')).
411          self::jsVar('dotclear.msg.error',
412               __('Error:')).
413          self::jsVar('dotclear.msg.entry_created',
414               __('Entry has been successfully created.')).
415          self::jsVar('dotclear.msg.edit_entry',
416               __('Edit entry')).
417          self::jsVar('dotclear.msg.view_entry',
418               __('view entry')).
419          self::jsVar('dotclear.msg.confirm_delete_posts',
420               __("Are you sure you want to delete selected entries (%s)?")).
421          self::jsVar('dotclear.msg.confirm_delete_post',
422               __("Are you sure you want to delete this entry?")).
423          self::jsVar('dotclear.msg.confirm_delete_comments',
424               __('Are you sure you want to delete selected comments (%s)?')).
425          self::jsVar('dotclear.msg.confirm_delete_comment',
426               __('Are you sure you want to delete this comment?')).
427          self::jsVar('dotclear.msg.cannot_delete_users',
428               __('Users with posts cannot be deleted.')).
429          self::jsVar('dotclear.msg.confirm_delete_user',
430               __('Are you sure you want to delete selected users (%s)?')).
431          self::jsVar('dotclear.msg.confirm_delete_category',
432               __('Are you sure you want to delete category "%s"?')).
433          self::jsVar('dotclear.msg.confirm_reorder_categories',
434               __('Are you sure you want to reorder all categories?')).
435          self::jsVar('dotclear.msg.confirm_delete_media',
436               __('Are you sure you want to remove media "%s"?')).
437          self::jsVar('dotclear.msg.confirm_extract_current',
438               __('Are you sure you want to extract archive in current directory?')).
439          self::jsVar('dotclear.msg.confirm_remove_attachment',
440               __('Are you sure you want to remove attachment "%s"?')).
441          self::jsVar('dotclear.msg.confirm_delete_lang',
442               __('Are you sure you want to delete "%s" language?')).
443          self::jsVar('dotclear.msg.confirm_delete_plugin',
444               __('Are you sure you want to delete "%s" plugin?')).
445          self::jsVar('dotclear.msg.use_this_theme',
446               __('Use this theme')).
447          self::jsVar('dotclear.msg.remove_this_theme',
448               __('Remove this theme')).
449          self::jsVar('dotclear.msg.confirm_delete_theme',
450               __('Are you sure you want to delete "%s" theme?')).
451          self::jsVar('dotclear.msg.zip_file_content',
452               __('Zip file content')).
453          self::jsVar('dotclear.msg.xhtml_validator',
454               __('XHTML markup validator')).
455          self::jsVar('dotclear.msg.xhtml_valid',
456               __('XHTML content is valid.')).
457          self::jsVar('dotclear.msg.xhtml_not_valid',
458               __('There are XHTML markup errors.')).
459          self::jsVar('dotclear.msg.confirm_change_post_format',
460               __('You have unsaved changes. Switch post format will loose these changes. Proceed anyway?')).
461          self::jsVar('dotclear.msg.load_enhanced_uploader',
462               __('Loading enhanced uploader, please wait.')).
463          "\n//]]>\n".
464          "</script>\n";
465     }
466     
467     public static function jsLoadIE7()
468     {
469          return
470          '<!--[if lt IE 8]>'."\n".
471          self::jsLoad('js/ie7/IE8.js').
472          '<link rel="stylesheet" type="text/css" href="style/iesucks.css" />'."\n".
473          '<![endif]-->'."\n";
474     }
475     
476     public static function jsConfirmClose()
477     {
478          $args = func_get_args();
479          if (count($args) > 0) {
480               foreach ($args as $k => $v) {
481                    $args[$k] = "'".html::escapeJS($v)."'";
482               }
483               $args = implode(',',$args);
484          } else {
485               $args = '';
486          }
487         
488          return
489          self::jsLoad('js/confirm-close.js').
490          '<script type="text/javascript">'."\n".
491          "//<![CDATA[\n".
492          "confirmClosePage = new confirmClose(".$args."); ".
493          "confirmClose.prototype.prompt = '".html::escapeJS(__('You have unsaved changes.'))."'; ".
494          "\n//]]>\n".
495          "</script>\n";
496     }
497     
498     public static function jsPageTabs($default=null)
499     {
500          if ($default) {
501               $default = "'".html::escapeJS($default)."'";
502          }
503         
504          return
505          self::jsLoad('js/jquery/jquery.pageTabs.js').
506          '<script type="text/javascript">'."\n".
507          "//<![CDATA[\n".
508          "\$(function() {\n".
509          "    \$.pageTabs(".$default.");\n".
510          "});\n".
511          "\n//]]>\n".
512          "</script>\n";
513     }
514     
515     public static function jsModal()
516     {
517          return
518          '<link rel="stylesheet" type="text/css" href="style/modal/modal.css" />'."\n".
519          self::jsLoad('js/jquery/jquery.modal.js').
520          '<script type="text/javascript">'."\n".
521          "//<![CDATA[\n".
522          self::jsVar('$.modal.prototype.params.loader_img','style/modal/loader.gif').
523          self::jsVar('$.modal.prototype.params.close_img','style/modal/close.png').
524          "\n//]]>\n".
525          "</script>\n";
526     }
527     
528     public static function jsColorPicker()
529     {
530          return
531          '<link rel="stylesheet" type="text/css" href="style/farbtastic/farbtastic.css" />'."\n".
532          self::jsLoad('js/jquery/jquery.farbtastic.js').
533          self::jsLoad('js/color-picker.js');
534     }
535     
536     public static function jsDatePicker()
537     {
538          return
539          '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n".
540          self::jsLoad('js/date-picker.js').
541          '<script type="text/javascript">'."\n".
542          "//<![CDATA[\n".
543         
544          "datePicker.prototype.months[0] = '".html::escapeJS(__('January'))."'; ".
545          "datePicker.prototype.months[1] = '".html::escapeJS(__('February'))."'; ".
546          "datePicker.prototype.months[2] = '".html::escapeJS(__('March'))."'; ".
547          "datePicker.prototype.months[3] = '".html::escapeJS(__('April'))."'; ".
548          "datePicker.prototype.months[4] = '".html::escapeJS(__('May'))."'; ".
549          "datePicker.prototype.months[5] = '".html::escapeJS(__('June'))."'; ".
550          "datePicker.prototype.months[6] = '".html::escapeJS(__('July'))."'; ".
551          "datePicker.prototype.months[7] = '".html::escapeJS(__('August'))."'; ".
552          "datePicker.prototype.months[8] = '".html::escapeJS(__('September'))."'; ".
553          "datePicker.prototype.months[9] = '".html::escapeJS(__('October'))."'; ".
554          "datePicker.prototype.months[10] = '".html::escapeJS(__('November'))."'; ".
555          "datePicker.prototype.months[11] = '".html::escapeJS(__('December'))."'; ".
556         
557          "datePicker.prototype.days[0] = '".html::escapeJS(__('Monday'))."'; ".
558          "datePicker.prototype.days[1] = '".html::escapeJS(__('Tuesday'))."'; ".
559          "datePicker.prototype.days[2] = '".html::escapeJS(__('Wednesday'))."'; ".
560          "datePicker.prototype.days[3] = '".html::escapeJS(__('Thursday'))."'; ".
561          "datePicker.prototype.days[4] = '".html::escapeJS(__('Friday'))."'; ".
562          "datePicker.prototype.days[5] = '".html::escapeJS(__('Saturday'))."'; ".
563          "datePicker.prototype.days[6] = '".html::escapeJS(__('Sunday'))."'; ".
564         
565          "datePicker.prototype.img_src = 'images/date-picker.png'; ".
566         
567          "datePicker.prototype.close_msg = '".html::escapeJS(__('close'))."'; ".
568          "datePicker.prototype.now_msg = '".html::escapeJS(__('now'))."'; ".
569         
570          "\n//]]>\n".
571          "</script>\n";
572     }
573     
574     public static function jsToolBar()
575     {
576          $res =
577          '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'.
578          '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>';
579         
580          if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) {
581               $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>';
582          }
583         
584          $res .=
585          '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'.
586          '<script type="text/javascript">'."\n".
587          "//<![CDATA[\n".
588          "jsToolBar.prototype.dialog_url = 'popup.php'; ".
589          "jsToolBar.prototype.iframe_css = '".
590               'body{'.
591                    'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'.
592                    'color : #000;'.
593                    'background: #f9f9f9;'.
594                    'margin: 0;'.
595                    'padding : 2px;'.
596                    'border: none;'.
597                    (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : '').
598               '}'.
599               'pre, code, kbd, samp {'.
600                    'font-family:"Courier New",Courier,monospace;'.
601                    'font-size : 1.1em;'.
602               '}'.
603               'code {'.
604                    'color : #666;'.
605                    'font-weight : bold;'.
606               '}'.
607               'body > p:first-child {'.
608                    'margin-top: 0;'.
609               '}'.
610          "'; ".
611          "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ".
612          "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ".
613          "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ".
614          "jsToolBar.prototype.legend_msg = '".
615          html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ".
616          "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ".
617          "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ".
618          "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ".
619          "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ".
620          "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ".
621          "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ".
622          "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ".
623          "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ".
624          "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ".
625          "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ".
626          "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ".
627          "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ".
628          "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ".
629          "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ".
630          "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ".
631          "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ".
632          "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ".
633          "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ".
634          "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ".
635          "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ".
636         
637          "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ".
638          "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ".
639          "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ".
640         
641          "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ".
642          "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ".
643         
644          "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ".
645          "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; ";
646         
647          if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) {
648               $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n";
649          }
650         
651          $res .=
652          "\n//]]>\n".
653          "</script>\n";
654         
655          return $res;
656     }
657     
658     public static function jsCandyUpload($params=array(),$base_url=null)
659     {
660          if (!$base_url) {
661               $base_url = path::clean(dirname(preg_replace('/(\?.*$)?/','',$_SERVER['REQUEST_URI']))).'/';
662          }
663         
664          $params = array_merge($params,array(
665               'sess_id='.session_id(),
666               'sess_uid='.$_SESSION['sess_browser_uid'],
667               'xd_check='.$GLOBALS['core']->getNonce()
668          ));
669         
670          return
671          '<link rel="stylesheet" type="text/css" href="style/candyUpload/style.css" />'."\n".
672          self::jsLoad('js/jquery/jquery.candyUpload.js').
673         
674          '<script type="text/javascript">'."\n".
675          "//<![CDATA[\n".
676          "dotclear.candyUpload = {};\n".
677          self::jsVar('dotclear.msg.activate_enhanced_uploader',__('Activate enhanced uploader')).
678          self::jsVar('dotclear.msg.disable_enhanced_uploader',__('Disable enhanced uploader')).
679          self::jsVar('$._candyUpload.prototype.locales.file_uploaded',__('File successfully uploaded.')).
680          self::jsVar('$._candyUpload.prototype.locales.max_file_size',__('Maximum file size allowed:')).
681          self::jsVar('$._candyUpload.prototype.locales.limit_exceeded',__('Limit exceeded.')).
682          self::jsVar('$._candyUpload.prototype.locales.size_limit_exceeded',__('File size exceeds allowed limit.')).
683          self::jsVar('$._candyUpload.prototype.locales.canceled',__('Canceled.')).
684          self::jsVar('$._candyUpload.prototype.locales.http_error',__('HTTP Error:')).
685          self::jsVar('$._candyUpload.prototype.locales.error',__('Error:')).
686          self::jsVar('$._candyUpload.prototype.locales.choose_file',__('Choose file')).
687          self::jsVar('$._candyUpload.prototype.locales.choose_files',__('Choose files')).
688          self::jsVar('$._candyUpload.prototype.locales.cancel',__('Cancel')).
689          self::jsVar('$._candyUpload.prototype.locales.clean',__('Clean')).
690          self::jsVar('$._candyUpload.prototype.locales.upload',__('Upload')).
691          self::jsVar('$._candyUpload.prototype.locales.no_file_in_queue',__('No file in queue.')).
692          self::jsVar('$._candyUpload.prototype.locales.file_in_queue',__('1 file in queue.')).
693          self::jsVar('$._candyUpload.prototype.locales.files_in_queue',__('%d files in queue.')).
694          self::jsVar('$._candyUpload.prototype.locales.queue_error',__('Queue error:')).
695          self::jsVar('dotclear.candyUpload.base_url',$base_url).
696          self::jsVar('dotclear.candyUpload.movie_url',$base_url.'index.php?pf=swfupload.swf').
697          self::jsVar('dotclear.candyUpload.params',implode('&',$params)).
698          "\n//]]>\n".
699          "</script>\n";
700     }
701     
702     public static function jsToolMan()
703     {
704          return
705          '<script type="text/javascript" src="js/tool-man/core.js"></script>'.
706          '<script type="text/javascript" src="js/tool-man/events.js"></script>'.
707          '<script type="text/javascript" src="js/tool-man/css.js"></script>'.
708          '<script type="text/javascript" src="js/tool-man/coordinates.js"></script>'.
709          '<script type="text/javascript" src="js/tool-man/drag.js"></script>'.
710          '<script type="text/javascript" src="js/tool-man/dragsort.js"></script>'.
711          '<script type="text/javascript" src="js/dragsort-tablerows.js"></script>';
712     }
713     
714     public static function jsMetaEditor()
715     {
716          return
717          '<script type="text/javascript" src="js/meta-editor.js"></script>';
718     }
719}
720?>
Note: See TracBrowser for help on using the repository browser.

Sites map