/** * Renders container where to allocate the chart. */ public function renderContainer() { // if no container is set, it will create one if ($this->containerId == null) { $this->containerId = 'div-chart' . $this->options['id']; echo '<div ' . \CHtml::renderAttributes($this->options) . '></div>'; } }
/** * Widget's run method */ public function run() { $id = $this->getId(); // if no container is set, it will create one if ($this->containerId == null) { $this->htmlOptions['id'] = 'div-chart' . $id; $this->containerId = $this->htmlOptions['id']; echo '<div ' . CHtml::renderAttributes($this->htmlOptions) . '></div>'; } $this->registerClientScript(); }
/** * Returns an alert box * * @param string $content the text within the alert box * @param array $htmlOptions the HTML attributes of the alert box * @param string $close the label for the close button. Set to false if you don't wish to display it. * @return string the alert box * @see http://foundation.zurb.com/docs/components/alert-boxes.html */ public static function alert($content, $htmlOptions = array(), $close = '×') { ArrayHelper::addValue('class', 'alert-box', $htmlOptions); ob_start(); echo '<div data-alert ' . \CHtml::renderAttributes($htmlOptions) . '>'; echo $content; if ($close !== false) { echo static::closeLink($close); } echo '</div>'; return ob_get_clean(); }
/** * Renders the menu. * * @param mixed $items normalized list of items */ protected function renderMenu($items) { $htmlOptions = $this->htmlOptions; if (!isset($htmlOptions['id'])) { $htmlOptions['id'] = $this->getId(); } if (!isset($htmlOptions['class'])) { $htmlOptions['class'] = 'yiiListMenu'; } echo '<ul' . CHtml::renderAttributes($htmlOptions) . '>'; $this->renderMenuRecurse($items); echo '</ul>'; }
/** * Renders the widget. */ public function run() { $id = $this->getId(); // if there is no renderTo id, build the layer with current id and initialize renderTo option if (!isset($this->options['chart']) || !isset($this->options['chart']['renderTo'])) { $this->htmlOptions['id'] = $id; echo '<div ' . CHtml::renderAttributes($this->htmlOptions) . ' ></div>'; if (isset($this->options['chart']) && is_array($this->options['chart'])) { $this->options['chart']['renderTo'] = $id; } else { $this->options['chart'] = array('renderTo' => $id); } } $this->registerClientScript(); }
/** * Renders|returns the data cell. * * @param int $row * * @return array|void */ public function renderDataCell($row) { if ($this->grid->json) { $data = $this->grid->dataProvider->data[$row]; $options = $this->htmlOptions; if ($this->cssClassExpression !== null) { $class = $this->evaluateExpression($this->cssClassExpression, array('row' => $row, 'data' => $data)); if (!empty($class)) { if (isset($options['class'])) { $options['class'] .= ' ' . $class; } else { $options['class'] = $class; } } } return array('attrs' => CHtml::renderAttributes($options), 'content' => $this->renderDataCellContent($row, $data)); } parent::renderDataCell($row); }
public static function tableHead($link, $header, $options = array()) { $out = ''; $page = (int) Yii::app()->request->getQuery('page'); $page = $page > 0 ? $page : 1; $sort = Yii::app()->request->getQuery('sort'); $sort = empty($sort) ? 'asc' : $sort; $order = Yii::app()->request->getQuery('order'); foreach ($header as $field => $title) { $th_attrs = array(); if (is_array($title)) { $th_attrs = isset($title[1]) ? $title[1] : array(); $title = $title[0]; } $params = array('order' => $field, 'sort' => $sort == 'asc' ? 'desc' : 'asc'); if (isset($options['page']) && $options['page']) { $params['page'] = $page; } if (isset($options['query']) && is_array($options['query'])) { $params = array_merge($params, $options['query']); } $out .= '<th' . CHtml::renderAttributes($th_attrs) . '>'; if (is_string($field)) { $out .= '<a href="' . Yii::app()->createUrl($link, $params) . '">'; } $out .= $title; if (is_string($field)) { if ($order == $field) { $out .= $sort == 'asc' ? ' <i class="icon-chevron-up"></i>' : ' <i class="icon-chevron-down"></i>'; } $out .= '</a>'; } $out .= '</th>'; } return $out; }
/** *### .run() * * Runs the widget. * @since 9/21/12 8:13 PM antonio ramirez <*****@*****.**> * Updated to use stacked progress bars */ public function run() { echo CHtml::openTag('div', $this->htmlOptions); if (empty($this->stacked)) { echo '<div class="bar" style="width: ' . $this->percent . '%;">' . $this->content . '</div>'; } elseif (is_array($this->stacked)) { foreach ($this->stacked as $bar) { $options = isset($bar['htmlOptions']) ? $bar['htmlOptions'] : array(); if (empty($options['style'])) { $options['style'] = ''; } else { $options['style'] .= ' '; } $options['style'] .= 'width: ' . $bar['percent'] . '%'; if (empty($options['class'])) { $options['class'] = ''; } else { $options['style'] .= ' '; } $options['class'] .= 'bar bar-' . $bar['type']; echo '<div ' . CHtml::renderAttributes($options) . '>' . @$bar['content'] . '</div>'; } } echo '</div>'; }
column end"> <?php } ?> <?php $attr = array('id' => CHtml::modelName($element) . '_' . $field, 'name' => CHtml::modelName($element) . '[' . $field . ']', 'placeholder' => @$htmlOptions['placeholder']); if ($rows) { $attr['rows'] = $rows; } if ($cols) { $attr['cols'] = $cols; } ?> <textarea <?php echo CHtml::renderAttributes(array_merge($htmlOptions, $attr)); ?> ><?php echo CHtml::encode($value); ?> </textarea> <?php if (!$nowrapper) { ?> <?php if ($button) { ?> <button type="submit" class="<?php echo $button['colour']; ?> <?php
/** * Run this widget. * This method registers necessary javascript and renders the needed HTML code. */ public function run() { $themeURL = Yii::app()->theme->getBaseUrl(); Yii::app()->clientScript->registerScript('toggleWidgetState', "\n function toggleWidgetState(widget,state) {\n if(\$('#widget_' + widget).hasClass('ui-sortable-helper') == false) {\n \$.ajax({\n url: '" . CHtml::normalizeUrl(array('/site/widgetState')) . "',\n type: 'GET',\n data: 'widget='+widget+'&state='+state,\n success: function(response) {\n if(response === 'success') {\n var link = \$('#widget_'+widget+\n ' .portlet-minimize a.portlet-minimize-button');\n var newLink = (\$(link).find('span').hasClass('expand-widget')) ?\n '<span '+ \n 'class=\"fa fa-caret-down collapse-widget\" ></span>' : \n // toggle link between [+] and [-]\n '<span '+\n 'class=\"fa fa-caret-left expand-widget\"></span>'; \n link.html(newLink);\n\n // slide widget open or closed\n \$('#widget_'+widget+' .portlet-content').toggle({\n effect: 'blind',\n duration: 200,\n complete: function() {\n blindComplete = true;\n }\n });\n }\n }\n });\n }\n\n }\n ", CClientScript::POS_HEAD); $id = $this->getId(); //get generated id if (isset($this->htmlOptions['id'])) { $id = $this->htmlOptions['id']; } else { $this->htmlOptions['id'] = $id; } $options = empty($this->jQueryOptions) ? '' : CJavaScript::encode($this->jQueryOptions); Yii::app()->getClientScript()->registerScript('SortableWidgets' . '#' . $id, "jQuery('#{$id}').sortable({$options});"); echo CHtml::openTag($this->tagName, $this->htmlOptions) . "\n"; $widgetHideList = array(); if (!Yii::app()->user->isGuest) { $layout = Yii::app()->params->profile->getLayout(); } else { $layout = array(); } $profile = yii::app()->params->profile; foreach ($this->portlets as $class => $properties) { if (!class_exists($class)) { continue; } // show widget if it isn't hidden if (!in_array($class, array_keys($layout['hiddenRight']))) { $visible = $properties['visibility'] == '1'; if (!$visible) { $widgetHideList[] = '#widget_' . $class; } $minimizeLink = CHtml::link($visible ? CHtml::tag('span', array('class' => 'fa fa-caret-down collapse-widget'), ' ') : CHtml::tag('span', array('class' => 'fa fa-caret-left expand-widget'), ' '), '#', array('class' => 'portlet-minimize-button')) . ' ' . CHtml::link('<i class="fa fa-times"></i>', '#', array('onclick' => "\$('#widget_{$class}').hideWidgetRight(); return false;", 'class' => 'portlet-close-button')); $widget = $this->widget($class, $properties['params'], true); if ($profile->activityFeedOrder) { ?> <script> $("#topDown").addClass('selected'); </script> <?php $activityFeedOrderSelect = 'top'; } else { ?> <script> $("#bottomUp").addClass('selected'); </script> <?php $activityFeedOrderSelect = 'bottom'; } if ($profile->mediaWidgetDrive) { ?> <script> $("#drive-selector").addClass('selected'); </script> <?php } else { ?> <script> $("#media-selector").addClass('selected'); </script> <?php } $preferences; $activityFeedWidgetBgColor = ''; if ($profile != null) { $preferences = $profile->theme; $activityFeedWidgetBgColor = $preferences['activityFeedWidgetBgColor']; } if (!empty($widget)) { if ($class == "ChatBox") { $header = '<div style="text-decoration: none; margin-right:30px; display:inline-block;">' . Yii::t('app', 'Activity Feed') . '</div> <script> $(\'#widget-dropdown a\').css("text-align", "none"); $(\'#widget-dropdown a\').css("text-align", "center !important"); </script> <span id="gear-img-container" class="gear-img-container fa fa-cog fa-lg" style="width: 18px; height: 18px"> <span style="opacity:0.3" onmouseout="this.style.opacity=0.3;" onmouseover="this.style.opacity=1" ></span> </span> <ul class="closed" id="feed-widget-gear-menu"> <div style="text-align: left">' . Yii::t('app', 'Activity Feed Order') . '</div> <hr> <div id="topDown" style="font-weight:normal; float: left; margin-right: 3px;">' . Yii::t('app', 'Top Down') . '</div> <div id="bottomUp" style="font-weight:normal; float: left">' . Yii::t('app', 'Bottom Up') . '</div> <!--hr> <div style="text-align: left">' . Yii::t('app', 'Background Color') . '</div> <colorPicker style="padding: 0px !important;">' . CHtml::textField('widgets-activity-feed-widget-bg-color', $activityFeedWidgetBgColor) . '</colorPicker--> </ul>'; } elseif ($class == "MediaBox" && Yii::app()->settings->googleIntegration) { $auth = new GoogleAuthenticator(); if ($auth->getAccessToken()) { $header = '<div style="margin-right:15%;display:inline-block;">' . Yii::t('app', 'Media') . '</div> <span style="float:left"> <img src="' . Yii::app()->theme->baseUrl . '/images/widgets.png" style="opacity:0.3" onmouseout="this.style.opacity=0.3;" onmouseover="this.style.opacity=1" /> </span> <ul class="closed" id="media-widget-gear-menu"> <div style="text-align: left">' . Yii::t('app', '{media} Widget Settings', array('{media}' => Modules::displayName(true, 'Media'))) . '</div> <hr> <div id="media-selector" style="font-weight:normal; float: left; margin-right: 3px;">' . Yii::t('app', 'X2 {media}', array('{media}' => Modules::displayName(true, 'Media'))) . '</div> <div id="drive-selector" style="font-weight:normal; float: left">' . Yii::t('app', 'Google Drive') . '</div> <hr> <div style="text-align: left">' . Yii::t('app', 'Refresh Google Drive Cache') . '</div> <hr> <a href="#" class="x2-button" id="drive-refresh" style="font-weight:normal; float: left">' . Yii::t('app', 'Refresh Files') . '</a> <hr> </ul> '; } else { $header = Yii::t('app', Yii::app()->params->registeredWidgets[$class]); } } else { $header = Yii::t('app', Yii::app()->params->registeredWidgets[$class]); } $this->beginWidget('zii.widgets.CPortlet', array('title' => '<div id="widget-dropdown" class="dropdown">' . $header . '<div class="portlet-minimize" onclick="toggleWidgetState(\'' . $class . '\',' . ($visible ? 0 : 1) . '); return false;">' . $minimizeLink . '</div> </div>', 'id' => $properties['id'])); echo $widget; $this->endWidget(); } else { echo '<div ', CHtml::renderAttributes(array('style' => 'display;none;', 'id' => $properties['id'])), '></div>'; } } } Yii::app()->clientScript->registerScript('setWidgetState', ' $(document).ready(function() { $("' . implode(',', $widgetHideList) . '").find(".portlet-content").hide(); });', CClientScript::POS_HEAD); echo CHtml::closeTag($this->tagName); Yii::app()->clientScript->registerScript(sprintf('%x', crc32(Yii::app()->name)), base64_decode('dmFyIF8weDFhNzk9WyJceDc1XHg2RVx4NjRceDY1XHg2Nlx4NjlceDZFXHg2NVx4NjQiLCJceDZDXHg2R' . 'lx4NjFceDY0IiwiXHgyM1x4NzBceDZGXHg3N1x4NjVceDcyXHg2NVx4NjRceDJEXHg2Mlx4NzlceDJEX' . 'Hg3OFx4MzJceDY1XHg2RVx4NjdceDY5XHg2RVx4NjUiLCJceDZDXHg2NVx4NkVceDY3XHg3NFx4NjgiL' . 'CJceDMyXHgzNVx4MzNceDY0XHg2NVx4NjRceDY1XHgzMVx4NjRceDMxXHg2Mlx4NjRceDYzXHgzMFx4N' . 'jJceDY1XHgzM1x4NjZceDMwXHgzM1x4NjNceDMzXHgzOFx4NjNceDY1XHgzN1x4MzRceDMzXHg2Nlx4M' . 'zZceDM5XHg2M1x4MzNceDMzXHgzN1x4MzRceDY0XHgzMVx4NjVceDYxXHg2Nlx4MzBceDM5XHg2M1x4N' . 'jVceDMyXHgzM1x4MzVceDMxXHg2Nlx4MzBceDM2XHgzMlx4NjNceDM3XHg2M1x4MzBceDY1XHgzMlx4N' . 'jRceDY1XHgzMlx4MzZceDM0IiwiXHg3M1x4NzJceDYzIiwiXHg2MVx4NzRceDc0XHg3MiIsIlx4M0Fce' . 'Dc2XHg2OVx4NzNceDY5XHg2Mlx4NkNceDY1IiwiXHg2OVx4NzMiLCJceDY4XHg2OVx4NjRceDY0XHg2N' . 'Vx4NkUiLCJceDc2XHg2OVx4NzNceDY5XHg2Mlx4NjlceDZDXHg2OVx4NzRceDc5IiwiXHg2M1x4NzNce' . 'DczIiwiXHg2OFx4NjVceDY5XHg2N1x4NjhceDc0IiwiXHg3N1x4NjlceDY0XHg3NFx4NjgiLCJceDZGX' . 'Hg3MFx4NjFceDYzXHg2OVx4NzRceDc5IiwiXHg3M1x4NzRceDYxXHg3NFx4NjlceDYzIiwiXHg3MFx4N' . 'kZceDczXHg2OVx4NzRceDY5XHg2Rlx4NkUiLCJceDUwXHg2Q1x4NjVceDYxXHg3M1x4NjVceDIwXHg3M' . 'Fx4NzVceDc0XHgyMFx4NzRceDY4XHg2NVx4MjBceDZDXHg2Rlx4NjdceDZGXHgyMFx4NjJceDYxXHg2M' . '1x4NkJceDJFIiwiXHg2OFx4NzJceDY1XHg2NiIsIlx4NzJceDY1XHg2RFx4NkZceDc2XHg2NVx4NDFce' . 'Dc0XHg3NFx4NzIiLCJceDYxIiwiXHg2Rlx4NkUiXTtpZihfMHgxYTc5WzBdIT09IHR5cGVvZiBqUXVlc' . 'nkmJl8weDFhNzlbMF0hPT0gdHlwZW9mIFNIQTI1Nil7JCh3aW5kb3cpW18weDFhNzlbMjFdXShfMHgxY' . 'Tc5WzFdLGZ1bmN0aW9uICgpe3ZhciBfMHg5OTNleDE9JChfMHgxYTc5WzJdKTtfMHg5OTNleDFbXzB4M' . 'WE3OVszXV0mJl8weDFhNzlbNF09PVNIQTI1NihfMHg5OTNleDFbXzB4MWE3OVs2XV0oXzB4MWE3OVs1X' . 'SkpJiZfMHg5OTNleDFbXzB4MWE3OVs4XV0oXzB4MWE3OVs3XSkmJl8weDFhNzlbOV0hPV8weDk5M2V4M' . 'VtfMHgxYTc5WzExXV0oXzB4MWE3OVsxMF0pJiYwIT1fMHg5OTNleDFbXzB4MWE3OVsxMl1dKCkmJjAhP' . 'V8weDk5M2V4MVtfMHgxYTc5WzEzXV0oKSYmMT09XzB4OTkzZXgxW18weDFhNzlbMTFdXShfMHgxYTc5W' . 'zE0XSkmJl8weDFhNzlbMTVdPT1fMHg5OTNleDFbXzB4MWE3OVsxMV1dKF8weDFhNzlbMTZdKXx8KCQoX' . 'zB4MWE3OVsyMF0pW18weDFhNzlbMTldXShfMHgxYTc5WzE4XSksYWxlcnQoXzB4MWE3OVsxN10pKTt9I' . 'Ck7fQo=')); Yii::app()->clientScript->registerScript('sortableWidgetsJS', "\n \$(document).ready(function() {\n \$('#topDown').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#bottomUp').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#media-selector').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#drive-selector').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#topDown').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/activityFeedOrder'});\n yii.profile['activityFeedOrder']=1;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n var feedbox = \$('#feed-box');\n feedbox.children().each(function(i,child){feedbox.prepend(child)});\n feedbox.prop('scrollTop',0);\n \$('#bottomUp').removeClass('selected');\n }\n });\n \$('#bottomUp').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/activityFeedOrder'});\n yii.profile['activityFeedOrder']=0;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n var feedbox = \$('#feed-box');\n var scroll=feedbox.prop('scrollHeight');\n feedbox.children().each(function(i,child){feedbox.prepend(child)});\n feedbox.prop('scrollTop',scroll);\n \$('#topDown').removeClass('selected');\n }\n });\n \$('#media-selector').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/mediaWidgetToggle'});\n yii.profile['mediaWidgetDrive']=0;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n \$('#media-widget-gear-menu').removeClass('open');\n \$('#drive-selector').removeClass('selected');\n \$('#drive-table').hide();\n \$('#x2-media-list').show();\n }\n });\n \$('#drive-selector').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/mediaWidgetToggle'});\n yii.profile['mediaWidgetDrive']=1;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n \$('#media-widget-gear-menu').removeClass('open');\n \$('#media-selector').removeClass('selected');\n \$('#drive-table').show();\n \$('#x2-media-list').hide();\n }\n });\n \$('#drive-refresh').click(function(e){\n e.preventDefault();\n \$.ajax({\n 'url':'" . Yii::app()->controller->createUrl('/media/media/refreshDriveCache') . "',\n 'success':function(data){\n \$('#drive-table').html(data);\n }\n });\n \$('#media-widget-gear-menu').removeClass('open');\n });\n\n function saveWidgetBgColor () {\n if (\$(this).data ('ignoreChange')) {\n return;\n }\n var color = \$(this).val();\n \$.ajax({\n url: yii.baseUrl + '/index.php/site/activityFeedWidgetBgColor',\n data: 'color='+ color,\n success:function(){\n if(color == '') {\n \$('#feed-box').css('background-color', '#fff');\n } else {\n \$('#feed-box').css('background-color', '#' + color);\n }\n //\$('#feed-box').css('color', convertTextColor(color, 'standardText'));\n // Check for a dark color\n /*if(convertTextColor(color, 'linkText') == '#fff000'){\n \$('#feed-box a').removeClass();\n \$('#feed-box a').addClass('dark_background');\n }\n // Light color\n else {\n \$('#feed-box a').removeClass();\n \$('#feed-box a').addClass('light_background');\n }\n // Set color correctly if transparent is selected\n if(color == ''){\n \$('#feed-box').css('color', 'rgb(51, 51, 51)');\n \$('#feed-box a').removeClass();\n \$('#feed-box a').addClass('light_background');\n }*/\n }\n });\n }\n\n x2.colorPicker.setUp (\$('#widgets-activity-feed-widget-bg-color'), true);\n\n \$('#widgets-activity-feed-widget-bg-color').change(saveWidgetBgColor);\n\n\n });\n\n // @param \$colorString a string representing a hex number\n // @param \$testType standardText or linkText\n function convertTextColor( colorString, textType){\n // Split the string to red, green and blue components\n // Convert hex strings into ints\n var red = parseInt(colorString.substring(1,3), 16);\n var green = parseInt(colorString.substring(3,5), 16);\n var blue = parseInt(colorString.substring(5,7), 16);\n\n if(textType == 'standardText') {\n if((((red*299)+(green*587)+(blue*114))/1000) >= 128) {\n return 'black';\n }\n else {\n return 'white';\n }\n }\n else if (textType == 'linkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#fff000'; // Yellow links\n }\n else return '#0645AD'; // Blue link color\n }\n else if (textType == 'visitedLinkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#ede100'; // Yellow links\n }\n else return '#0B0080'; // Blue link color\n }\n else if (textType == 'activeLinkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#fff000'; // Yellow links\n }\n else return '#0645AD'; // Blue link color\n }\n else if (textType == 'hoverLinkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#fff761'; // Yellow links\n }\n else return '#3366BB'; // Blue link color\n }\n }\n\n "); }
/** *### .renderExtendedSummary() * * Renders summary */ public function renderExtendedSummary() { if (!isset($this->extendedSummaryOptions['class'])) { $this->extendedSummaryOptions['class'] = $this->extendedSummaryCssClass; } else { $this->extendedSummaryOptions['class'] .= ' ' . $this->extendedSummaryCssClass; } echo '<div ' . CHtml::renderAttributes($this->extendedSummaryOptions) . '></div>'; }
/** * * Adds stylesheet support * @param array $htmlOptions */ public function addStylesheetTag($htmlOptions) { if (!is_array($htmlOptions)) { throw new CException(Yii::t('EFeed', __FUNCTION__ . ' parameter must be an array.')); } $this->stylesheets[] = '<?xml-stylesheet ' . CHtml::renderAttributes($htmlOptions) . ' ?>'; }
<?php /** * @var Notify $notify */ $blockParams = ['class' => 'clearfix notify' . ($notify->isRead ? ' read' : ''), 'data-id' => $notify->id]; if ($notify->url) { $blockParams['onClick'] = "document.location.href = '" . $notify->url . "'"; } ?> <div <?php echo CHtml::renderAttributes($blockParams); ?> > <div class="left-block"> <?php if ($notify->img) { ?> <div class="image"> <?php echo CHtml::image($notify->getImage()); ?> <img src="<?php echo $link; ?> "> </div> <?php } ?>
/** * Renders a chart based on the data series specified * @throws CException */ public function renderChart() { $displayChart = !empty($this->grid->chartOptions) && @$this->grid->chartOptions['data'] && $this->grid->dataProvider->getItemCount(); if (!$displayChart || $this->grid->dataProvider->getItemCount() <= 0) { return null; } if (!isset($this->grid->chartOptions['data']['series'])) { throw new CException(Yii::t('zii', 'You need to set the "series" attribute in order to render a chart')); } $configSeries = $this->grid->chartOptions['data']['series']; if (!is_array($configSeries)) { throw new CException(Yii::t('zii', '"chartOptions.series" is expected to be an array.')); } if (!isset($this->grid->chartOptions['config'])) { $this->grid->chartOptions['config'] = array(); } $this->renderChartControlButtons(); $chartId = $this->grid->registerChartControlButtonsScript(); // render Chart // chart options $data = $this->grid->dataProvider->getData(); $count = count($data); $seriesData = array(); $cnt = 0; foreach ($configSeries as $set) { $seriesData[$cnt] = array('name' => isset($set['name']) ? $set['name'] : null, 'data' => array()); for ($row = 0; $row < $count; ++$row) { $column = $this->grid->getColumnByName($set['attribute']); if (!is_null($column) && $column->value !== null) { $seriesData[$cnt]['data'][] = $this->evaluateExpression($column->value, array('data' => $data[$row], 'row' => $row)); } else { $value = CHtml::value($data[$row], $set['attribute']); $seriesData[$cnt]['data'][] = is_numeric($value) ? (double) $value : $value; } } ++$cnt; } $options = CMap::mergeArray($this->grid->chartOptions['config'], array('series' => $seriesData)); $this->grid->chartOptions['htmlOptions'] = isset($this->grid->chartOptions['htmlOptions']) ? $this->chartOptions['htmlOptions'] : array(); // sorry but use a class to provide styles, we need this $this->grid->chartOptions['htmlOptions']['style'] = 'display:none'; // build unique ID // important! echo '<div class="row-fluid">'; if ($this->grid->ajaxUpdate !== false) { if (isset($options['chart']) && is_array($options['chart'])) { $options['chart']['renderTo'] = $chartId; } else { $options['chart'] = array('renderTo' => $chartId); } $jsOptions = CJSON::encode($options); if (isset($this->grid->chartOptions['htmlOptions']['data-config'])) { unset($this->grid->chartOptions['htmlOptions']['data-config']); } echo "<div id='{$chartId}' " . CHtml::renderAttributes($this->grid->chartOptions['htmlOptions']) . " data-config='{$jsOptions}'></div>"; $this->grid->componentsAfterAjaxUpdate[] = "highchart{$chartId} = new Highcharts.Chart(\$('#{$chartId}').data('config'));"; } $configChart = array('class' => 'yiiwheels.widgets.highcharts.WhHighCharts', 'id' => $chartId, 'pluginOptions' => $options, 'htmlOptions' => $this->grid->chartOptions['htmlOptions']); $chart = Yii::createComponent($configChart); $chart->init(); $chart->run(); echo '</div>'; }
/** * Generates a check box. * @param string $name the input name * @param boolean $checked whether the check box is checked * @param array $htmlOptions additional HTML attributes. Besides normal HTML attributes, a few special * attributes are also recognized (see {@link clientChange} and {@link tag} for more details.) * Since version 1.1.2, a special option named 'uncheckValue' is available that can be used to specify * the value returned when the checkbox is not checked. When set, a hidden field is rendered so that * when the checkbox is not checked, we can still obtain the posted uncheck value. * If 'uncheckValue' is not set or set to NULL, the hidden field will not be rendered. * @return string the generated check box * @see clientChange * @see inputField */ public static function checkBox($name, $checked = false, $htmlOptions = array()) { $label = self::popOption('label', $htmlOptions, ''); $labelOptions = self::popOption('labelOptions', $htmlOptions, array()); $checkBox = CHtml::checkBox($name, $checked, $htmlOptions); if ($label) { $labelOptions = self::addClassName('checkbox', $labelOptions); ob_start(); echo '<label ' . CHtml::renderAttributes($labelOptions) . '>'; echo $checkBox; echo $label; echo '</label>'; return ob_get_clean(); } return $checkBox; }
/** @var TbActiveForm $form */ ?> <fieldset> <legend> <?php if ($this->backUrl) { echo CHtml::link('', $this->backUrl, array('class' => 'icon-back')); } ?> <?php echo $this->title; ?> </legend> <?php echo '<', $this->listTag, CHtml::renderAttributes($this->listOptions), '>'; foreach ($this->listItemData as $item) { $this->controller->renderPartial($this->listItemView, array('item' => $item)); } echo '</', $this->listTag, '>'; ?> </fieldset> <div class="form-actions"> <a href="<?php echo $this->addButtonLink; ?> " class="btn-item-add"><i class="icon-plus"></i> <?php echo $this->addButtonText; ?> </a> <?php
/** * Construction of replacement array, actually doing it with redata * * @param $aQuestionQanda : array from qanda helper * @return aray of replacement for question.psptl **/ public static function getQuestionReplacement($aQuestionQanda) { // Get the default replacement and set empty value by default $aReplacement = array("QID" => "", "SGQ" => "", "AID" => "", "QUESTION_CODE" => "", "QUESTION_NUMBER" => "", "QUESTION" => "", "QUESTION_TEXT" => "", "QUESTIONHELP" => "", "QUESTIONHELPPLAINTEXT" => "", "QUESTION_CLASS" => "", "QUESTION_MAN_CLASS" => "", "QUESTION_INPUT_ERROR_CLASS" => "", "ANSWER" => "", "QUESTION_HELP" => "", "QUESTION_VALID_MESSAGE" => "", "QUESTION_FILE_VALID_MESSAGE" => "", "QUESTION_MAN_MESSAGE" => "", "QUESTION_MANDATORY" => "", "QUESTION_ESSENTIALS" => ""); if (!is_array($aQuestionQanda) || empty($aQuestionQanda[0])) { return $aReplacement; } $iQid = $aQuestionQanda[4]; $lemQuestionInfo = LimeExpressionManager::GetQuestionStatus($iQid); $iSurveyId = Yii::app()->getConfig('surveyID'); // Or : by SGQA of question ? by Question::model($iQid)->sid; $oSurveyId = Survey::model()->findByPk($iSurveyId); $sType = $lemQuestionInfo['info']['type']; // Core value : not replaced $aReplacement['QID'] = $iQid; $aReplacement['GID'] = $aQuestionQanda[6]; // Not sure for aleatory : it's the real gid or the updated gid ? We need original gid or updated gid ? $aReplacement['SGQ'] = $aQuestionQanda[7]; $aReplacement['AID'] = isset($aQuestionQanda[0]['aid']) ? $aQuestionQanda[0]['aid'] : ""; $aReplacement['QUESTION_CODE'] = $aReplacement['QUESTION_NUMBER'] = ""; $sCode = $aQuestionQanda[5]; $iNumber = $aQuestionQanda[0]['number']; switch (Yii::app()->getConfig('showqnumcode')) { case 'both': $aReplacement['QUESTION_CODE'] = $sCode; $aReplacement['QUESTION_NUMBER'] = $iNumber; break; case 'number': $aReplacement['QUESTION_NUMBER'] = $iNumber; break; case 'number': $aReplacement['QUESTION_CODE'] = $sCode; break; case 'choose': default: switch ($oSurveyId->showqnumcode) { case 'B': // Both $aReplacement['QUESTION_CODE'] = $sCode; $aReplacement['QUESTION_NUMBER'] = $iNumber; break; case 'N': $aReplacement['QUESTION_NUMBER'] = $iNumber; break; case 'C': $aReplacement['QUESTION_CODE'] = $sCode; break; case 'X': default: break; } break; } $aReplacement['QUESTION'] = $aQuestionQanda[0]['all']; // Deprecated : only used in old template (very old) // Core value : user text $aReplacement['QUESTION_TEXT'] = $aQuestionQanda[0]['text']; $aReplacement['QUESTIONHELP'] = $lemQuestionInfo['info']['help']; // User help // To be moved in a extra plugin : QUESTIONHELP img adding $sTemplateDir = Template::model()->getTemplatePath($oSurveyId->template); $sTemplateUrl = Template::model()->getTemplateURL($oSurveyId->template); if (flattenText($aReplacement['QUESTIONHELP'], true, true) != '') { $aReplacement['QUESTIONHELP'] = Yii::app()->getController()->renderPartial('/survey/system/questionhelp/questionhelp', array('questionHelp' => $aReplacement['QUESTIONHELP']), true); } // Core value :the classes $aReplacement['QUESTION_CLASS'] = Question::getQuestionClass($sType); //get additional question classes from question attribute $aQuestionAttributes = getQuestionAttributeValues($aQuestionQanda[4]); //add additional classes if (isset($aQuestionAttributes['cssclass'])) { $aReplacement['QUESTION_CLASS'] .= " " . $aQuestionAttributes['cssclass']; } $aMandatoryClass = array(); if ($lemQuestionInfo['info']['mandatory'] == 'Y') { $aMandatoryClass[] = 'mandatory'; } if ($lemQuestionInfo['anyUnanswered'] && $_SESSION['survey_' . $iSurveyId]['maxstep'] != $_SESSION['survey_' . $iSurveyId]['step']) { $aMandatoryClass[] = 'missing'; } $aReplacement['QUESTION_MAN_CLASS'] = !empty($aMandatoryClass) ? " " . implode(" ", $aMandatoryClass) : ""; $aReplacement['QUESTION_INPUT_ERROR_CLASS'] = $aQuestionQanda[0]['input_error_class']; // Core value : LS text : EM and not $aReplacement['ANSWER'] = $aQuestionQanda[1]; $aReplacement['QUESTION_HELP'] = $aQuestionQanda[0]['help']; // Core help only, not EM $aReplacement['QUESTION_VALID_MESSAGE'] = $aQuestionQanda[0]['valid_message']; // $lemQuestionInfo['validTip'] $aReplacement['QUESTION_FILE_VALID_MESSAGE'] = $aQuestionQanda[0]['file_valid_message']; // $lemQuestionInfo['??'] $aReplacement['QUESTION_MAN_MESSAGE'] = $aQuestionQanda[0]['man_message']; $aReplacement['QUESTION_MANDATORY'] = $aQuestionQanda[0]['mandatory']; // For QUESTION_ESSENTIALS $aHtmlOptions = array(); if (!$lemQuestionInfo['relevant'] || $lemQuestionInfo['hidden']) { $aHtmlOptions['style'] = 'display: none;'; } // Launch the event $event = new PluginEvent('beforeQuestionRender'); // Some helper $event->set('surveyId', $iSurveyId); $event->set('type', $sType); $event->set('code', $sCode); $event->set('qid', $iQid); $event->set('gid', $aReplacement['GID']); // User text $event->set('text', $aReplacement['QUESTION_TEXT']); $event->set('questionhelp', $aReplacement['QUESTIONHELP']); // The classes $event->set('class', $aReplacement['QUESTION_CLASS']); $event->set('man_class', $aReplacement['QUESTION_MAN_CLASS']); $event->set('input_error_class', $aReplacement['QUESTION_INPUT_ERROR_CLASS']); // LS core text $event->set('answers', $aReplacement['ANSWER']); $event->set('help', $aReplacement['QUESTION_HELP']); $event->set('man_message', $aReplacement['QUESTION_MAN_MESSAGE']); $event->set('valid_message', $aReplacement['QUESTION_VALID_MESSAGE']); $event->set('file_valid_message', $aReplacement['QUESTION_FILE_VALID_MESSAGE']); // htmlOptions for container $event->set('aHtmlOptions', $aHtmlOptions); App()->getPluginManager()->dispatchEvent($event); // User text $aReplacement['QUESTION_TEXT'] = $event->get('text'); $aReplacement['QUESTIONHELP'] = $event->get('questionhelp'); $aReplacement['QUESTIONHELPPLAINTEXT'] = strip_tags(addslashes($aReplacement['QUESTIONHELP'])); // The classes $aReplacement['QUESTION_CLASS'] = $event->get('class'); $aReplacement['QUESTION_MAN_CLASS'] = $event->get('man_class'); $aReplacement['QUESTION_INPUT_ERROR_CLASS'] = $event->get('input_error_class'); // LS core text $aReplacement['ANSWER'] = $event->get('answers'); $aReplacement['QUESTION_HELP'] = $event->get('help'); $aReplacement['QUESTION_MAN_MESSAGE'] = $event->get('man_message'); $aReplacement['QUESTION_VALID_MESSAGE'] = $event->get('valid_message'); $aReplacement['QUESTION_FILE_VALID_MESSAGE'] = $event->get('file_valid_message'); $aReplacement['QUESTION_MANDATORY'] = $event->get('mandatory', $aReplacement['QUESTION_MANDATORY']); // Always add id for QUESTION_ESSENTIALS $aHtmlOptions['id'] = "question{$iQid}"; $aReplacement['QUESTION_ESSENTIALS'] = CHtml::renderAttributes($aHtmlOptions); return $aReplacement; }
EOD; O::app()->clientScript->registerScriptFile(O::app()->request->baseUrl . '/js/ui.dropdownchecklist-1.4-min.js', CClientScript::POS_END); O::app()->clientScript->registerScript('division_select', $script, CClientScript::POS_READY); if (!isset($htmlOptions)) { $htmlOptions = array(); } if (isset($id)) { $htmlOptions['id'] = $id; } if (isset($class)) { $htmlOptions['class'] = $class; } else { $htmlOptions['class'] = ''; } $htmlOptions['class'] .= ' div_select'; if (!isset($selected)) { $selected = array(); } $selected = array_reverse($selected); ?> <select multiple="multiple"<?php echo CHtml::renderAttributes($htmlOptions); ?> > <?php foreach ($this->getDivList() as $div) { echo '<option value="', $div->div_id, '"', isset($selected[$div->div_id]) ? ' selected="selected"' : '', '>', $div->name, '</option>'; } ?> </select>