123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
- /**
- * CLinkColumn class file.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.yiiframework.com/
- * @copyright 2008-2013 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
- Yii::import('zii.widgets.grid.CGridColumn');
- /**
- * CLinkColumn represents a grid view column that renders a hyperlink in each of its data cells.
- *
- * The {@link label} and {@link url} properties determine how each hyperlink will be rendered.
- * The {@link labelExpression}, {@link urlExpression} properties may be used instead if they are available.
- * In addition, if {@link imageUrl} is set, an image link will be rendered.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @package zii.widgets.grid
- * @since 1.1
- */
- class CLinkColumn extends CGridColumn
- {
- /**
- * @var string the label to the hyperlinks in the data cells. Note that the label will not
- * be HTML-encoded when rendering. This property is ignored if {@link labelExpression} is set.
- * @see labelExpression
- */
- public $label='Link';
- /**
- * @var string a PHP expression that will be evaluated for every data cell and whose result will be rendered
- * as the label of the hyperlink of the data cell.
- * In this expression, you can use the following variables:
- * <ul>
- * <li><code>$row</code> the row number (zero-based).</li>
- * <li><code>$data</code> the data model for the row.</li>
- * <li><code>$this</code> the column object.</li>
- * </ul>
- * The PHP expression will be evaluated using {@link evaluateExpression}.
- *
- * A PHP expression can be any PHP code that has a value. To learn more about what an expression is,
- * please refer to the {@link http://www.php.net/manual/en/language.expressions.php php manual}.
- */
- public $labelExpression;
- /**
- * @var string the URL to the image. If this is set, an image link will be rendered.
- */
- public $imageUrl;
- /**
- * @var string the URL of the hyperlinks in the data cells.
- * This property is ignored if {@link urlExpression} is set.
- * @see urlExpression
- */
- public $url='javascript:void(0)';
- /**
- * @var string a PHP expression that will be evaluated for every data cell and whose result will be rendered
- * as the URL of the hyperlink of the data cells.
- * In this expression, you can use the following variables:
- * <ul>
- * <li><code>$row</code> the row number (zero-based).</li>
- * <li><code>$data</code> the data model for the row.</li>
- * <li><code>$this</code> the column object.</li>
- * </ul>
- * The PHP expression will be evaluated using {@link evaluateExpression}.
- *
- * A PHP expression can be any PHP code that has a value. To learn more about what an expression is,
- * please refer to the {@link http://www.php.net/manual/en/language.expressions.php php manual}.
- */
- public $urlExpression;
- /**
- * @var array the HTML options for the data cell tags.
- */
- public $htmlOptions=array('class'=>'link-column');
- /**
- * @var array the HTML options for the header cell tag.
- */
- public $headerHtmlOptions=array('class'=>'link-column');
- /**
- * @var array the HTML options for the footer cell tag.
- */
- public $footerHtmlOptions=array('class'=>'link-column');
- /**
- * @var array the HTML options for the hyperlinks
- */
- public $linkHtmlOptions=array();
- /**
- * Returns the data cell content.
- * This method renders a hyperlink in the data cell.
- * @param integer $row the row number (zero-based)
- * @return string the data cell content.
- * @since 1.1.16
- */
- public function getDataCellContent($row)
- {
- $data=$this->grid->dataProvider->data[$row];
- if($this->urlExpression!==null)
- $url=$this->evaluateExpression($this->urlExpression,array('data'=>$data,'row'=>$row));
- else
- $url=$this->url;
- if($this->labelExpression!==null)
- $label=$this->evaluateExpression($this->labelExpression,array('data'=>$data,'row'=>$row));
- else
- $label=$this->label;
- $options=$this->linkHtmlOptions;
- if(is_string($this->imageUrl))
- return CHtml::link(CHtml::image($this->imageUrl,$label),$url,$options);
- else
- return CHtml::link($label,$url,$options);
- }
- }
|