r1267 - xwiki-sandbox/formeditor
Nebojsa Miletic
mileticn at users.forge.objectweb.org
Mon Sep 4 04:28:53 CEST 2006
Author: mileticn
Date: 2006-09-04 04:28:53 +0200 (Mon, 04 Sep 2006)
New Revision: 1267
Removed:
xwiki-sandbox/formeditor/main.js
Log:
Removed file/folder
Deleted: xwiki-sandbox/formeditor/main.js
===================================================================
--- xwiki-sandbox/formeditor/main.js 2006-09-04 02:28:07 UTC (rev 1266)
+++ xwiki-sandbox/formeditor/main.js 2006-09-04 02:28:53 UTC (rev 1267)
@@ -1,508 +0,0 @@
-var cellCounter;
-var groupsCounter;
-var selectedCell;
-var cellWidth;
-var newFieldsCounter;
-
-function init(availableFields, xWikiClassName) {
- cellCounter = 0;
- groupsCounter = 0;
- selectedCell = null;
- cellWidth = 140;
- newFieldsCounter = 0;
-
- var fieldContainers = document.getElementsByClassName('fieldContainer');
- $("fields").xWikiClassName = xWikiClassName;
- var tbdFields = $('tbdFields');
- var colsCount = 4;
- var rowsCount = parseInt(availableFields.length / colsCount) + 1;
- var fieldsCellCounter = 0;
- for (var j = 0; j < rowsCount; j++) {
- var trw = document.createElement('tr');
- tbdFields.appendChild(trw);
- for (var k = 0; k < colsCount; k++) {
- if (availableFields.length <= fieldsCellCounter)
- break;
- var td = document.createElement('td');
- td.style.width = 100;
- var d = document.createElement('div');
- d.className = 'fieldContainer';
- d.draggable = new Draggable(d, {revert: false});
- var i = document.createElement('img');
- i.src = '/xwiki/bin/download/Main/Project+page+2/' + availableFields[fieldsCellCounter].type + '.png';
- d.appendChild(i);
- d.appendChild(document.createElement('br'));
- d.appendChild(document.createTextNode(availableFields[fieldsCellCounter].name))
- d.fieldType = availableFields[fieldsCellCounter].type;
- d.fieldName = availableFields[fieldsCellCounter].name;
- d.xwClassPropertyName = availableFields[fieldsCellCounter].xwClassPropertyName;
- td.appendChild(d);
- trw.appendChild(td);
- fieldsCellCounter++;
- }
- }
-
- var arrNewFields = [{type: 'String'},
- {type: 'Number'},
- {type: 'Password'},
- {type: 'Date'},
- {type: 'Boolean'},
- {type: 'StaticList'},
- {type: 'DBList'},
- {type: 'TextArea'}
- ]
- var tbdNewFields = $('tbdNewFields');
- var colsCount = 4;
- tbdNewFields.colsCount = colsCount;
- var rowsCount = parseInt(arrNewFields.length / colsCount) + 1;
- var fieldsCellCounter = 0;
- for (var j = 0; j < rowsCount; j++) {
- var trw = document.createElement('tr');
- tbdNewFields.appendChild(trw);
- for (var k = 0; k < colsCount; k++) {
- if (arrNewFields.length <= fieldsCellCounter)
- break;
- var td = document.createElement('td');
- td.style.width = 100;
- var d = document.createElement('div');
- d.className = 'newFieldContainer';
- d.draggable = new Draggable(d, {revert: true});
- var i = document.createElement('img');
- i.src = '/xwiki/bin/download/Main/Project+page+2/' + arrNewFields[fieldsCellCounter].type + '.png';
- d.appendChild(i);
- td.appendChild(d);
- trw.appendChild(td);
- fieldsCellCounter++;
- }
- }
-}
-
-function displayParams() {
- var val = $('selectParams').value;
- $('divGroupProperties').style.display = 'none';
- $('divRowProperties').style.display = 'none';
- $('divCellProperties').style.display = 'none';
- $('divFieldProperties').style.display = 'none';
- $('div' + val + 'Properties').style.display = 'inline';
-}
-
-function createTable() {
- var divForm = $("divForm");
- var colsCount = parseInt($("colsCount").value);
- var rowsCount = parseInt($("rowsCount").value);
- colsCount = colsCount == "" ? 2 : colsCount*2;
- rowsCount = rowsCount == "" ? 1 : rowsCount;
-
- var divGroup = document.createElement("div");
- var divPresText = document.createElement("div");
- var fstTable = document.createElement("fieldset");
- var title = document.createElement("legend");
- var divTable = document.createElement("div");
- divTable.colsCount = colsCount;
- divTable.rowsCount = rowsCount;
-
- divGroup.appendChild(document.createElement("hr"));
- fstTable.appendChild(title);
- fstTable.appendChild(divTable);
- divGroup.appendChild(divPresText);
- divGroup.appendChild(fstTable);
-
- divGroup.className = "group";
- divPresText.className = "groupPresentationText";
- fstTable.className = "fstTable";
- title.className = "groupTitle";
- divTable.className = "divTable";
-
- title.innerHTML = "New Group " + groupsCounter++;
- divPresText.innerHTML = "New presentation text";
-
- divForm.appendChild(divGroup);
- divTable.style.width = Number(colsCount * cellWidth) + "px";
- // mora da bude 0 da bi bilo najmanje moguce sirine (tj. da se ponasa u odnosu na tabelu)
- fstTable.style.width = "0px";
- for (var i = 0; i < rowsCount; i++) {
- var divRow = document.createElement("div");
- divRow.className = "divRow";
- divRow.style.cssFloat = "";
- divRow.style.border = "none";
- divRow.style.width = "100%";
- divRow.style.padding = "0px";
- divRow.style.margin = "1px";
- divTable.appendChild(divRow);
- for (var j = 0; j < colsCount; j++) {
- var d = document.createElement("div");
- d.id = ++cellCounter;
- d.className = "divCell";
- d.style.height = "95%"
- d.style.width = Number(100 / colsCount * 0.98) + "%";
- d.style.margin = "0px";
- divRow.appendChild(d);
- Droppables.add(d, {accept: ['fieldContainer', 'newFieldContainer'], onDrop: onFieldDrop, hoverclass: "divCellHover"})
- d.onclick = selectCell;
- }
- }
- $('velocityZone').style.display = 'none';
- $('previewForm').style.display = 'none';
- $('divForm').style.display = 'inline';
-}
-
-function onFieldDrop(droppedElement, cell) {
- if (droppedElement.parentNode == cell)
- return;
- // ako je celija zauzeta, trazi prazno mesto ili je obrisi
- if (cell.isOccupied == true) {
- var emptyCellExists = false;
- var tmpcell = cell.nextSibling;
- // ispituje da li u redu postoji prazna celija
- while (!emptyCellExists && tmpcell != null) {
- if (tmpcell.firstChild == null)
- emptyCellExists = true;
- else
- tmpcell = tmpcell.nextSibling;
- }
- // ako nema prazna celija, onda obrisi onu na koju se dropuje i nastavi sa dodavanjem
- if (!emptyCellExists) {
- if (droppedElement.parentNode.parentNode.parentNode.id == 'tbdFields')
- droppedElement.parentNode.removeChild(droppedElement)
-// alert("The content of this cell will be deleted!")
- emptyCell(cell);
- }
- // ako ima prazna, siftuj nadesno od trenutne do prazne (petlja ide obrnutim redom)
- else {
- var row = cell.parentNode;
- for (var el = tmpcell; el != cell; el = el.previousSibling) {
- el.appendChild(el.previousSibling.firstChild);
- el.isOccupied = true;
- }
- }
- }
-
- if (droppedElement.className == 'fieldContainer') {
- var tmp = document.createElement('img');
- tmp.className = 'fieldContainer';
- tmp.src = droppedElement.firstChild.src;
- cell.isOccupied = true;
- cell.innerHTML = '';
- cell.appendChild(tmp);
- selectGivenCell(cell);
- // pomera polje iz fields boxa
- if (droppedElement.parentNode != null) {
- droppedElement.parentNode.isOccupied = false;
- droppedElement.parentNode.innerHTML = '';
- }
- var elName = droppedElement.firstChild.src;
- var ind1 = elName.lastIndexOf('/') + 1;
- var ind2 = elName.lastIndexOf('.');
- elName = elName.substring(ind1, ind2);
-
- var d = document.createElement('div');
- d.appendChild(tmp);
- cell.appendChild(d);
- d.appendChild(document.createElement('br'));
- d.appendChild(document.createTextNode(droppedElement.fieldName));
- d.fieldName = droppedElement.fieldName;
- d.fieldType = droppedElement.fieldType;
- d.xwClassPropertyName = droppedElement.xwClassPropertyName;
- d.className = 'fieldContainer';
- d.draggable = new Draggable(d, {revert: true})
- }
- else if(droppedElement.className == 'newFieldContainer') {
- // kreiraj sliku za form edit mode
- var tmp = document.createElement('img');
- tmp.className = 'fieldContainer';
- tmp.src = droppedElement.firstChild.src;
- cell.isOccupied = true;
- cell.innerHTML = '';
- cell.appendChild(tmp);
- selectGivenCell(cell);
- var elName = droppedElement.firstChild.src;
- var ind1 = elName.lastIndexOf('/') + 1;
- var ind2 = elName.lastIndexOf('.');
- var elType = elName.substring(ind1, ind2);
-
- // dodaj ime i setuj ostale parametre polja
- var d = document.createElement('div');
- d.appendChild(tmp);
- cell.appendChild(d);
- d.appendChild(document.createElement('br'));
- d.appendChild(document.createTextNode('newField' + newFieldsCounter));
- d.fieldName = 'newField' + newFieldsCounter;
- d.fieldType = elType;
- d.xwClassPropertyName = 'newField' + newFieldsCounter;
- d.className = 'fieldContainer';
- d.draggable = new Draggable(d, {revert: true})
-
- // dodaj pretty name u tabelu za class fields
- var tbdFields = $('tbdFields');
- // kreiraj polje za pretty name
- var d = document.createElement('div');
- d.className = 'fieldContainer';
- d.draggable = new Draggable(d, {revert: false});
- var i = document.createElement('img');
- i.src = '/xwiki/bin/download/Main/Project+page+2/TextLabel.png';
- d.appendChild(i);
- d.appendChild(document.createElement('br'));
- d.appendChild(document.createTextNode('newField' + newFieldsCounter + 'PrettyName'))
- d.fieldType = 'TextLabel';
- d.fieldName = 'newField' + newFieldsCounter + 'PrettyName';
- d.xwClassPropertyName = 'newField' + newFieldsCounter;
-
- putFieldInFieldsBox(d);
- newFieldsCounter++;
- }
-
- updateEditingFields(selectedCell);
-}
-
-// GENERISI PREVIEW FORM
-function generateFormPreview() {
- var divPreview = $('previewForm');
- if (divPreview.style.display != 'none')
- return;
-
- divPreview.innerHTML = '';
- var groups = document.getElementsByClassName('group');
- var titles = document.getElementsByClassName('groupTitle');
- var tmpdivs = document.getElementsByTagName('div');
- var presTexts = [];
- var presTexts = document.getElementsByClassName('groupPresentationText');
- var tables = document.getElementsByClassName('divTable');
-
- for (var i = 0; i < groups.length; i++) {
- var group = groups[i];
- var divGroup = document.createElement("div");
- var divPresText = document.createElement("div");
- var fstTable = document.createElement("fieldset");
- var title = document.createElement("legend");
- var divTable = document.createElement("table");
- var divTBody = document.createElement("tbody");
-
- divTable.style.width = Number(tables[i].colsCount * cellWidth) + "px";
- divTable.setAttribute('cellspacing', 0);
-
- var c = 0;
- var tmpDivs = tables[i].getElementsByTagName('div');
- var rows = [];
- for (var j = 0; j < tmpDivs.length; j++) {
- if (tmpDivs[j].parentNode == tables[i])
- rows.push(tmpDivs[j]);
- }
-
- for (var j = 0; j < rows.length; j++) {
- var trw = document.createElement('tr');
- divTBody.appendChild(trw);
- if (rows[j].nextSibling != null && rows[j].nextSibling.nodeName == "HR") {
- var hr = document.createElement('hr');
- hr.style.width = Number(tables[i].colsCount * 100) + "%";
- divTBody.appendChild(hr);
- }
- trw.style.height = rows[j].offsetHeight + "px";
- var defaultWidth = 100 / tables[i].colsCount;
- for (var k = 0; k < rows[j].childNodes.length; k++) {
- var td = document.createElement("td");
- trw.appendChild(td);
- td.className = 'cellPreview';
- var tmpCellWidth = parseInt(rows[j].childNodes[k].style.width);
- if (tmpCellWidth > defaultWidth) {
- var colspan = Math.ceil(tmpCellWidth / defaultWidth);
- td.setAttribute('colspan', colspan)
- }
-
- if (rows[j].childNodes[k].isOccupied)
- td.appendChild(generateField(rows[j].childNodes[k]));
- else
- td.innerHTML = rows[j].childNodes[k].innerHTML;
- }
- }
-
- fstTable.style.width = "0px";
-
- divTable.appendChild(divTBody);
- fstTable.appendChild(title);
- fstTable.appendChild(divTable);
- divGroup.appendChild(divPresText);
- divGroup.appendChild(fstTable);
-
- title.innerHTML = titles[i].innerHTML;
- divPresText.innerHTML = presTexts[i].innerHTML;
-
- divPreview.appendChild(document.createElement("hr"));
- divPreview.appendChild(divGroup);
- }
- $('velocityZone').style.display = 'none';
- $('previewForm').style.display = 'inline';
- $('divForm').style.display = 'none';
-}
-
-function generateField(model) {
- var fieldType = model.firstChild.fieldType;
- var fieldWidth = "80%";
- switch(fieldType) {
- case 'String':
- case 'Number':
- case 'Date':
- var toReturn = document.createElement('input');
- break;
- case 'Password':
- var toReturn = document.createElement('input');
- toReturn.type = 'password';
- break;
- case 'Boolean':
- var toReturn = document.createElement('select');
- var optionYes = document.createElement('option');
- optionYes.innerHTML = 'yes';
- var optionNo = document.createElement('option');
- optionNo.innerHTML = 'no';
- toReturn.appendChild(optionYes);
- toReturn.appendChild(optionNo);
- break;
- case 'StaticList':
- case 'DBList':
- var toReturn = document.createElement('select');
- var optionYes = document.createElement('option');
- optionYes.innerHTML = '1';
- var optionNo = document.createElement('option');
- optionNo.innerHTML = '2';
- toReturn.appendChild(optionYes);
- toReturn.appendChild(optionNo);
- break;
- case 'TextArea':
- var toReturn = document.createElement("textArea");
- break;
- case 'TextLabel':
- var toReturn = document.createElement('div');
- toReturn.innerHTML = model.firstChild.fieldName;
- break;
- }
- toReturn.style.width = fieldWidth;
- return toReturn;
-}
-
-// GENERISI VELOCITY
-function generateVelocity() {
- var velocityZone = $('velocityZone');
- if (velocityZone.style.display != 'none')
- return;
- var velocityCode = document.createElement('textArea');
- velocityCode.cols = 60;
- velocityCode.rows = 20;
- velocityCode.id = 'velocityCode';
- velocityZone.innerHTML = '';
- velocityZone.appendChild(velocityCode);
-
- var groups = document.getElementsByClassName('group');
- var titles = document.getElementsByClassName('groupTitle');
- var presTexts = document.getElementsByClassName('groupPresentationText');
- var tables = document.getElementsByClassName('divTable');
- $('velocityCode').innerHTML = '';
- var s = '';
- s += '$doc.use("' + $('fields').xWikiClassName + '")';
- s += '\n';
- s += '#set($classname = "' + $('fields').xWikiClassName + '")';
- s += '\n';
- s += '#set($class = $xwiki.getDocument($classname).xWikiClass)';
- s += '\n';
- for (var i = 0; i < groups.length; i++) {
- s += '\n';
- s += '<hr>';
- s += '\n';
- s += '<div>' + presTexts[i].innerHTML + '</div>'; // divPresText, end divPresText
- s += '\n';
- var group = groups[i];
- s += '<fieldset style="width: 0px">'; //fstTable
- s += '\n';
- s += '<legend>' + titles[i].innerHTML + '</legend>'; // title, end title
- s += '\n';
- s += '<table cellspacing=0 style="width:' + Number(tables[i].colsCount * cellWidth) + 'px"><tbody>'; // divTable
- s += '\n';
-
- var tmpDivs = tables[i].getElementsByTagName('div');
- var rows = [];
- for (var j = 0; j < tmpDivs.length; j++) {
- if (tmpDivs[j].parentNode == tables[i])
- rows.push(tmpDivs[j]);
- }
-
- for (var j = 0; j < rows.length; j++) {
- s += '<tr style="height:' + rows[j].offsetHeight + 'px">'; // trw
- s += '\n';
- if (rows[j].nextSibling != null && rows[j].nextSibling.nodeName == "HR") {
- s += '<hr style="width:' + Number(tables[i].colsCount * 100) + '%;">'
- s += '\n';
- }
- for (var k = 0; k < rows[j].childNodes.length; k++) {
- var defaultWidth = 100 / tables[i].colsCount;
- var tmpCellWidth = parseInt(rows[j].childNodes[k].style.width);
- var colspan = Math.ceil(tmpCellWidth / defaultWidth);
- s += '<td class="cellPreview" colspan=' + colspan + '>'; // td
- if (rows[j].childNodes[k].isOccupied) {
- if (rows[j].childNodes[k].firstChild.fieldType == "TextLabel") {
- s += '$class.get("' + rows[j].childNodes[k].firstChild.xwClassPropertyName + '").prettyName'
- }
- else {
- s += '$doc.display("' + rows[j].childNodes[k].firstChild.fieldName + '")';
- }
- }
- else {
- s += rows[j].childNodes[k].innerHTML;
- }
- s += '</td>'; // end td
- s += '\n';
- }
- s += "</tr>" // end trw
- s += '\n';
- }
-
- s += '</tbody></table>'
- s += '\n';
- s += '</fieldset>'; // end fstTable
- s += '\n';
- }
- s += '\n';
- $('velocityCode').innerHTML = s;
-
- $('velocityZone').style.display = 'inline';
- $('previewForm').style.display = 'none';
- $('divForm').style.display = 'none';
-}
-
-function viewMode() {
- $('velocityZone').style.display = 'none';
- $('previewForm').style.display = 'none';
- $('divForm').style.display = 'inline';
-}
-
-function switchFieldsSource() {
- if ($('fields').style.display != 'none') {
- $('fields').style.display = 'none';
- $('newFields').style.display = '';
- }
- else {
- $('fields').style.display = '';
- $('newFields').style.display = 'none';
- }
-}
-
-function putFieldInFieldsBox(field) {
- var tbdFields = $('tbdFields');
- var tds = tbdFields.getElementsByTagName('td');
- for (var i = 0; i < tds.length; i++) {
- if (tds[i].firstChild == null) {
- tds[i].appendChild(field);
- return true;
- }
- }
- // ako nema praznog td, kreiraj ga
- var td = document.createElement('td');
- td.appendChild(field);
- // ako ima prazno mesto u redu za prazan td dodaj ga, ako ne, dodaj nov red (tr) u tabelu
- if (tds.length % $('tbdFields').colsCount == 0) {
- var trw = document.createElement('tr');
- tbdFields.appendChild(trw);
- trw.appendChild(td);
- }
- else {
- tds[tds.length-1].parentNode.appendChild(td);
- }
- return true;
-}
\ No newline at end of file
More information about the Xwiki-notifications
mailing list