function EditFile (id) { var id = id; var form = new Form (); var getSaveValue = false; this.onload = function () { this.preview (); var value = form.get ("value["+id+"]"); form.set ("force_download["+id+"]", !value.match (/&open=1/)); form.set ("name["+id+"]", value.replace (/.*&filename=([^&]+).*|.*/, "$1")); form.set ("type["+id+"]", value.replace (/.*&type=[^&]+\/([^&]+).*|.*/, "$1")); } this.setValue = function (value) { if (typeof value == "object") { form.set ("value["+id+"]", value.value); form.set ("url["+id+"]", value.url); form.set ("type["+id+"]", value.type); form.set ("name["+id+"]", value.name); form.set ("force_download["+id+"]", value.force); } else { form.set ("value["+id+"]", value); } this.preview (); } this.getValue = function () { if (getSaveValue) { // langsam aber gefiltert getSaveValue = false; return form.get ("value["+id+"]"); } else { return { value : form.get ("value["+id+"]"), url : form.get ("url["+id+"]"), file : form.get ("file["+id+"]"), type : form.get ("type["+id+"]"), name : form.get ("name["+id+"]"), force : form.get ("force_download["+id+"]") }; } } this.getAttributes = function (value) { if (typeof value == "object") { value = value.value; } if (form.get ("force_download["+id+"]")) { return {type:"file", url : value, target : ""}; } else { return {type:"file", url : value}; } } this.insertText = function (text) { var input = document.getElementById ("url["+id+"]"); var start = input.selectionStart; var end = input.selectionEnd; input.value = input.value.substr (0, start) + text + input.value.substr (end); input.selectionStart = input.selectionEnd = start + text.length; } this.save = function () { var fd = form.get ("force_download["+id+"]"); if (fd && form.getElement ("name["+id+"]")!="" && !form.get ("name["+id+"]")) { showMessages (this.messages['filename not set']); return true; } if (!fd && form.getElement ("type["+id+"]")!="" && !form.get ("type["+id+"]")) { showMessages (this.messages['type not set']); return true; } var attributes = ""; attributes += fd ? "" : "&open=1"; attributes += "&type=" + this.filetypes[form.get ("type["+id+"]")]; attributes += "&filename=" + form.get ("name["+id+"]"); if (form.get ("url["+id+"]") || form.get ("file["+id+"]")) { // Datei in extra Fenster hochladen var target = "upload_" + new Date ().getTime (); var win = window.open ("", target, "width=200, height=100, status=no, toolbar=no, location=no, scrollbars=no"); var node = win.document.createElement ("span"); node.innerHTML = "
Uploading ...
"; win.document.body.insertBefore (node, win.document.body.firstChild); form.set ("attributes["+id+"]", attributes); var fileform = document.getElementById ("form["+id+"]"); fileform.target = target; fileform.submit (); fileform.reset (); edit[id].oldValue = this.getValue (); return true; } else if (form.get ("value["+id+"]")) { // nur Datei Parameter ändern form.set ("value["+id+"]", form.get ("value["+id+"]").replace (/(&uid=[^&]+).*/, "$1") + attributes); getSaveValue = true; return false; } else { // nichts tuen da bisher keine Datei hochgeladen wurde showMessages (this.messages['file not set']); return true; } return false; } this.focus = function () { form.focus ("url["+id+"]") } /***********************************************************************/ this.changeValue = function (isUrl) { if (isUrl) { if (form.get ("file["+id+"]")) { var url = form.get ("url["+id+"]"); if (url != this.oldValue.url) { document.getElementById ("form["+id+"]").reset (); form.set ("url["+id+"]", url); } } form.set ("name["+id+"]", form.get ("url["+id+"]").replace (/.*&filename=([^&]+).*|[^?&]*\/([^?&]+).*/, "$1$2")); form.set ("type["+id+"]", form.get ("url["+id+"]").replace (/.*&type=[^\/]+\/([^&]+).*|[^?&]*\.([^?&]+).*/, "$1$2")); } else { form.set ("url["+id+"]", ""); form.set ("name["+id+"]", form.get ("file["+id+"]").replace (/.*\//, "")); form.set ("type["+id+"]", form.get ("file["+id+"]").replace (/.*\.(.+)/, "$1")); } form.set ("force_download["+id+"]", !form.get ("type["+id+"]")); hasChanged (id); } this.preview = function () { var preview = document.getElementById ("preview["+id+"]"); var value = form.get ("value["+id+"]"); var link = ""; if (value) { link = "preview
"; } preview.innerHTML = link; } }