示例#1
0
 function render()
 {
     if (!$this->name) {
         throw new \Exception('must set a name');
     }
     if (!$this->xhr_url) {
         throw new \Exception('must set xhr url');
     }
     if (!$this->js_format_result || !$this->result_fields) {
         throw new \Exception('need js code');
     }
     $header = XhtmlHeader::getInstance();
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/fonts/fonts-min.css');
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/autocomplete/assets/skins/sam/autocomplete.css');
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/button/assets/skins/sam/button.css');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/get/get-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/animation/animation-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/datasource/datasource-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/autocomplete/autocomplete-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/element/element-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/button/button-min.js');
     $div_holder = 'yui_ac' . mt_rand();
     $container_holder = 'ac_contain_' . mt_rand();
     $button_id = 'ac_toggle_' . mt_rand();
     $input_id = 'ac_input_' . mt_rand();
     $header->embedJs('function highlight(s,h)' . '{' . 'var regex = new RegExp("("+h+")","ig");' . 'return s.replace(regex, "<span class=\\"highlighted\\">$1</span>");' . '}');
     $header->embedCss('label {' . 'color:#E76300;' . 'font-weight:bold;' . '}' . '#' . $div_holder . ' {' . 'width:20em;' . '}' . '.yui-ac .result {position:relative;height:20px;}' . '.yui-ac .name {position:absolute;bottom:0;}' . '.highlighted {color:#CA485E;font-weight:bold; }' . '.yui-ac .yui-button {vertical-align:middle;}' . '.yui-ac .yui-button button {background: url(http://developer.yahoo.com/yui/examples/autocomplete/assets/img/ac-arrow-rt.png) center center no-repeat}' . '.yui-ac .open .yui-button button {background: url(http://developer.yahoo.com/yui/examples/autocomplete/assets/img/ac-arrow-dn.png) center center no-repeat}' . '.yui-skin-sam .yui-ac-input {position:static; vertical-align:middle;}' . '.yui-skin-sam .yui-ac-content {' . 'max-height:250px;overflow:auto;overflow-x:hidden;' . '}');
     $res = 'YAHOO.example.CustomFormatting = (function(){' . 'var oDS = new YAHOO.util.ScriptNodeDataSource("' . $this->xhr_url . '");' . 'oDS.responseSchema = {' . 'resultsList:"records",' . 'fields:' . Json::encode($this->result_fields, false) . '};' . 'var oAC = new YAHOO.widget.AutoComplete("' . $input_id . '","' . $container_holder . '", oDS);' . 'oAC.minQueryLength = 0;' . 'oAC.queryDelay = ' . $this->query_delay . ';' . 'oAC.animSpeed = 0.01;' . 'oAC.maxResultsDisplayed = 100;' . 'oAC.forceSelection = true;' . 'oAC.generateRequest = function(sQuery) {' . 'return sQuery + "&format=json";' . '};' . 'oAC.resultTypeList = false;' . 'oAC.formatResult = function(oResultData, sQuery, sResultMatch) {' . $this->js_format_result . '};' . 'oAC.itemSelectEvent.subscribe(function(sType, aArgs) {' . 'var oData = aArgs[2];' . 'var input = document.createElement("input");' . 'input.setAttribute("type", "hidden");' . 'input.setAttribute("name", "' . $this->name . '");' . 'input.setAttribute("value", oData.id);' . 'document.getElementById("' . $div_holder . '").appendChild(input);' . '});' . 'var validateForm = function() {' . 'return true;' . '};' . 'return {' . 'oDS: oDS,' . 'oAC: oAC,' . 'validateForm: validateForm' . '}' . '})();';
     $in = new XhtmlComponentInput();
     $in->name = $input_id;
     $in->width = 200;
     // XXXX HACK, should not set width at all.. but we do it now so button dont end up on the next line
     return '<div id="' . $div_holder . '">' . $in->render() . '<div id="' . $container_holder . '"></div>' . '</div>' . js_embed($res);
 }
示例#2
0
 function render()
 {
     $header = XhtmlHeader::getInstance();
     $page = XmlDocumentHandler::getInstance();
     $header->includeJs('http://yui.yahooapis.com/3.4.1/build/yui/yui-min.js');
     $header->includeJs($page->getRelativeCoreDevUrl() . 'js/ext/gallery-lightbox/gallery-lightbox-min.js');
     $header->includeCss($page->getRelativeCoreDevUrl() . 'js/ext/gallery-lightbox/assets/skins/sam/gallery-lightbox-skin.css');
     $js = 'YUI().use("gallery-lightbox", "node-deprecated", ' . 'function (Y)' . '{' . 'Y.Lightbox.init();' . '}' . ');';
     return js_embed($js);
 }
 function render()
 {
     if (!$this->data_source) {
         throw new \Exception('need data source');
     }
     $header = XhtmlHeader::getInstance();
     $header->includeCss('http://yui.yahooapis.com/3.3.0/build/cssfonts/fonts-min.css');
     $header->includeJs('http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js');
     $res = 'YUI().use("autocomplete", "autocomplete-filters", "autocomplete-highlighters", function (Y)' . '{' . 'var inputNode = Y.one("#ac-input"),' . 'tags = ' . Json::encode($this->data_source, false) . ';' . 'inputNode.plug(Y.Plugin.AutoComplete, {' . 'allowTrailingDelimiter: true,' . 'minQueryLength: 0,' . 'queryDelay: 0,' . 'queryDelimiter: ",",' . 'source: tags,' . 'resultHighlighter: "startsWith",' . 'resultFilters: ["startsWith", function (query, results) {' . 'var selected = inputNode.ac.get("value").split(/\\s*,\\s*/);' . 'selected.pop();' . 'selected = Y.Array.hash(selected);' . 'return Y.Array.filter(results, function (result) {' . 'return !selected.hasOwnProperty(result.text);' . '});' . '}]' . '});' . 'inputNode.on("focus", function () {' . 'inputNode.ac.sendRequest("");' . '});' . 'inputNode.ac.after("select", function () {' . 'inputNode.ac.sendRequest("");' . 'inputNode.ac.show();' . '});' . '});';
     return '<div id="demo">' . '<label for="ac-input">Tags:</label><br/>' . '<input id="ac-input" type="text"/>' . '</div>' . js_embed($res);
 }
