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

Commit aea175c

Browse files
committed
updates for editing elements
1 parent a73cb23 commit aea175c

3 files changed

Lines changed: 160 additions & 101 deletions

File tree

digexp-wcm-design/lib/wcmItem.js

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
* @returns an String like "wcmrest:d369a759-36c4-4133-a8be-e426766a827e"
1414
*/
1515
function getId(item){
16-
return item.id;
16+
var id = item.id;
17+
if(item.pid != undefined)
18+
id = item.pid;
19+
return id;
1720
}
1821

1922
/**
@@ -22,7 +25,10 @@ function getId(item){
2225
* @returns an String like "PresentationTemplate"
2326
*/
2427
function getType(item){
25-
return item.type;
28+
var type = item.type;
29+
if(item.ptype != undefined)
30+
type = item.ptype;
31+
return type;
2632
}
2733
/**
2834
* Returns the name of a wcmItem
@@ -31,16 +37,19 @@ function getType(item){
3137
*/
3238
function getName(item){
3339
var name = "";
34-
if(item.name != undefined)
35-
name = item.name;
40+
if(item.pname != undefined)
41+
name = item.pname;
3642
else
37-
if(item.title != undefined){
38-
if(item.title instanceof Object){
39-
name = item.title.value;
43+
if(item.name != undefined)
44+
name = item.name;
45+
else
46+
if(item.title != undefined){
47+
if(item.title instanceof Object){
48+
name = item.title.value;
49+
}
50+
else
51+
name = item.title;
4052
}
41-
else
42-
name = item.title;
43-
}
4453
return name;
4554
}
4655

@@ -108,7 +117,13 @@ function getPath(item){
108117
*/
109118
function getOperationHref(item, opName){
110119
var hRef = undefined;
111-
var link = getLinkForRel(item.type, item.link, opName);
120+
var links = item.link;
121+
if(item.plink != undefined)
122+
links = item.plink;
123+
var type = item.type;
124+
if(item.ptype != undefined)
125+
type = item.ptype;
126+
var link = getLinkForRel(type, links, opName);
112127
if(link != undefined)
113128
hRef = link.href;
114129
return hRef;

digexp-wcm-design/lib/wcmOperations.js

Lines changed: 78 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,24 @@ cEditmedia = "edit-media",
2020
cElements = "elements",
2121
cAlternate = "alternate",
2222
wcmExts = {
23-
LibraryHTMLComponent: ".html",
24-
HTMLComponent: ".html",
23+
LibraryHTMLComponent: "_html.html",
24+
HTMLComponent: "_html.html",
2525
LibraryImageComponent: "_img.txt",
2626
ImageComponent: "_img.txt",
27-
LibraryTextComponent: ".txt",
28-
TextComponent: ".txt",
29-
LibraryRichTextComponent: ".rtf",
30-
RichTextComponent: ".rtf",
31-
LibraryStyleSheetComponent: ".css",
32-
LibraryShortTextComponent: "_st.txt",
33-
ShortTextComponent: "_st.txt",
34-
ReferenceComponent: "_ref.txt",
35-
DateComponent: "_dt.txt",
27+
LibraryTextComponent: "_text.txt",
28+
TextComponent: "_text.txt",
29+
LibraryRichTextComponent: "_rictext.rtf",
30+
RichTextComponent: "_richtext.rtf",
31+
LibraryStyleSheetComponent: "_stylesheet.css",
32+
LibraryShortTextComponent: "_short.txt",
33+
ShortTextComponent: "_short.txt",
34+
ReferenceComponent: "_reference.txt",
35+
DateComponent: "_date.txt",
3636
JSPComponent: "_jsp.txt",
37-
LinkComponent: "_lnk.txt",
38-
NumericComponent: "_num.txt",
39-
OptionSelectionComponent: "_os.txt",
40-
UserSelectionComponent: "_us.txt",
37+
LinkComponent: "_link.txt",
38+
NumericComponent: "_number.txt",
39+
OptionSelectionComponent: "_optionselection.txt",
40+
UserSelectionComponent: "_userselecttion.txt",
4141
FileComponent: "_file.txt"
4242
},
4343
wcmTypes = {
@@ -46,6 +46,7 @@ wcmTypes = {
4646
,referenceComponents: "ReferenceComponent"
4747
,authoringToolsComponent: "LibraryAuthoringToolsComponent"
4848
,metaData:"md"
49+
,element:"element"
4950
,htmlComponent: "LibraryHTMLComponent"
5051
,imageComponent: "LibraryImageComponent"
5152
,textComponent: "LibraryTextComponent"
@@ -734,12 +735,15 @@ function updateWcmItemMetaData(fileName){
734735
*/
735736
function updateWcmElementsData(fileName){
736737
var deferred = Q.defer(), doRequest = function(item , val){
737-
debugLogger.trace('updateWcmItemMetaData:: fileName::' + fileName);
738+
debugLogger.trace('updateWcmElementsData:: fileName::' + fileName);
738739
var data = fs.readFileSync(fileName, "utf8");
739740
try{
740741
var item = JSON.parse(data);
741-
var entry = {entry: item.elements};
742-
var uri = getUrlForType(wcmItem.getType(item)) + '/' + getRawId(wcmItem.getId(item)) + '/Prototype';
742+
var uri = getUriForElements(item);
743+
// delete the parent info
744+
delete item.ptype;
745+
delete item.pid;
746+
var entry ={ entry: item};
743747
authRequest.setJson(uri, entry, 'Put').then(function(data){
744748
deferred.resolve(data);
745749
},function(err){
@@ -748,13 +752,14 @@ function updateWcmElementsData(fileName){
748752
});
749753
}
750754
catch(e){
751-
debugLogger.error("update metadata ::err::"+e);
752-
deferred.reject('bad data in md file');
755+
debugLogger.error("update elements ::err::"+e);
756+
deferred.reject('bad data in -elements file');
753757
}
754758
};
755759
doRequest(fileName);
756760
return deferred.promise;
757761
}
762+
758763
/**
759764
* Updates the specified wcm item with new content { in progress }
760765
* @param {Object*} a wcmItem
@@ -822,49 +827,12 @@ function getWcmItemData(type, id) {
822827
// no media check for elements
823828
if (editmedia == undefined) {
824829
var entry = item;
825-
getWcmItemsForOperation(item, cElements).then(function(items) {
826-
if(items.length == 0){
827-
return deferred.resolve(entry);
828-
}
829-
var curCount = 0;
830-
var sWarn = authRequest.getWarnParallel();
831-
authRequest.setWarnParallel(false);
832-
entry.elements = items;
833-
return deferred.resolve(entry);
834-
/*
835-
items.forEach(function(item) {
836-
var cRef = getContentReference(item.type, item);
837-
if (cRef != undefined) {
838-
authRequest.getContent(cRef, wcmItem.getTypeforUpdate(item)).then(function(data) {
839-
curCount++;
840-
item.data = data;
841-
entry.elements.push(item);
842-
if (curCount == items.length){
843-
authRequest.setWarnParallel(sWarn);
844-
return deferred.resolve(entry);
845-
}
846-
}, function(err) {
847-
curCount++;
848-
if (err.message) {
849-
if (err.message.indexOf('400') != -1) {
850-
item.data = undefined;
851-
entry.elements.push(item);
852-
if (curCount == items.length){
853-
authRequest.setWarnParallel(sWarn);
854-
return deferred.resolve(entry);
855-
}
856-
} else{
857-
authRequest.setWarnParallel(sWarn);
858-
return deferred.reject(err);
859-
}
860-
} else{
861-
authRequest.setWarnParallel(sWarn);
862-
return deferred.reject(err);
863-
}
864-
});
865-
}
866-
});
867-
*/
830+
var uri = getUriForElements(item);
831+
wcmGetJson(uri).then(function(entry) {
832+
entry.ptype = wcmItem.getType(item);
833+
entry.pid = wcmItem.getId(item);
834+
var rJson = { itemData: item, elements: entry};
835+
deferred.resolve(rJson);
868836
}, function(err) {
869837
debugLogger.error("getWcmItemData::getWcmItemsForOperation::err::" + err);
870838
deferred.reject(err);
@@ -1064,6 +1032,24 @@ function getFolderForType(type){
10641032
return rVal;
10651033
}
10661034

1035+
/**
1036+
* Returns the Uri for the item type for a type that has elements
1037+
* @param item
1038+
* @returns the uri
1039+
*/
1040+
function getUriForElements(item){
1041+
var type = wcmItem.getType(item);
1042+
debugLogger.trace('getUriForElements::type::' + type);
1043+
var rVal = "";
1044+
switch(type){
1045+
case wcmTypes.contentTemplate:{
1046+
rVal = getUrlForType(wcmItem.getType(item)) + '/' + getRawId(wcmItem.getId(item)) + '/Prototype';
1047+
break;
1048+
}
1049+
};
1050+
return rVal;
1051+
}
1052+
10671053
/**
10681054
* Returns the data needed for a specific types operations
10691055
* @param Type of component
@@ -1204,7 +1190,7 @@ function getElementData( type, content){
12041190
break;
12051191
}
12061192
case "FileComponent":{
1207-
// dataJson = content.image;
1193+
dataJson = content.file;
12081194
break;
12091195
}
12101196
case "ReferenceComponent":{
@@ -1216,14 +1202,36 @@ function getElementData( type, content){
12161202
}
12171203
return dataJson;
12181204
}
1205+
12191206
/**
1220-
* Sets the data from an elements content
1207+
* fiind the element in array by name
1208+
* @param name to look for
1209+
* @param element array
1210+
* @returns the element with this name or a new element
1211+
*/
1212+
function findElement( elements, name){
1213+
debugLogger.trace("findElement:data::" + name);
1214+
var rElement;
1215+
try{
1216+
elements.forEach(function(element){
1217+
if(element.name == name){
1218+
rElement = element;
1219+
return;
1220+
}
1221+
});
1222+
}
1223+
catch(e){
1224+
}
1225+
return rElement;
1226+
}
1227+
1228+
/**
1229+
* Set the data from an content
12211230
* @param type of content
12221231
* @param content json object
1223-
* @param data to set
12241232
* @returns the data for this type of data
12251233
*/
1226-
function setElementData( type, content, data ){
1234+
function setElementData( type, content, data){
12271235
debugLogger.trace("setElemetData:data::" + content);
12281236
try{
12291237
switch(type){
@@ -1263,7 +1271,7 @@ function setElementData( type, content, data ){
12631271
break;
12641272
}
12651273
case "FileComponent":{
1266-
// dataJson = content.image;
1274+
content.file = data;
12671275
break;
12681276
}
12691277
case "ReferenceComponent":{
@@ -1273,7 +1281,6 @@ function setElementData( type, content, data ){
12731281
}
12741282
} catch (e){
12751283
}
1276-
return dataJson;
12771284
}
12781285

12791286
function clearFolderMap(){
@@ -1299,6 +1306,8 @@ exports.getWcmItem = getWcmItem;
12991306
exports.getWcmItemData = getWcmItemData;
13001307
exports.itemExists = itemExists;
13011308
exports.updateWcmItemMetaData = updateWcmItemMetaData;
1309+
exports.updateWcmElementsData = updateWcmElementsData;
13021310
exports.getElementData = getElementData;
13031311
exports.setElementData = setElementData;
1312+
exports.findElement = findElement;
13041313
exports.base64_decode = base64_decode;

0 commit comments

Comments
 (0)