]> git.sesse.net Git - pr0n/blobdiff - files/wizard.js
Add the client code for the WinXP wizard.
[pr0n] / files / wizard.js
diff --git a/files/wizard.js b/files/wizard.js
new file mode 100644 (file)
index 0000000..000e49c
--- /dev/null
@@ -0,0 +1,163 @@
+function OnBack()
+{
+       window.external.FinalBack();
+}
+
+function OnNext()
+{
+       var xml = window.external.Property("TransferManifest");
+       var files = xml.selectNodes("transfermanifest/filelist/file");
+       var form = document.getElementById('form1');
+
+       for (i = 0; i < files.length; i++) {
+               var postTag = xml.createNode(1, "post", "");
+               postTag.setAttribute("href", "http://pr0n-internal.sesse.net/webdav/upload/");
+               postTag.setAttribute("name", "image");
+
+               // event
+               if (form.existing.checked) {
+                       var dataTag = xml.createNode(1, "formdata", "");
+                       dataTag.setAttribute("name", "event");
+                       dataTag.text = "test"; //form.existingevent.value; FIXME
+                       postTag.appendChild(dataTag);
+               } else {
+                       var dataTag = xml.createNode(1, "formdata", "");
+                       dataTag.setAttribute("name", "neweventid");
+                       dataTag.text = form.neweventid.value;
+                       postTag.appendChild(dataTag);
+                       
+                       dataTag = xml.createNode(1, "formdata", "");
+                       dataTag.setAttribute("name", "neweventdate");
+                       dataTag.text = form.neweventdate.value;
+                       postTag.appendChild(dataTag);
+                       
+                       dataTag = xml.createNode(1, "formdata", "");
+                       dataTag.setAttribute("name", "neweventdesc");
+                       dataTag.text = form.neweventdesc.value;
+                       postTag.appendChild(dataTag);
+               }
+
+               // who took this
+               if (form.others.checked) {
+                       var dataTag = xml.createNode(1, "formdata", "");
+                       dataTag.setAttribute("name", "takenby");
+                       dataTag.text = form.other.value;
+                       postTag.appendChild(dataTag);
+               }
+               
+               // original file size (to avoid the evil resizing)
+               dataTag = xml.createNode(1, "formdata", "");
+               dataTag.setAttribute("name", "size");
+               dataTag.text = files.item(i).getAttribute("size");
+               postTag.appendChild(dataTag);
+       
+               files.item(i).appendChild(postTag);
+       }
+
+       var uploadTag = xml.createNode(1, "uploadinfo", "");
+       var htmluiTag = xml.createNode(1, "htmlui", "");
+       htmluiTag.text = "http://pr0n.sesse.net/test/";
+       uploadTag.appendChild(htmluiTag);
+       
+       /*var target = xml.createNode(1, "target", "");
+       target.setAttribute("href", "https://pr0n-internal.sesse.net/webdav/upload/test/");
+       uploadTag.appendChild(target); */
+
+       xml.documentElement.appendChild(uploadTag);
+       window.external.FinalNext();
+}
+
+function OnCancel()
+{
+       alert('OnCancel');
+}
+
+function somethingchanged()
+{
+       var valid = true;
+       var form = document.getElementById('form1');
+       var disable_existingevent, disable_newevent;
+
+       if (form.existing.checked) {
+               disable_existingevent = false;
+               disable_newevent = true;
+
+               if (form.existingevent.value == '') {
+                       valid = false;
+               }
+       } else {
+               disable_existingevent = true;
+               disable_newevent = false;
+
+               // this matches 1:1 the checks done on the server
+               var id = form.neweventid.value;
+               var date = form.neweventdate.value;
+               var desc = form.neweventdesc.value;
+               
+               if (id.match(/^\s*$/) || !id.match(/^([a-zA-Z0-9-]+)$/)) {
+                       valid = false;
+               }
+               if (date.match(/^\s*$/) || date.match(/[<>&]/) || date.length > 100) {
+                       valid = false;
+               }
+               if (desc.match(/^\s*$/) || desc.match(/[<>&]/) || desc.length > 100) {
+                       valid = false;
+               }
+       }
+
+       // enable/disable the "existing event" form
+       form.existingevent.disabled = disable_existingevent;
+       
+       var extexts = getElementsByClass(document, 'existingeventtext', '*');
+       for (i = 0; i < extexts.length; ++i) {
+               extexts[i].style.color = disable_existingevent ? 'gray' : '';
+       }
+
+       // enable/disable the "new event" form
+       form.neweventid.disabled = disable_newevent;
+       form.neweventdate.disabled = disable_newevent;
+       form.neweventdesc.disabled = disable_newevent;
+
+       var netexts = getElementsByClass(document, 'neweventtext', '*');
+       for (i = 0; i < netexts.length; ++i) {
+               netexts[i].style.color = disable_newevent ? 'gray' : '';
+       }
+
+       // and finally, the "who" form
+       var disable_who;
+       if (form.me.checked) {
+               disable_who = true;
+       } else {
+               disable_who = false;
+       
+               var who = form.other.value;
+               if (who.match(/^\s*$/) || who.match(/[<>&]/) || who.length > 100) {
+                       valid = false;
+               }
+       }
+
+       form.other.disabled = disable_who;
+
+       var whotexts = getElementsByClass(document, 'whotext', '*');
+       for (i = 0; i < whotexts.length; ++i) {
+               whotexts[i].style.color = disable_who ? 'gray' : '';
+       }
+
+
+       window.external.SetWizardButtons(true, valid, false);
+}
+
+function getElementsByClass(node,searchClass,tag) {
+       var classElements = new Array();
+       var els = node.getElementsByTagName(tag);
+       var elsLen = els.length;
+       for (i = 0, j = 0; i < elsLen; i++) {
+               if (els[i].className == searchClass) {
+                       classElements[j] = els[i];
+                       j++;
+               }
+       }
+       return classElements;
+}
+
+somethingchanged();