示例#4
0
 function render()
 {
     $header = XhtmlHeader::getInstance();
     $header->includeJs('http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js');
     $div_holder = 'yui_chart' . mt_rand();
     $header->embedCss('#' . $div_holder . ' { width: ' . $this->width . 'px; height: ' . $this->height . 'px; }');
     $total_items = 0;
     foreach ($this->data_source as $i) {
         $total_items += $i['value'];
     }
     $res = 'YUI().use("charts", function (Y)' . '{' . 'var myDataValues = ' . JSON::encode($this->data_source) . ';' . 'var myTooltip = {' . 'styles: { ' . 'backgroundColor: "#333",' . 'color: "#eee",' . 'borderColor: "#fff",' . 'textAlign: "center"' . '},' . 'markerLabelFunction: function(categoryItem, valueItem, itemIndex, series, seriesIndex)' . '{' . 'return ' . '"<span style=\\"text-decoration:underline\\">" + categoryItem.value + "</span><br/>' . '<div style=\\"margin-top:5px;font-weight:bold\\">" + valueItem.value + " (" + Math.round(valueItem.value / ' . $total_items . ' * 100) + " %)</div>";' . '}' . '};' . 'var mychart = new Y.Chart({' . 'dataProvider:myDataValues,' . 'categoryKey:"' . $this->category_key . '",' . 'type:"pie",' . 'render: "#' . $div_holder . '",' . 'tooltip: myTooltip,' . 'seriesKeys:["value"],' . 'seriesCollection:[' . '{' . 'categoryKey:"' . $this->category_key . '",' . 'valueKey:"value"' . '}' . ']' . '});' . '});';
     return '<div id="' . $div_holder . '">' . '</div>' . js_embed($res);
 }
示例#5
0
 function render()
 {
     if (!$this->name) {
         throw new \Exception('must set a name');
     }
     $header = XhtmlHeader::getInstance();
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/calendar/assets/skins/sam/calendar.css');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/calendar/calendar-min.js');
     $locale = LocaleHandler::getInstance();
     $div_holder = 'yui_date_hold' . mt_rand();
     $res = 'YAHOO.namespace("example.calendar");' . 'YAHOO.example.calendar.init = function() {' . 'var inTxt = YAHOO.util.Dom.get("' . $this->name . '");' . ($this->selected_date ? 'inTxt.value  = "' . sql_date($this->selected_date) . '";' : '') . 'var cal = YAHOO.example.calendar.cal1 = new YAHOO.widget.Calendar("' . $div_holder . '");' . ($this->selected_date ? 'cal.cfg.setProperty("selected", "' . js_date($this->selected_date) . '");' . 'cal.cfg.setProperty("pagedate", "' . date('n/Y', $this->selected_date) . '");' : '') . 'cal.cfg.setProperty("start_weekday",' . $this->start_weekday . ');' . 'cal.cfg.setProperty("MONTHS_SHORT",' . Json::encode($locale->handle->month_short, false) . ');' . 'cal.cfg.setProperty("MONTHS_LONG",' . Json::encode($locale->handle->month_long, false) . ');' . 'cal.cfg.setProperty("WEEKDAYS_1CHAR",' . Json::encode($locale->handle->weekday_1char, false) . ');' . 'cal.cfg.setProperty("WEEKDAYS_SHORT",' . Json::encode($locale->handle->weekday_short, false) . ');' . 'cal.cfg.setProperty("WEEKDAYS_MEDIUM",' . Json::encode($locale->handle->weekday_medium, false) . ');' . 'cal.cfg.setProperty("WEEKDAYS_LONG",' . Json::encode($locale->handle->weekday_long, false) . ');' . 'cal.selectEvent.subscribe(function() {' . 'var dates = this.getSelectedDates();' . 'var inDate = dates[0];' . 'inTxt.value = inDate.getFullYear() + "-" + (inDate.getMonth() + 1) + "-" + inDate.getDate();' . '}, cal, true);' . 'cal.render();' . '}' . "\n" . 'YAHOO.util.Event.onDOMReady(YAHOO.example.calendar.init);';
     return '<div id="' . $div_holder . '"></div>' . '<div style="clear:both"></div>' . xhtmlInput($this->name) . '<br/>' . js_embed($res);
 }
