Changeset 1793:a25f8d0fd400 for inc
- Timestamp:
- 09/11/13 17:10:01 (12 years ago)
- Branch:
- default
- Children:
- 1795:5c5c52124ab4, 1796:ef72fa20ed9d
- Parents:
- 1792:3ad2e47ed52d (diff), 514:5cacbd2e1fa9 (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:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
inc/admin/lib.dc.page.php
r512 r1793 4 4 # This file is part of Dotclear 2. 5 5 # 6 # Copyright (c) 2003-201 1Olivier Meunier & Association Dotclear6 # Copyright (c) 2003-2013 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='')51 public static function open($title='',$head='',$breadcrumb='') 52 52 { 53 53 global $core; 54 54 55 55 # List of user's blogs 56 56 if ($core->auth->blog_count == 1 || $core->auth->blog_count > 20) 57 57 { 58 58 $blog_box = 59 __('Blog:').' <strong title="'.html::escapeHTML($core->blog->url).'">'.59 '<p>'.__('Blog:').' <strong title="'.html::escapeHTML($core->blog->url).'">'. 60 60 html::escapeHTML($core->blog->name).'</strong>'; 61 61 62 62 if ($core->auth->blog_count > 20) { 63 63 $blog_box .= ' - <a href="blogs.php">'.__('Change blog').'</a>'; 64 64 } 65 $blog_box .= '</p>'; 65 66 } 66 67 else … … 72 73 } 73 74 $blog_box = 74 '< label for="switchblog" class="classic">'.75 __('Blogs:').' '.75 '<p><label for="switchblog" class="classic nomobile">'. 76 __('Blogs:').'</label> '. 76 77 $core->formNonce(). 77 78 form::combo('switchblog',$blogs,$core->blog->id). 78 '</ label>'.79 '<noscript>< div><input type="submit" value="'.__('ok').'" /></div></noscript>';80 } 81 79 '</p>'. 80 '<noscript><p><input type="submit" value="'.__('ok').'" /></p></noscript>'; 81 } 82 82 83 $safe_mode = isset($_SESSION['sess_safe_mode']) && $_SESSION['sess_safe_mode']; 83 84 84 85 # Display 85 86 header('Content-Type: text/html; charset=UTF-8'); … … 92 93 "<head>\n". 93 94 ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n". 94 ' <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n".95 96 95 ' <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n". 97 96 ' <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n". 98 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 99 101 self::jsLoadIE7(). 100 ' <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n";102 ' <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n"; 101 103 if (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl') { 102 104 echo 103 ' <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n";105 ' <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n"; 104 106 } 105 107 … … 109 111 echo '<link rel="icon" type="image/png" href="images/favicon.png" />'; 110 112 } 111 113 112 114 echo 113 115 self::jsCommon(). 116 self::jsToggles(). 114 117 $head; 115 118 116 119 # --BEHAVIOR-- adminPageHTMLHead 117 120 $core->callBehavior('adminPageHTMLHead'); 118 121 119 122 echo 120 123 "</head>\n". 121 124 '<body id="dotclear-admin'. 122 ($safe_mode ? ' safe-mode' : ''). 123 '">'."\n". 124 125 '<div id=header>'. 126 '<ul id="prelude"><li><a href="#content">Aller au contenu</a></li><li><a href="#main-menu">Aller au menu</a></li></ul>'."\n". 127 '<div id="top"><h1><a href="index.php">'.DC_VENDOR_NAME.'</a></h1></div>'."\n"; 128 125 ($safe_mode ? ' safe-mode' : '').'" class="no-js">'."\n". 126 127 '<div id="header">'. 128 '<ul id="prelude">'. 129 '<li><a href="#content">'.__('Go to the content').'</a></li>'. 130 '<li><a href="#main-menu">'.__('Go to the menu').'</a></li>'. 131 '<li><a href="#qx">'.__('Go to search').'</a></li>'. 132 '</ul>'."\n". 133 '<div id="top"><h1><a href="index.php">'.DC_VENDOR_NAME.'</a></h1></div>'."\n"; 134 129 135 echo 130 136 '<div id="info-boxes">'. … … 132 138 '<form action="index.php" method="post">'. 133 139 $blog_box. 134 '< a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').'<img src="images/outgoing.png" alt="" /></a>'.135 '</ form>'.140 '<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>'. 141 '</p></form>'. 136 142 '</div>'. 137 143 '<div id="info-box2">'. 138 '<a '.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').'href="index.php">'.__('My dashboard').'</a>'.139 '<span > | </span><a'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').'href="preferences.php">'.__('My preferences').'</a>'.140 '<span > | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).'<img src="images/logout.png" alt="" /></a>'.144 '<a class="smallscreen'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="index.php">'.__('My dashboard').'</a>'. 145 '<span class="smallscreen"> | </span><a class="smallscreen'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="preferences.php">'.__('My preferences').'</a>'. 146 '<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>'. 141 147 '</div>'. 142 148 '</div>'. 143 '<p id="helplinks">'.144 '<a href="#">Aide de cette page</a><span> | </span>'.145 '<a'.(preg_match('/help.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="help.php">'.__('Global help').'</a>'.146 '</p>'.147 149 '</div>'; 148 149 echo 150 '<div id="wrapper" >'."\n".150 151 echo 152 '<div id="wrapper" class="clearfix">'."\n". 151 153 '<div id="main">'."\n". 152 '<div id="content" >'."\n";153 154 '<div id="content" class="clearfix">'."\n"; 155 154 156 # Safe mode 155 157 if ($safe_mode) … … 160 162 '</div>'; 161 163 } 162 164 165 // Display breadcrumb (if given) before any error message 166 echo $breadcrumb; 167 168 if ($core->error->flag()) { 169 echo 170 '<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</strong></p>'. 171 $core->error->toHTML(). 172 '</div>'; 173 } 174 } 175 176 public static function close() 177 { 178 global $core; 179 180 $menu =& $GLOBALS['_menu']; 181 182 echo 183 "</div>\n". // End of #content 184 "</div>\n". // End of #main 185 186 '<div id="main-menu">'."\n". 187 188 '<form id="search-menu" action="search.php" method="get">'. 189 '<p><label for="qx" class="hidden">'.__('Search:').' </label>'.form::field('qx',30,255,''). 190 '<input type="submit" value="'.__('OK').'" /></p>'. 191 '</form>'; 192 193 foreach ($menu as $k => $v) { 194 echo $menu[$k]->draw(); 195 } 196 197 $text = sprintf(__('Thank you for using %s.'),'Dotclear '.DC_VERSION); 198 199 # --BEHAVIOR-- adminPageFooter 200 $textAlt = $core->callBehavior('adminPageFooter',$core,$text); 201 if ($textAlt != '') { 202 $text = $textAlt; 203 } 204 $text = html::escapeHTML($text); 205 206 echo 207 '</div>'."\n". // End of #main-menu 208 '<div id="footer">'. 209 '<span class="helplink"><a href="help.php">'.__('Global help').'</a></span> '. 210 '<a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logos/w-dotclear90.png" alt="'.$text.'" /></a></div>'."\n". 211 '<!-- '."\n". 212 ' .'."\n". 213 ' ,;:\'`\'::'."\n". 214 ' __||'."\n". 215 ' _____/LLLL\_'."\n". 216 ' \__________"|'."\n". 217 ' ~^~^~^~^~^~^~^~^~^~'."\n". 218 ' -->'."\n". 219 "</div>\n"; // End of #wrapper 220 221 if (defined('DC_DEV') && DC_DEV === true) { 222 echo self::debugInfo(); 223 } 224 225 echo 226 '</body></html>'; 227 } 228 229 public static function openPopup($title='',$head='',$breadcrumb='') 230 { 231 global $core; 232 233 # Display 234 header('Content-Type: text/html; charset=UTF-8'); 235 echo 236 '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '. 237 ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n". 238 '<html xmlns="http://www.w3.org/1999/xhtml" '. 239 'xml:lang="'.$core->auth->getInfo('user_lang').'" '. 240 'lang="'.$core->auth->getInfo('user_lang').'">'."\n". 241 '<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n". 242 "<head>\n". 243 ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n". 244 ' <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n". 245 246 ' <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n". 247 ' <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n". 248 249 self::jsLoadIE7(). 250 ' <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n"; 251 if (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl') { 252 echo 253 ' <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n"; 254 } 255 256 echo 257 self::jsCommon(). 258 self::jsToggles(). 259 $head; 260 261 # --BEHAVIOR-- adminPageHTMLHead 262 $core->callBehavior('adminPageHTMLHead'); 263 264 echo 265 "</head>\n". 266 '<body id="dotclear-admin" class="popup">'."\n". 267 268 '<div id="top hidden"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n"; 269 270 echo 271 '<div id="wrapper">'."\n". 272 '<div id="main">'."\n". 273 '<div id="content">'."\n"; 274 275 // display breadcrumb if given 276 echo $breadcrumb; 277 163 278 if ($core->error->flag()) { 164 279 echo … … 168 283 } 169 284 } 170 171 public static function close() 172 { 173 $menu =& $GLOBALS['_menu']; 174 175 echo 176 "</div>\n". // End of #content 177 "</div>\n". // End of #main 178 179 '<div id="main-menu">'."\n"; 180 181 foreach ($menu as $k => $v) { 182 echo $menu[$k]->draw(); 183 } 184 185 echo 186 '</div>'."\n". // End of #main-menu 187 '<div id="footer"><p>'. 188 '<a class="helplink'.(preg_match('/help.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="help.php">'.__('Global help').'</a>'. 189 sprintf(__('Thank you for using %s.'),'<a href="http://dotclear.org/">Dotclear '.DC_VERSION.'</a>'). 190 ' <span class="credit"> (Icons by <a href="http://dryicons.com/">Dryicons</a>)</span>'. 191 '</p></div>'."\n". 192 "</div>\n"; // End of #wrapper 193 194 if (defined('DC_DEV') && DC_DEV === true) { 195 echo self::debugInfo(); 196 } 197 198 echo 199 '</body></html>'; 200 } 201 202 public static function openPopup($title='', $head='') 203 { 204 global $core; 205 206 # Display 207 header('Content-Type: text/html; charset=UTF-8'); 208 echo 209 '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '. 210 ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n". 211 '<html xmlns="http://www.w3.org/1999/xhtml" '. 212 'xml:lang="'.$core->auth->getInfo('user_lang').'" '. 213 'lang="'.$core->auth->getInfo('user_lang').'">'."\n". 214 "<head>\n". 215 ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n". 216 ' <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n". 217 218 ' <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n". 219 ' <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n". 220 221 self::jsLoadIE7(). 222 ' <link rel="stylesheet" href="style/default.css" type="text/css" media="screen" />'."\n"; 223 if (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl') { 224 echo 225 ' <link rel="stylesheet" href="style/default-rtl.css" type="text/css" media="screen" />'."\n"; 226 } 227 228 echo 229 self::jsCommon(). 230 $head; 231 232 # --BEHAVIOR-- adminPageHTMLHead 233 $core->callBehavior('adminPageHTMLHead'); 234 235 echo 236 "</head>\n". 237 '<body id="dotclear-admin" class="popup">'."\n". 238 239 '<div id="top"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n"; 240 241 echo 242 '<div id="wrapper">'."\n". 243 '<div id="main">'."\n". 244 '<div id="content">'."\n"; 245 246 if ($core->error->flag()) { 247 echo 248 '<div class="error"><strong>'.__('Errors:').'</strong>'. 249 $core->error->toHTML(). 250 '</div>'; 251 } 252 } 253 285 254 286 public static function closePopup() 255 287 { … … 261 293 '</body></html>'; 262 294 } 263 295 296 public static function breadcrumb($elements=null,$with_home_link=true,$echo=false) 297 { 298 // First item of array elements should be blog's name, System or Plugins 299 $res = '<h2>'.($with_home_link ? 300 '<a class="go_home" href="index.php"><img src="style/dashboard.png" alt="'.__('Go to dashboard').'" /></a>' : 301 '<img src="style/dashboard-alt.png" alt="" />'); 302 $index = 0; 303 foreach ($elements as $element => $url) { 304 $res .= ($with_home_link ? ($index == 1 ? ' : ' : ' › ') : ($index == 0 ? ' ' : ' › ')). 305 ($url ? '<a href="'.$url.'">' : '').$element.($url ? '</a>' : ''); 306 $index++; 307 } 308 $res .= '</h2>'; 309 if ($echo) { 310 echo $res; 311 } 312 return $res; 313 } 314 315 public static function message($msg,$timestamp=true,$div=false,$echo=true,$class='message') 316 { 317 global $core; 318 319 $res = ''; 320 if ($msg != '') { 321 $res = ($div ? '<div class="'.$class.'">' : '').'<p'.($div ? '' : ' class="'.$class.'"').'>'. 322 ($timestamp ? dt::str(__('%H:%M:%S:'),null,$core->auth->getInfo('user_tz')).' ' : '').$msg. 323 '</p>'.($div ? '</div>' : ''); 324 if ($echo) { 325 echo $res; 326 } 327 } 328 return $res; 329 } 330 331 public static function success($msg,$timestamp=true,$div=false,$echo=true) 332 { 333 self::message($msg,$timestamp,$div,$echo,"success"); 334 } 335 336 public static function warning($msg,$timestamp=true,$div=false,$echo=true) 337 { 338 self::message($msg,$timestamp,$div,$echo,"warning-msg"); 339 } 340 264 341 private static function debugInfo() 265 342 { 266 343 $global_vars = implode(', ',array_keys($GLOBALS)); 267 344 268 345 $res = 269 346 '<div id="debug"><div>'. 270 347 '<p>memory usage: '.memory_get_usage().' ('.files::size(memory_get_usage()).')</p>'; 271 348 272 349 if (function_exists('xdebug_get_profiler_filename')) 273 350 { 274 351 $res .= '<p>Elapsed time: '.xdebug_time_index().' seconds</p>'; 275 352 276 353 $prof_file = xdebug_get_profiler_filename(); 277 354 if ($prof_file) { … … 283 360 $res .= '<p><a href="'.html::escapeURL($prof_url).'">Trigger profiler</a></p>'; 284 361 } 285 362 286 363 /* xdebug configuration: 287 364 zend_extension = /.../xdebug.so … … 297 374 */ 298 375 } 299 376 300 377 $res .= 301 378 '<p>Global vars: '.$global_vars.'</p>'. 302 379 '</div></div>'; 303 380 304 381 return $res; 305 382 } 306 383 307 384 public static function help($page,$index='') 308 385 { 309 386 # Deprecated but we keep this for plugins. 310 387 } 311 388 312 389 public static function helpBlock() 313 390 { 314 391 $args = func_get_args(); 392 393 $args = new ArrayObject($args); 394 395 # --BEHAVIOR-- adminPageHelpBlock 396 $GLOBALS['core']->callBehavior('adminPageHelpBlock',$args); 397 315 398 if (empty($args)) { 316 399 return; 317 400 }; 318 401 319 402 global $__resources; 320 403 if (empty($__resources['help'])) { 321 404 return; 322 405 } 323 406 324 407 $content = ''; 325 408 foreach ($args as $v) … … 329 412 continue; 330 413 } 331 414 332 415 if (!isset($__resources['help'][$v])) { 333 416 continue; … … 337 420 continue; 338 421 } 339 422 340 423 $fc = file_get_contents($f); 341 424 if (preg_match('|<body[^>]*?>(.*?)</body>|ms',$fc,$matches)) { … … 345 428 } 346 429 } 347 430 348 431 if (trim($content) == '') { 349 432 return; 350 433 } 351 352 echo 353 '<div id="help"><hr /><div class="help-content clear"><h 2>'.__('Help').'</h2>'.434 435 echo 436 '<div id="help"><hr /><div class="help-content clear"><h3>'.__('Help about this page').'</h3>'. 354 437 $content. 355 438 '</div>'. … … 360 443 '</div></div>'; 361 444 } 362 445 363 446 public static function jsLoad($src) 364 447 { … … 369 452 } 370 453 } 371 454 372 455 public static function jsVar($n,$v) 373 456 { 374 457 return $n." = '".html::escapeJS($v)."';\n"; 458 } 459 460 public static function jsToggles() 461 { 462 if($GLOBALS['core']->auth->user_prefs->toggles) { 463 $unfolded_sections = explode(',',$GLOBALS['core']->auth->user_prefs->toggles->unfolded_sections); 464 foreach ($unfolded_sections as $k=>&$v) { 465 if ($v == '') { 466 unset($unfolded_sections[$k]); 467 } else { 468 $v = "'".html::escapeJS($v)."':true"; 469 } 470 } 471 } else { 472 $unfolded_sections=array(); 473 } 474 return '<script type="text/javascript">'."\n". 475 "//<![CDATA[\n". 476 'dotclear.unfolded_sections = {'.join(",",$unfolded_sections)."};\n". 477 "\n//]]>\n". 478 "</script>\n"; 375 479 } 376 480 377 481 public static function jsCommon() 378 482 { 483 $mute_or_no = ''; 484 if (!empty($GLOBALS['core']->blog->settings->system->jquery_migrate_mute)) { 485 $mute_or_no .= 486 '<script type="text/javascript">'."\n". 487 "//<![CDATA[\n". 488 'jQuery.migrateMute = true;'. 489 "\n//]]>\n". 490 "</script>\n"; 491 } 492 379 493 return 380 494 self::jsLoad('js/jquery/jquery.js'). 495 $mute_or_no. 496 self::jsLoad('js/jquery/jquery-migrate-1.2.1.js'). 381 497 self::jsLoad('js/jquery/jquery.biscuit.js'). 382 498 self::jsLoad('js/jquery/jquery.bgFade.js'). 383 499 self::jsLoad('js/common.js'). 384 500 self::jsLoad('js/prelude.js'). 385 501 386 502 '<script type="text/javascript">'."\n". 387 503 "//<![CDATA[\n". 388 504 self::jsVar('dotclear.nonce',$GLOBALS['core']->getNonce()). 389 390 self::jsVar('dotclear.img_plus_src','images/plus.png'). 505 self::jsVar('dotclear.img_plus_src','images/expand.png'). 391 506 self::jsVar('dotclear.img_plus_alt',__('uncover')). 392 self::jsVar('dotclear.img_minus_src','images/ minus.png').507 self::jsVar('dotclear.img_minus_src','images/hide.png'). 393 508 self::jsVar('dotclear.img_minus_alt',__('hide')). 394 509 self::jsVar('dotclear.img_menu_on','images/menu_on.png'). 395 510 self::jsVar('dotclear.img_menu_off','images/menu_off.png'). 396 511 397 512 self::jsVar('dotclear.msg.help', 398 __('help')). 513 __('Help about this page')). 514 self::jsVar('dotclear.msg.help_hide', 515 __('Hide')). 516 self::jsVar('dotclear.msg.to_select', 517 __('Select:')). 399 518 self::jsVar('dotclear.msg.no_selection', 400 519 __('no selection')). … … 402 521 __('select all')). 403 522 self::jsVar('dotclear.msg.invert_sel', 404 __(' invert selection')).523 __('Invert selection')). 405 524 self::jsVar('dotclear.msg.website', 406 525 __('Web site:')). … … 419 538 self::jsVar('dotclear.msg.confirm_delete_posts', 420 539 __("Are you sure you want to delete selected entries (%s)?")). 540 self::jsVar('dotclear.msg.confirm_delete_categories', 541 __("Are you sure you want to delete selected categories (%s)?")). 421 542 self::jsVar('dotclear.msg.confirm_delete_post', 422 543 __("Are you sure you want to delete this entry?")). 544 self::jsVar('dotclear.msg.click_to_unlock', 545 __("Click here to unlock the field")). 546 self::jsVar('dotclear.msg.confirm_spam_delete', 547 __('Are you sure you want to delete all spams?')). 423 548 self::jsVar('dotclear.msg.confirm_delete_comments', 424 549 __('Are you sure you want to delete selected comments (%s)?')). … … 449 574 self::jsVar('dotclear.msg.confirm_delete_theme', 450 575 __('Are you sure you want to delete "%s" theme?')). 576 self::jsVar('dotclear.msg.confirm_delete_backup', 577 __('Are you sure you want to delete this backup?')). 451 578 self::jsVar('dotclear.msg.zip_file_content', 452 579 __('Zip file content')). … … 459 586 self::jsVar('dotclear.msg.confirm_change_post_format', 460 587 __('You have unsaved changes. Switch post format will loose these changes. Proceed anyway?')). 588 self::jsVar('dotclear.msg.confirm_change_post_format_noconvert', 589 __("Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?")). 461 590 self::jsVar('dotclear.msg.load_enhanced_uploader', 462 591 __('Loading enhanced uploader, please wait.')). 463 "\n//]]>\n".592 "\n//]]>\n". 464 593 "</script>\n"; 465 594 } 466 595 467 596 public static function jsLoadIE7() 468 597 { 469 598 return 470 '<!--[if lt IE 8]>'."\n".471 self::jsLoad('js/ie7/IE 8.js').599 '<!--[if lt IE 9]>'."\n". 600 self::jsLoad('js/ie7/IE9.js'). 472 601 '<link rel="stylesheet" type="text/css" href="style/iesucks.css" />'."\n". 473 602 '<![endif]-->'."\n"; 474 603 } 475 604 476 605 public static function jsConfirmClose() 477 606 { … … 485 614 $args = ''; 486 615 } 487 616 488 617 return 489 618 self::jsLoad('js/confirm-close.js'). … … 495 624 "</script>\n"; 496 625 } 497 626 498 627 public static function jsPageTabs($default=null) 499 628 { … … 501 630 $default = "'".html::escapeJS($default)."'"; 502 631 } 503 632 504 633 return 505 634 self::jsLoad('js/jquery/jquery.pageTabs.js'). … … 507 636 "//<![CDATA[\n". 508 637 "\$(function() {\n". 509 " \$.pageTabs(".$default.");\n". 510 "});\n". 511 "\n//]]>\n". 512 "</script>\n"; 513 } 514 515 public static function jsModal() 516 { 517 return 518 '<link rel="stylesheet" type="text/css" href="style/modal/modal.css" />'."\n". 519 self::jsLoad('js/jquery/jquery.modal.js'). 638 " pagetabs = \$.pageTabs(".$default.");\n". 639 "});\n". 640 "\n//]]>\n". 641 "</script>\n". 642 "<!--[if lt IE 8]>\n". 643 self::jsLoad('js/ie7/ie7-hashchange.js'). 520 644 '<script type="text/javascript">'."\n". 521 645 "//<![CDATA[\n". 522 self::jsVar('$.modal.prototype.params.loader_img','style/modal/loader.gif'). 523 self::jsVar('$.modal.prototype.params.close_img','style/modal/close.png'). 646 "\$(function() {". 647 "\$(window).hashchange( function(){". 648 "pagetabs.showDiv(document.location.hash.split('#').join(''));". 649 "});". 650 "});". 524 651 "\n//]]>\n". 525 "</script>\n"; 526 } 527 528 public static function jsColorPicker() 529 { 530 return 531 '<link rel="stylesheet" type="text/css" href="style/farbtastic/farbtastic.css" />'."\n". 532 self::jsLoad('js/jquery/jquery.farbtastic.js'). 533 self::jsLoad('js/color-picker.js'); 534 } 535 536 public static function jsDatePicker() 537 { 538 return 539 '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 540 self::jsLoad('js/date-picker.js'). 541 '<script type="text/javascript">'."\n". 542 "//<![CDATA[\n". 543 544 "datePicker.prototype.months[0] = '".html::escapeJS(__('January'))."'; ". 545 "datePicker.prototype.months[1] = '".html::escapeJS(__('February'))."'; ". 546 "datePicker.prototype.months[2] = '".html::escapeJS(__('March'))."'; ". 547 "datePicker.prototype.months[3] = '".html::escapeJS(__('April'))."'; ". 548 "datePicker.prototype.months[4] = '".html::escapeJS(__('May'))."'; ". 549 "datePicker.prototype.months[5] = '".html::escapeJS(__('June'))."'; ". 550 "datePicker.prototype.months[6] = '".html::escapeJS(__('July'))."'; ". 551 "datePicker.prototype.months[7] = '".html::escapeJS(__('August'))."'; ". 552 "datePicker.prototype.months[8] = '".html::escapeJS(__('September'))."'; ". 553 "datePicker.prototype.months[9] = '".html::escapeJS(__('October'))."'; ". 554 "datePicker.prototype.months[10] = '".html::escapeJS(__('November'))."'; ". 555 "datePicker.prototype.months[11] = '".html::escapeJS(__('December'))."'; ". 556 557 "datePicker.prototype.days[0] = '".html::escapeJS(__('Monday'))."'; ". 558 "datePicker.prototype.days[1] = '".html::escapeJS(__('Tuesday'))."'; ". 559 "datePicker.prototype.days[2] = '".html::escapeJS(__('Wednesday'))."'; ". 560 "datePicker.prototype.days[3] = '".html::escapeJS(__('Thursday'))."'; ". 561 "datePicker.prototype.days[4] = '".html::escapeJS(__('Friday'))."'; ". 562 "datePicker.prototype.days[5] = '".html::escapeJS(__('Saturday'))."'; ". 563 "datePicker.prototype.days[6] = '".html::escapeJS(__('Sunday'))."'; ". 564 565 "datePicker.prototype.img_src = 'images/date-picker.png'; ". 566 567 "datePicker.prototype.close_msg = '".html::escapeJS(__('close'))."'; ". 568 "datePicker.prototype.now_msg = '".html::escapeJS(__('now'))."'; ". 569 570 "\n//]]>\n". 571 "</script>\n"; 572 } 573 574 public static function jsToolBar() 575 { 576 $res = 577 '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'. 578 '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>'; 579 580 if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) { 581 $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>'; 582 } 583 584 $res .= 585 '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'. 586 '<script type="text/javascript">'."\n". 587 "//<![CDATA[\n". 588 "jsToolBar.prototype.dialog_url = 'popup.php'; ". 589 "jsToolBar.prototype.iframe_css = '". 590 'body{'. 591 'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'. 592 'color : #000;'. 593 'background: #f9f9f9;'. 594 'margin: 0;'. 595 'padding : 2px;'. 596 'border: none;'. 597 (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : ''). 598 '}'. 599 'pre, code, kbd, samp {'. 600 'font-family:"Courier New",Courier,monospace;'. 601 'font-size : 1.1em;'. 602 '}'. 603 'code {'. 604 'color : #666;'. 605 'font-weight : bold;'. 606 '}'. 607 'body > p:first-child {'. 608 'margin-top: 0;'. 609 '}'. 610 "'; ". 611 "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ". 612 "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ". 613 "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ". 614 "jsToolBar.prototype.legend_msg = '". 615 html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ". 616 "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ". 617 "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ". 618 "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ". 619 "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ". 620 "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ". 621 "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ". 622 "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ". 623 "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ". 624 "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ". 625 "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ". 626 "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ". 627 "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ". 628 "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ". 629 "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ". 630 "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ". 631 "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ". 632 "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ". 633 "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ". 634 "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ". 635 "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ". 636 637 "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ". 638 "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ". 639 "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ". 640 641 "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ". 642 "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ". 643 644 "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ". 645 "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; "; 646 647 if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 648 $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n"; 649 } 650 651 $res .= 652 "\n//]]>\n". 653 "</script>\n"; 654 655 return $res; 656 } 657 658 public static function jsCandyUpload($params=array(),$base_url=null) 659 { 660 if (!$base_url) { 661 $base_url = path::clean(dirname(preg_replace('/(\?.*$)?/','',$_SERVER['REQUEST_URI']))).'/'; 662 } 663 664 $params = array_merge($params,array( 665 'sess_id='.session_id(), 666 'sess_uid='.$_SESSION['sess_browser_uid'], 667 'xd_check='.$GLOBALS['core']->getNonce() 652 "</script>\n". 653 "<![endif]-->\n"; 654 } 655 656 public static function jsModal() 657 { 658 return 659 '<link rel="stylesheet" type="text/css" href="style/modal/modal.css" />'."\n". 660 self::jsLoad('js/jquery/jquery.modal.js'). 661 '<script type="text/javascript">'."\n". 662 "//<![CDATA[\n". 663 self::jsVar('$.modal.prototype.params.loader_img','style/modal/loader.gif'). 664 self::jsVar('$.modal.prototype.params.close_img','style/modal/close.png'). 665 "\n//]]>\n". 666 "</script>\n"; 667 } 668 669 public static function jsColorPicker() 670 { 671 return 672 '<link rel="stylesheet" type="text/css" href="style/farbtastic/farbtastic.css" />'."\n". 673 self::jsLoad('js/jquery/jquery.farbtastic.js'). 674 self::jsLoad('js/color-picker.js'); 675 } 676 677 public static function jsDatePicker() 678 { 679 return 680 '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 681 self::jsLoad('js/date-picker.js'). 682 '<script type="text/javascript">'."\n". 683 "//<![CDATA[\n". 684 685 "datePicker.prototype.months[0] = '".html::escapeJS(__('January'))."'; ". 686 "datePicker.prototype.months[1] = '".html::escapeJS(__('February'))."'; ". 687 "datePicker.prototype.months[2] = '".html::escapeJS(__('March'))."'; ". 688 "datePicker.prototype.months[3] = '".html::escapeJS(__('April'))."'; ". 689 "datePicker.prototype.months[4] = '".html::escapeJS(__('May'))."'; ". 690 "datePicker.prototype.months[5] = '".html::escapeJS(__('June'))."'; ". 691 "datePicker.prototype.months[6] = '".html::escapeJS(__('July'))."'; ". 692 "datePicker.prototype.months[7] = '".html::escapeJS(__('August'))."'; ". 693 "datePicker.prototype.months[8] = '".html::escapeJS(__('September'))."'; ". 694 "datePicker.prototype.months[9] = '".html::escapeJS(__('October'))."'; ". 695 "datePicker.prototype.months[10] = '".html::escapeJS(__('November'))."'; ". 696 "datePicker.prototype.months[11] = '".html::escapeJS(__('December'))."'; ". 697 698 "datePicker.prototype.days[0] = '".html::escapeJS(__('Monday'))."'; ". 699 "datePicker.prototype.days[1] = '".html::escapeJS(__('Tuesday'))."'; ". 700 "datePicker.prototype.days[2] = '".html::escapeJS(__('Wednesday'))."'; ". 701 "datePicker.prototype.days[3] = '".html::escapeJS(__('Thursday'))."'; ". 702 "datePicker.prototype.days[4] = '".html::escapeJS(__('Friday'))."'; ". 703 "datePicker.prototype.days[5] = '".html::escapeJS(__('Saturday'))."'; ". 704 "datePicker.prototype.days[6] = '".html::escapeJS(__('Sunday'))."'; ". 705 706 "datePicker.prototype.img_src = 'images/date-picker.png'; ". 707 708 "datePicker.prototype.close_msg = '".html::escapeJS(__('close'))."'; ". 709 "datePicker.prototype.now_msg = '".html::escapeJS(__('now'))."'; ". 710 711 "\n//]]>\n". 712 "</script>\n"; 713 } 714 715 public static function jsToolBar() 716 { 717 $res = 718 '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'. 719 '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>'; 720 721 if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) { 722 $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>'; 723 } 724 725 $res .= 726 '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'. 727 '<script type="text/javascript">'."\n". 728 "//<![CDATA[\n". 729 "jsToolBar.prototype.dialog_url = 'popup.php'; ". 730 "jsToolBar.prototype.iframe_css = '". 731 'body{'. 732 'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'. 733 'color : #000;'. 734 'background: #f9f9f9;'. 735 'margin: 0;'. 736 'padding : 2px;'. 737 'border: none;'. 738 (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : ''). 739 '}'. 740 'pre, code, kbd, samp {'. 741 'font-family:"Courier New",Courier,monospace;'. 742 'font-size : 1.1em;'. 743 '}'. 744 'code {'. 745 'color : #666;'. 746 'font-weight : bold;'. 747 '}'. 748 'body > p:first-child {'. 749 'margin-top: 0;'. 750 '}'. 751 "'; ". 752 "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ". 753 "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ". 754 "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ". 755 "jsToolBar.prototype.legend_msg = '". 756 html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ". 757 "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ". 758 "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ". 759 "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ". 760 "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ". 761 "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ". 762 "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ". 763 "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ". 764 "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ". 765 "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ". 766 "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ". 767 "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ". 768 "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ". 769 "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ". 770 "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ". 771 "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ". 772 "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ". 773 "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ". 774 "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ". 775 "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ". 776 "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ". 777 778 "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ". 779 "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ". 780 "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ". 781 782 "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ". 783 "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ". 784 785 "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ". 786 "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; "; 787 788 if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 789 $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n"; 790 } 791 792 $res .= 793 "\n//]]>\n". 794 "</script>\n"; 795 796 return $res; 797 } 798 799 public static function jsUpload($params=array(),$base_url=null) 800 { 801 if (!$base_url) { 802 $base_url = path::clean(dirname(preg_replace('/(\?.*$)?/','',$_SERVER['REQUEST_URI']))).'/'; 803 } 804 805 $params = array_merge($params,array( 806 'sess_id='.session_id(), 807 'sess_uid='.$_SESSION['sess_browser_uid'], 808 'xd_check='.$GLOBALS['core']->getNonce() 668 809 )); 669 670 return 671 '<link rel="stylesheet" type="text/css" href="style/candyUpload/style.css" />'."\n". 672 self::jsLoad('js/jquery/jquery.candyUpload.js'). 673 674 '<script type="text/javascript">'."\n". 675 "//<![CDATA[\n". 676 "dotclear.candyUpload = {};\n". 677 self::jsVar('dotclear.msg.activate_enhanced_uploader',__('Activate enhanced uploader')). 678 self::jsVar('dotclear.msg.disable_enhanced_uploader',__('Disable enhanced uploader')). 679 self::jsVar('$._candyUpload.prototype.locales.file_uploaded',__('File successfully uploaded.')). 680 self::jsVar('$._candyUpload.prototype.locales.max_file_size',__('Maximum file size allowed:')). 681 self::jsVar('$._candyUpload.prototype.locales.limit_exceeded',__('Limit exceeded.')). 682 self::jsVar('$._candyUpload.prototype.locales.size_limit_exceeded',__('File size exceeds allowed limit.')). 683 self::jsVar('$._candyUpload.prototype.locales.canceled',__('Canceled.')). 684 self::jsVar('$._candyUpload.prototype.locales.http_error',__('HTTP Error:')). 685 self::jsVar('$._candyUpload.prototype.locales.error',__('Error:')). 686 self::jsVar('$._candyUpload.prototype.locales.choose_file',__('Choose file')). 687 self::jsVar('$._candyUpload.prototype.locales.choose_files',__('Choose files')). 688 self::jsVar('$._candyUpload.prototype.locales.cancel',__('Cancel')). 689 self::jsVar('$._candyUpload.prototype.locales.clean',__('Clean')). 690 self::jsVar('$._candyUpload.prototype.locales.upload',__('Upload')). 691 self::jsVar('$._candyUpload.prototype.locales.no_file_in_queue',__('No file in queue.')). 692 self::jsVar('$._candyUpload.prototype.locales.file_in_queue',__('1 file in queue.')). 693 self::jsVar('$._candyUpload.prototype.locales.files_in_queue',__('%d files in queue.')). 694 self::jsVar('$._candyUpload.prototype.locales.queue_error',__('Queue error:')). 695 self::jsVar('dotclear.candyUpload.base_url',$base_url). 696 self::jsVar('dotclear.candyUpload.movie_url',$base_url.'index.php?pf=swfupload.swf'). 697 self::jsVar('dotclear.candyUpload.params',implode('&',$params)). 698 "\n//]]>\n". 699 "</script>\n"; 700 } 701 702 public static function jsToolMan() 703 { 704 return 705 '<script type="text/javascript" src="js/tool-man/core.js"></script>'. 706 '<script type="text/javascript" src="js/tool-man/events.js"></script>'. 707 '<script type="text/javascript" src="js/tool-man/css.js"></script>'. 708 '<script type="text/javascript" src="js/tool-man/coordinates.js"></script>'. 709 '<script type="text/javascript" src="js/tool-man/drag.js"></script>'. 710 '<script type="text/javascript" src="js/tool-man/dragsort.js"></script>'. 711 '<script type="text/javascript" src="js/dragsort-tablerows.js"></script>'; 712 } 713 714 public static function jsMetaEditor() 715 { 716 return 717 '<script type="text/javascript" src="js/meta-editor.js"></script>'; 718 } 810 811 return 812 '<link rel="stylesheet" type="text/css" href="style/jsUpload/style.css" />'."\n". 813 814 '<script type="text/javascript">'."\n". 815 "//<![CDATA[\n". 816 "dotclear.jsUpload = {};\n". 817 "dotclear.jsUpload.msg = {};\n". 818 self::jsVar('dotclear.msg.enhanced_uploader_activate',__('Temporarily activate enhanced uploader')). 819 self::jsVar('dotclear.msg.enhanced_uploader_disable',__('Temporarily disable enhanced uploader')). 820 self::jsVar('dotclear.jsUpload.msg.limit_exceeded',__('Limit exceeded.')). 821 self::jsVar('dotclear.jsUpload.msg.size_limit_exceeded',__('File size exceeds allowed limit.')). 822 self::jsVar('dotclear.jsUpload.msg.canceled',__('Canceled.')). 823 self::jsVar('dotclear.jsUpload.msg.http_error',__('HTTP Error:')). 824 self::jsVar('dotclear.jsUpload.msg.error',__('Error:')). 825 self::jsVar('dotclear.jsUpload.msg.choose_file',__('Choose file')). 826 self::jsVar('dotclear.jsUpload.msg.choose_files',__('Choose files')). 827 self::jsVar('dotclear.jsUpload.msg.cancel',__('Cancel')). 828 self::jsVar('dotclear.jsUpload.msg.clean',__('Clean')). 829 self::jsVar('dotclear.jsUpload.msg.upload',__('Upload')). 830 self::jsVar('dotclear.jsUpload.msg.send',__('Send')). 831 self::jsVar('dotclear.jsUpload.msg.file_successfully_uploaded',__('File successfully uploaded.')). 832 self::jsVar('dotclear.jsUpload.msg.no_file_in_queue',__('No file in queue.')). 833 self::jsVar('dotclear.jsUpload.msg.file_in_queue',__('1 file in queue.')). 834 self::jsVar('dotclear.jsUpload.msg.files_in_queue',__('%d files in queue.')). 835 self::jsVar('dotclear.jsUpload.msg.queue_error',__('Queue error:')). 836 self::jsVar('dotclear.jsUpload.base_url',$base_url). 837 "\n//]]>\n". 838 "</script>\n". 839 840 self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js'). 841 self::jsLoad('js/jsUpload/tmpl.js'). 842 self::jsLoad('js/jsUpload/template-upload.js'). 843 self::jsLoad('js/jsUpload/template-download.js'). 844 self::jsLoad('js/jsUpload/load-image.js'). 845 self::jsLoad('js/jsUpload/jquery.iframe-transport.js'). 846 self::jsLoad('js/jsUpload/jquery.fileupload.js'). 847 self::jsLoad('js/jsUpload/jquery.fileupload-process.js'). 848 self::jsLoad('js/jsUpload/jquery.fileupload-resize.js'). 849 self::jsLoad('js/jsUpload/jquery.fileupload-ui.js'); 850 } 851 852 public static function jsToolMan() 853 { 854 return 855 '<script type="text/javascript" src="js/tool-man/core.js"></script>'. 856 '<script type="text/javascript" src="js/tool-man/events.js"></script>'. 857 '<script type="text/javascript" src="js/tool-man/css.js"></script>'. 858 '<script type="text/javascript" src="js/tool-man/coordinates.js"></script>'. 859 '<script type="text/javascript" src="js/tool-man/drag.js"></script>'. 860 '<script type="text/javascript" src="js/tool-man/dragsort.js"></script>'. 861 '<script type="text/javascript" src="js/dragsort-tablerows.js"></script>'; 862 } 863 864 public static function jsMetaEditor() 865 { 866 return 867 '<script type="text/javascript" src="js/meta-editor.js"></script>'; 868 } 719 869 } 720 870 ?> -
inc/admin/lib.dc.page.php
r1778 r1793 206 206 echo 207 207 '</div>'."\n". // End of #main-menu 208 '<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logos/w-dotclear90.png" alt="'.$text.'" /></a></div>'."\n". 208 '<div id="footer">'. 209 '<span class="helplink"><a href="help.php">'.__('Global help').'</a></span> '. 210 '<a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logos/w-dotclear90.png" alt="'.$text.'" /></a></div>'."\n". 209 211 '<!-- '."\n". 210 212 ' .'."\n". … … 434 436 '<div id="help"><hr /><div class="help-content clear"><h3>'.__('Help about this page').'</h3>'. 435 437 $content. 438 '</div>'. 439 '<div id="helplink"><hr />'. 440 '<p>'. 441 sprintf(__('See also %s'),sprintf('<a href="help.php">%s</a>',__('the global help'))). 442 '</p>'. 436 443 '</div></div>'; 437 444 } -
inc/admin/prepend.php
r494 r1793 4 4 # This file is part of Dotclear 2. 5 5 # 6 # Copyright (c) 2003-201 1Olivier Meunier & Association Dotclear6 # Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear 7 7 # Licensed under the GPL version 2.0 license. 8 8 # See LICENSE file or … … 11 11 # -- END LICENSE BLOCK ----------------------------------------- 12 12 13 define('DC_CONTEXT_ADMIN',true); 14 13 15 require_once dirname(__FILE__).'/../prepend.php'; 14 16 … … 19 21 // HTTP/1.0 20 22 header("Pragma: no-cache"); 21 22 define('DC_CONTEXT_ADMIN',true);23 23 24 24 function dc_valid_fav($url) { … … 37 37 function dc_prepare_url($url) { 38 38 39 $u = str_replace(array('?','&' ),array('\?','&'),$url);39 $u = str_replace(array('?','&','/'),array('\?','&','\\/'),$url); 40 40 return (!strpos($u,'\?') ? 41 41 '/'.$u.'$/' : … … 55 55 } 56 56 l10n::set(dirname(__FILE__).'/../../locales/'.$_lang.'/main'); 57 l10n::set(dirname(__FILE__).'/../../locales/'.$_lang.'/public'); 57 58 l10n::set(dirname(__FILE__).'/../../locales/'.$_lang.'/plugins'); 59 } 60 61 function dc_admin_icon_url($img) 62 { 63 global $core; 64 65 $core->auth->user_prefs->addWorkspace('interface'); 66 $user_ui_iconset = @$core->auth->user_prefs->interface->iconset; 67 if (($user_ui_iconset) && ($img)) { 68 $icon = false; 69 if ((preg_match('/^images\/menu\/(.+)$/',$img,$m)) || 70 (preg_match('/^index\.php\?pf=(.+)$/',$img,$m))) { 71 if ($m[1]) { 72 $icon = path::real(dirname(__FILE__).'/../../admin/images/iconset/'.$user_ui_iconset.'/'.$m[1],false); 73 if ($icon !== false) { 74 $allow_types = array('png','jpg','jpeg','gif'); 75 if (is_file($icon) && is_readable($icon) && in_array(files::getExtension($icon),$allow_types)) { 76 return DC_ADMIN_URL.'images/iconset/'.$user_ui_iconset.'/'.$m[1]; 77 } 78 } 79 } 80 } 81 } 82 return $img; 58 83 } 59 84 … … 191 216 } 192 217 unset($hfiles,$locales_root); 218 219 $core->auth->user_prefs->addWorkspace('interface'); 220 $user_ui_nofavmenu = $core->auth->user_prefs->interface->nofavmenu; 193 221 194 222 # Standard favorites … … 233 261 'images/menu/users.png','images/menu/users-b.png', 234 262 null,null,null)); 235 $_fav['plugins'] = new ArrayObject(array('plugins','Plugins ','plugins.php',263 $_fav['plugins'] = new ArrayObject(array('plugins','Plugins management','plugins.php', 236 264 'images/menu/plugins.png','images/menu/plugins-b.png', 237 265 null,null,null)); … … 246 274 # Menus creation 247 275 $_menu['Dashboard'] = new dcMenu('dashboard-menu',null); 248 $_menu['Favorites'] = new dcMenu('favorites-menu','My favorites'); 276 if (!$user_ui_nofavmenu) 277 $_menu['Favorites'] = new dcMenu('favorites-menu','My favorites'); 249 278 $_menu['Blog'] = new dcMenu('blog-menu','Blog'); 250 279 $_menu['System'] = new dcMenu('system-menu','System'); … … 259 288 # Set menu titles 260 289 261 $_menu['System']->title = __('System ');290 $_menu['System']->title = __('System settings'); 262 291 $_menu['Blog']->title = __('Blog'); 263 292 $_menu['Plugins']->title = __('Plugins'); 264 $_menu['Favorites']->title = __('My favorites'); 293 if (!$user_ui_nofavmenu) 294 $_menu['Favorites']->title = __('My favorites'); 265 295 266 296 /* … … 296 326 $core->auth->check('usage,contentadmin',$core->blog->id),'menu-new-post'); 297 327 298 $_menu['System']->prependItem(__('Update s'),'update.php','images/menu/update.png',328 $_menu['System']->prependItem(__('Update'),'update.php','images/menu/update.png', 299 329 preg_match('/update.php(\?.*)?$/',$_SERVER['REQUEST_URI']), 300 330 $core->auth->isSuperAdmin() && is_readable(DC_DIGESTS)); … … 302 332 preg_match('/langs.php(\?.*)?$/',$_SERVER['REQUEST_URI']), 303 333 $core->auth->isSuperAdmin()); 304 $_menu['System']->prependItem(__('Plugins '),'plugins.php','images/menu/plugins.png',334 $_menu['System']->prependItem(__('Plugins management'),'plugins.php','images/menu/plugins.png', 305 335 preg_match('/plugins.php(\?.*)?$/',$_SERVER['REQUEST_URI']), 306 336 $core->auth->isSuperAdmin()); … … 313 343 $core->auth->check('usage,contentadmin',$core->blog->id) && $core->auth->blog_count > 1); 314 344 315 // Set favorites menu 316 $ws = $core->auth->user_prefs->addWorkspace('favorites'); 317 $count = 0; 318 foreach ($ws->dumpPrefs() as $k => $v) { 319 // User favorites only 320 if (!$v['global']) { 321 $fav = unserialize($v['value']); 322 if (dc_valid_fav($fav['url'])) { 323 $count++; 324 $_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'], 325 preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']), 326 (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']); 327 } 328 } 329 } 330 if (!$count) { 331 // Global favorites if any 345 if (!$user_ui_nofavmenu) { 346 // Set favorites menu 347 $ws = $core->auth->user_prefs->addWorkspace('favorites'); 348 $count = 0; 332 349 foreach ($ws->dumpPrefs() as $k => $v) { 333 $fav = unserialize($v['value']); 334 if (dc_valid_fav($fav['url'])) { 335 $count++; 336 $_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'], 337 preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']), 338 (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']); 339 } 340 } 341 } 342 if (!$count) { 343 // No user or global favorites, add "new entry" fav 344 $_menu['Favorites']->addItem(__('New entry'),'post.php','images/menu/edit.png', 345 preg_match('/post.php$/',$_SERVER['REQUEST_URI']), 346 $core->auth->check('usage,contentadmin',$core->blog->id),'menu-new-post',null); 350 // User favorites only 351 if (!$v['global']) { 352 $fav = unserialize($v['value']); 353 if (dc_valid_fav($fav['url'])) { 354 $count++; 355 $_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'], 356 preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']), 357 (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']); 358 } 359 } 360 } 361 if (!$count) { 362 // Global favorites if any 363 foreach ($ws->dumpPrefs() as $k => $v) { 364 $fav = unserialize($v['value']); 365 if (dc_valid_fav($fav['url'])) { 366 $count++; 367 $_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'], 368 preg_match(dc_prepare_url($fav['url']),$_SERVER['REQUEST_URI']), 369 (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']); 370 } 371 } 372 } 373 if (!$count) { 374 // No user or global favorites, add "new entry" fav 375 $_menu['Favorites']->addItem(__('New entry'),'post.php','images/menu/edit.png', 376 preg_match('/post.php$/',$_SERVER['REQUEST_URI']), 377 $core->auth->check('usage,contentadmin',$core->blog->id),'menu-new-post',null); 378 } 379 } 380 381 if (empty($core->blog->settings->system->jquery_migrate_mute)) { 382 $core->blog->settings->system->put('jquery_migrate_mute', true, 'boolean', 'Mute warnings for jquery migrate plugin ?', false); 347 383 } 348 384 } -
inc/admin/prepend.php
r1771 r1793 267 267 'images/menu/langs.png','images/menu/langs-b.png', 268 268 null,null,null)); 269 270 $_fav['help'] = new ArrayObject(array('help','Global help','help.php', 271 'images/menu/help.png','images/menu/help-b.png', 272 '*',null,null)); 269 273 270 274 # Menus creation
Note: See TracChangeset
for help on using the changeset viewer.