forked from extern/egroupware
Get the link entry app selection menu working again
This commit is contained in:
parent
1d0772a064
commit
54e5826fc7
@ -102,7 +102,8 @@ export class et2_link_to extends et2_inputWidget
|
||||
*
|
||||
* @memberOf et2_link_to
|
||||
*/
|
||||
constructor(_parent : et2_widget, _attrs? : WidgetConfig, _child? : object) {
|
||||
constructor(_parent: et2_widget, _attrs?: WidgetConfig, _child?: object)
|
||||
{
|
||||
super(_parent, _attrs, ClassWithAttributes.extendAttributes(et2_link_to._attributes, _child || {}));
|
||||
|
||||
this.div = jQuery(document.createElement("div")).addClass("et2_link_to et2_toolbar");
|
||||
@ -143,13 +144,20 @@ export class et2_link_to extends et2_inputWidget
|
||||
*/
|
||||
getDOMNode(_sender)
|
||||
{
|
||||
if(_sender == this) {
|
||||
if (_sender == this)
|
||||
{
|
||||
return this.div[0];
|
||||
} else if (_sender._type == 'link-entry') {
|
||||
}
|
||||
else if (_sender._type == 'link-entry')
|
||||
{
|
||||
return this.link_div[0];
|
||||
} else if (_sender._type == 'file') {
|
||||
}
|
||||
else if (_sender._type == 'file')
|
||||
{
|
||||
return this.file_div[0];
|
||||
} else if (_sender._type == 'vfs-select') {
|
||||
}
|
||||
else if (_sender._type == 'vfs-select')
|
||||
{
|
||||
return this.filemanager_button[0];
|
||||
}
|
||||
}
|
||||
@ -203,8 +211,16 @@ export class et2_link_to extends et2_inputWidget
|
||||
only_app: this.options.only_app,
|
||||
application_list: this.options.application_list,
|
||||
blur: this.options.search_label ? this.options.search_label : this.egw().lang('Search...'),
|
||||
query: function() { self.link_button.hide(); return true;},
|
||||
select: function() {self.link_button.show(); return true;},
|
||||
query: function ()
|
||||
{
|
||||
self.link_button.hide();
|
||||
return true;
|
||||
},
|
||||
select: function ()
|
||||
{
|
||||
self.link_button.show();
|
||||
return true;
|
||||
},
|
||||
readonly: this.options.readonly
|
||||
};
|
||||
this.link_entry = <et2_link_entry>et2_createWidget("link-entry", link_entry_attrs, this);
|
||||
@ -246,7 +262,8 @@ export class et2_link_to extends et2_inputWidget
|
||||
};
|
||||
// only set server-side callback, if we have a real application-id (not null or array)
|
||||
// otherwise it only gives an error on server-side
|
||||
if (self.options.value && self.options.value.to_id && typeof self.options.value.to_id != 'object') {
|
||||
if (self.options.value && self.options.value.to_id && typeof self.options.value.to_id != 'object')
|
||||
{
|
||||
select_attrs.method = 'EGroupware\\Api\\Etemplate\\Widget\\Link::ajax_link_existing';
|
||||
select_attrs.method_id = self.options.value.to_app + ':' + self.options.value.to_id;
|
||||
}
|
||||
@ -267,9 +284,11 @@ export class et2_link_to extends et2_inputWidget
|
||||
{
|
||||
// Find the tab widget, if there is one
|
||||
var tabs: et2_widget = self;
|
||||
do {
|
||||
do
|
||||
{
|
||||
tabs = tabs.getParent();
|
||||
} while (tabs != self.getRoot() && tabs.getType() != 'tabbox');
|
||||
}
|
||||
while (tabs != self.getRoot() && tabs.getType() != 'tabbox');
|
||||
if (tabs != self.getRoot())
|
||||
{
|
||||
(<et2_tabbox><unknown>tabs).activateTab(self);
|
||||
@ -325,7 +344,8 @@ export class et2_link_to extends et2_inputWidget
|
||||
// Files
|
||||
if (!self.options.no_files)
|
||||
{
|
||||
for(var file in self.file_upload.options.value) {
|
||||
for (var file in self.file_upload.options.value)
|
||||
{
|
||||
|
||||
links.push({
|
||||
app: 'file',
|
||||
@ -333,7 +353,10 @@ export class et2_link_to extends et2_inputWidget
|
||||
name: self.file_upload.options.value[file].name,
|
||||
type: self.file_upload.options.value[file].type,
|
||||
remark: jQuery("li[file='" + self.file_upload.options.value[file].name.replace(/'/g, '"') + "'] > input", self.file_upload.progress)
|
||||
.filter(function() { return jQuery(this).attr("placeholder") != jQuery(this).val();}).val()
|
||||
.filter(function ()
|
||||
{
|
||||
return jQuery(this).attr("placeholder") != jQuery(this).val();
|
||||
}).val()
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -366,7 +389,8 @@ export class et2_link_to extends et2_inputWidget
|
||||
this.status_span.fadeIn().delay(1000).fadeOut();
|
||||
delete this.options.value.app;
|
||||
delete this.options.value.id;
|
||||
for(var file in this.file_upload.options.value) {
|
||||
for (var file in this.file_upload.options.value)
|
||||
{
|
||||
delete this.file_upload.options.value[file];
|
||||
}
|
||||
this.file_upload.progress.empty();
|
||||
@ -407,8 +431,10 @@ export class et2_link_to extends et2_inputWidget
|
||||
var self = this;
|
||||
var list_widget = null;
|
||||
this.getRoot().iterateOver(
|
||||
function(widget) {
|
||||
if(widget.id == self.id) {
|
||||
function (widget)
|
||||
{
|
||||
if (widget.id == self.id)
|
||||
{
|
||||
list_widget = widget;
|
||||
if (success === true)
|
||||
{
|
||||
@ -433,7 +459,8 @@ export class et2_link_to extends et2_inputWidget
|
||||
if (typeof link.title == 'undefined')
|
||||
{
|
||||
// Callback to server for title
|
||||
egw.link_title(link.app, link.id, function(title) {
|
||||
egw.link_title(link.app, link.id, function (title)
|
||||
{
|
||||
link.title = title;
|
||||
list_widget._add_link(link);
|
||||
});
|
||||
@ -470,6 +497,7 @@ export class et2_link_to extends et2_inputWidget
|
||||
this.options.no_files = no_files;
|
||||
}
|
||||
}
|
||||
|
||||
et2_register_widget(et2_link_to, ["link-to"]);
|
||||
|
||||
/**
|
||||
@ -510,7 +538,8 @@ export class et2_link_apps extends et2_selectbox
|
||||
}
|
||||
// Register to update preference
|
||||
var self = this;
|
||||
this.input.bind("click",function() {
|
||||
this.input.bind("click", function ()
|
||||
{
|
||||
if (typeof self.options.value != 'undefined') var appname = self.options.value.to_app;
|
||||
egw.set_preference(appname || self.egw().getAppName(), 'link_app', self.getValue());
|
||||
});
|
||||
@ -547,6 +576,7 @@ export class et2_link_apps extends et2_selectbox
|
||||
super.transformAttributes(_attrs);
|
||||
}
|
||||
}
|
||||
|
||||
et2_register_widget(et2_link_apps, ["link-apps"]);
|
||||
|
||||
/**
|
||||
@ -641,7 +671,8 @@ export class et2_link_entry extends et2_inputWidget
|
||||
this.createInputWidget();
|
||||
var self = this;
|
||||
|
||||
jQuery(this.getInstanceManager().DOMContainer).on('clear', function(){
|
||||
jQuery(this.getInstanceManager().DOMContainer).on('clear', function ()
|
||||
{
|
||||
// We need to unbind events to prevent a second triggerd event handler
|
||||
// (eg. setting a project in infolog edit dialog) when the widget gets cleared.
|
||||
jQuery(self.getDOMNode()).off();
|
||||
@ -670,40 +701,17 @@ export class et2_link_entry extends et2_inputWidget
|
||||
|
||||
// Application selection
|
||||
jQuery.widget("custom.iconselectmenu", jQuery.ui.selectmenu, {
|
||||
_setText: function(element, value)
|
||||
_renderButtonItem: function (value)
|
||||
{
|
||||
if(element === this.buttonText)
|
||||
{
|
||||
this._setButtonText(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
this._superApply(element, value);
|
||||
}
|
||||
},
|
||||
|
||||
_setButtonText: function( value )
|
||||
{
|
||||
|
||||
var _value = this.focusIndex;
|
||||
|
||||
if(typeof this.focusIndex === 'undefined')
|
||||
{
|
||||
_value = this.element.find( "option:selected" ).val();
|
||||
}
|
||||
else
|
||||
{
|
||||
var selected = this.items[_value] || {};
|
||||
_value = selected.value;
|
||||
}
|
||||
var _value = value.value;
|
||||
var url = self.egw().image('navbar', _value);
|
||||
var buttonItem = jQuery("<span>", {
|
||||
"class": "ui-selectmenu-text",
|
||||
title: value
|
||||
title: value.label
|
||||
});
|
||||
|
||||
jQuery('.ui-selectmenu-text', this.button).replaceWith(buttonItem);
|
||||
buttonItem.css('background-image', 'url(' + url + ')');
|
||||
return buttonItem;
|
||||
},
|
||||
_renderItem: function (ul, item)
|
||||
{
|
||||
@ -772,7 +780,10 @@ export class et2_link_entry extends et2_inputWidget
|
||||
// Search input
|
||||
this.search = jQuery(document.createElement("input"))
|
||||
// .attr("type", "search") // Fake it for all browsers below
|
||||
.focus(function(){if(!self.options.only_app) {
|
||||
.focus(function ()
|
||||
{
|
||||
if (!self.options.only_app)
|
||||
{
|
||||
// Adjust width, leave room for app select & link button
|
||||
self.div.removeClass("no_app");
|
||||
if (self.options.app_icons)
|
||||
@ -783,8 +794,10 @@ export class et2_link_entry extends et2_inputWidget
|
||||
{
|
||||
self.app_select.show();
|
||||
}
|
||||
}})
|
||||
.blur(function(e) {
|
||||
}
|
||||
})
|
||||
.blur(function (e)
|
||||
{
|
||||
if (self.div.has(e.relatedTarget).length) return;
|
||||
if (self.options.app_icons)
|
||||
{
|
||||
@ -794,7 +807,8 @@ export class et2_link_entry extends et2_inputWidget
|
||||
}
|
||||
else if (self.search.val())
|
||||
{
|
||||
if(self.options.only_app) {
|
||||
if (self.options.only_app)
|
||||
{
|
||||
// Adjust width, leave room for app select & link button
|
||||
self.div.addClass("no_app");
|
||||
}
|
||||
@ -843,7 +857,8 @@ export class et2_link_entry extends et2_inputWidget
|
||||
var extra: any = {};
|
||||
|
||||
// Extra stuff
|
||||
if(typeof item.label == 'object') {
|
||||
if (typeof item.label == 'object')
|
||||
{
|
||||
extra = item.label;
|
||||
item.label = extra.label ? extra.label : extra;
|
||||
if (extra['style.backgroundColor'] || extra.color)
|
||||
@ -867,7 +882,10 @@ export class et2_link_entry extends et2_inputWidget
|
||||
// Normal stuff
|
||||
li.append(jQuery("<a></a>").text(item.label))
|
||||
.appendTo(ul);
|
||||
window.setTimeout(function(){ul.css('max-width', jQuery('.et2_container').width()-ul.offset().left);}, 300);
|
||||
window.setTimeout(function ()
|
||||
{
|
||||
ul.css('max-width', jQuery('.et2_container').width() - ul.offset().left);
|
||||
}, 300);
|
||||
return li;
|
||||
};
|
||||
|
||||
@ -1032,11 +1050,14 @@ export class et2_link_entry extends et2_inputWidget
|
||||
}
|
||||
if (!_value.app) _value.app = this.options.only_app || this.app_select.val();
|
||||
|
||||
if(_value.id) {
|
||||
if (_value.id)
|
||||
{
|
||||
// Remove specific display and revert to CSS file
|
||||
// show() would use inline, should be inline-block
|
||||
this.clear.css('display', '');
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
this.clear.hide();
|
||||
return;
|
||||
}
|
||||
@ -1045,7 +1066,8 @@ export class et2_link_entry extends et2_inputWidget
|
||||
console.warn("Bad value for link widget. Need an object with keys 'app', 'id', and optionally 'title'", _value);
|
||||
return;
|
||||
}
|
||||
if(!_value.title) {
|
||||
if (!_value.title)
|
||||
{
|
||||
var title = this.egw().link_title(_value.app, _value.id);
|
||||
if (title != null)
|
||||
{
|
||||
@ -1156,7 +1178,8 @@ export class et2_link_entry extends et2_inputWidget
|
||||
if (!this.options.query(request, this)) return false;
|
||||
}
|
||||
|
||||
if((typeof request.no_cache == 'undefined' && !request.no_cache) && request.term in this.cache) {
|
||||
if ((typeof request.no_cache == 'undefined' && !request.no_cache) && request.term in this.cache)
|
||||
{
|
||||
return response(this.cache[request.term]);
|
||||
}
|
||||
|
||||
@ -1210,7 +1233,10 @@ export class et2_link_entry extends et2_inputWidget
|
||||
this.search.change();
|
||||
|
||||
// Turn off processing flag when done
|
||||
window.setTimeout(jQuery.proxy(function() {delete this.processing;},event.data));
|
||||
window.setTimeout(jQuery.proxy(function ()
|
||||
{
|
||||
delete this.processing;
|
||||
}, event.data));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1226,7 +1252,8 @@ export class et2_link_entry extends et2_inputWidget
|
||||
}
|
||||
this.search.removeClass("loading");
|
||||
var result = [];
|
||||
for(var id in data) {
|
||||
for (var id in data)
|
||||
{
|
||||
result.push({"value": id, "label": data[id]});
|
||||
}
|
||||
this.cache[this.search.val()] = result;
|
||||
@ -1256,7 +1283,8 @@ export class et2_link_entry extends et2_inputWidget
|
||||
}
|
||||
|
||||
// Links to other entries
|
||||
if(values.id) {
|
||||
if (values.id)
|
||||
{
|
||||
links.push({
|
||||
app: values.app,
|
||||
id: values.id
|
||||
@ -1285,13 +1313,15 @@ export class et2_link_entry extends et2_inputWidget
|
||||
*/
|
||||
_link_result(success)
|
||||
{
|
||||
if(success) {
|
||||
if (success)
|
||||
{
|
||||
this.status_span.fadeIn().delay(1000).fadeOut();
|
||||
delete this.options.value.app;
|
||||
delete this.options.value.id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
et2_register_widget(et2_link_entry, ["link-entry"]);
|
||||
|
||||
/**
|
||||
@ -1363,17 +1393,22 @@ export class et2_link extends et2_valueWidget implements et2_IDetachedDOM
|
||||
if (this.options['class']) this.label_span.addClass(this.options['class']);
|
||||
this.setDOMNode(this.label_span[0]);
|
||||
}
|
||||
|
||||
destroy()
|
||||
{
|
||||
if (this.link) this.link.unbind();
|
||||
this.link = null;
|
||||
super.destroy.apply(this, arguments);
|
||||
}
|
||||
|
||||
set_label(label)
|
||||
{
|
||||
// Remove current label
|
||||
this.label_span.contents()
|
||||
.filter(function(){ return this.nodeType == 3; }).remove();
|
||||
.filter(function ()
|
||||
{
|
||||
return this.nodeType == 3;
|
||||
}).remove();
|
||||
|
||||
var parts = et2_csvSplit(label, 2, "%s");
|
||||
this.label_span.prepend(parts[0]);
|
||||
@ -1383,6 +1418,7 @@ export class et2_link extends et2_valueWidget implements et2_IDetachedDOM
|
||||
// add class if label is empty
|
||||
this.label_span.toggleClass('et2_label_empty', !label || !parts[0]);
|
||||
}
|
||||
|
||||
set_value(_value)
|
||||
{
|
||||
if (typeof _value != 'object' && _value && !this.options.only_app)
|
||||
@ -1421,7 +1457,8 @@ export class et2_link extends et2_valueWidget implements et2_IDetachedDOM
|
||||
{
|
||||
// try to fetch value.title if it wasn't fetched during initiation.
|
||||
if (!_value.title) _value.title = self.egw().link_title(_value.app, _value.id);
|
||||
if( !self.options.target_app ){
|
||||
if (!self.options.target_app)
|
||||
{
|
||||
self.options.target_app = _value.app;
|
||||
}
|
||||
const target = self.options.extra_link_target || _value.app;
|
||||
@ -1439,7 +1476,10 @@ export class et2_link extends et2_valueWidget implements et2_IDetachedDOM
|
||||
var node = this.link[0];
|
||||
if (_value.app && _value.id)
|
||||
{
|
||||
var title = this.egw().link_title(_value.app, _value.id, function(title) {self.set_title(node, title);}, this);
|
||||
var title = this.egw().link_title(_value.app, _value.id, function (title)
|
||||
{
|
||||
self.set_title(node, title);
|
||||
}, this);
|
||||
if (title != null)
|
||||
{
|
||||
_value.title = title;
|
||||
@ -1522,6 +1562,7 @@ export class et2_link extends et2_valueWidget implements et2_IDetachedDOM
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
et2_register_widget(et2_link, ["link", "link-entry_ro"]);
|
||||
|
||||
/**
|
||||
@ -1584,7 +1625,8 @@ export class et2_link_string extends expose(class et2_link_string extends et2_va
|
||||
destroy()
|
||||
{
|
||||
super.destroy.apply(this, arguments);
|
||||
if (this.node != null) {
|
||||
if (this.node != null)
|
||||
{
|
||||
jQuery(this.node).children().unbind();
|
||||
}
|
||||
}
|
||||
@ -1649,6 +1691,7 @@ export class et2_link_string extends expose(class et2_link_string extends et2_va
|
||||
this.egw().jsonq('EGroupware\\Api\\Etemplate\\Widget\\Link::ajax_link_list', [_value], this.set_value, this);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get media content to feed the expose
|
||||
* @param {type} _value
|
||||
@ -1680,13 +1723,15 @@ export class et2_link_string extends expose(class et2_link_string extends et2_va
|
||||
if (mediaContent[0].href && mediaContent[0].href.match(/\/webdav.php/, 'ig')) mediaContent[0]["download_href"] = mediaContent[0].href + '?download';
|
||||
return mediaContent;
|
||||
}
|
||||
|
||||
_add_link(_link_data)
|
||||
{
|
||||
var self = this;
|
||||
var link = jQuery(document.createElement("li"))
|
||||
.appendTo(this.list)
|
||||
.addClass("et2_link loading")
|
||||
.click( function(e){
|
||||
.click(function (e)
|
||||
{
|
||||
var fe = egw_get_file_editor_prefered_mimes(_link_data.type);
|
||||
if (self.options.expose_view && typeof _link_data.type != 'undefined'
|
||||
&& _link_data.type.match(self.mime_regexp, 'ig') && !_link_data.type.match(self.mime_audio_regexp, 'ig'))
|
||||
@ -1719,7 +1764,8 @@ export class et2_link_string extends expose(class et2_link_string extends et2_va
|
||||
// Now that link is created, get title from server & update
|
||||
else
|
||||
{
|
||||
this.egw().link_title(_link_data.app, _link_data.id, function(title) {
|
||||
this.egw().link_title(_link_data.app, _link_data.id, function (title)
|
||||
{
|
||||
if (title)
|
||||
this.removeClass("loading").text(title);
|
||||
else
|
||||
@ -1791,7 +1837,9 @@ export class et2_link_string extends expose(class et2_link_string extends et2_va
|
||||
this._labelContainer.contents().not(this.list).remove();
|
||||
}
|
||||
}
|
||||
}){};
|
||||
})
|
||||
{
|
||||
};
|
||||
et2_register_widget(et2_link_string, ["link-string"]);
|
||||
|
||||
/**
|
||||
@ -1991,7 +2039,10 @@ export class et2_link_list extends et2_link_string
|
||||
var link_id = isNaN(self.context.data.link_id) ? self.context.data : self.context.data.link_id;
|
||||
var row = jQuery('#link_' + (self.context.data.dom_id ? self.context.data.dom_id : self.context.data.link_id), self.list);
|
||||
et2_dialog.show_dialog(
|
||||
function(button) { if(button == et2_dialog.YES_BUTTON) self._delete_link(link_id,row);},
|
||||
function (button)
|
||||
{
|
||||
if (button == et2_dialog.YES_BUTTON) self._delete_link(link_id, row);
|
||||
},
|
||||
egw.lang('Delete link?')
|
||||
);
|
||||
});
|
||||
@ -2128,7 +2179,8 @@ export class et2_link_list extends et2_link_string
|
||||
//Bind the click handler if there is download_url
|
||||
if (_link_data && (typeof _link_data.download_url != 'undefined' || _link_data.app != 'egw-data'))
|
||||
{
|
||||
$td.click( function(){
|
||||
$td.click(function ()
|
||||
{
|
||||
var fe_mime = egw_get_file_editor_prefered_mimes(_link_data.type);
|
||||
// Check if the link entry is mime with media type, in order to open it in expose view
|
||||
if (typeof _link_data.type != 'undefined' &&
|
||||
@ -2183,7 +2235,8 @@ export class et2_link_list extends et2_link_string
|
||||
.bind('click', function ()
|
||||
{
|
||||
et2_dialog.show_dialog(
|
||||
function(button) {
|
||||
function (button)
|
||||
{
|
||||
if (button == et2_dialog.YES_BUTTON)
|
||||
{
|
||||
self._delete_link(
|
||||
@ -2222,7 +2275,8 @@ export class et2_link_list extends et2_link_string
|
||||
{
|
||||
row.on("dragstart", _link_data, function (event)
|
||||
{
|
||||
if(event.dataTransfer == null) {
|
||||
if (event.dataTransfer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var data = event.data || {};
|
||||
@ -2275,6 +2329,7 @@ export class et2_link_list extends et2_link_string
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_delete_link(link_id, row)
|
||||
{
|
||||
if (row)
|
||||
@ -2290,7 +2345,13 @@ export class et2_link_list extends et2_link_string
|
||||
if (typeof link_id != "object")
|
||||
{
|
||||
egw.json("EGroupware\\Api\\Etemplate\\Widget\\Link::ajax_delete", [link_id],
|
||||
function(data) { if(data) {row.slideUp(row.remove);}}
|
||||
function (data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
row.slideUp(row.remove);
|
||||
}
|
||||
}
|
||||
).sendRequest();
|
||||
}
|
||||
else if (row)
|
||||
@ -2305,7 +2366,8 @@ export class et2_link_list extends et2_link_string
|
||||
var self = this;
|
||||
var _widget = link_id.widget || null;
|
||||
this.getRoot().iterateOver(
|
||||
function(widget) {
|
||||
function (widget)
|
||||
{
|
||||
if (widget.id == self.id)
|
||||
{
|
||||
_widget = widget;
|
||||
@ -2379,6 +2441,7 @@ export class et2_link_list extends et2_link_string
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
et2_register_widget(et2_link_list, ["link-list"]);
|
||||
|
||||
|
||||
@ -2404,6 +2467,7 @@ export class et2_link_add extends et2_inputWidget
|
||||
private div: JQuery;
|
||||
private app_select: et2_link_apps;
|
||||
private button: et2_button;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@ -2418,6 +2482,7 @@ export class et2_link_add extends et2_inputWidget
|
||||
this.div = jQuery(document.createElement("div")).append(this.span);
|
||||
this.setDOMNode(this.div[0]);
|
||||
}
|
||||
|
||||
doLoadingFinished()
|
||||
{
|
||||
super.doLoadingFinished.apply(this, arguments);
|
||||
@ -2432,7 +2497,10 @@ export class et2_link_add extends et2_inputWidget
|
||||
application_list: this.options.application ? this.options.application : null
|
||||
}), this);
|
||||
this.div.append(this.app_select.getDOMNode());
|
||||
this.button = <et2_button>et2_createWidget("button", {id:this.options.id+"_add",label: this.egw().lang("add")}, this);
|
||||
this.button = <et2_button>et2_createWidget("button", {
|
||||
id: this.options.id + "_add",
|
||||
label: this.egw().lang("add")
|
||||
}, this);
|
||||
this.button.set_label(this.egw().lang("add"));
|
||||
var self = this;
|
||||
this.button.click = function ()
|
||||
@ -2444,6 +2512,7 @@ export class et2_link_add extends et2_inputWidget
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should be handled client side.
|
||||
* Return null to avoid overwriting other link values, in case designer used the same ID for multiple widgets
|
||||
@ -2453,4 +2522,5 @@ export class et2_link_add extends et2_inputWidget
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
et2_register_widget(et2_link_add, ["link-add"]);
|
||||
|
Loading…
Reference in New Issue
Block a user