示例#6
0
 function render()
 {
     if (!$this->name) {
         throw new \Exception('name must be configured');
     }
     $header = XhtmlHeader::getInstance();
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/calendar/assets/skins/sam/calendar.css');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/calendar/calendar-min.js');
     $res = '(function()' . '{' . 'function IntervalCalendar(container, cfg)' . '{' . 'this._iState = 0;' . 'cfg = cfg || {};' . 'cfg.multi_select = true;' . 'IntervalCalendar.superclass.constructor.call(this, container, cfg);' . 'this.beforeSelectEvent.subscribe(this._intervalOnBeforeSelect, this, true);' . 'this.selectEvent.subscribe(this._intervalOnSelect, this, true);' . 'this.beforeDeselectEvent.subscribe(this._intervalOnBeforeDeselect, this, true);' . 'this.deselectEvent.subscribe(this._intervalOnDeselect, this, true);' . '}' . 'IntervalCalendar._DEFAULT_CONFIG = YAHOO.widget.CalendarGroup._DEFAULT_CONFIG;' . 'YAHOO.lang.extend(IntervalCalendar, YAHOO.widget.CalendarGroup,' . '{' . '_dateString : function(d) {' . 'var a = [];' . 'a[this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.MDY_MONTH_POSITION.key)-1] = (d.getMonth() + 1);' . 'a[this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.MDY_DAY_POSITION.key)-1] = d.getDate();' . 'a[this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.MDY_YEAR_POSITION.key)-1] = d.getFullYear();' . 'var s = this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.DATE_FIELD_DELIMITER.key);' . 'return a.join(s);' . '},' . '_dateIntervalString : function(l, u) {' . 'var s = this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.DATE_RANGE_DELIMITER.key);' . 'return (this._dateString(l) + s + this._dateString(u));' . '},' . 'getInterval : function() {' . 'var dates = this.getSelectedDates();' . 'if(dates.length > 0) {' . 'var l = dates[0];' . 'var u = dates[dates.length - 1];' . 'return [l, u];' . '} else {' . 'return [];' . '}' . '},' . 'setInterval : function(d1, d2) {' . 'var b = (d1 <= d2);' . 'var l = b ? d1 : d2;' . 'var u = b ? d2 : d1;' . 'this.cfg.setProperty("selected", this._dateIntervalString(l, u), false);' . 'this._iState = 2;' . '},' . 'resetInterval : function() {' . 'this.cfg.setProperty("selected", [], false);' . 'this._iState = 0;' . '},' . '_intervalOnBeforeSelect : function(t,a,o) {' . 'this._iState = (this._iState + 1) % 3;' . 'if(this._iState == 0) {' . 'this.deselectAll();' . 'this._iState++;' . '}' . '},' . '_intervalOnSelect : function(t,a,o) {' . 'var dates = this.getSelectedDates();' . 'if(dates.length > 1) {' . 'var l = dates[0];' . 'var u = dates[dates.length - 1];' . 'this.cfg.setProperty("selected", this._dateIntervalString(l, u), false);' . '}' . 'this.render();' . '},' . '_intervalOnBeforeDeselect : function(t,a,o) {' . 'if(this._iState != 0) {' . 'return false;' . '}' . '},' . '_intervalOnDeselect : function(t,a,o) {' . 'if(this._iState != 0) {' . 'this._iState = 0;' . 'this.deselectAll();' . 'var d = a[0];' . 'var date = YAHOO.widget.DateMath.getDate(d[0], d[1] - 1, d[2]);' . 'var page = this.getCalendarPage(date);' . 'if(page) {' . 'page.beforeSelectEvent.fire();' . 'this.cfg.setProperty("selected", this._dateString(date), false);' . 'page.selectEvent.fire([d]);' . '}' . 'return false;' . '}' . '}' . '});' . 'YAHOO.namespace("example.calendar");' . 'YAHOO.example.calendar.IntervalCalendar = IntervalCalendar;' . '})();';
     $locale = LocaleHandler::getInstance();
     $div_holder = 'yui_di_hold' . mt_rand();
     $res .= 'YAHOO.util.Event.onDOMReady(function()' . '{' . 'var inTxt  = YAHOO.util.Dom.get("' . $this->name . '_from");' . 'var outTxt = YAHOO.util.Dom.get("' . $this->name . '_to");' . 'var inDate, outDate, interval;' . ($this->select_from ? 'inTxt.value  = "' . sql_date($this->select_from) . '";' : '') . ($this->select_to ? 'outTxt.value = "' . sql_date($this->select_to) . '";' : '') . 'var myConfigs =' . '{' . 'pages:2,' . ($this->select_from && $this->select_to ? 'selected:"' . js_date($this->select_from) . '-' . js_date($this->select_to) . '",' . 'pagedate:"' . date('n/Y', $this->select_from) . '",' : '') . 'start_weekday:' . $this->start_weekday . ',' . 'MONTHS_SHORT:' . Json::encode($locale->handle->month_short, false) . ',' . 'MONTHS_LONG:' . Json::encode($locale->handle->month_long, false) . ',' . 'WEEKDAYS_1CHAR:' . Json::encode($locale->handle->weekday_1char, false) . ',' . 'WEEKDAYS_SHORT:' . Json::encode($locale->handle->weekday_short, false) . ',' . 'WEEKDAYS_MEDIUM:' . Json::encode($locale->handle->weekday_medium, false) . ',' . 'WEEKDAYS_LONG:' . Json::encode($locale->handle->weekday_long, false) . ',' . '};' . 'var cal = new YAHOO.example.calendar.IntervalCalendar("' . $div_holder . '",myConfigs);' . 'cal.selectEvent.subscribe(function()' . '{' . 'interval = this.getInterval();' . 'if (interval.length == 2) {' . 'inDate = interval[0];' . 'inTxt.value =  inDate.getFullYear() + "-" + (inDate.getMonth() + 1) + "-" + inDate.getDate();' . 'if (interval[0].getTime() != interval[1].getTime()) {' . 'outDate = interval[1];' . 'outTxt.value = outDate.getFullYear() + "-" + (outDate.getMonth() + 1) + "-" + outDate.getDate();' . '} else {' . 'outTxt.value = "";' . '}' . '}' . '}, cal, true);' . 'cal.render();' . '});';
     return '<div id="' . $div_holder . '"></div>' . '<div style="clear:both"></div>' . js_embed($res) . xhtmlInput($this->name . '_from') . ' - ' . xhtmlInput($this->name . '_to');
 }
