define([
|
'dojo/Deferred',
|
'dojo/promise/all',
|
'jimu/portalUtils',
|
'jimu/utils'
|
|
],
|
function(Deferred, all, portalUtils, jimuUtils) {
|
return {
|
AddResourcesToItemForAppSave: function(portalUrl, resourcesUrls, originItemId, newItemId) {
|
//Add resources to item, based on the existing virtual resources url to determine the path and file name
|
//resourcesUrls:[{resUrl:required,b64}]
|
resourcesUrls = resourcesUrls || [];
|
if (resourcesUrls.length === 0) {
|
var deferred = new Deferred();
|
deferred.resolve(resourcesUrls);
|
return deferred;
|
}
|
var getBlobDefs = resourcesUrls.map(function(item) {
|
var prefix_FileName = item.resUrl.split('resources/')[1];
|
var getBlobDef = new Deferred();
|
if (item.b64) {
|
var blobFile = jimuUtils.b64toBlob(item.b64);
|
getBlobDef.resolve({
|
blob: blobFile,
|
fileName: prefix_FileName.split('/')[1],
|
prefixName: prefix_FileName.split('/')[0]
|
});
|
} else {
|
var retUrl = item.resUrl;
|
if (retUrl.indexOf('${itemId}') > 0) {
|
retUrl = retUrl.replace('${itemId}', originItemId);
|
}
|
jimuUtils.resourcesUrlToBlob(retUrl).then(function(result) {
|
getBlobDef.resolve({
|
blob: result,
|
fileName: prefix_FileName.split('/')[1],
|
prefixName: prefix_FileName.split('/')[0]
|
}, function(err) {
|
console.error(err.message || err);
|
getBlobDef.reject(err);
|
});
|
});
|
}
|
return getBlobDef;
|
});
|
return all(getBlobDefs).then(function(result) {
|
if (result instanceof Array && result.length > 0) {
|
var uploadDefs = result.map(function(e) {
|
var itemId = originItemId;
|
if (newItemId) {
|
itemId = newItemId;
|
}
|
return portalUtils.addResource(portalUrl, itemId, e.blob, e.fileName, e.prefixName);
|
}.bind(this));
|
return all(uploadDefs).then(function(results) {
|
return results;
|
});
|
}
|
}.bind(this));
|
}
|
};
|
});
|