PageRenderTime 24ms CodeModel.GetById 14ms app.highlight 7ms RepoModel.GetById 0ms app.codeStats 0ms

/administrator/includes/toolbar.php

https://bitbucket.org/eternaware/joomus
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&amp;view=component&amp;component=' . $component . '&amp;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}