示例#7
0
 function render()
 {
     if (!$this->name) {
         throw new \Exception('must set a name');
     }
     $header = XhtmlHeader::getInstance();
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/fonts/fonts-min.css');
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/button/assets/skins/sam/button.css');
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/container/assets/skins/sam/container.css');
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/calendar/assets/skins/sam/calendar.css');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/dragdrop/dragdrop-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/element/element-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/button/button-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/container/container-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/calendar/calendar-min.js');
     $header->embedCss('#container .bd form {' . 'clear:left;' . '}' . '#container .bd {' . 'padding:0;' . '}' . '#container .hd {' . 'text-align:left;' . '}' . '#container .ft .button-group {' . 'text-align:center;' . '}' . '#container_c.yui-overlay-hidden table {' . '*display:none;' . '}' . '#cal {' . 'border:none;' . 'padding:1em;' . '}');
     $locale = LocaleHandler::getInstance();
     $button_name = 'yui_dp_show_' . mt_rand();
     $res = 'YAHOO.util.Event.onDOMReady(function(){' . 'var Event = YAHOO.util.Event,' . 'Dom = YAHOO.util.Dom,' . 'dialog,' . 'calendar;' . 'var showBtn = Dom.get("' . $button_name . '");' . 'Event.on(showBtn, "click", function() {' . 'if (!dialog) {' . 'Event.on(document, "click", function(e) {' . 'var el = Event.getTarget(e);' . 'var dialogEl = dialog.element;' . 'if (el != dialogEl && !Dom.isAncestor(dialogEl, el) && el != showBtn && !Dom.isAncestor(showBtn, el)) {' . 'dialog.hide();' . '}' . '});' . 'function resetHandler() {' . 'var selDates = calendar.getSelectedDates();' . 'var resetDate;' . 'if (selDates.length > 0) {' . 'resetDate = selDates[0];' . '} else {' . 'resetDate = calendar.today;' . '}' . 'calendar.cfg.setProperty("pagedate", resetDate);' . 'calendar.render();' . '}' . 'function closeHandler() {' . 'dialog.hide();' . '}' . 'dialog = new YAHOO.widget.Dialog("container", {' . 'visible:false,' . 'context:["' . $button_name . '", "tl", "bl"],' . 'buttons:[ {text:"Reset", handler: resetHandler, isDefault:true}, {text:"Close", handler: closeHandler}],' . 'draggable:false,' . 'close:true' . '});' . 'dialog.setHeader("Pick A Date");' . 'dialog.setBody(\'<div id="cal"></div>\');' . 'dialog.render(document.body);' . 'dialog.showEvent.subscribe(function() {' . 'if (YAHOO.env.ua.ie) {' . 'dialog.fireEvent("changeContent");' . '}' . '});' . '}' . 'if (!calendar) {' . 'calendar = new YAHOO.widget.Calendar("cal", {' . 'iframe:false,' . 'hide_blank_weeks:true,' . ($this->selected_date ? 'selected:"' . js_date($this->selected_date) . '",' . 'pagedate:"' . date('n/Y', $this->selected_date) . '",' : '') . 'start_weekday:' . $this->start_weekday . ',' . 'MONTHS_SHORT:' . Json::encode($locale->handle->month_short, false) . ',' . 'MONTHS_LONG:' . Json::encode($locale->handle->month_long, false) . ',' . 'WEEKDAYS_1CHAR:' . Json::encode($locale->handle->weekday_1char, false) . ',' . 'WEEKDAYS_SHORT:' . Json::encode($locale->handle->weekday_short, false) . ',' . 'WEEKDAYS_MEDIUM:' . Json::encode($locale->handle->weekday_medium, false) . ',' . 'WEEKDAYS_LONG:' . Json::encode($locale->handle->weekday_long, false) . ',' . '});' . 'calendar.render();' . 'calendar.selectEvent.subscribe(function() {' . 'if (calendar.getSelectedDates().length > 0) {' . 'var selDate = calendar.getSelectedDates()[0];' . 'Dom.get("' . $this->name . '").value = selDate.getFullYear() + "-" + (selDate.getMonth() + 1) + "-" + selDate.getDate();' . '} else {' . 'Dom.get("' . $this->name . '").value = "";' . '}' . 'dialog.hide();' . '});' . 'calendar.renderEvent.subscribe(function() {' . 'dialog.fireEvent("changeContent");' . '});' . '}' . 'var seldate = calendar.getSelectedDates();' . 'if (seldate.length > 0) {' . 'calendar.cfg.setProperty("pagedate", seldate[0]);' . 'calendar.render();' . '}' . 'dialog.show();' . '});' . '});';
     return xhtmlInput($this->name, sql_date($this->selected_date), 8) . ' ' . '<button type="button" id="' . $button_name . '" title="Pick a date">' . '<img src="' . relurl('core_dev/gfx/icon_date-picker.png') . '" alt="Pick a date"/>' . '</button>' . js_embed($res);
 }
