r1272 - xwiki-sandbox/formeditor
Nebojsa Miletic
mileticn at users.forge.objectweb.org
Mon Sep 4 04:31:31 CEST 2006
Author: mileticn
Date: 2006-09-04 04:31:28 +0200 (Mon, 04 Sep 2006)
New Revision: 1272
Added:
xwiki-sandbox/formeditor/formEditor.vm
Log:
Added a file remotely
Added: xwiki-sandbox/formeditor/formEditor.vm
===================================================================
--- xwiki-sandbox/formeditor/formEditor.vm 2006-09-04 02:30:31 UTC (rev 1271)
+++ xwiki-sandbox/formeditor/formEditor.vm 2006-09-04 02:31:28 UTC (rev 1272)
@@ -0,0 +1,240 @@
+{pre}
+
+<script language="javascript" type="text/javascript" src="/xwiki/bin/download/Main/WebHome/prototype.js"></script>
+<script language="javascript" type="text/javascript" src="/xwiki/bin/download/Main/WebHome/scriptaculous.js"></script>
+<script language="javascript" type="text/javascript" src="/xwiki/bin/download/Main/WebHome/main.js"></script>
+<script language="javascript" type="text/javascript" src="/xwiki/bin/download/Main/WebHome/editBoxFunctions.js"></script>
+<script language="javascript" type="text/javascript" src="/xwiki/bin/download/Main/WebHome/getters.js"></script>
+
+#macro (selectclassform)
+<form id="frmSelectClass">
+<select name="xWikiClassName">
+#foreach ($classname in $xwiki.classList)
+#if ($xwiki.hasAccessLevel("edit", $classname))
+#set($classdoc = $xwiki.getDocument($classname))
+<option value='$classname'>$classname</option>
+#end
+#end
+</select>
+<input type='submit' value='use class' onclick='location = this.form.xWikiClassName.value'>
+</form>
+#end
+
+
+#macro (editclass)
+<script>
+var input = [
+#set($classname = $request.xWikiClassName)
+#set($classdoc = $xwiki.getDocument($classname))
+#set($class = $classdoc.getxWikiClass())
+#foreach ($prop in $class.properties)
+#if ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.NumberClass")
+#set($propType = "Number")
+#elseif ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.StringClass")
+#set($propType = "String")
+#elseif ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.DateClass")
+#set($propType = "Date")
+#elseif ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.PasswordClass")
+#set($propType = "Password")
+#elseif ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.BooleanClass")
+#set($propType = "Boolean")
+#elseif ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.StaticListClass")
+#set($propType = "StaticList")
+#elseif ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.DBListClass")
+#set($propType = "DBList")
+#elseif ($prop.xWikiClass.name == "com.xpn.xwiki.objects.classes.TextAreaClass")
+#set($propType = "TextArea")
+#end
+{
+ name: "${prop.name}",
+ prettyName: "${prop.prettyName}",
+ fieldModel: {
+ #foreach ($setting in $prop.xWikiClass.propertyNames)
+ ## IMA NEKI BAG SA TEXT EDITOROM ZA SQL POLJE (prenosi se u novi red i ne prihvata ga kao jedinstveni string)
+ #if ($setting != 'sql')
+ $prop.xWikiClass.get("$setting").name: "$doc.displayEdit($prop.xWikiClass.get("$setting"), '$prop.name', $prop)",
+ #end
+ #end
+ },
+ type: "${propType}"
+},
+#end
+];
+var xWikiClassName = '$class.getName()'
+</script>
+
+
+
+<style>
+ @import url("/xwiki/bin/download/Main/WebHome/styles.css");
+</style>
+<script type="text/javascript">
+var currentform;
+function executeCommand(url, callback) {
+ // we use a javascript feature here called "inner functions"
+ // using these means the local variables retain their values after the outer function
+ // has returned. this is useful for thread safety, so
+ // reassigning the onreadystatechange function doesn't stomp over earlier requests.
+ function ajaxBindCallback() {
+ if (ajaxRequest.readyState == 4) {
+ if (ajaxRequest.status == 200) {
+ if (ajaxCallback) {
+ ajaxCallback(ajaxRequest.responseText);
+ } else {
+ alert('no callback defined');
+ }
+ } else {
+ alert("There was a problem retrieving the xml data:\n" + ajaxRequest.status + ":\t" + ajaxRequest.statusText + "\n" + ajaxRequest.responseText);
+ }
+ }
+ }
+
+ // addMessage(url);
+ // use a local variable to hold our request and callback until the inner function is called...
+ var ajaxRequest = null;
+ var ajaxCallback = callback;
+
+ // bind our callback then hit the server...
+ if (window.XMLHttpRequest) {
+ // moz et al
+ ajaxRequest = new XMLHttpRequest();
+ ajaxRequest.onreadystatechange = ajaxBindCallback;
+ ajaxRequest.open("GET", url, true);
+ ajaxRequest.send(null);
+ } else if (window.ActiveXObject) {
+ // ie
+ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
+ if (ajaxRequest) {
+ ajaxRequest.onreadystatechange = ajaxBindCallback;
+ ajaxRequest.open("GET", url, true);
+ ajaxRequest.send();
+ }
+ else{
+ alert("your browser does not support xmlhttprequest" )
+ }
+
+ }
+ else{
+ alert("your browser does not support xmlhttprequest" )
+ }
+}
+function saveResult(html) {
+ if(html=="SUCCESS") {
+ alert("Form saved as ${classname}Sheet")
+ //location = "SaveSheet";
+ }
+ else {
+ alert("Error saving.")
+ alert(html);
+ }
+}
+function save(form) {
+ generateVelocity();
+ var code = $('velocityCode').value;
+ var url = "SaveSheet?xpage=plain&classname=" + escape(form.classname.value) + "Sheet" + "&content=" + escape(code);
+ alert(url)
+ executeCommand(url, saveResult);
+ return false;
+}
+</script>
+<form method='post' action="">
+<input type="button" value="Edit mode" onclick="viewMode()" >
+<input type="button" value="Preview mode" onclick="generateFormPreview()" >
+<input type="button" value="Velocity mode" onclick="generateVelocity()" >
+
+<input type="hidden" name="xpage" value="plain" />
+<input type="hidden" name="classname" value="$!classname" />
+<input type='hidden' name="content">
+<input type='button' value='Save form' onclick="save(this.form); return false;">
+
+</form>
+
+
+
+<div id='rightBoxes' class='rightBoxes' style="width: 230px;">
+ <fieldset style="width: 100%; ">
+ <legend>Add group</legend>
+ <table style="font-size: 12px;"><tbody>
+ <tr>
+ <td>Table cols:</td><td><input id="colsCount" class='editingInput' size="10"></td>
+ <td rowspan="2"><button width=70 onclick="createTable()">Add</button></td>
+ </tr>
+ <tr>
+ <td>Table rows: </td><td><input id="rowsCount" class='editingInput' size="10"></td>
+ </tr>
+ </tbody></table>
+ </fieldset>
+
+
+ <fieldset id="fields" style="width: 100%; ">
+ <div>
+ <span><a href="#" class="editingText" onclick='switchFieldsSource("classFields")'>Class fields</a></span>
+ <span><a href="#" class="editingText" onclick='switchFieldsSource("newFields")'>New fields</a></span>
+ </div>
+ <legend>Class fields</legend>
+ <table>
+ <tbody id='tbdFields'>
+ </tbody>
+ </table>
+ </fieldset>
+ <fieldset id="newFields" style="width: 100%; display: none;">
+ <div>
+ <span><a href="#" class="editingText" onclick='switchFieldsSource("classFields")'>Class fields</a></span>
+ <span><a href="#" class="editingText" onclick='switchFieldsSource("newFields")'>New fields</a></span>
+ </div>
+ <legend>New fields</legend>
+ <table>
+ <tbody id='tbdNewFields'>
+
+ </tbody>
+ </table>
+ </fieldset>
+
+ <div id="paramsEditor" class="paramsEditor" >
+ <fieldset class='editingFields' style="width: 100%; height: 200px; ">
+ <div style="font-size: 12px;" id='selectCellNote'>
+ Form parameters can be changed only if some cell is selected.
+ </div>
+ <legend>Edit box</legend>
+ <table id='editingFields' style="font-size: 12px; display: none;"><tbody>
+ <tr><td>Title text:</td><td><input id="editGroupTitleInput" class="editingInput" onchange='setGroupTitleText()'></td></tr>
+ <tr><td>Presentation text:</td><td><input id="editPresentationTextInput" class="editingInput" onchange='setGroupPresentationText()'></td></tr>
+ <tr><td>Row height:</td><td><input id="editRowHeightInput" class="editingInput" onchange="setRowHeight()"></td></tr>
+ <tr id='editCellText'><td>Cell text:</td><td><input id="editCellTextInput" class="editingInput" onchange="setCellText()"></td></tr>
+ <tr id='editDeleteField'><td colspan=2><a href="#" class='editingText' onclick='emptyCell()'>Delete field from cell</a></td></tr>
+ <tr id='editAddSeparator'><td colspan=2><a href="#" class='editingText' onclick='addSeparator()'>Add separator below the row</a></td></tr>
+ <tr id='editRemoveSeparator'><td colspan=2><a href="#" class='editingText' onclick='removeSeparator()'>Remove separator below the row</a></td></tr>
+ <tr id='editSpanCell'><td colspan=2><a href="#" class='editingText' onclick='spanCell()'>Span to adjacent cell</a></td></tr>
+ <tr id='editSplitCell'><td colspan=2><a href="#" class='editingText' onclick='splitCell()'>Split cell</a></td></tr>
+ <tr><td colspan=2><a href="#" class='editingText' onclick='deleteGroup()'>Delete group</a></td></tr>
+ </tbody></table>
+ </fieldset>
+ </div>
+ <div id="fieldSettings" class="fieldSettings">
+ <fieldset id="editingFieldSettings" style="width: 100%;">
+ <div><i>Read-only for this version</i></div>
+ <legend>Field settings</legend>
+ <table style="font-size: 12px;"><tbody id='tbdFieldSettings'></tbody></table>
+ </fieldset>
+ </div>
+</div>
+
+<div id='divForm' style="float:right; display: none; margin-right: -100px; background-color: white; width: 870px;"></div>
+<div id='previewForm' style="float:right; display: none; margin-right: -100px; background-color: white; width: 870px;"></div>
+<div id='velocityZone' style="float:right; display: none; margin-right:- 100px; background-color: white; ">
+ <textarea cols = 80 rows = 30 id='velocityCode'></textarea>
+</div>
+
+<script language="javascript" type="text/javascript" >
+init(input, '$classname');
+</script>
+#end
+## end za veliki makro
+
+#if ($request.xWikiClassName)
+#editclass()
+#else
+#selectclassform()
+#end
+
+{/pre}
\ No newline at end of file
More information about the Xwiki-notifications
mailing list