/***
* V-focus.CMS.Elements.js
*
* Provides the functionalities for the basic CMS elements
* Such as textarea, rich text editor, input fields, etc
*
* All elements support the following 3 methods
* create{ElementName} (content,parent,elemName,elemText)
* creates the element of name 'elemName' with content {content} with accompanying text 'elemText' and attaches it to 'parent'
*/
Vfocus.CMS.Elements = {
counter: 0,
instances: {},
clearInstances: function () {
var vCE = Vfocus.CMS.Elements;
vCE.instances = {};
},
/***
* Helper functions
*/
determineInstanceName: function (elemName) {
var vCE = Vfocus.CMS.Elements;
var c = vCE.counter;
var instName = vCE.instances[elemName] = elemName+"_count"+c;
vCE.counter++;
return instName;
},
/***
* Inputfield
*/
createInputField: function (content,parent,element) {
console.log("createInputField");
console.log(element);
var vCE = Vfocus.CMS.Elements;
var elemText = element.labelText;
var instName = vCE.determineInstanceName(element.elementName);
var d = document.createElement("div");
// set label
var lbl = document.createElement("label");
lbl.setAttribute("for",instName);
lbl.innerHTML = elemText;
d.appendChild(lbl);
// set input
var config = {
name: instName,
id: instName,
value: content
};
if (element.settings!=undefined) {
// set settings
var settings = element.settings;
for (var i in settings) {
console.log("adding "+i+":"+settings[i]);
config[i] = settings[i];
}
}
var textBox = new dijit.form.TextBox(config);
d.appendChild(textBox.domNode);
// append to parent
parent.appendChild(d);
// return
return d;
},
setInputField: function () {
},
getInputField: function (elemName) {
var val = ""
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
console.log("getInputField "+elemName+":"+instName);
console.log(vCE.instances);
var inp = Vfocus.byId(instName);
if (inp!=undefined) val = inp.value;
console.log("value "+val);
return val;
},
destroyInputField: function (elemName) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
delete vCE.instances[elemName];
var inp = dijit.byId(instName).destroy();
},
/***
* InputfieldSplit
*
* Specialized item that takes a single input and output but splits it across several items
* amount of splits: 'amount'
* what to split on: 'split' or 'divider'
*/
createInputFieldSplit: function (content,parent,element) {
console.log("createInputFieldSplit");
console.log(element);
var vCE = Vfocus.CMS.Elements;
var elemText = element.labelText;
// amount & split/divdider is mandatory
if (element.amount==undefined) return "";
if (element.split==undefined&&element.divider==undefined) return "";
var amount = parseInt(element.amount);
var divider = (element.split!=undefined)?(element.split):(element.divider);
var instName = vCE.determineInstanceName(element.elementName);
vCE.instances[element.elementName] = amount+"^"+divider;
var content = content.split(divider);
var cLen = content.length;
// create 'amount' input fields
var d = document.createElement("div");
// set label
var lbl = document.createElement("label");
lbl.setAttribute("for",instName);
lbl.innerHTML = elemText;
d.appendChild(lbl);
var instName,config;
for (var e=0;e";
// append to parent
parent.appendChild(d);
// return
return d;
},
setHorizontalDivider: function () {
},
getHorizontalDivider: function (elemName) {
return "";
},
destroyHorizontalDivider: function (elemName) {
},
/***
* SelectBox element
*/
createSelectBox: function (content,parent,element) {
console.log("createSelectBox");
var vCE = Vfocus.CMS.Elements;
var elemText = element.labelText;
var instName = vCE.determineInstanceName(element.elementName);
var d = document.createElement("div");
// set label
var lbl = document.createElement("label");
lbl.setAttribute("for",instName);
lbl.innerHTML = elemText;
d.appendChild(lbl);
// create selectbox
var selDiv = document.createElement("div");
var attrs = "";
if (element.onChange!=undefined) {
if (attrs!="") attrs += ' ';
attrs += 'onChange="'+element.onChange+'(this);"';
}
if (element.className!=undefined) {
if (attrs!="") attrs += ' ';
attrs += 'class="'+element.className+'"';
}
if (element.disabled!=undefined) {
if (attrs!="") attrs += ' ';
attrs += 'disabled="disabled"';
}
var html = '';
// add it
selDiv.innerHTML = html;
d.appendChild(selDiv);
// append to parent
parent.appendChild(d);
// parse it
dojo.parser.parse(d);
// return
return d;
},
setSelectBox: function (elemName,newValue) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
if (dijit.byId(instName)!=undefined) {
var sel = dijit.byId(instName);
// update store
// ...
}
},
getSelectBox: function (elemName) {
var val = "";
// ...
return val;
},
destroySelectBox: function (elemName) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
delete vCE.instances[elemName];
if (dijit.byId(instName)!=undefined) var inp = dijit.byId(instName).destroy();
},
/***
* CheckBox element
*/
createCheckBox: function (content,parent,element) {
var vCE = Vfocus.CMS.Elements;
var elemText = element.labelText;
var instName = vCE.determineInstanceName(element.elementName);
var d = document.createElement("div");
// set label
if (element.after==undefined||!element.after) {
var lbl = document.createElement("label");
lbl.setAttribute("for",instName);
lbl.innerHTML = elemText;
d.appendChild(lbl);
}
// set content
var config = {
name: instName,
id: instName,
value: content
};
if (element.checked!=undefined&&element.checked) config.checked = element.checked;
if (element.onClick!=undefined) config.onClick = element.onClick;
var checkBox = new dijit.form.CheckBox(config);
d.appendChild(checkBox.domNode);
if (element.after!=undefined&&element.after) {
var spn = document.createElement("span");
spn.style.marginLeft = "4px";
spn.innerHTML = elemText;
d.appendChild(spn);
}
// append to parent
parent.appendChild(d);
// return
return d;
},
setCheckBox: function (elemName,value) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
var inp = dijit.byId(instName);
inp.setChecked(!!value); // convert to boolean
},
getCheckBox: function (elemName) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
var inp = dijit.byId(instName);
var val = (inp.checked!=undefined)?(inp.checked):(false);
return val;
},
destroyCheckBox: function (elemName) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
delete vCE.instances[elemName];
var inp = dijit.byId(instName).destroy();
},
/***
* StaticText element
*/
createStaticText: function (content,parent,element) {
console.log("createStaticText called "+content);
var vCE = Vfocus.CMS.Elements;
var d = document.createElement("div");
// set label
var sT = document.createElement("div");
sT.className = "cmsStaticText";
sT.innerHTML = element.displayText;
d.appendChild(sT);
// set content
// append to parent
parent.appendChild(d);
// return
return d;
},
setStaticText: function () {
},
getStaticText: function (elemName) {
var val = "";
// ...
return val;
},
destroyStaticText: function (elemName) {
},
/***
* Hidden element, similar to ';
// append to parent
parent.appendChild(d);
// return
return d;
},
setHidden: function (elemName,newValue) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
var inp = Vfocus.byId(instName);
inp.value = newValue;
},
getHidden: function (elemName) {
var val = "";
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
var inp = Vfocus.byId(instName);
val = inp.value;
return val;
},
destroyHidden: function (elemName) {
var vCE = Vfocus.CMS.Elements;
var instName = vCE.instances[elemName];
var inp = Vfocus.byId(instName);
// remove
var d = inp.parent;
d.parent.removeChild(d);
},
/***
* Dummy element
*/
createElement: function (content,parent,element) {
var vCE = Vfocus.CMS.Elements;
var elemText = element.labelText;
var instName = vCE.determineInstanceName(element.elementName);
var d = document.createElement("div");
// set label
var lbl = document.createElement("label");
lbl.setAttribute("for",instName);
lbl.innerHTML = elemText;
d.appendChild(lbl);
// set content
// append to parent
parent.appendChild(d);
// return
return d;
},
setElement: function () {
},
getElement: function (elemName) {
var val = "";
// ...
return val;
},
destroyElement: function (elemName) {
}
}
console.log("loaded in Vfocus.CMS.Elements "+Vfocus.CMS+":"+Vfocus.CMS.Elements);