示例#8
0
 function render()
 {
     $header = XhtmlHeader::getInstance();
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/assets/skins/sam/skin.css');
     // utility Dependencies
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/element/element-min.js');
     // needed for Menus, Buttons and Overlays used in the Toolbar
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/container/container_core-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/menu/menu-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/button/button-min.js');
     // source file for Rich Text Editor
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/editor/editor-min.js');
     $div_id = $this->name ? $this->name : 're_' . mt_rand();
     $res = 'var myEditor = new YAHOO.widget.Editor("' . $div_id . '",' . '{' . 'width: "' . $this->width . 'px",' . 'height: "' . $this->height . 'px",' . 'dompath: ' . ($this->show_dompath ? 'true' : 'false') . ',' . 'animate: true,' . 'handleSubmit: true,' . 'toolbar: {' . ($this->titlebar ? 'titlebar: "' . $this->titlebar . '",' : '') . 'buttons: [' . '{ group: "textstyle", label: " ",' . 'buttons: [' . '{ type: "push", label: "Bold", value: "bold" },' . '{ type: "push", label: "Italic", value: "italic" },' . '{ type: "push", label: "Underline", value: "underline" },' . '{ type: "separator" },' . '{ type: "select", label: "Arial", value: "fontname", disabled: true,' . 'menu: [' . '{ text: "Arial", checked: true },' . '{ text: "Arial Black" },' . '{ text: "Comic Sans MS" },' . '{ text: "Courier New" },' . '{ text: "Lucida Console" },' . '{ text: "Tahoma" },' . '{ text: "Times New Roman" },' . '{ text: "Trebuchet MS" },' . '{ text: "Verdana" }' . ']' . '},' . '{ type: "spin", label: "13", value: "fontsize", range: [ 9, 75 ], disabled: true },' . '{ type: "separator" },' . '{ type: "color", label: "Font Color", value: "forecolor", disabled: true },' . '{ type: "color", label: "Background Color", value: "backcolor", disabled: true },' . '{ type: "separator" },' . '{ type: "push", label: "Create an Unordered List", value: "insertunorderedlist" },' . '{ type: "push", label: "Create an Ordered List", value: "insertorderedlist" },' . ']' . '}' . ']' . '}' . '}' . ');' . 'myEditor.render();';
     $hold = new XhtmlComponentTextarea();
     $hold->name = $this->name;
     $hold->value = $this->value;
     $hold->width = 1;
     $hold->height = 1;
     return $hold->render() . js_embed($res);
 }
示例#9
0
 function render()
 {
     $header = XhtmlHeader::getInstance();
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/treeview/assets/skins/sam/treeview.css');
     // XXX disable this css to get windows-style treeview object
     // $header->includeCss('http://developer.yahoo.com/yui/build/treeview/assets/treeview-menu.css');
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/calendar/assets/skins/sam/calendar.css');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/animation/animation-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/calendar/calendar-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/json/json-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/connection/connection-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/treeview/treeview-min.js');
     $locale = LocaleHandler::getInstance();
     $div_holder = 'yui_tree_hold' . mt_rand();
     if ($this->allow_expand_all) {
         $node_type = 'TextNode';
     } else {
         $node_type = 'MenuNode';
     }
     $res = 'function loadNodeData(node, fnLoadComplete)' . '{' . 'var sUrl = "' . $this->xhr_url . '" + encodeURI(node.data.id);' . 'var callback = {' . 'success: function(oResponse) {' . 'var oResults = YAHOO.lang.JSON.parse(oResponse.responseText);' . 'if (oResults.records && oResults.records.length) {' . 'for (var i=0; i<oResults.records.length; i++) {' . 'var newNode = new YAHOO.widget.' . $node_type . '({label:oResults.records[i].name,id:oResults.records[i].id}, node, false);' . '}' . '}' . 'oResponse.argument.fnLoadComplete();' . '},' . 'failure: function(oResponse) {' . 'YAHOO.log("Failed to process XHR transaction.", "info", "example");' . 'oResponse.argument.fnLoadComplete();' . '},' . 'argument: {' . '"node": node,' . '"fnLoadComplete": fnLoadComplete' . '},' . 'timeout:' . $this->ms_timeout . '};' . 'YAHOO.util.Connect.asyncRequest("GET", sUrl, callback);' . '}' . 'var tree = new YAHOO.widget.TreeView("' . $div_holder . '");' . ($this->xhr_url ? 'tree.setDynamicLoad(loadNodeData,' . ($this->leaf_mode ? '1' : '0') . ');' : '') . 'var root = tree.getRoot();' . ($this->root_nodes ? 'var aChilds = ' . JSON::encode($this->root_nodes) . ';' . 'for (var i=0, j=aChilds.length; i<j; i++) {' . 'var tempNode = new YAHOO.widget.' . $node_type . '({label:aChilds[i].name,id:aChilds[i].id}, root, false);' . '}' : '') . ($this->js_click ? 'tree.subscribe("clickEvent",function(oArgs){' . $this->js_click . '});' : '') . ($this->js_dblclick ? 'tree.subscribe("dblClickEvent",function(oArgs){' . $this->js_dblclick . '});' : '') . 'tree.render();';
     return '<div id="' . $div_holder . '"></div>' . js_embed($res);
 }
