Skip to content
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Commit fbd3b99

Browse files
committed
changes to support create library and file components
1 parent cb78d1d commit fbd3b99

7 files changed

Lines changed: 326 additions & 99 deletions

File tree

digexp-wcm-design/lib/wcm-authenticated-request.js

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ var httpGetHelper = function(options) {
2323
options.rejectUnauthorized = false;
2424
}
2525
var reqGet = http.request(options, function(response) {
26-
if(options.headers && options.headers.ContentType && options.headers.ContentType.indexOf('image') != -1)
26+
if(options.headers && options.headers.ContentType && options.headers.ContentType){
2727
response.setEncoding('binary');
28+
debugLogger.trace(options.headers.ContentType + " read binary");
29+
}
2830
if (response.statusCode == 404) {
2931
var err = getErrorFromResponse(null, response);
3032
debugLogger.error("httpGetHelper::err::" + err);
@@ -131,8 +133,8 @@ var getLTPAToken = function(user, pass, options, postData) {
131133
// the post options
132134
// authenticate for VP uses the base portal
133135
var cPath = options.contentHandlerPath.split('/');
134-
if (cPath.length > 2){
135-
options.contentHandlerPath = cPath[0] + '/' + cPath[1];
136+
if (cPath.length > 3){
137+
options.contentHandlerPath = cPath[1] + '/' + cPath[2];
136138
};
137139
var optionspost = {
138140
host : options.host,
@@ -258,6 +260,10 @@ var authenticatedRequest = function(user, pass, options, postData) {
258260
if (authCookie == null || ltpaTokenAge > maxLtpaAge) {
259261
ltpaTokenDate = now;
260262
getLTPAToken(user, pass, options, postData).then(function(data) {
263+
if(data != undefined){
264+
checkEndRequest();
265+
return deferred.resolve(data);
266+
}
261267
if (postData == undefined) {
262268
return httpGetHelper(options).then(function(data) {
263269
// debugLogger.trace('Completed get for ', options.path);
@@ -381,20 +387,32 @@ var getJson = function(uri) {
381387
};
382388

383389
var setJson = function(uri, postData) {
384-
var deferred = Q.defer(), authenticate = function(uri, postData) {
390+
var deferred = Q.defer(), authenticate = function(uri, postData, contentType) {
391+
var headers;
385392
debugLogger.trace('setJson:: uri::' + uri + ' postData::' + postData);
393+
if(typeof postData == 'object'){
394+
postData = JSON.stringify(postData);
395+
headers = {
396+
'content-type': 'application/json',
397+
'accept': 'application/json'
398+
};
399+
}
400+
else{
401+
headers = {
402+
'Content-Type' : 'application/atom+xml',
403+
'Content-Length' : postData.length,
404+
'Accept' : "application/json"
405+
};
406+
}
407+
386408
var callOptions = {
387409
host : globalHost,
388410
port : globalPort,
389411
contentHandlerPath : globalContentHandlerPath,
390412
path : uri,
391413
secure : globalSecure,
392414
method : 'Post',
393-
headers : {
394-
'Content-Type' : 'application/atom+xml',
395-
'Content-Length' : postData.length,
396-
Accept : "application/json"
397-
}
415+
headers : headers
398416
};
399417
authenticatedRequest(globalUser, globalPassword, callOptions, postData).then(function(data) {
400418
deferred.resolve(data);

digexp-wcm-design/lib/wcmItem.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,12 @@ function getOperationHref(item, opName){
122122
function getTypeforUpdate(item){
123123
var type = undefined;
124124
var link = getLinkForRel(item.type, item.link,"edit-media");
125-
if(link != undefined)
126-
type = link.type;
125+
if(link != undefined){
126+
if(item.content && item.content.resourceUri && item.content.resourceUri.type)
127+
type = item.content.resourceUri.type;
128+
else
129+
type = link.type;
130+
}
127131
return type;
128132
}
129133

@@ -145,6 +149,12 @@ function getLinkForRel(type, linkArray, relName) {
145149
retval = linkEntry;
146150
};
147151
}
152+
else
153+
if(type == 'LibraryFileComponent'){
154+
if(linkEntry.type == '*/*'){
155+
retval = linkEntry;
156+
};
157+
}
148158
else
149159
retval = linkEntry;
150160

digexp-wcm-design/lib/wcmOperations.js

Lines changed: 97 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,53 @@ wcmTypes = {
3131
,listPresetationComponent: "LibraryListPresetationComponent"
3232
,listPresetationComponent: "LibraryListPresetationComponent"
3333
,folder: "Folder"
34+
,library: "Library"
3435

3536
};
3637

38+
/**
39+
* Returns the result of the created library
40+
* @param String library title
41+
* @param bolean is the library enabled
42+
* @param boolean can you delete the library
43+
* @param boolean include default items in library
44+
* @returns a promise thet returns the result of the created library
45+
*/
46+
47+
function createLibrary(libTitle, enabled, allowDeletion, includeDefaultItems) {
48+
var deferred = Q.defer(), doRequest = function(libTitle, allowDeletion, includeDefaultItems) {
49+
if (allowDeletion == undefined)
50+
allowDeletion = true;
51+
if (includeDefaultItems == undefined)
52+
includeDefaultItems = false;
53+
if (enabled == undefined)
54+
enabled = true;
55+
postData = {
56+
entry : {
57+
name : libTitle,
58+
content : {
59+
type : 'application/vnd.ibm.wcm+xml',
60+
library : {
61+
allowDeletion : allowDeletion,
62+
enabled : enabled,
63+
includeDefaultItems : includeDefaultItems
64+
}
65+
}
66+
}
67+
};
68+
69+
authRequest.setJson(getUrlForType(wcmTypes.library), postData).then(function(library) {
70+
if(libraryList != undefined)
71+
libraryList.push(library);
72+
deferred.resolve(library);
73+
}, function(err) {
74+
deferred.reject(err);
75+
});
76+
};
77+
doRequest(libTitle, enabled, allowDeletion, includeDefaultItems);
78+
return deferred.promise;
79+
}
80+
3781
/**
3882
* Returns an array of wcmItems that are libraries
3983
* @returns a promise thet returns {Object*}[] of libraries
@@ -385,14 +429,14 @@ function getWcmItemsForOperation(item, operation, resultValues){
385429
}else
386430
if(dataJson.feed.entry != undefined)
387431
entries = dataJson.feed.entry;
388-
if (resultValues) {
389-
// if we're adding to array, push these entries and use as resolved value
390-
resultValues = resultValues.concat(entries);
391-
deferred.resolve(resultValues);
392-
}
393-
else {
394-
deferred.resolve(entries);
395-
}
432+
if (resultValues) {
433+
// if we're adding to array, push these entries and use as resolved value
434+
resultValues = resultValues.concat(entries);
435+
deferred.resolve(resultValues);
436+
}
437+
else {
438+
deferred.resolve(entries);
439+
}
396440
}
397441
},function(err){
398442
debugLogger.error("getWcmItemsForOperation::getJson::err::"+err);
@@ -516,16 +560,45 @@ function createNewWcmItem(type, libraryName, name, fileName, parent ){
516560
var deferred = Q.defer(), doRequest = function(type, libraryName, name, fileName, parent){
517561
debugLogger.trace('createNewWcmItem::type::' + type + 'libraryName::'+ libraryName + ' name::' + name + ' fileName::' + fileName + ' parent::' + parent);
518562
getLibrary(libraryName).then(function(lib){
519-
var pLink = "";
563+
var links = {};
520564
url = getUrlForType(type);
521565
href = wcmItem.getOperationHref(lib, "library");
522566

523567
if(parent != undefined){
524-
pLink = '<link rel="parent" href="' + wcmItem.getOperationHref(parent, "self") + '"/>';
568+
// pLink = '<link rel="parent" href="' + wcmItem.getOperationHref(parent, "self") + '"/>';
569+
links =[
570+
{
571+
"rel": "library",
572+
"href": href,
573+
"label": "Library"
574+
},
575+
{
576+
"rel": "parent",
577+
"href": wcmItem.getOperationHref(parent, "self"),
578+
"label": "Parent"
579+
}
580+
];
581+
}
582+
else {
583+
links = [
584+
{
585+
"rel": "library",
586+
"href": href,
587+
"label": "Library"
588+
}
589+
];
525590
}
526-
postData = '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:wcm="wcm/namespace"><title>'+
527-
name + '</title><link rel="library" href="' + href + '"/>' + pLink + '<wcm:name>'+
528-
name + '</wcm:name></entry>';
591+
592+
// postData = '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:wcm="wcm/namespace"><title>'+
593+
// name + '</title><link rel="library" href="' + href + '"/>' + pLink + '<wcm:name>'+
594+
// name + '</wcm:name></entry>';
595+
postData = {
596+
entry : {
597+
title : name,
598+
name : name,
599+
link : links
600+
}
601+
};
529602
authRequest.setJson(url, postData).then(function( data ) {
530603
var dataJson = getJson(deferred, data);
531604
if(dataJson != undefined){
@@ -615,8 +688,8 @@ function getWcmItemData(type, id){
615688
var deferred = Q.defer(), doRequest = function(type, id){
616689
debugLogger.trace('getWcmItemData::type::' + type + ' id:' + id);
617690
wcmGetJson(getUrlForType(type) + '/' + getRawId(id)).then (function (item){
618-
if(item.content)
619-
deferred.resolve(item).done();
691+
if(item.content && type != wcmTypes.imageComponent && type != wcmTypes.fileComponent)
692+
return deferred.resolve(item);
620693
getWcmItemsForOperation(item, "edit-media").then(function (item){
621694
var entry = item[0];
622695
if(wcmTypes.htmlComponent == type || wcmTypes.presentationTemplate == type){
@@ -653,13 +726,14 @@ function getContentReference(type, item){
653726
debugLogger.trace('getContentReference::type::' + type + ' item::' + item);
654727
var cRef = undefined;
655728
switch(type){
656-
/* case wcmTypes.fileComponent:
729+
/*
657730
case wcmTypes.htmlComponent:
658731
case wcmTypes.jspComponent:
659732
case wcmTypes.linkComponent:
660733
case wcmTypes.textComponent:
661734
case wcmTypes.richTextComponent:
662735
*/
736+
case wcmTypes.fileComponent:
663737
case wcmTypes.imageComponent:
664738
case wcmTypes.styleSheetComponent:{
665739
cRef = wcmItem.getOperationHref(item, 'edit-media');
@@ -811,8 +885,13 @@ function setUpDataForType(item, type, fileName){
811885
switch(type){
812886
case wcmTypes.authoringTools:
813887
case wcmTypes.jspComponent:
814-
case wcmTypes.linkComponent:
888+
case wcmTypes.linkComponent:{
889+
break;
890+
}
815891
case wcmTypes.fileComponent:{
892+
var binaraydata = fs.readFileSync(fileName);
893+
var ext = Path.extname(fileName).slice(1);
894+
rVal = {type: 'application/' + ext, value: binaraydata };
816895
break;
817896
}
818897
case wcmTypes.presentationTemplate:
@@ -826,15 +905,6 @@ function setUpDataForType(item, type, fileName){
826905
var binaraydata = fs.readFileSync(fileName);
827906

828907
var ext = Path.extname(fileName).slice(1);
829-
/* var baseName = Path.basename(fileName);
830-
var content = wcmItem.getContent(item);
831-
var data;
832-
// if(getContentReference(type, item) == undefined)
833-
data = '<content type="application/vnd.ibm.wcm+xml"><wcm:image xmlns="http://www.ibm.com/xmlns/wcm"><dimension height="' +
834-
content.image.dimension.height + '" border="0"/><altText></altText><tagName></tagName><wcm:binaryresource type="image/"' + ext + ' fileName="' + baseName + '">' + b64data + '</wcm:binaryresource></wcm:image></content>';
835-
// else
836-
// data = b64data;
837-
*/
838908
rVal = { type: 'image/' + ext, value: binaraydata };
839909
break;
840910
}
@@ -846,22 +916,6 @@ function setUpDataForType(item, type, fileName){
846916
case wcmTypes.styleSheetComponent:{
847917
var data = fs.readFileSync(fileName, "utf8");
848918
rVal = { type: 'text/css', value: data };
849-
/*if(getContentReference(type, item) != undefined){
850-
var data = fs.readFileSync(fileName, "utf8");
851-
rVal = {type: mType, value: data};
852-
}
853-
else{
854-
var b64data = base64_encode(fileName);
855-
var baseName = Path.basename(fileName);
856-
var content = wcmItem.getContent(item);
857-
data = '<content type="application/vnd.ibm.wcm+xml"><wcm:stylesheet xmlns="http://www.ibm.com/xmlns/wcm"><type>'+
858-
content.type + '</type>"/><mediaType>' +
859-
content.mediaType +'</mediaType><title>' +
860-
content.title + '</title><wcm:binaryresource type="text/css" fileName="' +
861-
baseName + '">' + b64data +
862-
'</wcm:binaryresource></wcm:stylesheet></content>';
863-
rVal = { type: mType, value: data };
864-
}*/
865919
break;
866920
};
867921
};
@@ -918,6 +972,7 @@ exports.wcmTypes= wcmTypes;
918972
exports.clearFolderMap = clearFolderMap;exports.getWcmItemsOfType = getWcmItemsOfType;
919973
exports.getWcmItemOfTypeAndName = getWcmItemOfTypeAndName;
920974
exports.getAllLibraries = getAllLibraries;
975+
exports.createLibrary = createLibrary;
921976
exports.getLibrary = getLibrary;
922977
exports.getLibraryId = getLibraryId;
923978
exports.getFolderMap = getFolderMap;

0 commit comments

Comments
 (0)