/administrator/includes/toolbar.php
PHP | 692 lines | 196 code | 70 blank | 426 comment | 1 complexity | 1d320f16e5e12f8ca9506f883fe8bb1c MD5 | raw file
Possible License(s): LGPL-2.1
1<?php 2/** 3 * @package Joomla.Administrator 4 * 5 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved. 6 * @license GNU General Public License version 2 or later; see LICENSE.txt 7 */ 8 9defined('_JEXEC') or die; 10 11/** 12 * Utility class for the button bar. 13 * 14 * @package Joomla.Administrator 15 * @since 1.5 16 */ 17abstract class JToolbarHelper 18{ 19 /** 20 * Title cell. 21 * For the title and toolbar to be rendered correctly, 22 * this title fucntion must be called before the starttable function and the toolbars icons 23 * this is due to the nature of how the css has been used to postion the title in respect to the toolbar. 24 * 25 * @param string $title The title. 26 * @param string $icon The space-separated names of the image. 27 * 28 * @return void 29 * 30 * @since 1.5 31 */ 32 public static function title($title, $icon = 'generic.png') 33 { 34 // Strip the extension. 35 $icons = explode(' ', $icon); 36 foreach ($icons as &$icon) 37 { 38 $icon = 'icon-48-' . preg_replace('#\.[^.]*$#', '', $icon); 39 } 40 41 $html = '<div class="pagetitle ' . htmlspecialchars(implode(' ', $icons)) . '"><h2>' . $title . '</h2></div>'; 42 43 $app = JFactory::getApplication(); 44 $app->JComponentTitle = $html; 45 } 46 47 /** 48 * Writes a spacer cell. 49 * 50 * @param string $width The width for the cell 51 * 52 * @return void 53 * 54 * @since 1.5 55 */ 56 public static function spacer($width = '') 57 { 58 $bar = JToolbar::getInstance('toolbar'); 59 60 // Add a spacer. 61 $bar->appendButton('Separator', 'spacer', $width); 62 } 63 64 /** 65 * Writes a divider between menu buttons 66 * 67 * @return void 68 * 69 * @since 1.5 70 */ 71 public static function divider() 72 { 73 $bar = JToolbar::getInstance('toolbar'); 74 75 // Add a divider. 76 $bar->appendButton('Separator', 'divider'); 77 } 78 79 /** 80 * Writes a custom option and task button for the button bar. 81 * 82 * @param string $task The task to perform (picked up by the switch($task) blocks. 83 * @param string $icon The image to display. 84 * @param string $iconOver The image to display when moused over. 85 * @param string $alt The alt text for the icon image. 86 * @param bool $listSelect True if required to check that a standard list item is checked. 87 * 88 * @return void 89 * 90 * @since 1.5 91 */ 92 public static function custom($task = '', $icon = '', $iconOver = '', $alt = '', $listSelect = true) 93 { 94 $bar = JToolbar::getInstance('toolbar'); 95 96 // Strip extension. 97 $icon = preg_replace('#\.[^.]*$#', '', $icon); 98 99 // Add a standard button. 100 $bar->appendButton('Standard', $icon, $alt, $task, $listSelect); 101 } 102 103 /** 104 * Writes a preview button for a given option (opens a popup window). 105 * 106 * @param string $url The name of the popup file (excluding the file extension) 107 * @param bool $updateEditors 108 * 109 * @return void 110 * 111 * @since 1.5 112 */ 113 public static function preview($url = '', $updateEditors = false) 114 { 115 $bar = JToolbar::getInstance('toolbar'); 116 117 // Add a preview button. 118 $bar->appendButton('Popup', 'preview', 'Preview', $url.'&task=preview'); 119 } 120 121 /** 122 * Writes a preview button for a given option (opens a popup window). 123 * 124 * @param string $ref The name of the popup file (excluding the file extension for an xml file). 125 * @param bool $com Use the help file in the component directory. 126 * @param string $override Use this URL instead of any other 127 * @param string $component Name of component to get Help (null for current component) 128 * 129 * @return void 130 * 131 * @since 1.5 132 */ 133 public static function help($ref, $com = false, $override = null, $component = null) 134 { 135 $bar = JToolbar::getInstance('toolbar'); 136 137 // Add a help button. 138 $bar->appendButton('Help', $ref, $com, $override, $component); 139 } 140 141 /** 142 * Writes a cancel button that will go back to the previous page without doing 143 * any other operation. 144 * 145 * @param string $alt Alternative text. 146 * @param string $href URL of the href attribute. 147 * 148 * @return void 149 * 150 * @since 1.5 151 */ 152 public static function back($alt = 'JTOOLBAR_BACK', $href = 'javascript:history.back();') 153 { 154 $bar = JToolbar::getInstance('toolbar'); 155 156 // Add a back button. 157 $bar->appendButton('Link', 'back', $alt, $href); 158 } 159 160 /** 161 * Writes a media_manager button. 162 * 163 * @param string $directory The sub-directory to upload the media to. 164 * @param string $alt An override for the alt text. 165 * 166 * @return void 167 * 168 * @since 1.5 169 */ 170 public static function media_manager($directory = '', $alt = 'JTOOLBAR_UPLOAD') 171 { 172 $bar = JToolbar::getInstance('toolbar'); 173 174 // Add an upload button. 175 $bar->appendButton('Popup', 'upload', $alt, 'index.php?option=com_media&tmpl=component&task=popupUpload&folder=' . $directory, 800, 520); 176 } 177 178 /** 179 * Writes a common 'default' button for a record. 180 * 181 * @param string $task An override for the task. 182 * @param string $alt An override for the alt text. 183 * 184 * @return void 185 * 186 * @since 1.5 187 */ 188 public static function makeDefault($task = 'default', $alt = 'JTOOLBAR_DEFAULT') 189 { 190 $bar = JToolbar::getInstance('toolbar'); 191 192 // Add a default button. 193 $bar->appendButton('Standard', 'star', $alt, $task, true); 194 } 195 196 /** 197 * Writes a common 'assign' button for a record. 198 * 199 * @param string $task An override for the task. 200 * @param string $alt An override for the alt text. 201 * 202 * @return void 203 * 204 * @since 1.5 205 */ 206 public static function assign($task = 'assign', $alt = 'JTOOLBAR_ASSIGN') 207 { 208 $bar = JToolbar::getInstance('toolbar'); 209 210 // Add an assign button. 211 $bar->appendButton('Standard', 'assign', $alt, $task, true); 212 } 213 214 /** 215 * Writes the common 'new' icon for the button bar. 216 * 217 * @param string $task An override for the task. 218 * @param string $alt An override for the alt text. 219 * @param boolean $check True if required to check that a standard list item is checked. 220 * 221 * @return void 222 * 223 * @since 1.5 224 */ 225 public static function addNew($task = 'add', $alt = 'JTOOLBAR_NEW', $check = false) 226 { 227 $bar = JToolbar::getInstance('toolbar'); 228 229 // Add a new button. 230 $bar->appendButton('Standard', 'new', $alt, $task, $check); 231 } 232 233 /** 234 * Writes a common 'publish' button. 235 * 236 * @param string $task An override for the task. 237 * @param string $alt An override for the alt text. 238 * @param boolean $check True if required to check that a standard list item is checked. 239 * 240 * @return void 241 * 242 * @since 1.5 243 */ 244 public static function publish($task = 'publish', $alt = 'JTOOLBAR_PUBLISH', $check = false) 245 { 246 $bar = JToolbar::getInstance('toolbar'); 247 248 // Add a publish button. 249 $bar->appendButton('Standard', 'publish', $alt, $task, $check); 250 } 251 252 /** 253 * Writes a common 'publish' button for a list of records. 254 * 255 * @param string $task An override for the task. 256 * @param string $alt An override for the alt text. 257 * 258 * @return void 259 * 260 * @since 1.5 261 */ 262 public static function publishList($task = 'publish', $alt = 'JTOOLBAR_PUBLISH') 263 { 264 $bar = JToolbar::getInstance('toolbar'); 265 266 // Add a publish button (list). 267 $bar->appendButton('Standard', 'publish', $alt, $task, true); 268 } 269 270 /** 271 * Writes a common 'unpublish' button. 272 * 273 * @param string $task An override for the task. 274 * @param string $alt An override for the alt text. 275 * @param boolean $check True if required to check that a standard list item is checked. 276 * 277 * @return void 278 * 279 * @since 1.5 280 */ 281 public static function unpublish($task = 'unpublish', $alt = 'JTOOLBAR_UNPUBLISH', $check = false) 282 { 283 $bar = JToolbar::getInstance('toolbar'); 284 285 // Add an unpublish button 286 $bar->appendButton('Standard', 'unpublish', $alt, $task, $check); 287 } 288 289 /** 290 * Writes a common 'unpublish' button for a list of records. 291 * 292 * @param string $task An override for the task. 293 * @param string $alt An override for the alt text. 294 * 295 * @return void 296 * 297 * @since 1.5 298 */ 299 public static function unpublishList($task = 'unpublish', $alt = 'JTOOLBAR_UNPUBLISH') 300 { 301 $bar = JToolbar::getInstance('toolbar'); 302 303 // Add an unpublish button (list). 304 $bar->appendButton('Standard', 'unpublish', $alt, $task, true); 305 } 306 307 /** 308 * Writes a common 'archive' button for a list of records. 309 * 310 * @param string $task An override for the task. 311 * @param string $alt An override for the alt text. 312 * 313 * @return void 314 * 315 * @since 1.5 316 */ 317 public static function archiveList($task = 'archive', $alt = 'JTOOLBAR_ARCHIVE') 318 { 319 $bar = JToolbar::getInstance('toolbar'); 320 321 // Add an archive button. 322 $bar->appendButton('Standard', 'archive', $alt, $task, true); 323 } 324 325 /** 326 * Writes an unarchive button for a list of records. 327 * 328 * @param string $task An override for the task. 329 * @param string $alt An override for the alt text. 330 * 331 * @return void 332 * 333 * @since 1.5 334 */ 335 public static function unarchiveList($task = 'unarchive', $alt = 'JTOOLBAR_UNARCHIVE') 336 { 337 $bar = JToolbar::getInstance('toolbar'); 338 339 // Add an unarchive button (list). 340 $bar->appendButton('Standard', 'unarchive', $alt, $task, true); 341 } 342 343 /** 344 * Writes a common 'edit' button for a list of records. 345 * 346 * @param string $task An override for the task. 347 * @param string $alt An override for the alt text. 348 * 349 * @return void 350 * 351 * @since 1.5 352 */ 353 public static function editList($task = 'edit', $alt = 'JTOOLBAR_EDIT') 354 { 355 $bar = JToolbar::getInstance('toolbar'); 356 357 // Add an edit button. 358 $bar->appendButton('Standard', 'edit', $alt, $task, true); 359 } 360 361 /** 362 * Writes a common 'edit' button for a template html. 363 * 364 * @param string $task An override for the task. 365 * @param string $alt An override for the alt text. 366 * 367 * @return void 368 * 369 * @since 1.5 370 */ 371 public static function editHtml($task = 'edit_source', $alt = 'JTOOLBAR_EDIT_HTML') 372 { 373 $bar = JToolbar::getInstance('toolbar'); 374 375 // Add an edit html button. 376 $bar->appendButton('Standard', 'edithtml', $alt, $task, true); 377 } 378 379 /** 380 * Writes a common 'edit' button for a template css. 381 * 382 * @param string $task An override for the task. 383 * @param string $alt An override for the alt text. 384 * 385 * @return void 386 * 387 * @since 1.5 388 */ 389 public static function editCss($task = 'edit_css', $alt = 'JTOOLBAR_EDIT_CSS') 390 { 391 $bar = JToolbar::getInstance('toolbar'); 392 393 // Add an edit css button (hide). 394 $bar->appendButton('Standard', 'editcss', $alt, $task, true); 395 } 396 397 /** 398 * Writes a common 'delete' button for a list of records. 399 * 400 * @param string $msg Postscript for the 'are you sure' message. 401 * @param string $task An override for the task. 402 * @param string $alt An override for the alt text. 403 * 404 * @return void 405 * 406 * @since 1.5 407 */ 408 public static function deleteList($msg = '', $task = 'remove', $alt = 'JTOOLBAR_DELETE') 409 { 410 $bar = JToolbar::getInstance('toolbar'); 411 412 // Add a delete button. 413 if ($msg) 414 { 415 $bar->appendButton('Confirm', $msg, 'delete', $alt, $task, true); 416 } 417 else 418 { 419 $bar->appendButton('Standard', 'delete', $alt, $task, true); 420 } 421 } 422 423 /** 424 * Write a trash button that will move items to Trash Manager. 425 * 426 * @param string $task An override for the task. 427 * @param string $alt An override for the alt text. 428 * @param bool $check 429 * 430 * @return void 431 * 432 * @since 1.5 433 */ 434 public static function trash($task = 'remove', $alt = 'JTOOLBAR_TRASH', $check = true) 435 { 436 $bar = JToolbar::getInstance('toolbar'); 437 438 // Add a trash button. 439 $bar->appendButton('Standard', 'trash', $alt, $task, $check, false); 440 } 441 442 /** 443 * Writes a save button for a given option. 444 * Apply operation leads to a save action only (does not leave edit mode). 445 * 446 * @param string $task An override for the task. 447 * @param string $alt An override for the alt text. 448 * 449 * @return void 450 * 451 * @since 1.5 452 */ 453 public static function apply($task = 'apply', $alt = 'JTOOLBAR_APPLY') 454 { 455 $bar = JToolbar::getInstance('toolbar'); 456 457 // Add an apply button 458 $bar->appendButton('Standard', 'apply', $alt, $task, false); 459 } 460 461 /** 462 * Writes a save button for a given option. 463 * Save operation leads to a save and then close action. 464 * 465 * @param string $task An override for the task. 466 * @param string $alt An override for the alt text. 467 * 468 * @return void 469 * 470 * @since 1.5 471 */ 472 public static function save($task = 'save', $alt = 'JTOOLBAR_SAVE') 473 { 474 $bar = JToolbar::getInstance('toolbar'); 475 476 // Add a save button. 477 $bar->appendButton('Standard', 'save', $alt, $task, false); 478 } 479 480 /** 481 * Writes a save and create new button for a given option. 482 * Save and create operation leads to a save and then add action. 483 * 484 * @param string $task An override for the task. 485 * @param string $alt An override for the alt text. 486 * 487 * @return void 488 * 489 * @since 1.6 490 */ 491 public static function save2new($task = 'save2new', $alt = 'JTOOLBAR_SAVE_AND_NEW') 492 { 493 $bar = JToolbar::getInstance('toolbar'); 494 495 // Add a save and create new button. 496 $bar->appendButton('Standard', 'save-new', $alt, $task, false); 497 } 498 499 /** 500 * Writes a save as copy button for a given option. 501 * Save as copy operation leads to a save after clearing the key, 502 * then returns user to edit mode with new key. 503 * 504 * @param string $task An override for the task. 505 * @param string $alt An override for the alt text. 506 * 507 * @return void 508 * 509 * @since 1.6 510 */ 511 public static function save2copy($task = 'save2copy', $alt = 'JTOOLBAR_SAVE_AS_COPY') 512 { 513 $bar = JToolbar::getInstance('toolbar'); 514 515 // Add a save and create new button. 516 $bar->appendButton('Standard', 'save-copy', $alt, $task, false); 517 } 518 519 /** 520 * Writes a checkin button for a given option. 521 * 522 * @param string $task An override for the task. 523 * @param string $alt An override for the alt text. 524 * @param boolean $check True if required to check that a standard list item is checked. 525 * 526 * @return void 527 * 528 * @since 1.7 529 */ 530 public static function checkin($task = 'checkin', $alt = 'JTOOLBAR_CHECKIN', $check = true) 531 { 532 $bar = JToolbar::getInstance('toolbar'); 533 534 // Add a save and create new button. 535 $bar->appendButton('Standard', 'checkin', $alt, $task, $check); 536 } 537 538 /** 539 * Writes a cancel button and invokes a cancel operation (eg a checkin). 540 * 541 * @param string $task An override for the task. 542 * @param string $alt An override for the alt text. 543 * 544 * @return void 545 * 546 * @since 1.5 547 */ 548 public static function cancel($task = 'cancel', $alt = 'JTOOLBAR_CANCEL') 549 { 550 $bar = JToolbar::getInstance('toolbar'); 551 552 // Add a cancel button. 553 $bar->appendButton('Standard', 'cancel', $alt, $task, false); 554 } 555 556 /** 557 * Writes a configuration button and invokes a cancel operation (eg a checkin). 558 * 559 * @param string $component The name of the component, eg, com_content. 560 * @param int $height The height of the popup. [UNUSED] 561 * @param int $width The width of the popup. [UNUSED] 562 * @param string $alt The name of the button. 563 * @param string $path An alternative path for the configuation xml relative to JPATH_SITE. 564 * 565 * @return void 566 * 567 * @since 1.5 568 */ 569 public static function preferences($component, $height = '550', $width = '875', $alt = 'JToolbar_Options', $path = '') 570 { 571 $component = urlencode($component); 572 $path = urlencode($path); 573 $bar = JToolBar::getInstance('toolbar'); 574 575 // Add a button linking to config for component. 576 $bar->appendButton('Link', 'options', $alt, 'index.php?option=com_config&view=component&component=' . $component . '&path=' . $path); 577 } 578} 579 580/** 581 * Utility class for the submenu. 582 * 583 * @package Joomla.Administrator 584 * @since 1.5 585 */ 586abstract class JSubMenuHelper 587{ 588 /** 589 * Menu entries 590 * 591 * @var array 592 * @since 3.0 593 */ 594 protected static $entries = array(); 595 596 /** 597 * Filters 598 * 599 * @var array 600 * @since 3.0 601 */ 602 protected static $filters = array(); 603 604 /** 605 * Value for the action attribute of the form. 606 * 607 * @var string 608 * @since 3.0 609 */ 610 protected static $action = ''; 611 612 /** 613 * Method to add a menu item to submenu. 614 * 615 * @param string $name Name of the menu item. 616 * @param string $link URL of the menu item. 617 * @param bool $active True if the item is active, false otherwise. 618 * 619 * @return void 620 * 621 * @since 1.5 622 */ 623 public static function addEntry($name, $link = '', $active = false) 624 { 625 array_push(self::$entries, array($name, $link, $active)); 626 } 627 628 /** 629 * Returns an array of all submenu entries 630 * 631 * @return array 632 * 633 * @since 3.0 634 */ 635 public static function getEntries() 636 { 637 return self::$entries; 638 } 639 640 /** 641 * Method to add a filter to the submenu 642 * 643 * @param string $label Label for the menu item. 644 * @param string $name name for the filter. Also used as id. 645 * @param string $options options for the select field. 646 * @param bool $noDefault Don't the label as the empty option 647 * 648 * @return void 649 * 650 * @since 3.0 651 */ 652 public static function addFilter($label, $name, $options, $noDefault = false) 653 { 654 array_push(self::$filters, array('label' => $label, 'name' => $name, 'options' => $options, 'noDefault' => $noDefault)); 655 } 656 657 /** 658 * Returns an array of all filters 659 * 660 * @return array 661 * 662 * @since 3.0 663 */ 664 public static function getFilters() 665 { 666 return self::$filters; 667 } 668 669 /** 670 * Set value for the action attribute of the filter form 671 * 672 * @return void 673 * 674 * @since 3.0 675 */ 676 public static function setAction($action) 677 { 678 self::$action = $action; 679 } 680 681 /** 682 * Get value for the action attribute of the filter form 683 * 684 * @return string 685 * 686 * @since 3.0 687 */ 688 public static function getAction() 689 { 690 return self::$action; 691 } 692}