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
This commit is contained in:
Hadi Nategh 2017-09-05 19:04:45 +02:00
parent 7c7b1711e5
commit 0ececf8c78
4 changed files with 26 additions and 11 deletions

View File

@ -32,6 +32,12 @@ var et2_baseWidget = (function(){ "use strict"; return et2_DOMWidget.extend(et2_
"description": "Tooltip which is shown for this element", "description": "Tooltip which is shown for this element",
"translate": true "translate": true
}, },
"statustext_html": {
"name": "Tooltip is html",
"type": "boolean",
"description": "Flag to allow html content in tooltip",
"default": false
},
"align": { "align": {
"name": "Align", "name": "Align",
"type": "string", "type": "string",
@ -277,7 +283,7 @@ var et2_baseWidget = (function(){ "use strict"; return et2_DOMWidget.extend(et2_
if (_value && _value != '') if (_value && _value != '')
{ {
this.egw().tooltipBind(elem, _value); this.egw().tooltipBind(elem, _value, this.options.statustext_html);
this._tooltipElem = elem; this._tooltipElem = elem;
} }
} }

View File

@ -106,8 +106,9 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd)
* Creates the tooltip_div with the given text. * Creates the tooltip_div with the given text.
* *
* @param {string} _html * @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 // Free and null the old tooltip_div
hide(); 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 //Generate the tooltip div, set it's text and append it to the body tag
tooltip_div = jQuery(_wnd.document.createElement('div')); tooltip_div = jQuery(_wnd.document.createElement('div'));
tooltip_div.hide(); tooltip_div.hide();
tooltip_div.append(_html); if (_isHtml)
{
tooltip_div.append(_html);
}
else
{
tooltip_div.text(_html)
}
tooltip_div.addClass("egw_tooltip"); tooltip_div.addClass("egw_tooltip");
jQuery(_wnd.document.body).append(tooltip_div); 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. * has to be a jQuery node.
* @param _html is the html code which should be shown as tooltip. * @param _html is the html code which should be shown as tooltip.
*/ */
tooltipBind: function(_elem, _html) { tooltipBind: function(_elem, _html, _isHtml) {
if (_html != '') if (_html != '')
{ {
_elem.bind('mouseenter.tooltip', function(e) { _elem.bind('mouseenter.tooltip', function(e) {
if (_elem != current_elem) if (_elem != current_elem)
{ {
//Prepare the tooltip //Prepare the tooltip
prepare(_html); prepare(_html, _isHtml);
// Set the current element the mouse is over and // Set the current element the mouse is over and
// initialize the position variables // initialize the position variables

View File

@ -79,6 +79,7 @@ var et2_calendar_event = (function(){ "use strict"; return et2_valueWidget.exten
// Tooltip // Tooltip
if(!event._tooltipElem) if(!event._tooltipElem)
{ {
event.options.statustext_html = true;
event.set_statustext(event._tooltip()); event.set_statustext(event._tooltip());
return event.div.trigger('mouseenter'); return event.div.trigger('mouseenter');
} }

View File

@ -14,10 +14,10 @@
</columns> </columns>
<rows> <rows>
<row valign="top"> <row valign="top">
<image src="conflicts[$row][icon_participants]" statustext="@conflicts[$row][tooltip_participants]" no_lang="1"/> <image src="conflicts[$row][icon_participants]" statustext_html="true" statustext="@conflicts[$row][tooltip_participants]" no_lang="1"/>
<image src="conflicts[$row][icon_recur]" label="@conflicts[$row][text_recur]" no_lang="1"/> <image src="conflicts[$row][icon_recur]" label="@conflicts[$row][text_recur]" no_lang="1"/>
<description id="conflicts[$row][time]" no_lang="1"/> <description id="conflicts[$row][time]" no_lang="1"/>
<vbox statustext="conflict[$row][tooltip]" orient=",0,0"> <vbox statustext="conflict[$row][tooltip]" statustext_html="true" orient=",0,0">
<description id="conflicts[$row][title]" no_lang="1" options="b"/> <description id="conflicts[$row][title]" no_lang="1" options="b"/>
<description id="conflicts[$row][conflicting_participants]" no_lang="1"/> <description id="conflicts[$row][conflicting_participants]" no_lang="1"/>
</vbox> </vbox>