示例#10
0
 function render()
 {
     /*if (!$this->data_source)
                 throw new \Exception ('no data source set');
     */
     $header = XhtmlHeader::getInstance();
     $header->includeJs('http://yui.yahooapis.com/3.7.1/build/yui/yui-min.js');
     $div_holder = 'yui_chart' . mt_rand();
     $header->embedCss('#' . $div_holder . ' { width: ' . $this->width . 'px; height: ' . $this->height . 'px; }');
     $res = 'YUI().use("charts", function (Y)' . '{' . 'var myTooltip = {' . 'styles: { ' . 'backgroundColor: "#333",' . 'color: "#eee",' . 'borderColor: "#fff",' . 'textAlign: "center"' . '},' . 'markerLabelFunction: function(categoryItem, valueItem, itemIndex, series, seriesIndex)' . '{' . 'return ' . '"<span style=\\"text-decoration:underline\\">" + valueItem.displayName + " for " + categoryItem.value + "</span><br/>' . '<div style=\\"margin-top:5px;font-weight:bold\\">" + (valueItem.value ? valueItem.value : "0") + "</div>";' . '},' . 'setTextFunction: function(textField, val)' . '{' . 'textField.setHTML(val);' . '}' . '};' . 'var styleDef = {' . 'axes:{' . 'values:{' . 'label:{' . 'color:"' . $this->color_label . '"' . '}' . '},' . $this->category_key . ':{' . 'label:{' . 'rotation:-45,' . 'color: "' . $this->color_label . '"' . '}' . '}' . '}' . '};' . 'var myDataValues = ' . JSON::encode($this->data_source) . ';' . 'var mychart = new Y.Chart(' . '{' . 'dataProvider:myDataValues,' . 'categoryKey:"' . $this->category_key . '",' . ($this->x_type ? 'categoryType:"' . $this->x_type . '",' : '') . 'render: "#' . $div_holder . '",' . 'tooltip: myTooltip,' . 'styles: styleDef,' . 'horizontalGridlines: {' . 'styles: { line: { color: "' . $this->color_grid . '" } }' . '},' . 'verticalGridlines: {' . 'styles: { line: { color: "' . $this->color_grid . '" } }' . '}' . '});' . '});';
     return '<div id="' . $div_holder . '">' . '</div>' . js_embed($res);
 }
示例#11
0
 /**
  * Embeds a recaptcha on your website
  *
  * @param $ssl use SSL to connect to recaptcha.net
  * @return HTML code to display recaptcha
  */
 public function render($ssl = true)
 {
     $conf = RecaptchaConfig::getInstance();
     if (!$conf->getPublicKey() || !$conf->getPrivateKey()) {
         die('ERROR - You need a Recaptcha API key');
     }
     $server = $ssl ? $this->api_url_ssl : $this->api_url;
     $locale = LocaleHandler::getInstance();
     switch ($locale->get()) {
         case 'swe':
             // translation was submitted to recaptcha google group: http://groups.google.com/group/recaptcha/browse_thread/thread/78a677ea59626024
             $opts = 'custom_translations : {' . 'instructions_visual : "Skriv in de två orden:",' . 'instructions_audio : "Skriv in vad du hör:",' . 'play_again : "Spela ljudet igen",' . 'cant_hear_this : "Ladda ner ljudfil som MP3",' . 'visual_challenge : "Se en visuell captcha",' . 'audio_challenge : "Lyssna på en ljud-captcha",' . 'refresh_btn : "Ladda en ny captcha",' . 'help_btn : "Hjälp",' . 'incorrect_try_again : "Fel svar. Försök igen.",' . '},';
             break;
             // http://code.google.com/intl/sv-SE/apis/recaptcha/docs/customization.html    some languages is supported already
         // http://code.google.com/intl/sv-SE/apis/recaptcha/docs/customization.html    some languages is supported already
         case 'eng':
             $opts = 'lang : "en", ';
             break;
         default:
             throw new \Exception('recaptcha translation missing');
     }
     return js_embed('var RecaptchaOptions = { ' . $opts . ' };') . '<script type="text/javascript" src="' . $server . '/challenge?k=' . $conf->getPublicKey() . '"></script>' . '<noscript>' . '<iframe src="' . $server . '/noscript?k=' . $conf->getPublicKey() . '" height="300" width="500" frameborder="0"></iframe><br/>' . '<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>' . '<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>' . '</noscript>';
 }
示例#12
0
namespace cd;

