[ Index ]
 

Code source de b2evolution 2.1.0-beta

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/blogs/inc/items/ -> items.ctrl.php (source)

   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&amp;filter=restore&amp;blog='.$Blog->ID.'&amp;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&amp;filter=restore&amp;blog='.$Blog->ID.'&amp;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&amp;filter=restore&amp;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 &laquo;%s&raquo;.'), $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&amp;action=new&amp;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&amp;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&amp;action='.$action.'&amp;tab=simple&amp;'.$tab_switch_params,
 578                              'onclick' => 'return b2edit_reload( document.getElementById(\'item_checkchanges\'), \'admin.php?tab=simple&amp;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&amp;action='.$action.'&amp;tab=expert&amp;'.$tab_switch_params,
 584                              'onclick' => 'return b2edit_reload( document.getElementById(\'item_checkchanges\'), \'admin.php?tab=expert&amp;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&amp;blog=%d&amp;tab='.$tab.'&amp;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  ?>


Généré le : Thu Nov 29 23:58:50 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics