-
Improvement
-
Resolution: Fixed
-
Major
-
None
-
None
-
None
Selecting a content send synchronous request while the tool is blocked.
Here is a patch to asynchronise it :
org.ametys.cms.tool.search.SearchTool.prototype._onSelectionChange = function (sm)
{
window.clearTimeout(this._sendTimeout);
this._sendTimeout = this._fireMessages.defer(10, this, [sm]);
}
org.ametys.cms.tool.search.SearchTool.prototype._fireMessages = function (sm)
{
var records = sm.getSelections();
var ids = [];
for (var i=0; i < records.length; i++)
{
ids.push(records[i].data.id);
}
if (ids.length == 0)
{
this._fireMessages2([], sm);
}
else
{
ContentDAO.getContents(ids, this._fireMessages2.createDelegate(this, [sm], true));
}
}
org.ametys.cms.tool.search.SearchTool.prototype._fireMessages2 = function (contents, sm)
{
// compare contents to current selection (to avoid overtaking of requests)
var records = sm.getSelections();
if (records.length != contents.length)
{
return;
}
else
{
for (var i=0; i < records.length; i++)
{
var found = false;
Ext.each(contents, function(item, index, allItems) {
if (item.getId() == records[i].data.id)
{
found = true;
return false;
}
})
if (!found)
{
return;
}
}
}
var targets = org.ametys.messagebus.bus.MessageBuilder.getInstance().createTargets("content", {'contents': contents});
var event = org.ametys.messagebus.bus.MessageBuilder.getInstance().createMessage(org.ametys.ribbon.RibbonManager.EVENTTYPE_SELECTIONCHANGED, null, targets);
var eventBus = org.ametys.messagebus.MessageBus.getInstance();
eventBus.fireMessages ([event]);
}