Dotclear

Changeset 1413:0581a433675d for inc


Ignore:
Timestamp:
08/12/13 13:34:09 (12 years ago)
Author:
Dsls
Branch:
twig
Parents:
1319:32528cac0405 (diff), 1333:5e1388edd0c9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Fusion avec default

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inc/admin/lib.dc.page.php

    r1316 r1413  
    44# This file is part of Dotclear 2. 
    55# 
    6 # Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear 
     6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear 
    77# Licensed under the GPL version 2.0 license. 
    88# See LICENSE file or 
     
    2222     { 
    2323          global $core; 
    24            
     24 
    2525          if ($core->blog && $core->auth->check($permissions,$core->blog->id)) 
    2626          { 
    2727               return; 
    2828          } 
    29            
     29 
    3030          if (session_id()) { 
    3131               $core->session->destroy(); 
     
    3333          http::redirect(DC_AUTH_PAGE); 
    3434     } 
    35       
     35 
    3636     # Check super admin 
    3737     public static function checkSuper() 
    3838     { 
    3939          global $core; 
    40            
     40 
    4141          if (!$core->auth->isSuperAdmin()) 
    4242          { 
     
    4747          } 
    4848     } 
    49       
     49 
    5050     # Top of admin page 
    51      public static function open($title='',$head='',$popup=false) 
    52      { 
    53           global $core, $_ctx; 
    54            
    55           $_ctx->popup = (boolean) $popup; 
    56           $_ctx->page_header = $head; 
    57           $_ctx->fillPageTitle($title); 
    58            
    59           ob_start(); 
    60      } 
    61       
     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               '<p>'.__('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               $blog_box .= '</p>'; 
     66          } 
     67          else 
     68          { 
     69               $rs_blogs = $core->getBlogs(array('order'=>'LOWER(blog_name)','limit'=>20)); 
     70               $blogs = array(); 
     71               while ($rs_blogs->fetch()) { 
     72                    $blogs[html::escapeHTML($rs_blogs->blog_name.' - '.$rs_blogs->blog_url)] = $rs_blogs->blog_id; 
     73               } 
     74               $blog_box = 
     75               '<p><label for="switchblog" class="classic nomobile">'. 
     76               __('Blogs:').'</label> '. 
     77               $core->formNonce(). 
     78               form::combo('switchblog',$blogs,$core->blog->id). 
     79               '</p>'. 
     80               '<noscript><p><input type="submit" value="'.__('ok').'" /></p></noscript>'; 
     81          } 
     82 
     83          $safe_mode = isset($_SESSION['sess_safe_mode']) && $_SESSION['sess_safe_mode']; 
     84 
     85          # Display 
     86          header('Content-Type: text/html; charset=UTF-8'); 
     87          echo 
     88          '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '. 
     89          ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n". 
     90          '<html xmlns="http://www.w3.org/1999/xhtml" '. 
     91          'xml:lang="'.$core->auth->getInfo('user_lang').'" '. 
     92          'lang="'.$core->auth->getInfo('user_lang').'">'."\n". 
     93          "<head>\n". 
     94          '  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n". 
     95          '  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n". 
     96          '  <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n". 
     97          '  <meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n". 
     98          '  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n". 
     99 
     100 
     101          self::jsLoadIE7(). 
     102          '    <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n"; 
     103          if (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl') { 
     104               echo 
     105               '    <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n"; 
     106          } 
     107 
     108          $core->auth->user_prefs->addWorkspace('interface'); 
     109          $user_ui_hide_std_favicon = $core->auth->user_prefs->interface->hide_std_favicon; 
     110          if (!$user_ui_hide_std_favicon) { 
     111               echo '<link rel="icon" type="image/png" href="images/favicon.png" />'; 
     112          } 
     113 
     114          echo 
     115          self::jsCommon(). 
     116          $head; 
     117 
     118          # --BEHAVIOR-- adminPageHTMLHead 
     119          $core->callBehavior('adminPageHTMLHead'); 
     120 
     121          echo 
     122          "</head>\n". 
     123          '<body id="dotclear-admin'. 
     124          ($safe_mode ? ' safe-mode' : ''). 
     125          '">'."\n". 
     126 
     127          '<div id="header">'. 
     128          '<ul id="prelude"><li><a href="#content">'.__('Go to the content').'</a></li><li><a href="#main-menu">'.__('Go to the menu').'</a></li></ul>'."\n". 
     129          '<div id="top"><h1><a href="index.php">'.DC_VENDOR_NAME.'</a></h1></div>'."\n"; 
     130 
     131          echo 
     132          '<div id="info-boxes">'. 
     133          '<div id="info-box1">'. 
     134          '<form action="index.php" method="post">'. 
     135          $blog_box. 
     136          '<p class="nomobile"><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>'. 
     137          '</p></form>'. 
     138          '</div>'. 
     139          '<div id="info-box2">'. 
     140          '<a class="smallscreen'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="index.php">'.__('My dashboard').'</a>'. 
     141          '<span class="smallscreen"> | </span><a class="smallscreen'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="preferences.php">'.__('My preferences').'</a>'. 
     142          '<span class="smallscreen"> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'. 
     143          '</div>'. 
     144          '</div>'. 
     145          '</div>'; 
     146 
     147          echo 
     148          '<div id="wrapper">'."\n". 
     149          '<div id="main">'."\n". 
     150          '<div id="content">'."\n"; 
     151 
     152          # Safe mode 
     153          if ($safe_mode) 
     154          { 
     155               echo 
     156               '<div class="error"><h3>'.__('Safe mode').'</h3>'. 
     157               '<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>'. 
     158               '</div>'; 
     159          } 
     160 
     161          if ($core->error->flag()) { 
     162               echo 
     163               '<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</p></strong>'. 
     164               $core->error->toHTML(). 
     165               '</div>'; 
     166          } 
     167     } 
     168 
    62169     public static function close() 
    63170     { 
    64           $res = ob_get_contents(); 
    65           ob_end_clean(); 
    66            
    67           global $core, $_ctx; 
    68            
     171          global $core; 
     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          '<form id="search-menu" action="search.php" method="get">'. 
     182          '<p><label for="q" class="hidden">'.__('Search:').' </label>'.form::field('q',30,255,''). 
     183          '<input type="submit" value="'.__('OK').'" /></p>'. 
     184          '</form>'; 
     185 
     186          foreach ($menu as $k => $v) { 
     187               echo $menu[$k]->draw(); 
     188          } 
     189 
     190          $text = sprintf(__('Thank you for using %s.'),'Dotclear '.DC_VERSION); 
     191 
     192          # --BEHAVIOR-- adminPageFooter 
     193          $textAlt = $core->callBehavior('adminPageFooter',$core,$text); 
     194          if ($textAlt != '') { 
     195               $text = $textAlt; 
     196          } 
     197          $text = html::escapeHTML($text); 
     198 
     199          echo 
     200          '</div>'."\n".      // End of #main-menu 
     201          '<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logos/w-dotclear90.png" alt="'.$text.'" /></a></div>'."\n". 
     202          "</div>\n";         // End of #wrapper 
     203 
     204          if (defined('DC_DEV') && DC_DEV === true) { 
     205               echo self::debugInfo(); 
     206          } 
     207 
     208          echo 
     209          '</body></html>'; 
     210     } 
     211 
     212     public static function openPopup($title='', $head='') 
     213     { 
     214          global $core; 
     215 
     216          # Display 
     217          header('Content-Type: text/html; charset=UTF-8'); 
     218          echo 
     219          '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '. 
     220          ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n". 
     221          '<html xmlns="http://www.w3.org/1999/xhtml" '. 
     222          'xml:lang="'.$core->auth->getInfo('user_lang').'" '. 
     223          'lang="'.$core->auth->getInfo('user_lang').'">'."\n". 
     224          '<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n". 
     225          "<head>\n". 
     226          '  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n". 
     227          '  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n". 
     228 
     229          '  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n". 
     230          '  <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n". 
     231 
     232          self::jsLoadIE7(). 
     233          '    <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n"; 
     234          if (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl') { 
     235               echo 
     236               '    <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n"; 
     237          } 
     238 
     239          echo 
     240          self::jsCommon(). 
     241          $head; 
     242 
     243          # --BEHAVIOR-- adminPageHTMLHead 
     244          $core->callBehavior('adminPageHTMLHead'); 
     245 
     246          echo 
     247          "</head>\n". 
     248          '<body id="dotclear-admin" class="popup">'."\n". 
     249 
     250          '<div id="top hidden"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n"; 
     251 
     252          echo 
     253          '<div id="wrapper">'."\n". 
     254          '<div id="main">'."\n". 
     255          '<div id="content">'."\n"; 
     256 
    69257          if ($core->error->flag()) { 
    70                foreach($core->error->getErrors() as $e) { 
    71                     $_ctx->addError($e); 
    72                } 
    73           } 
    74           $_ctx->page_content = $res; 
    75           $core->tpl->display('page_layout.html.twig'); 
    76      } 
    77       
    78      public static function openPopup($title='',$head='') 
    79      { 
    80           self::open($title,$head,true); 
    81      } 
    82       
     258               echo 
     259               '<div class="error"><strong>'.__('Errors:').'</strong>'. 
     260               $core->error->toHTML(). 
     261               '</div>'; 
     262          } 
     263     } 
     264 
    83265     public static function closePopup() 
    84266     { 
    85           self::close(); 
     267          echo 
     268          "</div>\n".         // End of #content 
     269          "</div>\n".         // End of #main 
     270          '<div id="footer"><p>&nbsp;</p></div>'."\n". 
     271          "</div>\n".         // End of #wrapper 
     272          '</body></html>'; 
     273     } 
     274 
     275     public static function breadcrumb($elements=null,$no_home_link=false) 
     276     { 
     277          // First item of array elements should be blog's name, System or Plugins 
     278          $res = '<h2>'.($no_home_link ? 
     279               '<img src="style/dashboard-alt.png" alt="" />' : 
     280               '<a class="go_home" href="index.php"><img src="style/dashboard.png" alt="'.__('Go to dashboard').'" /></a>'); 
     281          $index = 0; 
     282          foreach ($elements as $element => $url) { 
     283               $res .= ($no_home_link ? ' ' : ($index == 1 ? ' : ' : ' &rsaquo; ')).($url ? '<a href="'.$url.'">' : '').$element.($url ? '</a>' : ''); 
     284               $index++; 
     285          } 
     286          $res .= '</h2>'; 
     287          return $res; 
    86288     } 
    87289 
     
    89291     { 
    90292          global $core; 
    91            
     293 
    92294          $res = ''; 
    93295          if ($msg != '') { 
    94296               $res = ($div ? '<div class="message">' : '').'<p'.($div ? '' : ' class="message"').'>'. 
    95                     ($timestamp ? dt::str(__('%H:%M:%S:'),null,$core->auth->getInfo('user_tz')).' ' : '').$msg. 
    96                     '</p>'.($div ? '</div>' : ''); 
     297               ($timestamp ? dt::str(__('%H:%M:%S:'),null,$core->auth->getInfo('user_tz')).' ' : '').$msg. 
     298               '</p>'.($div ? '</div>' : ''); 
    97299               if ($echo) { 
    98300                    echo $res; 
     
    101303          return $res; 
    102304     } 
    103       
     305 
     306     private static function debugInfo() 
     307     { 
     308          $global_vars = implode(', ',array_keys($GLOBALS)); 
     309 
     310          $res = 
     311          '<div id="debug"><div>'. 
     312          '<p>memory usage: '.memory_get_usage().' ('.files::size(memory_get_usage()).')</p>'; 
     313 
     314          if (function_exists('xdebug_get_profiler_filename')) 
     315          { 
     316               $res .= '<p>Elapsed time: '.xdebug_time_index().' seconds</p>'; 
     317 
     318               $prof_file = xdebug_get_profiler_filename(); 
     319               if ($prof_file) { 
     320                    $res .= '<p>Profiler file : '.xdebug_get_profiler_filename().'</p>'; 
     321               } else { 
     322                    $prof_url = http::getSelfURI(); 
     323                    $prof_url .= (strpos($prof_url,'?') === false) ? '?' : '&'; 
     324                    $prof_url .= 'XDEBUG_PROFILE'; 
     325                    $res .= '<p><a href="'.html::escapeURL($prof_url).'">Trigger profiler</a></p>'; 
     326               } 
     327 
     328               /* xdebug configuration: 
     329               zend_extension = /.../xdebug.so 
     330               xdebug.auto_trace = On 
     331               xdebug.trace_format = 0 
     332               xdebug.trace_options = 1 
     333               xdebug.show_mem_delta = On 
     334               xdebug.profiler_enable = 0 
     335               xdebug.profiler_enable_trigger = 1 
     336               xdebug.profiler_output_dir = /tmp 
     337               xdebug.profiler_append = 0 
     338               xdebug.profiler_output_name = timestamp 
     339               */ 
     340          } 
     341 
     342          $res .= 
     343          '<p>Global vars: '.$global_vars.'</p>'. 
     344          '</div></div>'; 
     345 
     346          return $res; 
     347     } 
     348 
    104349     public static function help($page,$index='') 
    105350     { 
    106351          # Deprecated but we keep this for plugins. 
    107352     } 
    108       
     353 
    109354     public static function helpBlock() 
    110355     { 
     
    113358               return; 
    114359          }; 
    115            
     360 
    116361          global $__resources; 
    117362          if (empty($__resources['help'])) { 
    118363               return; 
    119364          } 
    120            
     365 
    121366          $content = ''; 
    122367          foreach ($args as $v) 
     
    126371                    continue; 
    127372               } 
    128                 
     373 
    129374               if (!isset($__resources['help'][$v])) { 
    130375                    continue; 
     
    134379                    continue; 
    135380               } 
    136                 
     381 
    137382               $fc = file_get_contents($f); 
    138383               if (preg_match('|<body[^>]*?>(.*?)</body>|ms',$fc,$matches)) { 
     
    142387               } 
    143388          } 
    144            
     389 
    145390          if (trim($content) == '') { 
    146391               return; 
    147392          } 
    148            
     393 
    149394          echo 
    150395          '<div id="help"><hr /><div class="help-content clear"><h2>'.__('Help').'</h2>'. 
     
    152397          '</div></div>'; 
    153398     } 
    154       
     399 
    155400     public static function jsLoad($src) 
    156401     { 
     
    161406          } 
    162407     } 
    163       
     408 
    164409     public static function jsVar($n,$v) 
    165410     { 
    166411          return $n." = '".html::escapeJS($v)."';\n"; 
    167412     } 
    168       
     413 
    169414     public static function jsCommon() 
    170415     { 
     
    175420          self::jsLoad('js/common.js'). 
    176421          self::jsLoad('js/prelude.js'). 
    177            
     422 
    178423          '<script type="text/javascript">'."\n". 
    179424          "//<![CDATA[\n". 
    180425          self::jsVar('dotclear.nonce',$GLOBALS['core']->getNonce()). 
    181            
     426 
    182427          self::jsVar('dotclear.img_plus_src','images/expand.png'). 
    183428          self::jsVar('dotclear.img_plus_alt',__('uncover')). 
     
    186431          self::jsVar('dotclear.img_menu_on','images/menu_on.png'). 
    187432          self::jsVar('dotclear.img_menu_off','images/menu_off.png'). 
    188            
     433 
    189434          self::jsVar('dotclear.msg.help', 
    190435               __('Help about this page')). 
     
    260505          "</script>\n"; 
    261506     } 
    262       
     507 
    263508     public static function jsLoadIE7() 
    264509     { 
     
    269514          '<![endif]-->'."\n"; 
    270515     } 
    271       
     516 
    272517     public static function jsConfirmClose() 
    273518     { 
     
    281526               $args = ''; 
    282527          } 
    283            
     528 
    284529          return 
    285530          self::jsLoad('js/confirm-close.js'). 
     
    291536          "</script>\n"; 
    292537     } 
    293       
     538 
    294539     public static function jsPageTabs($default=null) 
    295540     { 
     
    297542               $default = "'".html::escapeJS($default)."'"; 
    298543          } 
    299            
     544 
    300545          return 
    301546          self::jsLoad('js/jquery/jquery.pageTabs.js'). 
     
    303548          "//<![CDATA[\n". 
    304549          "\$(function() {\n". 
    305           "    \$.pageTabs(".$default.");\n". 
    306           "});\n". 
    307           "\n//]]>\n". 
    308           "</script>\n"; 
    309      } 
    310       
    311      public static function jsModal() 
    312      { 
    313           return 
    314           '<link rel="stylesheet" type="text/css" href="style/modal/modal.css" />'."\n". 
    315           self::jsLoad('js/jquery/jquery.modal.js'). 
    316           '<script type="text/javascript">'."\n". 
    317           "//<![CDATA[\n". 
    318           self::jsVar('$.modal.prototype.params.loader_img','style/modal/loader.gif'). 
    319           self::jsVar('$.modal.prototype.params.close_img','style/modal/close.png'). 
    320           "\n//]]>\n". 
    321           "</script>\n"; 
    322      } 
    323       
    324      public static function jsColorPicker() 
    325      { 
    326           return 
    327           '<link rel="stylesheet" type="text/css" href="style/farbtastic/farbtastic.css" />'."\n". 
    328           self::jsLoad('js/jquery/jquery.farbtastic.js'). 
    329           self::jsLoad('js/color-picker.js'); 
    330      } 
    331       
    332      public static function jsDatePicker() 
    333      { 
    334           return 
    335           '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 
    336           self::jsLoad('js/date-picker.js'). 
    337           '<script type="text/javascript">'."\n". 
    338           "//<![CDATA[\n". 
    339            
    340           "datePicker.prototype.months[0] = '".html::escapeJS(__('January'))."'; ". 
    341           "datePicker.prototype.months[1] = '".html::escapeJS(__('February'))."'; ". 
    342           "datePicker.prototype.months[2] = '".html::escapeJS(__('March'))."'; ". 
    343           "datePicker.prototype.months[3] = '".html::escapeJS(__('April'))."'; ". 
    344           "datePicker.prototype.months[4] = '".html::escapeJS(__('May'))."'; ". 
    345           "datePicker.prototype.months[5] = '".html::escapeJS(__('June'))."'; ". 
    346           "datePicker.prototype.months[6] = '".html::escapeJS(__('July'))."'; ". 
    347           "datePicker.prototype.months[7] = '".html::escapeJS(__('August'))."'; ". 
    348           "datePicker.prototype.months[8] = '".html::escapeJS(__('September'))."'; ". 
    349           "datePicker.prototype.months[9] = '".html::escapeJS(__('October'))."'; ". 
    350           "datePicker.prototype.months[10] = '".html::escapeJS(__('November'))."'; ". 
    351           "datePicker.prototype.months[11] = '".html::escapeJS(__('December'))."'; ". 
    352            
    353           "datePicker.prototype.days[0] = '".html::escapeJS(__('Monday'))."'; ". 
    354           "datePicker.prototype.days[1] = '".html::escapeJS(__('Tuesday'))."'; ". 
    355           "datePicker.prototype.days[2] = '".html::escapeJS(__('Wednesday'))."'; ". 
    356           "datePicker.prototype.days[3] = '".html::escapeJS(__('Thursday'))."'; ". 
    357           "datePicker.prototype.days[4] = '".html::escapeJS(__('Friday'))."'; ". 
    358           "datePicker.prototype.days[5] = '".html::escapeJS(__('Saturday'))."'; ". 
    359           "datePicker.prototype.days[6] = '".html::escapeJS(__('Sunday'))."'; ". 
    360            
    361           "datePicker.prototype.img_src = 'images/date-picker.png'; ". 
    362            
    363           "datePicker.prototype.close_msg = '".html::escapeJS(__('close'))."'; ". 
    364           "datePicker.prototype.now_msg = '".html::escapeJS(__('now'))."'; ". 
    365            
    366           "\n//]]>\n". 
    367           "</script>\n"; 
    368      } 
    369       
    370      public static function jsToolBar() 
    371      { 
    372           $res = 
    373           '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'. 
    374           '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>'; 
    375            
    376           if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) { 
    377                $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>'; 
    378           } 
    379            
    380           $res .= 
    381           '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'. 
    382           '<script type="text/javascript">'."\n". 
    383           "//<![CDATA[\n". 
    384           "jsToolBar.prototype.dialog_url = 'popup.php'; ". 
    385           "jsToolBar.prototype.iframe_css = '". 
    386                'body{'. 
    387                     'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'. 
    388                     'color : #000;'. 
    389                     'background: #f9f9f9;'. 
    390                     'margin: 0;'. 
    391                     'padding : 2px;'. 
    392                     'border: none;'. 
    393                     (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : ''). 
    394                '}'. 
    395                'pre, code, kbd, samp {'. 
    396                     'font-family:"Courier New",Courier,monospace;'. 
    397                     'font-size : 1.1em;'. 
    398                '}'. 
    399                'code {'. 
    400                     'color : #666;'. 
    401                     'font-weight : bold;'. 
    402                '}'. 
    403                'body > p:first-child {'. 
    404                     'margin-top: 0;'. 
    405                '}'. 
    406           "'; ". 
    407           "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ". 
    408           "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ". 
    409           "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ". 
    410           "jsToolBar.prototype.legend_msg = '". 
    411           html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ". 
    412           "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ". 
    413           "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ". 
    414           "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ". 
    415           "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ". 
    416           "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ". 
    417           "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ". 
    418           "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ". 
    419           "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ". 
    420           "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ". 
    421           "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ". 
    422           "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ". 
    423           "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ". 
    424           "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ". 
    425           "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ". 
    426           "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ". 
    427           "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ". 
    428           "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ". 
    429           "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ". 
    430           "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ". 
    431           "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ". 
    432            
    433           "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ". 
    434           "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ". 
    435           "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ". 
    436            
    437           "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ". 
    438           "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ". 
    439            
    440           "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ". 
    441           "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; "; 
    442            
    443           if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 
    444                $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n"; 
    445           } 
    446            
    447           $res .= 
    448           "\n//]]>\n". 
    449           "</script>\n"; 
    450            
    451           return $res; 
    452      } 
    453       
    454      public static function jsUpload($params=array(),$base_url=null) 
    455      { 
    456           if (!$base_url) { 
    457                $base_url = path::clean(dirname(preg_replace('/(\?.*$)?/','',$_SERVER['REQUEST_URI']))).'/'; 
    458           } 
    459            
    460           $params = array_merge($params,array( 
    461                'sess_id='.session_id(), 
    462                'sess_uid='.$_SESSION['sess_browser_uid'], 
    463                'xd_check='.$GLOBALS['core']->getNonce() 
     550               "    \$.pageTabs(".$default.");\n". 
     551               "});\n". 
     552"\n//]]>\n". 
     553"</script>\n"; 
     554} 
     555 
     556public static function jsModal() 
     557{ 
     558     return 
     559     '<link rel="stylesheet" type="text/css" href="style/modal/modal.css" />'."\n". 
     560     self::jsLoad('js/jquery/jquery.modal.js'). 
     561     '<script type="text/javascript">'."\n". 
     562     "//<![CDATA[\n". 
     563     self::jsVar('$.modal.prototype.params.loader_img','style/modal/loader.gif'). 
     564     self::jsVar('$.modal.prototype.params.close_img','style/modal/close.png'). 
     565     "\n//]]>\n". 
     566     "</script>\n"; 
     567} 
     568 
     569public static function jsColorPicker() 
     570{ 
     571     return 
     572     '<link rel="stylesheet" type="text/css" href="style/farbtastic/farbtastic.css" />'."\n". 
     573     self::jsLoad('js/jquery/jquery.farbtastic.js'). 
     574     self::jsLoad('js/color-picker.js'); 
     575} 
     576 
     577public static function jsDatePicker() 
     578{ 
     579     return 
     580     '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 
     581     self::jsLoad('js/date-picker.js'). 
     582     '<script type="text/javascript">'."\n". 
     583     "//<![CDATA[\n". 
     584 
     585     "datePicker.prototype.months[0] = '".html::escapeJS(__('January'))."'; ". 
     586     "datePicker.prototype.months[1] = '".html::escapeJS(__('February'))."'; ". 
     587     "datePicker.prototype.months[2] = '".html::escapeJS(__('March'))."'; ". 
     588     "datePicker.prototype.months[3] = '".html::escapeJS(__('April'))."'; ". 
     589     "datePicker.prototype.months[4] = '".html::escapeJS(__('May'))."'; ". 
     590     "datePicker.prototype.months[5] = '".html::escapeJS(__('June'))."'; ". 
     591     "datePicker.prototype.months[6] = '".html::escapeJS(__('July'))."'; ". 
     592     "datePicker.prototype.months[7] = '".html::escapeJS(__('August'))."'; ". 
     593     "datePicker.prototype.months[8] = '".html::escapeJS(__('September'))."'; ". 
     594     "datePicker.prototype.months[9] = '".html::escapeJS(__('October'))."'; ". 
     595     "datePicker.prototype.months[10] = '".html::escapeJS(__('November'))."'; ". 
     596     "datePicker.prototype.months[11] = '".html::escapeJS(__('December'))."'; ". 
     597 
     598     "datePicker.prototype.days[0] = '".html::escapeJS(__('Monday'))."'; ". 
     599     "datePicker.prototype.days[1] = '".html::escapeJS(__('Tuesday'))."'; ". 
     600     "datePicker.prototype.days[2] = '".html::escapeJS(__('Wednesday'))."'; ". 
     601     "datePicker.prototype.days[3] = '".html::escapeJS(__('Thursday'))."'; ". 
     602     "datePicker.prototype.days[4] = '".html::escapeJS(__('Friday'))."'; ". 
     603     "datePicker.prototype.days[5] = '".html::escapeJS(__('Saturday'))."'; ". 
     604     "datePicker.prototype.days[6] = '".html::escapeJS(__('Sunday'))."'; ". 
     605 
     606     "datePicker.prototype.img_src = 'images/date-picker.png'; ". 
     607 
     608     "datePicker.prototype.close_msg = '".html::escapeJS(__('close'))."'; ". 
     609     "datePicker.prototype.now_msg = '".html::escapeJS(__('now'))."'; ". 
     610 
     611     "\n//]]>\n". 
     612     "</script>\n"; 
     613} 
     614 
     615public static function jsToolBar() 
     616{ 
     617     $res = 
     618     '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'. 
     619     '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>'; 
     620 
     621     if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) { 
     622          $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>'; 
     623     } 
     624 
     625     $res .= 
     626     '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'. 
     627     '<script type="text/javascript">'."\n". 
     628     "//<![CDATA[\n". 
     629     "jsToolBar.prototype.dialog_url = 'popup.php'; ". 
     630     "jsToolBar.prototype.iframe_css = '". 
     631     'body{'. 
     632     'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'. 
     633     'color : #000;'. 
     634     'background: #f9f9f9;'. 
     635     'margin: 0;'. 
     636     'padding : 2px;'. 
     637     'border: none;'. 
     638     (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : ''). 
     639     '}'. 
     640     'pre, code, kbd, samp {'. 
     641     'font-family:"Courier New",Courier,monospace;'. 
     642     'font-size : 1.1em;'. 
     643     '}'. 
     644     'code {'. 
     645     'color : #666;'. 
     646     'font-weight : bold;'. 
     647     '}'. 
     648     'body > p:first-child {'. 
     649     'margin-top: 0;'. 
     650     '}'. 
     651     "'; ". 
     652     "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ". 
     653     "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ". 
     654     "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ". 
     655     "jsToolBar.prototype.legend_msg = '". 
     656     html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ". 
     657     "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ". 
     658     "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ". 
     659     "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ". 
     660     "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ". 
     661     "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ". 
     662     "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ". 
     663     "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ". 
     664     "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ". 
     665     "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ". 
     666     "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ". 
     667     "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ". 
     668     "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ". 
     669     "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ". 
     670     "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ". 
     671     "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ". 
     672     "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ". 
     673     "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ". 
     674     "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ". 
     675     "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ". 
     676     "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ". 
     677 
     678     "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ". 
     679     "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ". 
     680     "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ". 
     681 
     682     "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ". 
     683     "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ". 
     684 
     685     "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ". 
     686     "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; "; 
     687 
     688     if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 
     689          $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n"; 
     690     } 
     691 
     692     $res .= 
     693     "\n//]]>\n". 
     694     "</script>\n"; 
     695 
     696     return $res; 
     697} 
     698 
     699public static function jsUpload($params=array(),$base_url=null) 
     700{ 
     701     if (!$base_url) { 
     702          $base_url = path::clean(dirname(preg_replace('/(\?.*$)?/','',$_SERVER['REQUEST_URI']))).'/'; 
     703     } 
     704 
     705     $params = array_merge($params,array( 
     706          'sess_id='.session_id(), 
     707          'sess_uid='.$_SESSION['sess_browser_uid'], 
     708          'xd_check='.$GLOBALS['core']->getNonce() 
    464709          )); 
    465            
    466           return 
    467           '<link rel="stylesheet" type="text/css" href="style/jsUpload/style.css" />'."\n". 
    468  
    469     '<script id="template-upload" type="text/x-tmpl"> 
    470 {% for (var i=0, file; file=o.files[i]; i++) { %} 
    471     <tr class="template-upload fade"> 
    472         <td> 
    473             <span class="preview"></span> 
    474         </td> 
    475         <td> 
    476             <p class="name">{%=file.name%}</p> 
    477             {% if (file.error) { %} 
    478                 <div><span class="label label-error">'.__('Error:').'</span> {%=file.error%}</div> 
    479             {% } %} 
    480         </td> 
    481         <td> 
    482             <p class="size">{%=o.formatFileSize(file.size)%}</p> 
    483             {% if (!o.files.error) { %} 
    484                 <div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="bar" style="width:0%;"></div></div> 
    485             {% } %} 
    486         </td> 
    487         <td> 
    488             {% if (!o.files.error && !i && !o.options.autoUpload) { %} 
    489                 <input type="submit" class="button start" value="'.__('Send').'"/> 
    490             {% } %} 
    491         </td> 
    492     </tr> 
    493 {% } %} 
    494 </script> 
    495 <!-- The template to display files available for download --> 
    496 <script id="template-download" type="text/x-tmpl"> 
    497 {% for (var i=0, file; file=o.files[i]; i++) { %} 
    498     <tr class="template-download fade"> 
    499         <td> 
    500             <span class="preview"> 
    501                 {% if (file.thumbnail_url) { %} 
    502                     <a href="{%=file.url%}" title="{%=file.name%}" data-gallery="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a> 
    503                 {% } %} 
    504             </span> 
    505         </td> 
    506         <td> 
    507             <p class="name">{%=file.name%}</p> 
    508             {% if (file.error) { %} 
    509                 <div><span class="label label-important">'.__('Error:').'</span> {%=file.error%}</div> 
    510             {% } %} 
    511         </td> 
    512         <td> 
    513             <span class="size">{%=o.formatFileSize(file.size)%}</span> 
    514         </td> 
    515         <td> 
    516             {% if (file.error) { %} 
    517             <span class="upload-status error"></span> 
    518             {% } else { %} 
    519             <span class="upload-status ok"></span> 
    520             {% } %} 
    521         </td> 
    522     </tr> 
    523 {% } %} 
    524 </script>'. 
    525  
    526           self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js'). 
    527     self::jsLoad('js/jsUpload/tmpl.js'). 
    528     self::jsLoad('js/jsUpload/load-image.js'). 
    529           self::jsLoad('js/jsUpload/jquery.iframe-transport.js'). 
    530           self::jsLoad('js/jsUpload/jquery.fileupload.js'). 
    531           self::jsLoad('js/jsUpload/jquery.fileupload-process.js'). 
    532           self::jsLoad('js/jsUpload/jquery.fileupload-resize.js'). 
    533           self::jsLoad('js/jsUpload/jquery.fileupload-ui.js'). 
    534            
    535           '<script type="text/javascript">'."\n". 
    536           "//<![CDATA[\n". 
    537           "dotclear.jsUpload = {};\n". 
    538           "dotclear.jsUpload.msg = {};\n". 
    539           self::jsVar('dotclear.jsUpload.msg.limit_exceeded',__('Limit exceeded.')). 
    540           self::jsVar('dotclear.jsUpload.msg.size_limit_exceeded',__('File size exceeds allowed limit.')). 
    541           self::jsVar('dotclear.jsUpload.msg.canceled',__('Canceled.')). 
    542           self::jsVar('dotclear.jsUpload.msg.http_error',__('HTTP Error:')). 
    543           self::jsVar('dotclear.jsUpload.msg.error',__('Error:')). 
    544           self::jsVar('dotclear.jsUpload.msg.choose_file',__('Choose file')). 
    545           self::jsVar('dotclear.jsUpload.msg.choose_files',__('Choose files')). 
    546           self::jsVar('dotclear.jsUpload.msg.cancel',__('Cancel')). 
    547           self::jsVar('dotclear.jsUpload.msg.clean',__('Clean')). 
    548           self::jsVar('dotclear.jsUpload.msg.upload',__('Upload')). 
    549           self::jsVar('dotclear.jsUpload.msg.no_file_in_queue',__('No file in queue.')). 
    550           self::jsVar('dotclear.jsUpload.msg.file_in_queue',__('1 file in queue.')). 
    551           self::jsVar('dotclear.jsUpload.msg.files_in_queue',__('%d files in queue.')). 
    552           self::jsVar('dotclear.jsUpload.msg.queue_error',__('Queue error:')). 
    553           self::jsVar('dotclear.jsUpload.base_url',$base_url). 
    554           "\n//]]>\n". 
    555           "</script>\n"; 
    556      } 
    557       
    558      public static function jsToolMan() 
    559      { 
    560           return 
    561           '<script type="text/javascript" src="js/tool-man/core.js"></script>'. 
    562           '<script type="text/javascript" src="js/tool-man/events.js"></script>'. 
    563           '<script type="text/javascript" src="js/tool-man/css.js"></script>'. 
    564           '<script type="text/javascript" src="js/tool-man/coordinates.js"></script>'. 
    565           '<script type="text/javascript" src="js/tool-man/drag.js"></script>'. 
    566           '<script type="text/javascript" src="js/tool-man/dragsort.js"></script>'. 
    567           '<script type="text/javascript" src="js/dragsort-tablerows.js"></script>'; 
    568      } 
    569       
    570      public static function jsMetaEditor() 
    571      { 
    572           return 
    573           '<script type="text/javascript" src="js/meta-editor.js"></script>'; 
    574      } 
     710 
     711     return 
     712     '<link rel="stylesheet" type="text/css" href="style/jsUpload/style.css" />'."\n". 
     713 
     714     '<script id="template-upload" type="text/x-tmpl"> 
     715     {% for (var i=0, file; file=o.files[i]; i++) { %} 
     716     <div class="template-upload fade"> 
     717     <div class="upload-file"> 
     718     <div class="upload-fileinfo"> 
     719          <span class="upload-filename">{%=file.name%}</span> 
     720          <span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span> 
     721          <span class="upload-filecancel cancel">'.__('Cancel').'</span> 
     722          {% if (!o.files.error && !i && !o.options.autoUpload) { %} 
     723          <input type="submit" class="button start"  value="'.__('Send').'"/> 
     724          {% } %} 
     725          <span class="upload-filemsg"></span> 
     726     </div> 
     727     {% if (!o.files.error) { %} 
     728     <div class="upload-progress progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div> 
     729     {% } %} 
     730     </div> 
     731     {% } %} 
     732     </script> 
     733     <!-- The template to display files available for download --> 
     734     <script id="template-download" type="text/x-tmpl"> 
     735     {% for (var i=0, file; file=o.files[i]; i++) { %} 
     736     <div class="template-download fade"> 
     737     <div class="upload-file"> 
     738     <div class="upload-fileinfo"> 
     739          <span class="upload-filename">{%=file.name%}</span> 
     740          <span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span> 
     741          <span class="upload-filemsg{% if (file.error) { %} upload-error{% } %}"> 
     742          {% if (file.error) { %} 
     743          '.__('Error:').' {%=file.error%} 
     744          {% } else { %} 
     745          '.__('File successfully uploaded.').' 
     746          {% } %} 
     747          </span> 
     748     </div> 
     749     <div class="upload-progress"> 
     750          {% if (!file.error) { %} 
     751          <div class="bar" style="width:100%;">100%</div> 
     752          {% } %} 
     753     </div> 
     754     </div> 
     755     {% } %} 
     756     </script>'. 
     757 
     758     self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js'). 
     759     self::jsLoad('js/jsUpload/tmpl.js'). 
     760     self::jsLoad('js/jsUpload/load-image.js'). 
     761     self::jsLoad('js/jsUpload/jquery.iframe-transport.js'). 
     762     self::jsLoad('js/jsUpload/jquery.fileupload.js'). 
     763     self::jsLoad('js/jsUpload/jquery.fileupload-process.js'). 
     764     self::jsLoad('js/jsUpload/jquery.fileupload-resize.js'). 
     765     self::jsLoad('js/jsUpload/jquery.fileupload-ui.js'). 
     766 
     767     '<script type="text/javascript">'."\n". 
     768     "//<![CDATA[\n". 
     769     "dotclear.jsUpload = {};\n". 
     770     "dotclear.jsUpload.msg = {};\n". 
     771     self::jsVar('dotclear.msg.enhanced_uploader_activate',__('Temporarily activate enhanced uploader')). 
     772     self::jsVar('dotclear.msg.enhanced_uploader_disable',__('Temporarily disable enhanced uploader')). 
     773     self::jsVar('dotclear.jsUpload.msg.limit_exceeded',__('Limit exceeded.')). 
     774     self::jsVar('dotclear.jsUpload.msg.size_limit_exceeded',__('File size exceeds allowed limit.')). 
     775     self::jsVar('dotclear.jsUpload.msg.canceled',__('Canceled.')). 
     776     self::jsVar('dotclear.jsUpload.msg.http_error',__('HTTP Error:')). 
     777     self::jsVar('dotclear.jsUpload.msg.error',__('Error:')). 
     778     self::jsVar('dotclear.jsUpload.msg.choose_file',__('Choose file')). 
     779     self::jsVar('dotclear.jsUpload.msg.choose_files',__('Choose files')). 
     780     self::jsVar('dotclear.jsUpload.msg.cancel',__('Cancel')). 
     781     self::jsVar('dotclear.jsUpload.msg.clean',__('Clean')). 
     782     self::jsVar('dotclear.jsUpload.msg.upload',__('Upload')). 
     783     self::jsVar('dotclear.jsUpload.msg.no_file_in_queue',__('No file in queue.')). 
     784     self::jsVar('dotclear.jsUpload.msg.file_in_queue',__('1 file in queue.')). 
     785     self::jsVar('dotclear.jsUpload.msg.files_in_queue',__('%d files in queue.')). 
     786     self::jsVar('dotclear.jsUpload.msg.queue_error',__('Queue error:')). 
     787     self::jsVar('dotclear.jsUpload.base_url',$base_url). 
     788     "\n//]]>\n". 
     789     "</script>\n"; 
     790} 
     791 
     792public static function jsToolMan() 
     793{ 
     794     return 
     795     '<script type="text/javascript" src="js/tool-man/core.js"></script>'. 
     796     '<script type="text/javascript" src="js/tool-man/events.js"></script>'. 
     797     '<script type="text/javascript" src="js/tool-man/css.js"></script>'. 
     798     '<script type="text/javascript" src="js/tool-man/coordinates.js"></script>'. 
     799     '<script type="text/javascript" src="js/tool-man/drag.js"></script>'. 
     800     '<script type="text/javascript" src="js/tool-man/dragsort.js"></script>'. 
     801     '<script type="text/javascript" src="js/dragsort-tablerows.js"></script>'; 
     802} 
     803 
     804public static function jsMetaEditor() 
     805{ 
     806     return 
     807     '<script type="text/javascript" src="js/meta-editor.js"></script>'; 
     808} 
    575809} 
    576810?> 
Note: See TracChangeset for help on using the changeset viewer.

Sites map