Changeset 1315:220e119ae6c8 for inc/admin
- Timestamp:
- 08/09/13 08:01:31 (12 years ago)
- 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. - Location:
- inc/admin
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
inc/admin/class.dc.menu.php
r1179 r1315 4 4 # This file is part of Dotclear 2. 5 5 # 6 # Copyright (c) 2003-201 3Olivier Meunier & Association Dotclear6 # Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear 7 7 # Licensed under the GPL version 2.0 license. 8 8 # See LICENSE file or … … 14 14 class dcMenu 15 15 { 16 private $items; 16 17 private $id; 17 18 public $title; 19 public $separator; 18 20 19 public function __construct($id,$title,$ itemSpace='')21 public function __construct($id,$title,$separator='') 20 22 { 21 23 $this->id = $id; 22 24 $this->title = $title; 23 $this-> itemSpace = $itemSpace;25 $this->separator = $separator; 24 26 $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; 25 47 } 26 48 … … 39 61 } 40 62 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 */ 41 87 public function draw() 42 88 { … … 52 98 for ($i=0; $i<count($this->items); $i++) 53 99 { 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])); 56 102 $res .= "\n"; 57 103 } else { 58 $res .= $this-> items[$i]."\n";104 $res .= $this->drawItem($this->items[$i])."\n"; 59 105 } 60 106 } … … 65 111 } 66 112 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) 68 117 { 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 79 118 return 80 '<li'.(($ active || $class) ? ' class="'.(($active) ? 'active ' : '').(($class) ? $class: '').'"' : '').81 (($i d) ? ' id="'.$id.'"' : '').82 (($i mg) ? ' 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'].');"' : ''). 83 122 '>'. 84 123 85 '<a href="'.$ link.'"'.$ahtml.'>'.$title.'</a></li>'."\n";124 '<a href="'.$item['link'].'"'.$item['ahtml'].'>'.$item['title'].'</a></li>'."\n"; 86 125 } 87 126 } -
inc/admin/lib.dc.page.php
r1312 r1315 4 4 # This file is part of Dotclear 2. 5 5 # 6 # Copyright (c) 2003-201 3Olivier Meunier & Association Dotclear6 # Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear 7 7 # Licensed under the GPL version 2.0 license. 8 8 # See LICENSE file or … … 22 22 { 23 23 global $core; 24 24 25 25 if ($core->blog && $core->auth->check($permissions,$core->blog->id)) 26 26 { 27 27 return; 28 28 } 29 29 30 30 if (session_id()) { 31 31 $core->session->destroy(); … … 33 33 http::redirect(DC_AUTH_PAGE); 34 34 } 35 35 36 36 # Check super admin 37 37 public static function checkSuper() 38 38 { 39 39 global $core; 40 40 41 41 if (!$core->auth->isSuperAdmin()) 42 42 { … … 47 47 } 48 48 } 49 49 50 50 # Top of admin page 51 public static function open($title='', $head='') 52 { 53 global $core; 54 55 # List of user's blogs 56 if ($core->auth->blog_count == 1 || $core->auth->blog_count > 20) 57 { 58 $blog_box = 59 '<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 161 69 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 265 83 public static function closePopup() 266 84 { 267 echo 268 "</div>\n". // End of #content 269 "</div>\n". // End of #main 270 '<div id="footer"><p> </p></div>'."\n". 271 "</div>\n". // End of #wrapper 272 '</body></html>'; 85 self::close(); 273 86 } 274 87 … … 276 89 { 277 90 global $core; 278 91 279 92 $res = ''; 280 93 if ($msg != '') { 281 94 $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>' : ''); 284 97 if ($echo) { 285 98 echo $res; … … 288 101 return $res; 289 102 } 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 334 104 public static function help($page,$index='') 335 105 { 336 106 # Deprecated but we keep this for plugins. 337 107 } 338 108 339 109 public static function helpBlock() 340 110 { … … 343 113 return; 344 114 }; 345 115 346 116 global $__resources; 347 117 if (empty($__resources['help'])) { 348 118 return; 349 119 } 350 120 351 121 $content = ''; 352 122 foreach ($args as $v) … … 356 126 continue; 357 127 } 358 128 359 129 if (!isset($__resources['help'][$v])) { 360 130 continue; … … 364 134 continue; 365 135 } 366 136 367 137 $fc = file_get_contents($f); 368 138 if (preg_match('|<body[^>]*?>(.*?)</body>|ms',$fc,$matches)) { … … 372 142 } 373 143 } 374 144 375 145 if (trim($content) == '') { 376 146 return; 377 147 } 378 148 379 149 echo 380 150 '<div id="help"><hr /><div class="help-content clear"><h2>'.__('Help').'</h2>'. … … 382 152 '</div></div>'; 383 153 } 384 154 385 155 public static function jsLoad($src) 386 156 { … … 391 161 } 392 162 } 393 163 394 164 public static function jsVar($n,$v) 395 165 { 396 166 return $n." = '".html::escapeJS($v)."';\n"; 397 167 } 398 168 399 169 public static function jsCommon() 400 170 { … … 405 175 self::jsLoad('js/common.js'). 406 176 self::jsLoad('js/prelude.js'). 407 177 408 178 '<script type="text/javascript">'."\n". 409 179 "//<![CDATA[\n". 410 180 self::jsVar('dotclear.nonce',$GLOBALS['core']->getNonce()). 411 181 412 182 self::jsVar('dotclear.img_plus_src','images/expand.png'). 413 183 self::jsVar('dotclear.img_plus_alt',__('uncover')). … … 416 186 self::jsVar('dotclear.img_menu_on','images/menu_on.png'). 417 187 self::jsVar('dotclear.img_menu_off','images/menu_off.png'). 418 188 419 189 self::jsVar('dotclear.msg.help', 420 __('Help about this page')). 421 self::jsVar('dotclear.msg.help_hide', 422 __('Hide')). 190 __('help')). 423 191 self::jsVar('dotclear.msg.no_selection', 424 192 __('no selection')). … … 490 258 "</script>\n"; 491 259 } 492 260 493 261 public static function jsLoadIE7() 494 262 { … … 499 267 '<![endif]-->'."\n"; 500 268 } 501 269 502 270 public static function jsConfirmClose() 503 271 { … … 511 279 $args = ''; 512 280 } 513 281 514 282 return 515 283 self::jsLoad('js/confirm-close.js'). … … 521 289 "</script>\n"; 522 290 } 523 291 524 292 public static function jsPageTabs($default=null) 525 293 { … … 527 295 $default = "'".html::escapeJS($default)."'"; 528 296 } 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". 529 466 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>'. 540 523 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 } 794 573 } 795 574 ?> -
inc/admin/prepend.php
r1302 r1315 4 4 # This file is part of Dotclear 2. 5 5 # 6 # Copyright (c) 2003-201 3Olivier Meunier & Association Dotclear6 # Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear 7 7 # Licensed under the GPL version 2.0 license. 8 8 # See LICENSE file or … … 284 284 # Set menu titles 285 285 286 $_menu['System']->title = __('System settings');286 $_menu['System']->title = __('System'); 287 287 $_menu['Blog']->title = __('Blog'); 288 $_menu['Plugins']->title = __(' Additional plugins');288 $_menu['Plugins']->title = __('Plugins'); 289 289 if (!$user_ui_nofavmenu) 290 290 $_menu['Favorites']->title = __('My favorites'); … … 375 375 } 376 376 } 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); 377 386 ?>
Note: See TracChangeset
for help on using the changeset viewer.