2011-08-16 15:12:39 +02:00
/ * *
2013-04-13 21:00:13 +02:00
* EGroupware eTemplate2 - JS widget class containing raw HTML
2011-08-16 15:12:39 +02:00
*
* @ license http : //opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @ package etemplate
* @ subpackage api
2021-06-07 17:33:53 +02:00
* @ link https : //www.egroupware.org
2011-08-16 15:12:39 +02:00
* @ author Andreas Stöckel
* /
/ * e g w : u s e s
2020-02-06 16:47:08 +01:00
jsapi . jsapi ; // Needed for egw_seperateJavaScript
/ v e n d o r / b o w e r - a s s e t / j q u e r y / d i s t / j q u e r y . j s ;
et2 _core _baseWidget ;
2011-08-16 15:12:39 +02:00
* /
2021-06-07 17:33:53 +02:00
import { et2 _valueWidget } from "./et2_core_valueWidget" ;
import { et2 _register _widget } from "./et2_core_widget" ;
import { ClassWithAttributes } from "./et2_core_inheritance" ;
import { et2 _no _init } from "./et2_core_common" ;
2013-04-13 21:00:13 +02:00
/ * *
* @ augments et2 _valueWidget
* /
2021-06-07 17:33:53 +02:00
export class et2 _html extends et2 _valueWidget {
2020-02-06 16:47:08 +01:00
/ * *
* Constructor
*
* @ memberOf et2 _html
* /
2021-06-07 17:33:53 +02:00
constructor ( _parent , _attrs , _child ) {
2020-02-06 16:47:08 +01:00
// Call the inherited constructor
2021-06-07 17:33:53 +02:00
super ( _parent , _attrs , ClassWithAttributes . extendAttributes ( et2 _html . _attributes , _child || { } ) ) ;
this . htmlNode = null ;
2020-02-06 16:47:08 +01:00
// Allow no child widgets
2021-06-07 17:33:53 +02:00
this . supportedWidgetClasses = [ ] ;
this . htmlNode = jQuery ( document . createElement ( "span" ) ) ;
if ( this . getType ( ) == 'htmlarea' ) {
this . htmlNode . addClass ( 'et2_textbox_ro' ) ;
2020-02-06 16:47:08 +01:00
}
2021-06-07 17:33:53 +02:00
if ( this . options . label ) {
this . htmlNode . append ( '<span class="et2_label">' + this . options . label + '</span>' ) ;
2020-02-06 16:47:08 +01:00
}
2021-06-07 17:33:53 +02:00
this . setDOMNode ( this . htmlNode [ 0 ] ) ;
2020-02-06 16:47:08 +01:00
}
2021-06-07 17:33:53 +02:00
loadContent ( _data ) {
2020-02-06 16:47:08 +01:00
// Create an object containg the given value and an empty js string
2021-06-07 17:33:53 +02:00
let html = { html : _data ? _data : '' , js : '' } ;
// Separate the javascript from the given html. The js code will be
2020-02-06 16:47:08 +01:00
// written to the previously created empty js string
egw _seperateJavaScript ( html ) ;
// Append the html to the parent element
if ( this . options . label ) {
this . htmlNode . append ( '<span class="et2_label">' + this . options . label + '</span>' ) ;
}
this . htmlNode . append ( html . html ) ;
this . htmlNode . append ( html . js ) ;
2021-06-07 17:33:53 +02:00
}
set _value ( _value ) {
2020-02-06 16:47:08 +01:00
this . htmlNode . empty ( ) ;
this . loadContent ( _value ) ;
2021-06-07 17:33:53 +02:00
}
2020-02-06 16:47:08 +01:00
/ * *
* Code for implementing et2 _IDetachedDOM
*
* @ param { array } _attrs
* /
2021-06-07 17:33:53 +02:00
getDetachedAttributes ( _attrs ) {
2020-02-06 16:47:08 +01:00
_attrs . push ( "value" , "class" ) ;
2021-06-07 17:33:53 +02:00
}
getDetachedNodes ( ) {
2020-02-06 16:47:08 +01:00
return [ this . htmlNode [ 0 ] ] ;
2021-06-07 17:33:53 +02:00
}
setDetachedAttributes ( _nodes , _values ) {
2020-02-06 16:47:08 +01:00
this . htmlNode = jQuery ( _nodes [ 0 ] ) ;
if ( typeof _values [ 'value' ] !== 'undefined' ) {
this . set _value ( _values [ 'value' ] ) ;
}
2021-06-07 17:33:53 +02:00
}
}
et2 _html . _attributes = {
'label' : {
'default' : "" ,
description : "The label is displayed by default in front (for radiobuttons behind) each widget (if not empty). If you want to specify a different position, use a '%s' in the label, which gets replaced by the widget itself. Eg. '%s Name' to have the label Name behind a checkbox. The label can contain variables, as descript for name. If the label starts with a '@' it is replaced by the value of the content-array at this index (with the '@'-removed and after expanding the variables)." ,
ignore : false ,
name : "Label" ,
translate : true ,
type : "string"
} ,
"needed" : {
"ignore" : true
} ,
value : {
name : "Value" ,
description : "The value of the widget" ,
type : "html" ,
default : et2 _no _init
}
} ;
et2 _register _widget ( et2 _html , [ "html" , "htmlarea_ro" ] ) ;
2020-02-06 16:47:08 +01:00
//# sourceMappingURL=et2_widget_html.js.map