[ Index ] |
|
Code source de b2evolution 2.1.0-beta |
1 <?php 2 /** 3 * This file implements the UI controller for managing posts. 4 * 5 * b2evolution - {@link http://b2evolution.net/} 6 * Released under GNU GPL License - {@link http://b2evolution.net/about/license.html} 7 * @copyright (c)2003-2007 by Francois PLANQUE - {@link http://fplanque.net/} 8 * 9 * {@internal Open Source relicensing agreement: 10 * }} 11 * 12 * @package admin 13 * 14 * {@internal Below is a list of authors who have contributed to design/coding of this file: }} 15 * @author fplanque: Francois PLANQUE. 16 * 17 * @package admin 18 * 19 * @version $Id: items.ctrl.php,v 1.8 2007/09/29 09:50:32 yabs Exp $ 20 */ 21 if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' ); 22 23 /** 24 * @var AdminUI 25 */ 26 global $AdminUI; 27 28 /** 29 * @var UserSettings 30 */ 31 global $UserSettings; 32 33 /** 34 * @var User 35 */ 36 global $current_User; 37 38 /** 39 * @var Blog 40 */ 41 global $Blog; 42 43 param( 'action', 'string', 'list' ); 44 45 $AdminUI->set_path( 'items' ); // Sublevel may be attached below 46 47 /* 48 * Init the objects we want to work on. 49 * 50 * Autoselect a blog where we have PERMISSION to browse (preferably the last used blog): 51 * Note: for some actions, we'll get the blog from the post ID 52 */ 53 switch( $action ) 54 { 55 case 'unlink': 56 param( 'link_ID', 'integer', true ); 57 $LinkCache = & get_Cache( 'LinkCache' ); 58 if( ($edited_Link = & $LinkCache->get_by_ID( $link_ID, false )) !== false ) 59 { // We have a link, get the Item it is attached to: 60 $edited_Item = & $edited_Link->Item; 61 62 // Load the blog we're in: 63 $Blog = & $edited_Item->get_Blog(); 64 set_working_blog( $Blog->ID ); 65 } 66 else 67 { // We could not find the link to edit: 68 $Messages->add( T_('Requested link does not exist any longer.'), 'error' ); 69 unset( $edited_Link ); 70 unset( $link_ID ); 71 $action = 'nil'; 72 } 73 break; 74 75 case 'edit': 76 // Load post to edit: 77 param( 'p', 'integer', true, true ); 78 $ItemCache = & get_Cache( 'ItemCache' ); 79 $edited_Item = & $ItemCache->get_by_ID( $p ); 80 81 // Load the blog we're in: 82 $Blog = & $edited_Item->get_Blog(); 83 set_working_blog( $Blog->ID ); 84 85 // Where are we going to redirect to? 86 param( 'redirect_to', 'string', url_add_param( $admin_url, 'ctrl=items&filter=restore&blog='.$Blog->ID.'&highlight='.$edited_Item->ID ) ); 87 break; 88 89 case 'update': 90 case 'publish': 91 case 'deprecate': 92 case 'delete': 93 // Note: we need to *not* use $p in the cases above or it will conflict with the list display 94 case 'edit_switchtab': // this gets set as action by JS, when we switch tabs 95 // Load post to edit: 96 param( 'post_ID', 'integer', true, true ); 97 $ItemCache = & get_Cache( 'ItemCache' ); 98 $edited_Item = & $ItemCache->get_by_ID( $post_ID ); 99 100 // Load the blog we're in: 101 $Blog = & $edited_Item->get_Blog(); 102 set_working_blog( $Blog->ID ); 103 104 // Where are we going to redirect to? 105 param( 'redirect_to', 'string', url_add_param( $admin_url, 'ctrl=items&filter=restore&blog='.$Blog->ID.'&highlight='.$edited_Item->ID ) ); 106 break; 107 108 case 'new': 109 case 'new_switchtab': // this gets set as action by JS, when we switch tabs 110 case 'create': 111 case 'list': 112 if( $action == 'list' ) 113 { // We only need view permission 114 $selected = autoselect_blog( 'blog_ismember', 'view' ); 115 } 116 else 117 { // We need posting permission 118 $selected = autoselect_blog( 'blog_post_statuses', 'edit' ); 119 } 120 121 if( ! $selected ) 122 { // No blog could be selected 123 $Messages->add( T_('Sorry, you have no permission to post yet.'), 'error' ); 124 $action = 'nil'; 125 } 126 else 127 { 128 if( set_working_blog( $selected ) ) // set $blog & memorize in user prefs 129 { // Selected a new blog: 130 $BlogCache = & get_Cache( 'BlogCache' ); 131 $Blog = & $BlogCache->get_by_ID( $blog ); 132 } 133 134 // Where are we going to redirect to? 135 param( 'redirect_to', 'string', url_add_param( $admin_url, 'ctrl=items&filter=restore&blog='.$Blog->ID ) ); 136 } 137 break; 138 139 default: 140 debug_die( 'unhandled action 1:'.htmlspecialchars($action) ); 141 } 142 143 144 /** 145 * Perform action: 146 */ 147 switch( $action ) 148 { 149 case 'nil': 150 // Do nothing 151 break; 152 153 case 'new': 154 case 'new_switchtab': // this gets set as action by JS, when we switch tabs 155 // New post form (can be a bookmarklet form if mode == bookmarklet ) 156 157 load_class('items/model/_item.class.php'); 158 $edited_Item = & new Item(); 159 160 $edited_Item->blog_ID = $blog; 161 162 // We use the request variables to fill the edit form, because we need to be able to pass those values 163 // from tab to tab via javascript when the editor wants to switch views... 164 // Also used by bookmarklet 165 $edited_Item->load_from_Request(); // needs Blog set 166 167 $edited_Item->status = param( 'post_status', 'string', NULL ); // 'published' or 'draft' or ... 168 // We know we can use at least one status, 169 // but we need to make sure the requested/default one is ok: 170 $edited_Item->status = $Blog->get_allowed_item_status( $edited_Item->status ); 171 172 173 param( 'post_extracats', 'array', array() ); 174 param( 'edit_date', 'integer', 0 ); // checkbox 175 $edited_Item->main_cat_ID = param( 'post_category', 'integer', $Blog->get_default_cat_ID() ); 176 if( $edited_Item->main_cat_ID && $allow_cross_posting < 3 && get_catblog($edited_Item->main_cat_ID) != $blog ) 177 { // the main cat is not in the list of categories; this happens, if the user switches blogs during editing: 178 $edited_Item->main_cat_ID = $Blog->get_default_cat_ID(); 179 } 180 $post_extracats = param( 'post_extracats', 'array', $post_extracats ); 181 182 param( 'item_tags', 'string', '' ); 183 184 // Trackback addresses (never saved into item) 185 param( 'trackback_url', 'string', '' ); 186 187 // Page title: 188 $AdminUI->title = T_('New post in blog:').' '; 189 $AdminUI->title_titlearea = $AdminUI->title; 190 $js_doc_title_prefix = $AdminUI->title; 191 192 // Params we need for tab switching: 193 $tab_switch_params = 'blog='.$blog; 194 break; 195 196 197 case 'edit_switchtab': // this gets set as action by JS, when we switch tabs 198 // This is somewhat in between new and edit... 199 200 // Check permission based on DB status: 201 $current_User->check_perm( 'item_post!'.$edited_Item->get( 'status' ), 'edit', true, $edited_Item ); 202 203 $edited_Item->status = param( 'post_status', 'string', NULL ); // 'published' or 'draft' or ... 204 // We know we can use at least one status, 205 // but we need to make sure the requested/default one is ok: 206 $edited_Item->status = $Blog->get_allowed_item_status( $edited_Item->status ); 207 208 // We use the request variables to fill the edit form, because we need to be able to pass those values 209 // from tab to tab via javascript when the editor wants to switch views... 210 $edited_Item->load_from_Request(); // needs Blog set 211 212 param( 'post_extracats', 'array', array() ); 213 param( 'edit_date', 'integer', 0 ); // checkbox 214 $edited_Item->main_cat_ID = param( 'post_category', 'integer', $edited_Item->main_cat_ID ); 215 if( $edited_Item->main_cat_ID && $allow_cross_posting < 3 && get_catblog($edited_Item->main_cat_ID) != $blog ) 216 { // the main cat is not in the list of categories; this happens, if the user switches blogs during editing: 217 $edited_Item->main_cat_ID = $Blog->get_default_cat_ID(); 218 } 219 $post_extracats = param( 'post_extracats', 'array', $post_extracats ); 220 221 param( 'item_tags', 'string', '' ); 222 223 // Trackback addresses (never saved into item) 224 param( 'trackback_url', 'string', '' ); 225 226 // Page title: 227 $js_doc_title_prefix = T_('Editing post').': '; 228 $AdminUI->title = $js_doc_title_prefix.$edited_Item->dget( 'title', 'htmlhead' ); 229 $AdminUI->title_titlearea = sprintf( T_('Editing post #%d in blog: %s'), $edited_Item->ID, $Blog->get('name') ); 230 231 // Params we need for tab switching: 232 $tab_switch_params = 'p='.$edited_Item->ID; 233 break; 234 235 236 case 'edit': 237 // Check permission: 238 $edited_Item->status = $edited_Item->get( 'status' ); 239 $current_User->check_perm( 'item_post!'.$edited_Item->status, 'edit', true, $edited_Item ); 240 241 $post_comment_status = $edited_Item->get( 'comment_status' ); 242 $post_extracats = postcats_get_byID( $p ); 243 244 $item_tags = implode( ' ', $edited_Item->get_tags() ); 245 $trackback_url = ''; 246 247 // Page title: 248 $js_doc_title_prefix = T_('Editing post').': '; 249 $AdminUI->title = $js_doc_title_prefix.$edited_Item->dget( 'title', 'htmlhead' ); 250 $AdminUI->title_titlearea = sprintf( T_('Editing post #%d in blog: %s'), $edited_Item->ID, $Blog->get('name') ); 251 252 // Params we need for tab switching: 253 $tab_switch_params = 'p='.$edited_Item->ID; 254 break; 255 256 257 case 'create': 258 // We need early decoding of these in order to check permissions: 259 param( 'post_status', 'string', 'published' ); 260 param( 'post_category', 'integer', true ); 261 param( 'post_extracats', 'array', array() ); 262 // make sure main cat is in extracat list and there are no duplicates 263 $post_extracats[] = $post_category; 264 $post_extracats = array_unique( $post_extracats ); 265 // Check permission on statuses: 266 $current_User->check_perm( 'cats_post!'.$post_status, 'edit', true, $post_extracats ); 267 268 269 // CREATE NEW POST: 270 load_class('items/model/_item.class.php'); 271 $edited_Item = & new Item(); 272 273 // Set the params we already got: 274 $edited_Item->set( 'status', $post_status ); 275 $edited_Item->set( 'main_cat_ID', $post_category ); 276 $edited_Item->set( 'extra_cat_IDs', $post_extracats ); 277 278 // Set object params: 279 $edited_Item->load_from_Request(); 280 281 // TODO: fp> Add a radio into blog settings > Features > Post title: () required () optional () none 282 /* 283 if( empty($edited_Item->title) ) 284 { // post_title is "TEXT NOT NULL" and a title makes sense anyway 285 $Messages->add( T_('Please give a title.') ); 286 } 287 */ 288 289 $Plugins->trigger_event( 'AdminBeforeItemEditCreate', array( 'Item' => & $edited_Item ) ); 290 291 if( $Messages->count('error') ) 292 { // There have been some validation errors: 293 // Params we need for tab switching: 294 $tab_switch_params = 'blog='.$blog; 295 break; 296 } 297 298 // INSERT NEW POST INTO DB: 299 $edited_Item->dbinsert(); 300 301 // post post-publishing operations: 302 param( 'trackback_url', 'string' ); 303 if( !empty( $trackback_url ) ) 304 { 305 if( $edited_Item->status != 'published' ) 306 { 307 $Messages->add( T_('Post not publicly published: skipping trackback...'), 'info' ); 308 } 309 else 310 { // trackback now: 311 load_funcs('comments/_trackback.funcs.php'); 312 trackbacks( $trackback_url, $edited_Item->content, $edited_Item->title, $edited_Item->ID); 313 } 314 } 315 316 // Execute or schedule notifications & pings: 317 $edited_Item->handle_post_processing(); 318 319 $Messages->add( T_('Post has been created.'), 'success' ); 320 321 // REDIRECT / EXIT 322 header_redirect( $redirect_to ); 323 // Switch to list mode: 324 // $action = 'list'; 325 //init_list_mode(); 326 break; 327 328 329 case 'update': 330 // We need early decoding of these in order to check permissions: 331 param( 'post_status', 'string', 'published' ); 332 param( 'post_category', 'integer', true ); 333 param( 'post_extracats', 'array', array() ); 334 // make sure main cat is in extracat list and there are no duplicates 335 $post_extracats[] = $post_category; 336 $post_extracats = array_unique( $post_extracats ); 337 // Check permission on statuses: 338 $current_User->check_perm( 'cats_post!'.$post_status, 'edit', true, $post_extracats ); 339 340 341 // UPDATE POST: 342 // Set the params we already got: 343 $edited_Item->set( 'status', $post_status ); 344 $edited_Item->set( 'main_cat_ID', $post_category ); 345 $edited_Item->set( 'extra_cat_IDs', $post_extracats ); 346 347 // Set object params: 348 $edited_Item->load_from_Request( true ); 349 350 $Plugins->trigger_event( 'AdminBeforeItemEditUpdate', array( 'Item' => & $edited_Item ) ); 351 352 if( $Messages->count('error') ) 353 { // There have been some validation errors: 354 // Params we need for tab switching: 355 $tab_switch_params = 'p='.$post_ID; 356 break; 357 } 358 359 // UPDATE POST IN DB: 360 $edited_Item->dbupdate(); 361 362 // post post-publishing operations: 363 param( 'trackback_url', 'string' ); 364 if( !empty( $trackback_url ) ) 365 { 366 if( $edited_Item->status != 'published' ) 367 { 368 $Messages->add( T_('Post not publicly published: skipping trackback...'), 'info' ); 369 } 370 else 371 { // trackback now: 372 load_funcs('comments/_trackback.funcs.php'); 373 trackbacks( $trackback_url, $edited_Item->content, $edited_Item->title, $edited_Item->ID ); 374 } 375 } 376 377 // Execute or schedule notifications & pings: 378 $edited_Item->handle_post_processing(); 379 380 $Messages->add( T_('Post has been updated.'), 'success' ); 381 382 // REDIRECT / EXIT 383 header_redirect( $redirect_to ); 384 // Switch to list mode: 385 // $action = 'list'; 386 // init_list_mode(); 387 break; 388 389 390 case 'publish': 391 // Publish NOW: 392 393 $post_status = 'published'; 394 // Check permissions: 395 /* TODO: Check extra categories!!! */ 396 $current_User->check_perm( 'item_post!'.$post_status, 'edit', true, $edited_Item ); 397 $current_User->check_perm( 'edit_timestamp', 'any', true ) ; 398 399 $edited_Item->set( 'status', $post_status ); 400 401 $post_date = date('Y-m-d H:i:s', $localtimenow); 402 $edited_Item->set( 'datestart', $post_date ); 403 $edited_Item->set( 'datemodified', $post_date ); 404 405 // UPDATE POST IN DB: 406 $edited_Item->dbupdate(); 407 408 // Execute or schedule notifications & pings: 409 $edited_Item->handle_post_processing(); 410 411 $Messages->add( T_('Post has been published.'), 'success' ); 412 413 // REDIRECT / EXIT 414 header_redirect( $redirect_to ); 415 // Switch to list mode: 416 // $action = 'list'; 417 // init_list_mode(); 418 break; 419 420 421 case 'deprecate': 422 423 $post_status = 'deprecated'; 424 // Check permissions: 425 /* TODO: Check extra categories!!! */ 426 $current_User->check_perm( 'item_post!'.$post_status, 'edit', true, $edited_Item ); 427 428 $edited_Item->set( 'status', $post_status ); 429 $edited_Item->set( 'datemodified', date('Y-m-d H:i:s',$localtimenow) ); 430 431 // UPDATE POST IN DB: 432 $edited_Item->dbupdate(); 433 434 $Messages->add( T_('Post has been deprecated.'), 'success' ); 435 436 // REDIRECT / EXIT 437 header_redirect( $redirect_to ); 438 // Switch to list mode: 439 // $action = 'list'; 440 // init_list_mode(); 441 break; 442 443 444 case 'delete': 445 // Delete an Item: 446 447 // Check permission: 448 $current_User->check_perm( 'blog_del_post', '', true, $blog ); 449 450 // fp> TODO: non javascript confirmation 451 // $AdminUI->title = T_('Deleting post...'); 452 453 $Plugins->trigger_event( 'AdminBeforeItemEditDelete', array( 'Item' => & $edited_Item ) ); 454 455 if( ! $Messages->count('error') ) 456 { // There have been no validation errors: 457 // DELETE POST FROM DB: 458 $edited_Item->dbdelete(); 459 460 $Messages->add( T_('Post has been deleted.'), 'success' ); 461 } 462 463 // REDIRECT / EXIT 464 header_redirect( $redirect_to ); 465 // Switch to list mode: 466 // $action = 'list'; 467 // init_list_mode(); 468 break; 469 470 471 case 'list': 472 init_list_mode(); 473 474 if( $ItemList->single_post ) 475 { // We have requested to view a SINGLE specific post: 476 $action = 'view'; 477 } 478 break; 479 480 481 case 'unlink': 482 // Delete a link: 483 484 // Check permission: 485 $current_User->check_perm( 'item', 'edit', true, $edited_Item ); 486 487 // Unlink File from Item: 488 $msg = sprintf( T_('Link has been deleted from «%s».'), $edited_Link->Item->dget('title') ); 489 $edited_Link->dbdelete( true ); 490 unset($edited_Link); 491 $Messages->add( $msg, 'success' ); 492 493 // go on to view: 494 $p = $edited_Item->ID; 495 init_list_mode(); 496 $action = 'view'; 497 // REDIRECT / EXIT 498 header_redirect( regenerate_url( '', 'p='.$edited_Item->ID, '', '&' ) ); 499 break; 500 501 502 default: 503 debug_die( 'unhandled action 2' ); 504 } 505 506 /** 507 * Initialize list mode; Several actions need this. 508 */ 509 function init_list_mode() 510 { 511 global $tab, $Blog, $UserSettings, $ItemList; 512 513 // Store/retrieve preferred tab from UserSettings: 514 $UserSettings->param_Request( 'tab', 'pref_browse_tab', 'string', NULL, true /* memorize */ ); 515 516 /* 517 * Init list of posts to display: 518 */ 519 load_class('items/model/_itemlist.class.php'); 520 521 // Create empty List: 522 $ItemList = new ItemList2( $Blog, NULL, NULL, $UserSettings->get('results_per_page') ); // COPY (func) 523 524 $ItemList->set_default_filters( array( 525 'visibility_array' => array( 'published', 'protected', 'private', 'draft', 'deprecated', 'redirected' ), 526 'types' => NULL, // All types, TEMPORARY 527 ) ); 528 529 if( $tab == 'tracker' ) 530 { // In tracker mode, we want a different default sort: 531 $ItemList->set_default_filters( array( 532 'orderby' => 'priority', 533 'order' => 'ASC' ) ); 534 } 535 536 // Init filter params: 537 if( ! $ItemList->load_from_Request() ) 538 { // If we could not init a filterset from request 539 // typically happens when we could no fall back to previously saved filterset... 540 // echo ' no filterset!'; 541 } 542 } 543 544 /** 545 * Configure page navigation: 546 */ 547 switch( $action ) 548 { 549 case 'new': 550 case 'new_switchtab': // this gets set as action by JS, when we switch tabs 551 // Generate available blogs list: 552 $blogListButtons = $AdminUI->get_html_collection_list( 'blog_post_statuses', 'edit', 553 'admin.php?ctrl=items&action=new&blog=%d', NULL, '', 554 'return b2edit_reload( document.getElementById(\'item_checkchanges\'), \'admin.php\', %d )' ); 555 556 // We don't check the following earlier, because we want the blog switching buttons to be available: 557 if( ! blog_has_cats( $blog ) ) 558 { 559 $Messages->add( sprintf( T_('Since this blog has no categories, you cannot post into it. You must <a %s>create categories</a> first.'), 'href="admin.php?ctrl=chapters&blog='.$blog.'"') , 'error' ); 560 $action = 'nil'; 561 break; 562 } 563 564 /* NOBREAK */ 565 566 case 'edit': 567 case 'edit_switchtab': // this gets set as action by JS, when we switch tabs 568 case 'update': // on error 569 // Get tab ("simple" or "expert") from Request or UserSettings: 570 $tab = $UserSettings->param_Request( 'tab', 'pref_edit_tab', 'string', NULL, true /* memorize */ ); 571 572 $AdminUI->add_menu_entries( 573 'items', 574 array( 575 'simple' => array( 576 'text' => T_('Simple'), 577 'href' => 'admin.php?ctrl=items&action='.$action.'&tab=simple&'.$tab_switch_params, 578 'onclick' => 'return b2edit_reload( document.getElementById(\'item_checkchanges\'), \'admin.php?tab=simple&blog='.$blog.'\' );', 579 // 'name' => 'switch_to_simple_tab_nocheckchanges', // no bozo check 580 ), 581 'expert' => array( 582 'text' => T_('Expert'), 583 'href' => 'admin.php?ctrl=items&action='.$action.'&tab=expert&'.$tab_switch_params, 584 'onclick' => 'return b2edit_reload( document.getElementById(\'item_checkchanges\'), \'admin.php?tab=expert&blog='.$blog.'\' );', 585 // 'name' => 'switch_to_expert_tab_nocheckchanges', // no bozo check 586 ), 587 ) 588 ); 589 $AdminUI->global_icon( T_('Cancel editing!'), 'close', $redirect_to, T_('cancel'), 4, 1 ); 590 591 break; 592 593 case 'view': 594 // We're displaying a SINGLE specific post: 595 $AdminUI->title = $AdminUI->title_titlearea = T_('View post & comments'); 596 break; 597 598 case 'list': 599 // We're displaying a list of posts: 600 601 $AdminUI->title = $AdminUI->title_titlearea = T_('Browse blog'); 602 603 // Generate available blogs list: 604 $blogListButtons = $AdminUI->get_html_collection_list( 'blog_ismember', 'view', 'admin.php?ctrl=items&blog=%d&tab='.$tab.'&filter=restore' ); 605 606 /* 607 * Add sub menu entries: 608 * We do this here instead of _header because we need to include all filter params into regenerate_url() 609 */ 610 attach_browse_tabs(); 611 612 break; 613 } 614 615 if( !empty($tab) ) 616 { 617 $AdminUI->append_path_level( $tab ); 618 } 619 620 // Display <html><head>...</head> section! (Note: should be done early if actions do not redirect) 621 $AdminUI->disp_html_head(); 622 623 // Display title, menu, messages, etc. (Note: messages MUST be displayed AFTER the actions) 624 $AdminUI->disp_body_top(); 625 626 627 /** 628 * Display payload: 629 */ 630 switch( $action ) 631 { 632 case 'nil': 633 // Do nothing 634 break; 635 636 case 'new_switchtab': // this gets set as action by JS, when we switch tabs 637 case 'edit_switchtab': // this gets set as action by JS, when we switch tabs 638 $bozo_start_modified = true; // We want to start with a form being already modified 639 case 'new': 640 case 'create': 641 case 'edit': 642 case 'update': // on error 643 // Begin payload block: 644 $AdminUI->disp_payload_begin(); 645 646 $item_title = $edited_Item->title; 647 $item_content = $edited_Item->content; 648 649 // Format content for editing, if we were not already in editing... 650 $Plugins_admin = & get_Cache('Plugins_admin'); 651 $Plugins_admin->unfilter_contents( $item_title /* by ref */, $item_content /* by ref */, $edited_Item->get_renderers_validated() ); 652 653 // Display VIEW: 654 switch( $tab ) 655 { 656 case 'simple': 657 $AdminUI->disp_view( 'items/views/_item_simple.form.php' ); 658 break; 659 660 case 'expert': 661 default: 662 $AdminUI->disp_view( 'items/views/_item_expert.form.php' ); 663 break; 664 } 665 666 // End payload block: 667 $AdminUI->disp_payload_end(); 668 break; 669 670 case 'view': 671 case 'delete': 672 // View a single post: 673 674 // Memorize 'p' in case we reload while changing some display settings 675 memorize_param( 'p', 'integer', NULL ); 676 677 // Begin payload block: 678 $AdminUI->disp_payload_begin(); 679 680 // We use the "full" view for displaying single posts: 681 $AdminUI->disp_view( 'items/views/_item_list_full.view.php' ); 682 683 // End payload block: 684 $AdminUI->disp_payload_end(); 685 686 break; 687 688 case 'list': 689 default: 690 // Begin payload block: 691 $AdminUI->disp_payload_begin(); 692 693 // fplanque> Note: this is depressing, but I have to put a table back here 694 // just because IE supports standards really badly! :'( 695 echo '<table class="browse" cellspacing="0" cellpadding="0" border="0"><tr>'; 696 697 echo '<td class="browse_left_col">'; 698 699 switch( $tab ) 700 { 701 case 'list': 702 // Display VIEW: 703 $AdminUI->disp_view( 'items/views/_item_list_table.view.php' ); 704 break; 705 706 case 'tracker': 707 // Display VIEW: 708 $AdminUI->disp_view( 'items/views/_item_list_track.view.php' ); 709 break; 710 711 case 'full': 712 default: 713 // Display VIEW: 714 $AdminUI->disp_view( 'items/views/_item_list_full.view.php' ); 715 break; 716 } 717 718 // TODO: a specific field for the backoffice, at the bottom of the page 719 // would be used for moderation rules. 720 if( $Blog->get( 'notes' ) ) 721 { 722 $block_item_Widget = & new Widget( 'block_item' ); 723 $block_item_Widget->title = T_('Notes'); 724 $block_item_Widget->disp_template_replaced( 'block_start' ); 725 $Blog->disp( 'notes', 'htmlbody' ); 726 $block_item_Widget->disp_template_replaced( 'block_end' ); 727 } 728 729 echo '</td>'; 730 731 echo '<td class="browse_right_col">'; 732 // Display VIEW: 733 $AdminUI->disp_view( 'items/views/_item_list_sidebar.view.php' ); 734 echo '</td>'; 735 736 echo '</tr></table>'; 737 738 // End payload block: 739 $AdminUI->disp_payload_end(); 740 break; 741 } 742 743 // Display body bottom, debug info and close </html>: 744 $AdminUI->disp_global_footer(); 745 746 747 /* 748 * $Log: items.ctrl.php,v $ 749 * Revision 1.8 2007/09/29 09:50:32 yabs 750 * validation 751 * 752 * Revision 1.7 2007/09/26 21:53:24 fplanque 753 * file manager / file linking enhancements 754 * 755 * Revision 1.6 2007/09/22 19:23:56 fplanque 756 * various fixes & enhancements 757 * 758 * Revision 1.5 2007/09/04 22:25:18 fplanque 759 * fix 760 * 761 * Revision 1.4 2007/09/04 22:16:33 fplanque 762 * in context editing of posts 763 * 764 * Revision 1.3 2007/09/03 16:44:31 fplanque 765 * chicago admin skin 766 * 767 * Revision 1.2 2007/07/09 23:03:04 fplanque 768 * cleanup of admin skins; especially evo 769 * 770 * Revision 1.1 2007/06/25 11:00:24 fplanque 771 * MODULES (refactored MVC) 772 * 773 * Revision 1.27 2007/06/11 01:53:54 fplanque 774 * fix 775 * 776 * Revision 1.26 2007/05/28 01:33:22 fplanque 777 * permissions/fixes 778 * 779 * Revision 1.25 2007/05/14 02:47:23 fplanque 780 * (not so) basic Tags framework 781 * 782 * Revision 1.24 2007/05/13 18:49:54 fplanque 783 * made autoselect_blog() more robust under PHP4 784 * 785 * Revision 1.23 2007/05/09 01:01:32 fplanque 786 * permissions cleanup 787 * 788 * Revision 1.22 2007/04/26 00:11:12 fplanque 789 * (c) 2007 790 * 791 * Revision 1.21 2007/04/05 22:57:33 fplanque 792 * Added hook: UnfilterItemContents 793 * 794 * Revision 1.20 2007/03/26 14:21:30 fplanque 795 * better defaults for pages implementation 796 * 797 * Revision 1.19 2007/03/21 02:21:37 fplanque 798 * item controller: highlight current (step 2) 799 * 800 * Revision 1.18 2007/03/21 01:44:51 fplanque 801 * item controller: better return to current filterset - step 1 802 * 803 * Revision 1.17 2007/03/11 23:56:03 fplanque 804 * fixed some post editing oddities / variable cleanup (more could be done) 805 * 806 * Revision 1.16 2007/03/07 02:37:43 fplanque 807 * OMG I decided that pregenerating the menus was getting to much of a PITA! 808 * It's a zillion problems with the permissions. 809 * This will be simplified a lot. Enough of these crazy stuff. 810 * 811 * Revision 1.15 2007/03/02 01:36:51 fplanque 812 * small fixes 813 * 814 * Revision 1.14 2007/02/23 00:21:23 blueyed 815 * Fixed Plugins::get_next() if the last Plugin got unregistered; Added AdminBeforeItemEditDelete hook 816 * 817 * Revision 1.13 2007/01/16 00:44:42 fplanque 818 * don't use $admin_email in the app 819 * 820 * Revision 1.12 2006/12/24 00:42:14 fplanque 821 * refactoring / Blog::get_default_cat_ID() 822 * 823 * Revision 1.11 2006/12/23 23:37:35 fplanque 824 * refactoring / Blog::get_default_cat_ID() 825 * 826 * Revision 1.10 2006/12/23 23:15:22 fplanque 827 * refactoring / Blog::get_allowed_item_status() 828 * 829 * Revision 1.9 2006/12/18 03:20:41 fplanque 830 * _header will always try to set $Blog. 831 * controllers can use valid_blog_requested() to make sure we have one 832 * controllers should call set_working_blog() to change $blog, so that it gets memorized in the user settings 833 * 834 * Revision 1.8 2006/12/18 01:43:25 fplanque 835 * minor bugfix 836 * 837 * Revision 1.7 2006/12/14 00:01:49 fplanque 838 * land in correct collection when opening FM from an Item 839 * 840 * Revision 1.6 2006/12/12 23:23:29 fplanque 841 * finished post editing v2.0 842 * 843 * Revision 1.5 2006/12/12 19:39:07 fplanque 844 * enhanced file links / permissions 845 * 846 * Revision 1.4 2006/12/12 18:04:53 fplanque 847 * fixed item links 848 * 849 * Revision 1.3 2006/12/12 02:53:56 fplanque 850 * Activated new item/comments controllers + new editing navigation 851 * Some things are unfinished yet. Other things may need more testing. 852 * 853 * Revision 1.2 2006/12/12 00:39:46 fplanque 854 * The bulk of item editing is done. 855 * 856 * Revision 1.1 2006/12/11 18:04:52 fplanque 857 * started clean "1-2-3-4" item editing 858 */ 859 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Thu Nov 29 23:58:50 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |