95 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * TbAlert class file.
 | |
|  * @author Christoffer Niska <christoffer.niska@gmail.com>
 | |
|  * @copyright Copyright © Christoffer Niska 2013-
 | |
|  * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
 | |
|  * @package bootstrap.widgets
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Bootstrap alert widget.
 | |
|  * @see http://twitter.github.com/bootstrap/javascript.html#alerts
 | |
|  */
 | |
| class TbAlert extends CWidget
 | |
| {
 | |
|     /**
 | |
|      * @var array the alerts configurations (style=>config).
 | |
|      */
 | |
|     public $alerts;
 | |
|     /**
 | |
|      * @var string|boolean the close link text. If this is set false, no close link will be displayed.
 | |
|      */
 | |
|     public $closeText = TbHtml::CLOSE_TEXT;
 | |
|     /**
 | |
|      * @var boolean indicates whether the alert should be an alert block. Defaults to 'true'.
 | |
|      */
 | |
|     public $block = true;
 | |
|     /**
 | |
|      * @var boolean indicates whether alerts should use transitions. Defaults to 'true'.
 | |
|      */
 | |
|     public $fade = true;
 | |
|     /**
 | |
|      * @var string[] the JavaScript event configuration (name=>handler).
 | |
|      */
 | |
|     public $events = array();
 | |
|     /**
 | |
|      * @var array the HTML attributes for the alert container.
 | |
|      */
 | |
|     public $htmlOptions = array();
 | |
| 
 | |
|     /**
 | |
|      * Initializes the widget.
 | |
|      */
 | |
|     public function init()
 | |
|     {
 | |
|         $this->attachBehavior('TbWidget', new TbWidget);
 | |
|         $this->copyId();
 | |
|         if (is_string($this->alerts)) {
 | |
|             $colors = explode(' ', $this->alerts);
 | |
|         } else {
 | |
|             if (!isset($this->alerts)) {
 | |
|                 $colors = array(
 | |
|                     TbHtml::ALERT_COLOR_SUCCESS,
 | |
|                     TbHtml::ALERT_COLOR_WARNING,
 | |
|                     TbHtml::ALERT_COLOR_INFO,
 | |
|                     TbHtml::ALERT_COLOR_ERROR
 | |
|                 ); // render all styles by default
 | |
|             }
 | |
|         }
 | |
|         if (isset($colors)) {
 | |
|             $this->alerts = array();
 | |
|             foreach ($colors as $color) {
 | |
|                 $this->alerts[$color] = array();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Runs the widget.
 | |
|      */
 | |
|     public function run()
 | |
|     {
 | |
|         /* @var $user CWebUser */
 | |
|         $user = Yii::app()->getUser();
 | |
|         if (count($user->getFlashes(false)) == 0) {
 | |
|             return;
 | |
|         }
 | |
|         echo TbHtml::openTag('div', $this->htmlOptions);
 | |
|         foreach ($this->alerts as $color => $alert) {
 | |
|             if (isset($alert['visible']) && !$alert['visible']) {
 | |
|                 continue;
 | |
|             }
 | |
| 
 | |
|             if ($user->hasFlash($color)) {
 | |
|                 $htmlOptions = TbArray::popValue('htmlOptions', $alert, array());
 | |
|                 TbArray::defaultValue('closeText', $this->closeText, $htmlOptions);
 | |
|                 TbArray::defaultValue('block', $this->block, $htmlOptions);
 | |
|                 TbArray::defaultValue('fade', $this->fade, $htmlOptions);
 | |
|                 echo TbHtml::alert($color, $user->getFlash($color), $htmlOptions);
 | |
|             }
 | |
|         }
 | |
|         echo '</div>';
 | |
|         $this->registerEvents("#{$this->htmlOptions['id']} > .alert", $this->events);
 | |
|     }
 | |
| } |