Dotclear


Ignore:
Timestamp:
08/09/13 08:01:31 (12 years ago)
Author:
Dsls
Branch:
twig
Parents:
1158:9d7267aec27b (diff), 1314:99a1319b79fc (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:

Merge with default

Location:
inc/admin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • inc/admin/class.dc.menu.php

    r1179 r1315  
    44# This file is part of Dotclear 2. 
    55# 
    6 # Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear 
     6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear 
    77# Licensed under the GPL version 2.0 license. 
    88# See LICENSE file or 
     
    1414class dcMenu 
    1515{ 
     16     private $items; 
    1617     private $id; 
    1718     public $title; 
     19     public $separator; 
    1820      
    19      public function __construct($id,$title,$itemSpace='') 
     21     public function __construct($id,$title,$separator='') 
    2022     { 
    2123          $this->id = $id; 
    2224          $this->title = $title; 
    23           $this->itemSpace = $itemSpace; 
     25          $this->separator = $separator; 
    2426          $this->items = array(); 
     27     } 
     28      
     29     public function getID() 
     30     { 
     31          return $this->id; 
     32     } 
     33      
     34     public function getTitle() 
     35     { 
     36          return $this->title; 
     37     } 
     38      
     39     public function getSeparator() 
     40     { 
     41          return $this->separator; 
     42     } 
     43      
     44     public function getItems() 
     45     { 
     46          return $this->items; 
    2547     } 
    2648      
     
    3961     } 
    4062      
     63     protected function itemDef($title,$url,$img,$active,$id=null,$class=null) 
     64     { 
     65          if (is_array($url)) { 
     66               $link = $url[0]; 
     67               $ahtml = (!empty($url[1])) ? ' '.$url[1] : ''; 
     68          } else { 
     69               $link = $url; 
     70               $ahtml = ''; 
     71          } 
     72           
     73          return array( 
     74               'title' => $title, 
     75               'link' => $link, 
     76               'ahtml' => $ahtml, 
     77               'img' => dc_admin_icon_url($img), 
     78               'active' => (boolean) $active, 
     79               'id' => $id, 
     80               'class' => $class 
     81          ); 
     82     } 
     83      
     84     /** 
     85     @deprecated Use Template engine instead 
     86     */ 
    4187     public function draw() 
    4288     { 
     
    5298          for ($i=0; $i<count($this->items); $i++) 
    5399          { 
    54                if ($i+1 < count($this->items) && $this->itemSpace != '') { 
    55                     $res .= preg_replace('|</li>$|',$this->itemSpace.'</li>',$this->items[$i]); 
     100               if ($i+1 < count($this->items) && $this->separator != '') { 
     101                    $res .= preg_replace('|</li>$|',$this->separator.'</li>',$this->drawItem($this->items[$i])); 
    56102                    $res .= "\n"; 
    57103               } else { 
    58                     $res .= $this->items[$i]."\n"; 
     104                    $res .= $this->drawItem($this->items[$i])."\n"; 
    59105               } 
    60106          } 
     
    65111     } 
    66112      
    67      protected function itemDef($title,$url,$img,$active,$id=null,$class=null) 
     113     /** 
     114     @deprecated Use Template engine instead 
     115     */ 
     116     protected function drawItem($item) 
    68117     { 
    69           if (is_array($url)) { 
    70                $link = $url[0]; 
    71                $ahtml = (!empty($url[1])) ? ' '.$url[1] : ''; 
    72           } else { 
    73                $link = $url; 
    74                $ahtml = ''; 
    75           } 
    76            
    77           $img = dc_admin_icon_url($img); 
    78            
    79118          return 
    80           '<li'.(($active || $class) ? ' class="'.(($active) ? 'active ' : '').(($class) ? $class : '').'"' : ''). 
    81           (($id) ? ' id="'.$id.'"' : ''). 
    82           (($img) ? ' style="background-image: url('.$img.');"' : ''). 
     119          '<li'.(($item['active'] || $item['class']) ? ' class="'.(($item['active']) ? 'active ' : '').(($item['class']) ? $item['class'] : '').'"' : ''). 
     120          (($item['id']) ? ' id="'.$item['id'].'"' : ''). 
     121          (($item['img']) ? ' style="background-image: url('.$item['img'].');"' : ''). 
    83122          '>'. 
    84123           
    85           '<a href="'.$link.'"'.$ahtml.'>'.$title.'</a></li>'."\n"; 
     124          '<a href="'.$item['link'].'"'.$item['ahtml'].'>'.$item['title'].'</a></li>'."\n"; 
    86125     } 
    87126} 
  • inc/admin/lib.dc.page.php

    r1312 r1315  
    44# This file is part of Dotclear 2. 
    55# 
    6 # Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear 
     6# Copyright (c) 2003-2011 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='') 
    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']) ? ' class="active"' : '').' href="index.php">'.__('My dashboard').'</a>'. 
    141           '<span class="smallscreen"> | </span><a class="smallscreen"'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active smallscreen"' : '').' 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  
     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      
     62     public static function close() 
     63     { 
     64          $res = ob_get_contents(); 
     65          ob_end_clean(); 
     66           
     67          global $core, $_ctx; 
     68           
    16169          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  
    169      public static function close() 
    170      { 
    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_logo_footer.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  
    257           if ($core->error->flag()) { 
    258                echo 
    259                '<div class="error"><strong>'.__('Errors:').'</strong>'. 
    260                $core->error->toHTML(). 
    261                '</div>'; 
    262           } 
    263      } 
    264  
     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      
    26583     public static function closePopup() 
    26684     { 
    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>'; 
     85          self::close(); 
    27386     } 
    27487 
     
    27689     { 
    27790          global $core; 
    278  
     91           
    27992          $res = ''; 
    28093          if ($msg != '') { 
    28194               $res = ($div ? '<div class="message">' : '').'<p'.($div ? '' : ' class="message"').'>'. 
    282                ($timestamp ? dt::str(__('%H:%M:%S:'),null,$core->auth->getInfo('user_tz')).' ' : '').$msg. 
    283                '</p>'.($div ? '</div>' : ''); 
     95                    ($timestamp ? dt::str(__('%H:%M:%S:'),null,$core->auth->getInfo('user_tz')).' ' : '').$msg. 
     96                    '</p>'.($div ? '</div>' : ''); 
    28497               if ($echo) { 
    28598                    echo $res; 
     
    288101          return $res; 
    289102     } 
    290  
    291      private static function debugInfo() 
    292      { 
    293           $global_vars = implode(', ',array_keys($GLOBALS)); 
    294  
    295           $res = 
    296           '<div id="debug"><div>'. 
    297           '<p>memory usage: '.memory_get_usage().' ('.files::size(memory_get_usage()).')</p>'; 
    298  
    299           if (function_exists('xdebug_get_profiler_filename')) 
    300           { 
    301                $res .= '<p>Elapsed time: '.xdebug_time_index().' seconds</p>'; 
    302  
    303                $prof_file = xdebug_get_profiler_filename(); 
    304                if ($prof_file) { 
    305                     $res .= '<p>Profiler file : '.xdebug_get_profiler_filename().'</p>'; 
    306                } else { 
    307                     $prof_url = http::getSelfURI(); 
    308                     $prof_url .= (strpos($prof_url,'?') === false) ? '?' : '&'; 
    309                     $prof_url .= 'XDEBUG_PROFILE'; 
    310                     $res .= '<p><a href="'.html::escapeURL($prof_url).'">Trigger profiler</a></p>'; 
    311                } 
    312  
    313                /* xdebug configuration: 
    314                zend_extension = /.../xdebug.so 
    315                xdebug.auto_trace = On 
    316                xdebug.trace_format = 0 
    317                xdebug.trace_options = 1 
    318                xdebug.show_mem_delta = On 
    319                xdebug.profiler_enable = 0 
    320                xdebug.profiler_enable_trigger = 1 
    321                xdebug.profiler_output_dir = /tmp 
    322                xdebug.profiler_append = 0 
    323                xdebug.profiler_output_name = timestamp 
    324                */ 
    325           } 
    326  
    327           $res .= 
    328           '<p>Global vars: '.$global_vars.'</p>'. 
    329           '</div></div>'; 
    330  
    331           return $res; 
    332      } 
    333  
     103      
    334104     public static function help($page,$index='') 
    335105     { 
    336106          # Deprecated but we keep this for plugins. 
    337107     } 
    338  
     108      
    339109     public static function helpBlock() 
    340110     { 
     
    343113               return; 
    344114          }; 
    345  
     115           
    346116          global $__resources; 
    347117          if (empty($__resources['help'])) { 
    348118               return; 
    349119          } 
    350  
     120           
    351121          $content = ''; 
    352122          foreach ($args as $v) 
     
    356126                    continue; 
    357127               } 
    358  
     128                
    359129               if (!isset($__resources['help'][$v])) { 
    360130                    continue; 
     
    364134                    continue; 
    365135               } 
    366  
     136                
    367137               $fc = file_get_contents($f); 
    368138               if (preg_match('|<body[^>]*?>(.*?)</body>|ms',$fc,$matches)) { 
     
    372142               } 
    373143          } 
    374  
     144           
    375145          if (trim($content) == '') { 
    376146               return; 
    377147          } 
    378  
     148           
    379149          echo 
    380150          '<div id="help"><hr /><div class="help-content clear"><h2>'.__('Help').'</h2>'. 
     
    382152          '</div></div>'; 
    383153     } 
    384  
     154      
    385155     public static function jsLoad($src) 
    386156     { 
     
    391161          } 
    392162     } 
    393  
     163      
    394164     public static function jsVar($n,$v) 
    395165     { 
    396166          return $n." = '".html::escapeJS($v)."';\n"; 
    397167     } 
    398  
     168      
    399169     public static function jsCommon() 
    400170     { 
     
    405175          self::jsLoad('js/common.js'). 
    406176          self::jsLoad('js/prelude.js'). 
    407  
     177           
    408178          '<script type="text/javascript">'."\n". 
    409179          "//<![CDATA[\n". 
    410180          self::jsVar('dotclear.nonce',$GLOBALS['core']->getNonce()). 
    411  
     181           
    412182          self::jsVar('dotclear.img_plus_src','images/expand.png'). 
    413183          self::jsVar('dotclear.img_plus_alt',__('uncover')). 
     
    416186          self::jsVar('dotclear.img_menu_on','images/menu_on.png'). 
    417187          self::jsVar('dotclear.img_menu_off','images/menu_off.png'). 
    418  
     188           
    419189          self::jsVar('dotclear.msg.help', 
    420                __('Help about this page')). 
    421           self::jsVar('dotclear.msg.help_hide', 
    422                __('Hide')). 
     190               __('help')). 
    423191          self::jsVar('dotclear.msg.no_selection', 
    424192               __('no selection')). 
     
    490258          "</script>\n"; 
    491259     } 
    492  
     260      
    493261     public static function jsLoadIE7() 
    494262     { 
     
    499267          '<![endif]-->'."\n"; 
    500268     } 
    501  
     269      
    502270     public static function jsConfirmClose() 
    503271     { 
     
    511279               $args = ''; 
    512280          } 
    513  
     281           
    514282          return 
    515283          self::jsLoad('js/confirm-close.js'). 
     
    521289          "</script>\n"; 
    522290     } 
    523  
     291      
    524292     public static function jsPageTabs($default=null) 
    525293     { 
     
    527295               $default = "'".html::escapeJS($default)."'"; 
    528296          } 
     297           
     298          return 
     299          self::jsLoad('js/jquery/jquery.pageTabs.js'). 
     300          '<script type="text/javascript">'."\n". 
     301          "//<![CDATA[\n". 
     302          "\$(function() {\n". 
     303          "    \$.pageTabs(".$default.");\n". 
     304          "});\n". 
     305          "\n//]]>\n". 
     306          "</script>\n"; 
     307     } 
     308      
     309     public static function jsModal() 
     310     { 
     311          return 
     312          '<link rel="stylesheet" type="text/css" href="style/modal/modal.css" />'."\n". 
     313          self::jsLoad('js/jquery/jquery.modal.js'). 
     314          '<script type="text/javascript">'."\n". 
     315          "//<![CDATA[\n". 
     316          self::jsVar('$.modal.prototype.params.loader_img','style/modal/loader.gif'). 
     317          self::jsVar('$.modal.prototype.params.close_img','style/modal/close.png'). 
     318          "\n//]]>\n". 
     319          "</script>\n"; 
     320     } 
     321      
     322     public static function jsColorPicker() 
     323     { 
     324          return 
     325          '<link rel="stylesheet" type="text/css" href="style/farbtastic/farbtastic.css" />'."\n". 
     326          self::jsLoad('js/jquery/jquery.farbtastic.js'). 
     327          self::jsLoad('js/color-picker.js'); 
     328     } 
     329      
     330     public static function jsDatePicker() 
     331     { 
     332          return 
     333          '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 
     334          self::jsLoad('js/date-picker.js'). 
     335          '<script type="text/javascript">'."\n". 
     336          "//<![CDATA[\n". 
     337           
     338          "datePicker.prototype.months[0] = '".html::escapeJS(__('January'))."'; ". 
     339          "datePicker.prototype.months[1] = '".html::escapeJS(__('February'))."'; ". 
     340          "datePicker.prototype.months[2] = '".html::escapeJS(__('March'))."'; ". 
     341          "datePicker.prototype.months[3] = '".html::escapeJS(__('April'))."'; ". 
     342          "datePicker.prototype.months[4] = '".html::escapeJS(__('May'))."'; ". 
     343          "datePicker.prototype.months[5] = '".html::escapeJS(__('June'))."'; ". 
     344          "datePicker.prototype.months[6] = '".html::escapeJS(__('July'))."'; ". 
     345          "datePicker.prototype.months[7] = '".html::escapeJS(__('August'))."'; ". 
     346          "datePicker.prototype.months[8] = '".html::escapeJS(__('September'))."'; ". 
     347          "datePicker.prototype.months[9] = '".html::escapeJS(__('October'))."'; ". 
     348          "datePicker.prototype.months[10] = '".html::escapeJS(__('November'))."'; ". 
     349          "datePicker.prototype.months[11] = '".html::escapeJS(__('December'))."'; ". 
     350           
     351          "datePicker.prototype.days[0] = '".html::escapeJS(__('Monday'))."'; ". 
     352          "datePicker.prototype.days[1] = '".html::escapeJS(__('Tuesday'))."'; ". 
     353          "datePicker.prototype.days[2] = '".html::escapeJS(__('Wednesday'))."'; ". 
     354          "datePicker.prototype.days[3] = '".html::escapeJS(__('Thursday'))."'; ". 
     355          "datePicker.prototype.days[4] = '".html::escapeJS(__('Friday'))."'; ". 
     356          "datePicker.prototype.days[5] = '".html::escapeJS(__('Saturday'))."'; ". 
     357          "datePicker.prototype.days[6] = '".html::escapeJS(__('Sunday'))."'; ". 
     358           
     359          "datePicker.prototype.img_src = 'images/date-picker.png'; ". 
     360           
     361          "datePicker.prototype.close_msg = '".html::escapeJS(__('close'))."'; ". 
     362          "datePicker.prototype.now_msg = '".html::escapeJS(__('now'))."'; ". 
     363           
     364          "\n//]]>\n". 
     365          "</script>\n"; 
     366     } 
     367      
     368     public static function jsToolBar() 
     369     { 
     370          $res = 
     371          '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'. 
     372          '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>'; 
     373           
     374          if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) { 
     375               $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>'; 
     376          } 
     377           
     378          $res .= 
     379          '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'. 
     380          '<script type="text/javascript">'."\n". 
     381          "//<![CDATA[\n". 
     382          "jsToolBar.prototype.dialog_url = 'popup.php'; ". 
     383          "jsToolBar.prototype.iframe_css = '". 
     384               'body{'. 
     385                    'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'. 
     386                    'color : #000;'. 
     387                    'background: #f9f9f9;'. 
     388                    'margin: 0;'. 
     389                    'padding : 2px;'. 
     390                    'border: none;'. 
     391                    (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : ''). 
     392               '}'. 
     393               'pre, code, kbd, samp {'. 
     394                    'font-family:"Courier New",Courier,monospace;'. 
     395                    'font-size : 1.1em;'. 
     396               '}'. 
     397               'code {'. 
     398                    'color : #666;'. 
     399                    'font-weight : bold;'. 
     400               '}'. 
     401               'body > p:first-child {'. 
     402                    'margin-top: 0;'. 
     403               '}'. 
     404          "'; ". 
     405          "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ". 
     406          "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ". 
     407          "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ". 
     408          "jsToolBar.prototype.legend_msg = '". 
     409          html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ". 
     410          "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ". 
     411          "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ". 
     412          "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ". 
     413          "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ". 
     414          "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ". 
     415          "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ". 
     416          "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ". 
     417          "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ". 
     418          "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ". 
     419          "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ". 
     420          "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ". 
     421          "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ". 
     422          "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ". 
     423          "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ". 
     424          "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ". 
     425          "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ". 
     426          "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ". 
     427          "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ". 
     428          "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ". 
     429          "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ". 
     430           
     431          "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ". 
     432          "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ". 
     433          "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ". 
     434           
     435          "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ". 
     436          "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ". 
     437           
     438          "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ". 
     439          "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; "; 
     440           
     441          if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 
     442               $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n"; 
     443          } 
     444           
     445          $res .= 
     446          "\n//]]>\n". 
     447          "</script>\n"; 
     448           
     449          return $res; 
     450     } 
     451      
     452     public static function jsUpload($params=array(),$base_url=null) 
     453     { 
     454          if (!$base_url) { 
     455               $base_url = path::clean(dirname(preg_replace('/(\?.*$)?/','',$_SERVER['REQUEST_URI']))).'/'; 
     456          } 
     457           
     458          $params = array_merge($params,array( 
     459               'sess_id='.session_id(), 
     460               'sess_uid='.$_SESSION['sess_browser_uid'], 
     461               'xd_check='.$GLOBALS['core']->getNonce() 
     462          )); 
     463           
     464          return 
     465          '<link rel="stylesheet" type="text/css" href="style/jsUpload/style.css" />'."\n". 
    529466 
    530           return 
    531           self::jsLoad('js/jquery/jquery.pageTabs.js'). 
    532           '<script type="text/javascript">'."\n". 
    533           "//<![CDATA[\n". 
    534           "\$(function() {\n". 
    535                "    \$.pageTabs(".$default.");\n". 
    536                "});\n". 
    537 "\n//]]>\n". 
    538 "</script>\n"; 
    539 } 
     467    '<script id="template-upload" type="text/x-tmpl"> 
     468{% for (var i=0, file; file=o.files[i]; i++) { %} 
     469    <tr class="template-upload fade"> 
     470        <td> 
     471            <span class="preview"></span> 
     472        </td> 
     473        <td> 
     474            <p class="name">{%=file.name%}</p> 
     475            {% if (file.error) { %} 
     476                <div><span class="label label-error">'.__('Error:').'</span> {%=file.error%}</div> 
     477            {% } %} 
     478        </td> 
     479        <td> 
     480            <p class="size">{%=o.formatFileSize(file.size)%}</p> 
     481            {% if (!o.files.error) { %} 
     482                <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> 
     483            {% } %} 
     484        </td> 
     485        <td> 
     486            {% if (!o.files.error && !i && !o.options.autoUpload) { %} 
     487                <input type="submit" class="button start" value="'.__('Send').'"/> 
     488            {% } %} 
     489        </td> 
     490    </tr> 
     491{% } %} 
     492</script> 
     493<!-- The template to display files available for download --> 
     494<script id="template-download" type="text/x-tmpl"> 
     495{% for (var i=0, file; file=o.files[i]; i++) { %} 
     496    <tr class="template-download fade"> 
     497        <td> 
     498            <span class="preview"> 
     499                {% if (file.thumbnail_url) { %} 
     500                    <a href="{%=file.url%}" title="{%=file.name%}" data-gallery="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a> 
     501                {% } %} 
     502            </span> 
     503        </td> 
     504        <td> 
     505            <p class="name">{%=file.name%}</p> 
     506            {% if (file.error) { %} 
     507                <div><span class="label label-important">'.__('Error:').'</span> {%=file.error%}</div> 
     508            {% } %} 
     509        </td> 
     510        <td> 
     511            <span class="size">{%=o.formatFileSize(file.size)%}</span> 
     512        </td> 
     513        <td> 
     514            {% if (file.error) { %} 
     515            <span class="upload-status error"></span> 
     516            {% } else { %} 
     517            <span class="upload-status ok"></span> 
     518            {% } %} 
     519        </td> 
     520    </tr> 
     521{% } %} 
     522</script>'. 
    540523 
    541 public static function jsModal() 
    542 { 
    543      return 
    544      '<link rel="stylesheet" type="text/css" href="style/modal/modal.css" />'."\n". 
    545      self::jsLoad('js/jquery/jquery.modal.js'). 
    546      '<script type="text/javascript">'."\n". 
    547      "//<![CDATA[\n". 
    548      self::jsVar('$.modal.prototype.params.loader_img','style/modal/loader.gif'). 
    549      self::jsVar('$.modal.prototype.params.close_img','style/modal/close.png'). 
    550      "\n//]]>\n". 
    551      "</script>\n"; 
    552 } 
    553  
    554 public static function jsColorPicker() 
    555 { 
    556      return 
    557      '<link rel="stylesheet" type="text/css" href="style/farbtastic/farbtastic.css" />'."\n". 
    558      self::jsLoad('js/jquery/jquery.farbtastic.js'). 
    559      self::jsLoad('js/color-picker.js'); 
    560 } 
    561  
    562 public static function jsDatePicker() 
    563 { 
    564      return 
    565      '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 
    566      self::jsLoad('js/date-picker.js'). 
    567      '<script type="text/javascript">'."\n". 
    568      "//<![CDATA[\n". 
    569  
    570      "datePicker.prototype.months[0] = '".html::escapeJS(__('January'))."'; ". 
    571      "datePicker.prototype.months[1] = '".html::escapeJS(__('February'))."'; ". 
    572      "datePicker.prototype.months[2] = '".html::escapeJS(__('March'))."'; ". 
    573      "datePicker.prototype.months[3] = '".html::escapeJS(__('April'))."'; ". 
    574      "datePicker.prototype.months[4] = '".html::escapeJS(__('May'))."'; ". 
    575      "datePicker.prototype.months[5] = '".html::escapeJS(__('June'))."'; ". 
    576      "datePicker.prototype.months[6] = '".html::escapeJS(__('July'))."'; ". 
    577      "datePicker.prototype.months[7] = '".html::escapeJS(__('August'))."'; ". 
    578      "datePicker.prototype.months[8] = '".html::escapeJS(__('September'))."'; ". 
    579      "datePicker.prototype.months[9] = '".html::escapeJS(__('October'))."'; ". 
    580      "datePicker.prototype.months[10] = '".html::escapeJS(__('November'))."'; ". 
    581      "datePicker.prototype.months[11] = '".html::escapeJS(__('December'))."'; ". 
    582  
    583      "datePicker.prototype.days[0] = '".html::escapeJS(__('Monday'))."'; ". 
    584      "datePicker.prototype.days[1] = '".html::escapeJS(__('Tuesday'))."'; ". 
    585      "datePicker.prototype.days[2] = '".html::escapeJS(__('Wednesday'))."'; ". 
    586      "datePicker.prototype.days[3] = '".html::escapeJS(__('Thursday'))."'; ". 
    587      "datePicker.prototype.days[4] = '".html::escapeJS(__('Friday'))."'; ". 
    588      "datePicker.prototype.days[5] = '".html::escapeJS(__('Saturday'))."'; ". 
    589      "datePicker.prototype.days[6] = '".html::escapeJS(__('Sunday'))."'; ". 
    590  
    591      "datePicker.prototype.img_src = 'images/date-picker.png'; ". 
    592  
    593      "datePicker.prototype.close_msg = '".html::escapeJS(__('close'))."'; ". 
    594      "datePicker.prototype.now_msg = '".html::escapeJS(__('now'))."'; ". 
    595  
    596      "\n//]]>\n". 
    597      "</script>\n"; 
    598 } 
    599  
    600 public static function jsToolBar() 
    601 { 
    602      $res = 
    603      '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'. 
    604      '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>'; 
    605  
    606      if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) { 
    607           $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>'; 
    608      } 
    609  
    610      $res .= 
    611      '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'. 
    612      '<script type="text/javascript">'."\n". 
    613      "//<![CDATA[\n". 
    614      "jsToolBar.prototype.dialog_url = 'popup.php'; ". 
    615      "jsToolBar.prototype.iframe_css = '". 
    616      'body{'. 
    617      'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'. 
    618      'color : #000;'. 
    619      'background: #f9f9f9;'. 
    620      'margin: 0;'. 
    621      'padding : 2px;'. 
    622      'border: none;'. 
    623      (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : ''). 
    624      '}'. 
    625      'pre, code, kbd, samp {'. 
    626      'font-family:"Courier New",Courier,monospace;'. 
    627      'font-size : 1.1em;'. 
    628      '}'. 
    629      'code {'. 
    630      'color : #666;'. 
    631      'font-weight : bold;'. 
    632      '}'. 
    633      'body > p:first-child {'. 
    634      'margin-top: 0;'. 
    635      '}'. 
    636      "'; ". 
    637      "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ". 
    638      "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ". 
    639      "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ". 
    640      "jsToolBar.prototype.legend_msg = '". 
    641      html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ". 
    642      "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ". 
    643      "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ". 
    644      "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ". 
    645      "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ". 
    646      "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ". 
    647      "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ". 
    648      "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ". 
    649      "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ". 
    650      "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ". 
    651      "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ". 
    652      "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ". 
    653      "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ". 
    654      "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ". 
    655      "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ". 
    656      "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ". 
    657      "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ". 
    658      "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ". 
    659      "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ". 
    660      "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ". 
    661      "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ". 
    662  
    663      "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ". 
    664      "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ". 
    665      "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ". 
    666  
    667      "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ". 
    668      "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ". 
    669  
    670      "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ". 
    671      "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; "; 
    672  
    673      if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 
    674           $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n"; 
    675      } 
    676  
    677      $res .= 
    678      "\n//]]>\n". 
    679      "</script>\n"; 
    680  
    681      return $res; 
    682 } 
    683  
    684 public static function jsUpload($params=array(),$base_url=null) 
    685 { 
    686      if (!$base_url) { 
    687           $base_url = path::clean(dirname(preg_replace('/(\?.*$)?/','',$_SERVER['REQUEST_URI']))).'/'; 
    688      } 
    689  
    690      $params = array_merge($params,array( 
    691           'sess_id='.session_id(), 
    692           'sess_uid='.$_SESSION['sess_browser_uid'], 
    693           'xd_check='.$GLOBALS['core']->getNonce() 
    694           )); 
    695  
    696      return 
    697      '<link rel="stylesheet" type="text/css" href="style/jsUpload/style.css" />'."\n". 
    698  
    699      '<script id="template-upload" type="text/x-tmpl"> 
    700      {% for (var i=0, file; file=o.files[i]; i++) { %} 
    701      <div class="template-upload fade"> 
    702      <div class="upload-file"> 
    703      <div class="upload-fileinfo"> 
    704           <span class="upload-filename">{%=file.name%}</span> 
    705           <span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span> 
    706           <span class="upload-filecancel cancel">'.__('Cancel').'</span> 
    707           {% if (!o.files.error && !i && !o.options.autoUpload) { %} 
    708           <input type="submit" class="button start"  value="'.__('Send').'"/> 
    709           {% } %} 
    710           <span class="upload-filemsg"></span> 
    711      </div> 
    712      {% if (!o.files.error) { %} 
    713      <div class="upload-progress progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div> 
    714      {% } %} 
    715      </div> 
    716      {% } %} 
    717      </script> 
    718      <!-- The template to display files available for download --> 
    719      <script id="template-download" type="text/x-tmpl"> 
    720      {% for (var i=0, file; file=o.files[i]; i++) { %} 
    721      <div class="template-download fade"> 
    722      <div class="upload-file"> 
    723      <div class="upload-fileinfo"> 
    724           <span class="upload-filename">{%=file.name%}</span> 
    725           <span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span> 
    726           <span class="upload-filemsg{% if (file.error) { %} upload-error{% } %}"> 
    727           {% if (file.error) { %} 
    728           '.__('Error:').' {%=file.error%} 
    729           {% } else { %} 
    730           '.__('File successfully uploaded.').' 
    731           {% } %} 
    732           </span> 
    733      </div> 
    734      <div class="upload-progress"> 
    735           {% if (!file.error) { %} 
    736           <div class="bar" style="width:100%;">100%</div> 
    737           {% } %} 
    738      </div> 
    739      </div> 
    740      {% } %} 
    741      </script>'. 
    742  
    743      self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js'). 
    744      self::jsLoad('js/jsUpload/tmpl.js'). 
    745      self::jsLoad('js/jsUpload/load-image.js'). 
    746      self::jsLoad('js/jsUpload/jquery.iframe-transport.js'). 
    747      self::jsLoad('js/jsUpload/jquery.fileupload.js'). 
    748      self::jsLoad('js/jsUpload/jquery.fileupload-process.js'). 
    749      self::jsLoad('js/jsUpload/jquery.fileupload-resize.js'). 
    750      self::jsLoad('js/jsUpload/jquery.fileupload-ui.js'). 
    751  
    752      '<script type="text/javascript">'."\n". 
    753      "//<![CDATA[\n". 
    754      "dotclear.jsUpload = {};\n". 
    755      "dotclear.jsUpload.msg = {};\n". 
    756      self::jsVar('dotclear.msg.enhanced_uploader_activate',__('Temporarily activate enhanced uploader')). 
    757      self::jsVar('dotclear.msg.enhanced_uploader_disable',__('Temporarily disable enhanced uploader')). 
    758      self::jsVar('dotclear.jsUpload.msg.limit_exceeded',__('Limit exceeded.')). 
    759      self::jsVar('dotclear.jsUpload.msg.size_limit_exceeded',__('File size exceeds allowed limit.')). 
    760      self::jsVar('dotclear.jsUpload.msg.canceled',__('Canceled.')). 
    761      self::jsVar('dotclear.jsUpload.msg.http_error',__('HTTP Error:')). 
    762      self::jsVar('dotclear.jsUpload.msg.error',__('Error:')). 
    763      self::jsVar('dotclear.jsUpload.msg.choose_file',__('Choose file')). 
    764      self::jsVar('dotclear.jsUpload.msg.choose_files',__('Choose files')). 
    765      self::jsVar('dotclear.jsUpload.msg.cancel',__('Cancel')). 
    766      self::jsVar('dotclear.jsUpload.msg.clean',__('Clean')). 
    767      self::jsVar('dotclear.jsUpload.msg.upload',__('Upload')). 
    768      self::jsVar('dotclear.jsUpload.msg.no_file_in_queue',__('No file in queue.')). 
    769      self::jsVar('dotclear.jsUpload.msg.file_in_queue',__('1 file in queue.')). 
    770      self::jsVar('dotclear.jsUpload.msg.files_in_queue',__('%d files in queue.')). 
    771      self::jsVar('dotclear.jsUpload.msg.queue_error',__('Queue error:')). 
    772      self::jsVar('dotclear.jsUpload.base_url',$base_url). 
    773      "\n//]]>\n". 
    774      "</script>\n"; 
    775 } 
    776  
    777 public static function jsToolMan() 
    778 { 
    779      return 
    780      '<script type="text/javascript" src="js/tool-man/core.js"></script>'. 
    781      '<script type="text/javascript" src="js/tool-man/events.js"></script>'. 
    782      '<script type="text/javascript" src="js/tool-man/css.js"></script>'. 
    783      '<script type="text/javascript" src="js/tool-man/coordinates.js"></script>'. 
    784      '<script type="text/javascript" src="js/tool-man/drag.js"></script>'. 
    785      '<script type="text/javascript" src="js/tool-man/dragsort.js"></script>'. 
    786      '<script type="text/javascript" src="js/dragsort-tablerows.js"></script>'; 
    787 } 
    788  
    789 public static function jsMetaEditor() 
    790 { 
    791      return 
    792      '<script type="text/javascript" src="js/meta-editor.js"></script>'; 
    793 } 
     524          self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js'). 
     525    self::jsLoad('js/jsUpload/tmpl.js'). 
     526    self::jsLoad('js/jsUpload/load-image.js'). 
     527          self::jsLoad('js/jsUpload/jquery.iframe-transport.js'). 
     528          self::jsLoad('js/jsUpload/jquery.fileupload.js'). 
     529          self::jsLoad('js/jsUpload/jquery.fileupload-process.js'). 
     530          self::jsLoad('js/jsUpload/jquery.fileupload-resize.js'). 
     531          self::jsLoad('js/jsUpload/jquery.fileupload-ui.js'). 
     532           
     533          '<script type="text/javascript">'."\n". 
     534          "//<![CDATA[\n". 
     535          "dotclear.jsUpload = {};\n". 
     536          "dotclear.jsUpload.msg = {};\n". 
     537          self::jsVar('dotclear.jsUpload.msg.limit_exceeded',__('Limit exceeded.')). 
     538          self::jsVar('dotclear.jsUpload.msg.size_limit_exceeded',__('File size exceeds allowed limit.')). 
     539          self::jsVar('dotclear.jsUpload.msg.canceled',__('Canceled.')). 
     540          self::jsVar('dotclear.jsUpload.msg.http_error',__('HTTP Error:')). 
     541          self::jsVar('dotclear.jsUpload.msg.error',__('Error:')). 
     542          self::jsVar('dotclear.jsUpload.msg.choose_file',__('Choose file')). 
     543          self::jsVar('dotclear.jsUpload.msg.choose_files',__('Choose files')). 
     544          self::jsVar('dotclear.jsUpload.msg.cancel',__('Cancel')). 
     545          self::jsVar('dotclear.jsUpload.msg.clean',__('Clean')). 
     546          self::jsVar('dotclear.jsUpload.msg.upload',__('Upload')). 
     547          self::jsVar('dotclear.jsUpload.msg.no_file_in_queue',__('No file in queue.')). 
     548          self::jsVar('dotclear.jsUpload.msg.file_in_queue',__('1 file in queue.')). 
     549          self::jsVar('dotclear.jsUpload.msg.files_in_queue',__('%d files in queue.')). 
     550          self::jsVar('dotclear.jsUpload.msg.queue_error',__('Queue error:')). 
     551          self::jsVar('dotclear.jsUpload.base_url',$base_url). 
     552          "\n//]]>\n". 
     553          "</script>\n"; 
     554     } 
     555      
     556     public static function jsToolMan() 
     557     { 
     558          return 
     559          '<script type="text/javascript" src="js/tool-man/core.js"></script>'. 
     560          '<script type="text/javascript" src="js/tool-man/events.js"></script>'. 
     561          '<script type="text/javascript" src="js/tool-man/css.js"></script>'. 
     562          '<script type="text/javascript" src="js/tool-man/coordinates.js"></script>'. 
     563          '<script type="text/javascript" src="js/tool-man/drag.js"></script>'. 
     564          '<script type="text/javascript" src="js/tool-man/dragsort.js"></script>'. 
     565          '<script type="text/javascript" src="js/dragsort-tablerows.js"></script>'; 
     566     } 
     567      
     568     public static function jsMetaEditor() 
     569     { 
     570          return 
     571          '<script type="text/javascript" src="js/meta-editor.js"></script>'; 
     572     } 
    794573} 
    795574?> 
  • inc/admin/prepend.php

    r1302 r1315  
    44# This file is part of Dotclear 2. 
    55# 
    6 # Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear 
     6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear 
    77# Licensed under the GPL version 2.0 license. 
    88# See LICENSE file or 
     
    284284     # Set menu titles 
    285285      
    286      $_menu['System']->title = __('System settings'); 
     286     $_menu['System']->title = __('System'); 
    287287     $_menu['Blog']->title = __('Blog'); 
    288      $_menu['Plugins']->title = __('Additional plugins'); 
     288     $_menu['Plugins']->title = __('Plugins'); 
    289289     if (!$user_ui_nofavmenu) 
    290290          $_menu['Favorites']->title = __('My favorites'); 
     
    375375     } 
    376376} 
     377 
     378# Add admin default templates path 
     379$core->tpl->getLoader()->addPath(dirname(__FILE__).'/default-templates'); 
     380# Set admin context 
     381$_ctx = new dcAdminContext($core); 
     382$core->tpl->addExtension($_ctx); 
     383 
     384# --BEHAVIOR-- adminPrepend 
     385$core->callBehavior('adminPrepend',$core,$_ctx); 
    377386?> 
Note: See TracChangeset for help on using the changeset viewer.

Sites map