My favorites | Sign in
yii
Project Home Downloads Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
/**
* CPortlet class file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.yiiframework.com/
* @copyright Copyright &copy; 2008-2011 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/

/**
* CPortlet is the base class for portlet widgets.
*
* A portlet displays a fragment of content, usually in terms of a block
* on the side bars of a Web page.
*
* To specify the content of the portlet, override the {@link renderContent}
* method, or insert the content code between the {@link CController::beginWidget}
* and {@link CController::endWidget} calls. For example,
*
* <pre>
* <?php $this->beginWidget('zii.widgets.CPortlet'); ?>
* ...insert content here...
* <?php $this->endWidget(); ?>
* </pre>
*
* A portlet also has an optional {@link title}. One may also override {@link renderDecoration}
* to further customize the decorative display of a portlet (e.g. adding min/max buttons).
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @version $Id$
* @package zii.widgets
* @since 1.1
*/
class CPortlet extends CWidget
{
/**
* @var string the tag name for the portlet container tag. Defaults to 'div'.
*/
public $tagName='div';
/**
* @var array the HTML attributes for the portlet container tag.
*/
public $htmlOptions=array('class'=>'portlet');
/**
* @var string the title of the portlet. Defaults to null.
* When this is not set, Decoration will not be displayed.
* Note that the title will not be HTML-encoded when rendering.
*/
public $title;
/**
* @var string the CSS class for the decoration container tag. Defaults to 'portlet-decoration'.
*/
public $decorationCssClass='portlet-decoration';
/**
* @var string the CSS class for the portlet title tag. Defaults to 'portlet-title'.
*/
public $titleCssClass='portlet-title';
/**
* @var string the CSS class for the content container tag. Defaults to 'portlet-content'.
*/
public $contentCssClass='portlet-content';
/**
* @var boolean whether to hide the portlet when the body content is empty. Defaults to true.
* @since 1.1.4
*/
public $hideOnEmpty=true;

private $_openTag;

/**
* Initializes the widget.
* This renders the open tags needed by the portlet.
* It also renders the decoration, if any.
*/
public function init()
{
ob_start();
ob_implicit_flush(false);

$this->htmlOptions['id']=$this->getId();
echo CHtml::openTag($this->tagName,$this->htmlOptions)."\n";
$this->renderDecoration();
echo "<div class=\"{$this->contentCssClass}\">\n";

$this->_openTag=ob_get_contents();
ob_clean();
}

/**
* Renders the content of the portlet.
*/
public function run()
{
$this->renderContent();
$content=ob_get_clean();
if($this->hideOnEmpty && trim($content)==='')
return;
echo $this->_openTag;
echo $content;
echo "</div>\n";
echo CHtml::closeTag($this->tagName);
}

/**
* Renders the decoration for the portlet.
* The default implementation will render the title if it is set.
*/
protected function renderDecoration()
{
if($this->title!==null)
{
echo "<div class=\"{$this->decorationCssClass}\">\n";
echo "<div class=\"{$this->titleCssClass}\">{$this->title}</div>\n";
echo "</div>\n";
}
}

/**
* Renders the content of the portlet.
* Child classes should override this method to render the actual content.
*/
protected function renderContent()
{
}
}

Change log

r3527 by qiang.xue on Dec 31, 2011   Diff
1.1.9 release.
Go to: 
Sign in to write a code review

Older revisions

r2799 by qiang.xue on Jan 1, 2011   Diff
changed copyright year.
r2480 by qiang.xue on Sep 18, 2010   Diff
doc fix.
r2326 by qiang.xue on Aug 20, 2010   Diff
merged zii repository into yii.
All revisions of this file

File info

Size: 3408 bytes, 126 lines

File properties

svn:keywords
Id
Powered by Google Project Hosting