switch ($this->view) {
    case 'handle':
        // handle user rating
        // owner = item type
        // child = item id
        $type = $this->owner;
        $id = $this->child;
        $header->includeJs('http://yui.yahooapis.com/3.4.1/build/yui/yui-min.js');
        $header->includeCss($page->getRelativeCoreDevUrl() . 'js/ext/gallery-ratings/assets/gallery-ratings-core.css');
        $widget_id = 'rate_' . mt_rand();
        $max_stars = 5;
        $js = 'YUI({' . 'modules:{' . '"gallery-ratings":{' . 'fullpath:"' . relurl($page->getRelativeCoreDevUrl()) . 'js/ext/gallery-ratings/gallery-ratings-min.js",' . 'requires:["base","widget"]' . '}' . '},' . 'filter: "raw"' . '}).use("gallery-ratings", function(Y){' . 'var ratings = new Y.Ratings({' . 'max:' . $max_stars . ',' . 'srcNode: "#' . $widget_id . '"' . '});' . 'Y.log("rator created");' . 'Y.on("ratings:ratingChange",function(e){' . 'Y.log("ww2");' . 'YUI().use("io-base", function(Y){' . 'var uri = "u/rate/vote/' . $type . '/' . $id . '/" + e.newVal;' . 'Y.log(uri);' . 'Y.on("io:complete", function(id,o){' . 'var id = id;' . 'var data = o.responseText;' . 'if (data==1) return;' . 'alert("Voting error " + data);' . '});' . 'var request = Y.io(uri);' . '});' . '});' . '});';
        $avg = Rating::getAverage($type, $id);
        echo js_embed($js) . '<span id="' . $widget_id . '">' . round($avg, 1) . '</span>';
        break;
    case 'vote':
        // owner = type
        // child = item id
        // child2 = option id
        echo 'WOWOWsls';
        if (!empty($_GET['rate_vote']) && !empty($_GET['opt'])) {
            if (!$session->id || !is_numeric($_GET['opt'])) {
                die('XXX');
            }
            $page->disableDesign();
            Rating::addVote($type, $_GET['rate_vote'], $_GET['opt']);
            ob_clean();
            // XXX hack.. removes previous output
            die('1');
示例#13
0
 public function render()
 {
     $res = '<head>';
     if ($this->title) {
         $res .= '<title>' . $this->title . '</title>';
     }
     // according to http://code.google.com/p/doctype-mirror/wiki/MetaCharsetAttribute, all major browsers support the short-form <meta charset>
     $res .= '<meta charset="utf-8"/>';
     //        $res .= '<meta http-equiv="content-type" content="text/html;charset=utf-8"/>';   // XHTML 1.0, "long form"
     foreach ($this->meta_tags as $o) {
         $res .= '<meta name="' . $o->name . '" content="' . $o->val . '"/>';
     }
     foreach ($this->include_js as $uri) {
         $res .= '<script type="text/javascript" src="' . $uri . '"></script>';
     }
     foreach ($this->rel as $o) {
         $res .= '<link rel="' . $o->rel_type . '"' . ' href="' . $o->href . '"' . ($o->mime_type ? ' type="' . $o->mime_type . '"' : '') . ($o->title ? ' title="' . $o->title . '"' : '') . '/>';
     }
     $css = '';
     if ($this->embed_css) {
         $css .= $this->embed_css;
     }
     if ($this->css_define) {
         foreach ($this->css_define as $key => $val) {
             $css .= $val;
         }
     }
     if ($css) {
         $res .= css_embed($css);
     }
     $js = '';
     if ($this->js_functions) {
         foreach ($this->js_functions as $key => $val) {
             $js .= $val;
         }
     }
     if ($this->embed_js) {
         $js .= implode('', $this->embed_js);
     }
     if ($this->embed_js_onload) {
         $js .= 'window.onload=function()' . '{' . implode('', $this->embed_js_onload) . '}';
     }
     if ($js) {
         $res .= js_embed($js);
     }
     foreach ($this->include_js_last as $uri) {
         $res .= '<script type="text/javascript" src="' . $uri . '"></script>';
     }
     $res .= '</head>' . "\n";
     $res .= '<body class="yui-skin-sam">' . "\n";
     // required for YUI
     if ($this->reload_time) {
         $res .= js_reload($this->reload_time * 1000);
     }
     return $res;
 }
示例#14
0
/**
 * Embeds SWF using js/swfobject.js, see http://code.google.com/p/swfobject/
 * @flashvars array of key=>val pairs
 */
function js_swfobject($swf, $render_div, $width = 300, $height = 120, $flashvars = '', $params = '', $attributes = '')
{
    $page = \cd\XmlDocumentHandler::getInstance();
    $header = \cd\XhtmlHeader::getInstance();
    $header->includeJs($page->getRelativeCoreDevUrl() . 'js/swfobject.js');
    $min_version = '9.0.115';
    // first version to support MP4
    $js = 'var flashvars=' . json_encode($flashvars) . ';' . 'var params=' . json_encode($params) . ';' . 'var attributes=' . json_encode($attributes) . ';' . 'swfobject.embedSWF("' . $swf . '","' . $render_div . '","' . $width . '","' . $height . '","' . $min_version . '","false",flashvars,params,attributes);';
    return js_embed($js);
}
示例#15
0
 function render()
 {
     if (!$this->columns) {
         throw new \Exception('no columns');
     }
     $header = XhtmlHeader::getInstance();
     if ($this->show_paginator) {
         $header->includeCss('core_dev/js/ext/yui/2.9.0/build/paginator/assets/skins/sam/paginator.css');
     }
     $header->includeCss('core_dev/js/ext/yui/2.9.0/build/datatable/assets/skins/sam/datatable.css');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/connection/connection-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/datasource/datasource-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/element/element-min.js');
     if ($this->show_paginator) {
         $header->includeJs('core_dev/js/ext/yui/2.9.0/build/paginator/paginator-min.js');
     }
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/datatable/datatable-min.js');
     $header->includeJs('core_dev/js/ext/yui/2.9.0/build/json/json-min.js');
     $div_holder = 'yui_dt' . mt_rand();
     $data_var = 'yui_dt_data' . mt_rand();
     $pag_holder = 'yui_pag' . mt_rand();
     $res = 'YAHOO.util.Event.addListener(window, "load", function() {' . 'YAHOO.example.Basic = function() {' . 'this.formatLink = function(elLiner, oRecord, oColumn, oData) {' . 'if (!oData) return;' . 'var prefix = oColumn["extra_data"];' . 'var col_label_name = oColumn["col_label"];' . 'var col_label = oRecord._oData[col_label_name];' . 'elLiner.innerHTML = "<a href=\\"" + prefix + oData + "\\">" + (col_label ? col_label : oData) + "</a>";' . '};' . 'this.formatDate = function(elLiner, oRecord, oColumn, oData) {' . 'if (!oData) return;' . 'var a1 = oData.substr(0,10).split("-");' . 'elLiner.innerHTML = a1[0]+"-"+a1[1]+"-"+a1[2];' . '};' . 'this.formatTime = function(elLiner, oRecord, oColumn, oData) {' . 'if (!oData) return;' . 'var a1 = oData.substr(0,10).split("-");' . 'var a2 = oData.substr(11,8).split(":");' . 'elLiner.innerHTML = a1[0]+"-"+a1[1]+"-"+a1[2]+" "+a2[0]+":"+a2[1]+":"+a2[2];' . '};' . 'this.formatMoney = function(elLiner, oRecord, oColumn, oData) {' . 'var val = Number(oData) / 100;' . 'elLiner.innerHTML = val.toFixed(2);' . '};' . 'this.formatBool = function(elLiner, oRecord, oColumn, oData) {' . 'elLiner.innerHTML = \'<img src="' . relurl('core_dev/gfx/icon_ok') . '\' + ( oData == 1 ? "" : "_gray") + \'.png"/>\';' . '};';
     for ($i = 0; $i < count($this->embed_arrays); $i++) {
         $res .= 'this.formatArray' . $i . ' = function(elLiner, oRecord, oColumn, oData) {' . 'var a=' . Json::encodeObject($this->embed_arrays[$i]) . ';' . 'elLiner.innerHTML = a[oData];' . '};' . 'YAHOO.widget.DataTable.Formatter.formatArray' . $i . ' = this.formatArray' . $i . ';';
     }
     $res .= 'YAHOO.widget.DataTable.Formatter.formatLink = this.formatLink;' . 'YAHOO.widget.DataTable.Formatter.formatDate = this.formatDate;' . 'YAHOO.widget.DataTable.Formatter.formatTime = this.formatTime;' . 'YAHOO.widget.DataTable.Formatter.formatMoney = this.formatMoney;' . 'YAHOO.widget.DataTable.Formatter.formatBool = this.formatBool;' . 'myColumnDefs = ' . Json::encode($this->columns) . ';' . "\n" . (is_array($this->data_source) ? 'var ' . $data_var . ' = ' . Json::encode($this->data_source) . ';' . "\n" . 'var myDataSource = new YAHOO.util.DataSource(' . $data_var . ');' . 'myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;' . 'myDataSource.responseSchema = { fields:' . Json::encode($this->response_fields, false) . '};' : 'var myDataSource = new YAHOO.util.DataSource("' . $this->data_source . '");' . 'myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;' . 'myDataSource.responseSchema = {' . 'resultsList: "records",' . 'fields: ' . Json::encode($this->response_fields, false) . ',' . 'metaFields: { totalRecords:"totalRecords" }' . '};');
     if ($this->color_rows) {
         // Define a custom row formatter function
         $res .= 'var myRowFormatter = function(elTr, oRecord) {';
         foreach ($this->color_rows as $col) {
             $c1 = is_numeric($col->c1) ? $col->c1 : 'parseInt( oRecord.getData("' . $col->c1 . '") )';
             $c2 = is_numeric($col->c2) ? $col->c2 : 'parseInt( oRecord.getData("' . $col->c2 . '") )';
             $res .= 'if (' . $c1 . ' ' . $col->comparison . ' ' . $c2 . ') YAHOO.util.Dom.addClass(elTr, "' . $col->css . '");';
             //                        'alert( '.$c1.' + " '.$col->comparison.' " + '.$c2.' + " = " + ('.$c1.' '.$col->comparison.' '.$c2.')   );';
         }
         $res .= 'return true;' . '};';
     }
     $res .= 'var myConfigs = {' . 'caption:"' . $this->caption . '",' . ($this->pixel_width ? 'width:"' . $this->pixel_width . 'px",' : '') . ($this->pixel_height ? 'height:"' . $this->pixel_height . 'px",' : '') . ($this->sort_order ? 'sortedBy: {' . 'key:"' . $this->columns[$this->sort_column]->key . '",' . 'dir:YAHOO.widget.DataTable.' . ($this->sort_order == 'asc' ? 'CLASS_ASC' : 'CLASS_DESC') . '},' : '') . ($this->color_rows ? 'formatRow: myRowFormatter,' : '') . ($this->show_paginator ? 'paginator: new YAHOO.widget.Paginator({' . (is_array($this->data_source) ? 'totalRecords:' . count($this->data_source) . ',' : '') . 'rowsPerPage:' . $this->rows_per_page . ',' . 'rowsPerPageOptions:[' . implode(',', $this->rpp_opts) . '],' . 'containers:["' . $pag_holder . '"],' . 'template:"{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} &nbsp; {CurrentPageReport} {RowsPerPageDropdown} per page",' . 'pageReportTemplate:"Showing items {startRecord} - {endRecord} of {totalRecords}",' . '}),' : '') . (!is_array($this->data_source) ? 'dynamicData:true,' . 'initialRequest:"startIndex=0' . ($this->sort_column !== false ? '&sort=' . $this->columns[$this->sort_column]->key : '') . ($this->sort_order ? '&dir=' . $this->sort_order : '') . '&results=' . $this->rows_per_page . '"' : '') . '};';
     $tbl_type = $this->pixel_width || $this->pixel_height ? 'ScrollingDataTable' : 'DataTable';
     $res .= 'tbl = new YAHOO.widget.' . $tbl_type . '("' . $div_holder . '",myColumnDefs, myDataSource, myConfigs);' . (!is_array($this->data_source) ? 'tbl.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {' . 'oPayload.totalRecords = oResponse.meta.totalRecords;' . 'return oPayload;' . '};' : '') . 'tbl.subscribe("rowMouseoverEvent", tbl.onEventHighlightRow);' . 'tbl.subscribe("rowMouseoutEvent", tbl.onEventUnhighlightRow);' . 'return {' . 'oDS: myDataSource,' . 'oDT: tbl' . '};' . '}();' . '});';
     return '<div id="' . $pag_holder . '"></div>' . '<div id="' . $div_holder . '"></div>' . js_embed($res);
 }