mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-23 07:09:20 +01:00
Get radio customfield working in popup + nm
This commit is contained in:
parent
282888715b
commit
be878e3e79
@ -304,6 +304,15 @@ var et2_customfields_list = et2_baseWidget.extend([et2_IDetachedDOM], {
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_setup_radio: function(field_name, field, attrs) {
|
||||||
|
// No label on the widget itself
|
||||||
|
delete(attrs.label);
|
||||||
|
|
||||||
|
field.type = 'radiogroup';
|
||||||
|
attrs.options = field.values;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
_setup_checkbox: function(field_name, field, attrs) {
|
_setup_checkbox: function(field_name, field, attrs) {
|
||||||
// Read-only checkbox is just text
|
// Read-only checkbox is just text
|
||||||
if(attrs.readonly)
|
if(attrs.readonly)
|
||||||
|
@ -54,23 +54,31 @@ var et2_radiobox = et2_inputWidget.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
createInputWidget: function() {
|
createInputWidget: function() {
|
||||||
this.input = $j(document.createElement("input")).attr("type", "radio");
|
this.input = $j(document.createElement("input"))
|
||||||
|
.val(this.options.set_value)
|
||||||
|
.attr("type", "radio");
|
||||||
|
|
||||||
this.input.addClass("et2_radiobox");
|
this.input.addClass("et2_radiobox");
|
||||||
|
|
||||||
this.setDOMNode(this.input[0]);
|
this.setDOMNode(this.input[0]);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
set_name: function(_name) {
|
||||||
|
if(_name.substr(_name.length-2) != "[]")
|
||||||
|
{
|
||||||
|
_name += "[]";
|
||||||
|
}
|
||||||
|
this.input.attr("name", _name);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Override default to match against set/unset value
|
* Override default to match against set/unset value
|
||||||
*/
|
*/
|
||||||
set_value: function(_value) {
|
set_value: function(_value) {
|
||||||
if(_value != this.value) {
|
if(_value == this.options.set_value) {
|
||||||
if(_value == this.set_value) {
|
this.input.attr("checked", "checked");
|
||||||
this.input.attr("checked", "checked");
|
} else {
|
||||||
} else {
|
this.input.removeAttr("checked");
|
||||||
this.input.removeAttr("checked");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -78,11 +86,156 @@ var et2_radiobox = et2_inputWidget.extend({
|
|||||||
* Override default to return unchecked value
|
* Override default to return unchecked value
|
||||||
*/
|
*/
|
||||||
getValue: function() {
|
getValue: function() {
|
||||||
if(this.input.attr("checked")) {
|
if(jQuery("input:checked", this._parent.getDOMNode()).val() == this.options.set_value) {
|
||||||
return this.set_value;
|
return this.options.set_value;
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
et2_register_widget(et2_radiobox, ["radio"]);
|
et2_register_widget(et2_radiobox, ["radio"]);
|
||||||
|
|
||||||
|
var et2_radiobox_ro = et2_valueWidget.extend([et2_IDetachedDOM], {
|
||||||
|
|
||||||
|
attributes: {
|
||||||
|
"set_value": {
|
||||||
|
"name": "Set value",
|
||||||
|
"type": "string",
|
||||||
|
"default": "true",
|
||||||
|
"description": "Value when selected"
|
||||||
|
},
|
||||||
|
"ro_true": {
|
||||||
|
"name": "Read only selected",
|
||||||
|
"type": "string",
|
||||||
|
"default": "x",
|
||||||
|
"description": "What should be displayed when readonly and selected"
|
||||||
|
},
|
||||||
|
"ro_false": {
|
||||||
|
"name": "Read only unselected",
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"description": "What should be displayed when readonly and not selected"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"name": "Label",
|
||||||
|
"default": "",
|
||||||
|
"type": "string",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
init: function() {
|
||||||
|
this._super.apply(this, arguments);
|
||||||
|
|
||||||
|
this.value = "";
|
||||||
|
this.span = $j(document.createElement("span"))
|
||||||
|
.addClass("et2_radiobox");
|
||||||
|
|
||||||
|
this.setDOMNode(this.span[0]);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override default to match against set/unset value
|
||||||
|
*/
|
||||||
|
set_value: function(_value) {
|
||||||
|
if(_value == this.options.set_value) {
|
||||||
|
this.span.text(this.options.ro_true);
|
||||||
|
} else {
|
||||||
|
this.span.text(this.options.ro_false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Code for implementing et2_IDetachedDOM
|
||||||
|
*/
|
||||||
|
getDetachedAttributes: function(_attrs)
|
||||||
|
{
|
||||||
|
// Show label in nextmatch instead of just x
|
||||||
|
this.options.ro_true = this.options.label;
|
||||||
|
_attrs.push("value");
|
||||||
|
},
|
||||||
|
|
||||||
|
getDetachedNodes: function()
|
||||||
|
{
|
||||||
|
return [this.span[0]];
|
||||||
|
},
|
||||||
|
|
||||||
|
setDetachedAttributes: function(_nodes, _values)
|
||||||
|
{
|
||||||
|
this.span = jQuery(_nodes[0]);
|
||||||
|
this.set_value(_values["value"]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
et2_register_widget(et2_radiobox_ro, ["radio_ro"]);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A group of radio buttons
|
||||||
|
*/
|
||||||
|
var et2_radioGroup = et2_box.extend({
|
||||||
|
|
||||||
|
attributes: {
|
||||||
|
"value": {
|
||||||
|
"name": "Value",
|
||||||
|
"type": "string",
|
||||||
|
"default": "true",
|
||||||
|
"description": "Value for each radio button"
|
||||||
|
},
|
||||||
|
"ro_true": {
|
||||||
|
"name": "Read only selected",
|
||||||
|
"type": "string",
|
||||||
|
"default": "x",
|
||||||
|
"description": "What should be displayed when readonly and selected"
|
||||||
|
},
|
||||||
|
"ro_false": {
|
||||||
|
"name": "Read only unselected",
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"description": "What should be displayed when readonly and not selected"
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"name": "Radio options",
|
||||||
|
"type": "any",
|
||||||
|
"default": {},
|
||||||
|
"description": "Options for radio buttons. Should be {value: label, ...}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
createNamespace: false,
|
||||||
|
|
||||||
|
init: function(parent, attrs) {
|
||||||
|
attrs.type = "vbox";
|
||||||
|
this._super.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_value: function(_value) {
|
||||||
|
this.value = _value;
|
||||||
|
for (var i = 0; i < this._children.length; i++)
|
||||||
|
{
|
||||||
|
var radio = this._children[i];
|
||||||
|
radio.set_value(_value);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a bunch of radio buttons
|
||||||
|
* Options should be {value: label, ...}
|
||||||
|
*/
|
||||||
|
set_options: function(_options) {
|
||||||
|
for(var key in _options)
|
||||||
|
{
|
||||||
|
var attrs = {
|
||||||
|
// Add index so radios work properly
|
||||||
|
"id": (this.options.readonly ? this.id : this.id + "[" + "]"),
|
||||||
|
set_value: key,
|
||||||
|
label: _options[key],
|
||||||
|
ro_true: this.options.ro_true,
|
||||||
|
ro_false: this.options.ro_false,
|
||||||
|
readonly: this.options.readonly
|
||||||
|
}
|
||||||
|
var radio = et2_createWidget("radio", attrs, this);
|
||||||
|
// radio.set_name(this.id);
|
||||||
|
}
|
||||||
|
this.set_value(this.value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// No such tag as 'radiogroup', but it needs something
|
||||||
|
et2_register_widget(et2_radioGroup, ["radiogroup"]);
|
||||||
|
Loading…
Reference in New Issue
Block a user