[repository] #1460066: backport datafeed cube as cubicweb source
* add some attributes to CWSource to handle this kind of source
(not natural to put everything in 'config' string). Adding a CWSource
subclass has been attempted then rollbacked because it adds pain
to handle multi-sources planning and it introduce an ambiguity on
a generic relation (cw_source), which may be a penalty in multiple
case
* data feed sources are a new kind of source, namely 'copy based',
which have no effect on the query planner
* a data feed source is associated to a list of url and a parser (appobjects
in the 'parsers' registry
* entities imported by a data feed have cwuri set to their url on the distant
site, their cw_source relation point to the data feed source, though their
source stored in the entities table (returned by cw_metainformation) is their
physical source, hence 'system'
cw.reledit = new Namespace('cw.reledit');
jQuery.extend(cw.reledit, {
/* Unhides the part of reledit div containing the form
* hides other parts
*/
showInlineEditionForm: function (divid) {
jQuery('#' + divid).hide();
jQuery('#' + divid + '-value').hide();
jQuery('#' + divid + '-form').show();
},
/* Hides and removes edition parts, incl. messages
* show initial widget state
*/
cleanupAfterCancel: function (divid) {
jQuery('#appMsg').hide();
jQuery('div.errorMessage').remove();
jQuery('#' + divid).show();
jQuery('#' + divid + '-value').show();
jQuery('#' + divid + '-form').hide();
},
/* callback used on form validation success
* refreshes the whole page or just the edited reledit zone
* @param results: [status, ...]
* @param formid: the dom id of the reledit form
* @param cbargs: ...
*/
onSuccess: function (results, formid, cbargs) {
var params = {fname: 'reledit_form'};
jQuery('#' + formid + ' input:hidden').each(function (elt) {
var name = jQuery(this).attr('name');
if (name && name.startswith('__reledit|')) {
params[name.split('|')[1]] = this.value;
}
});
var reload = cw.evalJSON(params.reload);
if (reload || (params.formid == 'deleteconf')) {
if (typeof reload == 'string') {
/* Sometimes we want to reload but the reledit thing
* updated a key attribute which was a component of the
* url
*/
document.location.href = reload;
return;
}
else {
document.location.reload();
return;
}
}
jQuery('#'+params.divid+'-reledit').loadxhtml(JSON_BASE_URL, params, 'post');
jQuery(cw).trigger('reledit-reloaded', params);
},
/* called by reledit forms to submit changes
* @param formid : the dom id of the form used
* @param rtype : the attribute being edited
* @param eid : the eid of the entity being edited
* @param reload: boolean to reload page if true (when changing URL dependant data)
* @param default_value : value if the field is empty
*/
loadInlineEditionForm: function(formid, eid, rtype, role, divid, reload, vid) {
var args = {fname: 'reledit_form', rtype: rtype, role: role,
pageid: pageid,
eid: eid, divid: divid, formid: formid,
reload: reload, vid: vid};
var d = jQuery('#'+divid+'-reledit').loadxhtml(JSON_BASE_URL, args, 'post');
d.addCallback(function () {cw.reledit.showInlineEditionForm(divid);});
}
});