From a783893403fc4fae232722f92adc52765e0b3c1b Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Tue, 5 Sep 2017 19:04:45 +0200 Subject: [PATCH] Set statustext value as text by default - Introduce new boolean attribute called statustext_html in case we want explicitly statustext gets rendered as html - Fix Calendar tooltip with new statustext_html attribute --- api/js/etemplate/et2_core_baseWidget.js | 8 +++++++- api/js/jsapi/egw_tooltip.js | 16 ++++++++++++---- calendar/js/et2_widget_event.js | 9 +++++---- calendar/templates/default/conflicts.xet | 4 ++-- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/api/js/etemplate/et2_core_baseWidget.js b/api/js/etemplate/et2_core_baseWidget.js index b384c2967e..6acb3c9284 100644 --- a/api/js/etemplate/et2_core_baseWidget.js +++ b/api/js/etemplate/et2_core_baseWidget.js @@ -32,6 +32,12 @@ var et2_baseWidget = (function(){ "use strict"; return et2_DOMWidget.extend(et2_ "description": "Tooltip which is shown for this element", "translate": true }, + "statustext_html": { + "name": "Tooltip is html", + "type": "boolean", + "description": "Flag to allow html content in tooltip", + "default": false + }, "align": { "name": "Align", "type": "string", @@ -277,7 +283,7 @@ var et2_baseWidget = (function(){ "use strict"; return et2_DOMWidget.extend(et2_ if (_value && _value != '') { - this.egw().tooltipBind(elem, _value); + this.egw().tooltipBind(elem, _value, this.options.statustext_html); this._tooltipElem = elem; } } diff --git a/api/js/jsapi/egw_tooltip.js b/api/js/jsapi/egw_tooltip.js index c7a6b11443..64a76365d7 100644 --- a/api/js/jsapi/egw_tooltip.js +++ b/api/js/jsapi/egw_tooltip.js @@ -106,8 +106,9 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) * Creates the tooltip_div with the given text. * * @param {string} _html + * @param {boolean} _isHtml if set to true content gets appended as html */ - function prepare(_html) + function prepare(_html, _isHtml) { // Free and null the old tooltip_div hide(); @@ -115,7 +116,14 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) //Generate the tooltip div, set it's text and append it to the body tag tooltip_div = jQuery(_wnd.document.createElement('div')); tooltip_div.hide(); - tooltip_div.append(_html); + if (_isHtml) + { + tooltip_div.append(_html); + } + else + { + tooltip_div.text(_html) + } tooltip_div.addClass("egw_tooltip"); jQuery(_wnd.document.body).append(tooltip_div); @@ -156,14 +164,14 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) * has to be a jQuery node. * @param _html is the html code which should be shown as tooltip. */ - tooltipBind: function(_elem, _html) { + tooltipBind: function(_elem, _html, _isHtml) { if (_html != '') { _elem.bind('mouseenter.tooltip', function(e) { if (_elem != current_elem) { //Prepare the tooltip - prepare(_html); + prepare(_html, _isHtml); // Set the current element the mouse is over and // initialize the position variables diff --git a/calendar/js/et2_widget_event.js b/calendar/js/et2_widget_event.js index 6fb33531f4..12ffc77fd4 100644 --- a/calendar/js/et2_widget_event.js +++ b/calendar/js/et2_widget_event.js @@ -79,6 +79,7 @@ var et2_calendar_event = (function(){ "use strict"; return et2_valueWidget.exten // Tooltip if(!event._tooltipElem) { + event.options.statustext_html = true; event.set_statustext(event._tooltip()); return event.div.trigger('mouseenter'); } @@ -209,7 +210,7 @@ var et2_calendar_event = (function(){ "use strict"; return et2_valueWidget.exten { parent._out_of_view(); } - + // This should now cease to exist, as new events have been created this.free(); return; @@ -521,7 +522,7 @@ var et2_calendar_event = (function(){ "use strict"; return et2_valueWidget.exten ''+egw.htmlspecialchars(this.options.value.title)+'
'+ egw.htmlspecialchars(this.options.value.description)+'

'+ '

'+times+'

'+ - (this.options.value.location ? '

'+this.egw().lang('Location') + ':' + + (this.options.value.location ? '

'+this.egw().lang('Location') + ':' + egw.htmlspecialchars(this.options.value.location)+'

' : '')+ (cat_label ? '

'+this.egw().lang('Category') + ':' + cat_label +'

' : '')+ '

'+this.egw().lang('Participants')+':
'+ @@ -541,7 +542,7 @@ var et2_calendar_event = (function(){ "use strict"; return et2_valueWidget.exten { return ''; } - + var participant_status = {A: 0, R: 0, T: 0, U: 0, D: 0}; var status_label = {A: 'accepted', R: 'rejected', T: 'tentative', U: 'unknown', D: 'delegated'}; var participant_summary = Object.keys(this.options.value.participants).length + ' ' + this.egw().lang('Participants')+': '; @@ -914,7 +915,7 @@ var et2_calendar_event = (function(){ "use strict"; return et2_valueWidget.exten } } }, - + /** * Link the actions to the DOM nodes / widget bits. * diff --git a/calendar/templates/default/conflicts.xet b/calendar/templates/default/conflicts.xet index f43a9c4b1b..67f08d945e 100644 --- a/calendar/templates/default/conflicts.xet +++ b/calendar/templates/default/conflicts.xet @@ -14,10 +14,10 @@ - + - +