/** * $Id: browser.js 2700 2008-09-05 06:57:49Z micke $ **/ Array.prototype.remove = function(from, to) { var rest = this.slice((to || from) + 1 || this.length); this.length = from < 0 ? this.length + from : from; return this.push.apply(this, rest); }; function startJumpLoad(dir) { $('jumpload').innerHTML = ''; } var filterTimer = 0; var lastStr = ""; function filterFiles(e, field) { e = e || window.event; var str = field.value; if(e.keyCode == 27) str = null; clearTimeout(filterTimer); filterTimer = setTimeout( function() { if(lastStr == str) return; FileBrowser.Filter(str); lastStr = str; }, 300); } FileBrowser = { filesChanged : false, ListStyle : 0, box : null, loaded : false, SortBy : null, SortByOrder : 0, offetX : 0, offsetY : 0, arguments : null, startDir : "/", movedFiles : null, DoDrag : false, startDirChanged : false, lastDir : '/', selectedFiles : new Array(), Contains : function(elm) { try { if(FileBrowser.box && FileBrowser.box.contentBox.contains(elm)) return(true); } catch(e) { } return(false); } , Browse : function(arguments) { this.filesChanged = false; for(var i=0;iFör att vara säker bör du alltid kontrollera samt publicera sidor där de flyttade filerna används.

Den sida du för tillfället har öppen kan inte ändras automatiskt, du måste själv uppdatera alla referenser till de flyttade filerna.

Du bör också publicera om alla sidor som använder de ändrade filerna.', MessageBoxButtons.OK); } } FileBrowser.box.contentBox.onkeydown = function(event) { event = event || window.event; if(event.keyCode == 113 && curFile) { event.cancelBubble = true; renameFile(curFile); return false; } } FileBrowser.box.contentBox.onmousemove = function(event) { event = event || window.event; var offset = $(FileBrowser.box.contentBox).cumulativeOffset(); if(FileBrowser.DoDrag && FileBrowser.selectedFiles.length > 0) { if(!FileBrowser.moveDummy) { FileBrowser.moveDummy = FileBrowser.box.getElement("moveDummy"); FileBrowser.moveDummy = FileBrowser.selectedFiles[0].cloneNode(true); FileBrowser.moveDummy.style.position = "absolute"; FileBrowser.box.contentBox.appendChild(FileBrowser.moveDummy); } FileBrowser.moveDummy.style.left = (event.clientX - offset.left) + "px"; FileBrowser.moveDummy.style.top = (event.clientY - offset.top) + "px"; $(FileBrowser.moveDummy).show(); } } FileBrowser.box.contentBox.ondragstart = function(e) { FileBrowser.DoDrag = true; return(false); } FileBrowser.box.contentBox.onmouseup = function(e) { e = event || window.event; if(FileBrowser.DoDrag) { try { var elm = $(document.elementFromPoint(e.clientX, e.clientY)); while(elm) { var f = (isSafari || isGecko) ? elm.file : elm.getAttribute("file"); if(f) { if(elm.getAttribute("isDir") && !f.readonly) { var mb = new MessageBox('Flytta filer','Vill du verkligen flytta filerna?

OBS
Detta kan innebära att du måste justera länkar, bilder och bakgrundsbilder.
Det kräver också att du publicerar de sidor som använder filerna.
 
',MessageBoxButtons.YES | MessageBoxButtons.NO); mb.onDialogReturn = function(sender,result) { if(result==DialogResult.YES) { var errors = 0; var filesMoved = 0; var folderName = f.dir; var reportData = "

"; for(var i = 0; i < FileBrowser.selectedFiles.length; i++) { if(FileBrowser.selectedFiles[i].getAttribute("readonly")) { errors++; continue; } var fileName = "/" + FileBrowser.selectedFiles[i].getAttribute("filename"); if(FileBrowser.selectedFiles[i].getAttribute("isDir")) continue; new Ajax.Request("/browser/movefile.php?filename=" + escape(fileName) + "&folder=" + escape(folderName), { asynchronous: false, onSuccess: function(response) { reportData = reportData + response.responseText; filesMoved++; FileBrowser.filesChanged = true; } , onFailure: function(response) { reportData = reportData + response.responseText; errors++; } }); } if(errors==0) { mb = new MessageBox('Flytta filer',filesMoved + ' objekt flyttades utan problem.' + reportData,MessageBoxButtons.OK); mb.onDialogReturn = function(sender,result) { loadDirectory(directory); } FileBrowser.box.getElementById(FileBrowser.box.contentBox,'newfolder').style.display = "none"; } else { mb = new MessageBox('Fel','En eller flera objekt kunde inte flyttas.

' + filesMoved + ' objekt flyttades.
' + errors + ' objekt flyttades inte.' + reportData,MessageBoxButtons.OK); mb.onDialogReturn = function(sender,result) { loadDirectory(directory); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'newfolder').style.display = "none"; } } } } } break; } elm = elm.parentNode; } } catch(e) { alert(e); } } if(FileBrowser.moveDummy) { $(FileBrowser.moveDummy).hide(); FileBrowser.box.contentBox.removeChild(FileBrowser.moveDummy); FileBrowser.moveDummy = null; } FileBrowser.DoDrag = false; if(listStyleBox) $(listStyleBox).hide(); } } }); this.loaded = true; FileBrowser.startDirChanged = true; } FileBrowser.box.Show(); if(FileBrowser.startDirChanged || true) { loadDirectory(FileBrowser.startDir); FileBrowser.startDirChanged = false; } var searchBox = FileBrowser.box.getElementById(FileBrowser.box.box, "filterfield"); if(searchBox) searchBox.value = "sök"; } , Filter : function(str) { parseBrowserResponse(lastBrowserResponse, str); } , IsOpen : function() { return(FileBrowser.box && FileBrowser.box.box.style.display == "block"); } , GetFileUrl : function(input, events) { FileBrowser.Browse( { onselectfile : function(item) { var fileName = item.getAttribute("filename"); input.value = escape(fileName); if(events && events.onselectfile) events.onselectfile(item); } }); }, SetListStyle : function(style) { $(listStyleBox).hide(); FileBrowser.ListStyle = style; parseBrowserResponse(lastBrowserResponse, lastStr); } , Sort : function(sorton) { if(FileBrowser.SortBy == sorton) FileBrowser.SortByOrder = FileBrowser.SortByOrder == 1 ? 0 : 1; else FileBrowser.SortByOrder = 0; FileBrowser.SortBy = sorton; loadDirectory(directory, lastStr); } }; /** * called when a directory is clicked and contents of the filelisting is reloaded **/ function loadDirectory(dir, filterStr) { FileBrowser.lastDir = dir; if(!filterStr) { FileBrowser.box.getElementById(FileBrowser.box.box, 'filterfield').value = "sök"; lastStr = null; } curFile = null; FileBrowser.selectedFiles.clear(); var left = 400; var top = 300; var msgBoxTitle = FileBrowser.box.getElementById(FileBrowser.box.box,'messageboxtitle'); if(isIE) FileBrowser.box.getElementById(FileBrowser.box.box,"files").innerHTML = ""; else msgBoxTitle.innerHTML = "
 Vänta, laddar...
"; var div = document.createElement("DIV"); div.id = "filebrowser_load"; div.style.position = "absolute"; div.style.left = "0px"; div.style.top = "0px"; div.style.border = "1px solid #aaaaaa"; div.style.background = "#aaaaaa url('/images/filebrowser_load_big.gif') %50 50% no-repeat"; div.style.mozOpacity = "0.2"; div.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity = 20)"; div.style.width = ($(FileBrowser.box.getElementById(FileBrowser.box.box,"browsertable")).getWidth() - 3) + "px"; //.currentStyle.width; div.style.height = ($(FileBrowser.box.getElementById(FileBrowser.box.box,"browsertable")).getHeight() - 3) + "px"; //currentStyle.height; FileBrowser.box.contentBox.appendChild(div); new Ajax.Request('/browser/right.php?odir=' + dir + '&sortby=' + FileBrowser.SortBy + '&sortbyorder=' + FileBrowser.SortByOrder, { onSuccess: function(response) { directory = dir; parseBrowserResponse(response, filterStr); } , onFailure : function(response) { alert(response.responseText); } , reload : function() { loadDirectory(this.startDir); } }); } var lastBrowserResponse = null; function parseBrowserResponse(response, filterStr) { if(filterStr == "") filterStr = null; var msgBoxTitle = FileBrowser.box.getElementById(FileBrowser.box.box,'messageboxtitle'); if(isIE) FileBrowser.box.getElementById(FileBrowser.box.box,"files").innerHTML = ""; else msgBoxTitle.innerHTML = "
 Vänta, laddar...
"; lastBrowserResponse = response; var loadDiv = $(FileBrowser.box.getElementById(FileBrowser.box.contentBox,"filebrowser_load")); if(loadDiv) loadDiv.removeNode(); // remove loadshade try { msgBoxTitle.innerHTML = "Filarkivet"; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'delfile').disabled = true; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'moveFile').disabled = true; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'copyFile').disabled = true; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'renameFile').disabled = true; var obj = eval("(" + response.responseText + ")"); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'createfolder').disabled = obj.readonly; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'uploadfile').disabled = obj.readonly; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'browserupload').style.display = obj.readonly?"none":"block"; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'browserlinks').style.display = obj.readonly?"none":"block"; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'usedspace').innerHTML = ""; FileBrowser.box.getElementById(FileBrowser.box.contentBox,'usedspace').appendChild(document.createTextNode(obj.used)); // dirlist FileBrowser.box.getElementById(FileBrowser.box.contentBox,'dirlist').innerHTML = ""; var filesortbar = $(FileBrowser.box.getElementById(FileBrowser.box.contentBox,'filessortbar')); filesortbar.show(); for(var i = 0; i < obj.dirlist.length; i++) { var d = obj.dirlist[i]; var node = FileBrowser.box.getElementById(FileBrowser.box.contentBox, 'dirlistentry').cloneNode(true); node.appendChild(document.createTextNode(d.name)); if(node.getAttributeNode("id")) node.removeAttributeNode(node.getAttributeNode("id")); node.style.display = "inline"; node.setAttribute("dirname", d.dir); node.onclick = function() { loadDirectory(this.getAttribute("dirname")); } FileBrowser.box.getElementById(FileBrowser.box.contentBox,'dirlist').appendChild(document.createTextNode(" / ")); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'dirlist').appendChild(node); } // directories FileBrowser.box.getElementById(FileBrowser.box.contentBox,'files').innerHTML = ""; for(var i = 0; i < obj.dirs.length; i++) { var d = obj.dirs[i]; if(filterStr && d.dir.indexOf(filterStr) == -1) continue; var node = null; if(FileBrowser.ListStyle == 0) { node = FileBrowser.box.getElementById(FileBrowser.box.contentBox,'direntry').cloneNode(true); if(node.getAttributeNode("id")) node.removeAttributeNode(node.getAttributeNode("id")); var link = node.getElementsByTagName("div").item(1); node.style.display = "block"; node.className = "file"; link.setAttribute("dirname", d.dir); $(node).firstDescendant().firstDescendant().setAttribute("dirname", d.dir); link.appendChild(document.createTextNode(d.title)); node.getElementsByTagName("img").item(0).width = "48"; node.getElementsByTagName("img").item(0).height = "48"; link.appendChild(document.createElement("br")); var span = document.createElement("span"); span.style.color = "gray"; span.appendChild(document.createTextNode("Filmapp")); link.appendChild(span); if(d.name == "..") node.getElementsByTagName("img").item(0).src = "/images/icons_large/file_folder_up.gif"; } else { node = document.createElement("DIV"); node.className = "filedetails"; var iconContainer = document.createElement("div"); var nameContainer = document.createElement("div"); var typeContainer = document.createElement("div"); var sizeContainer = document.createElement("div"); var dateContainer = document.createElement("div"); iconContainer.style.styleFloat = "left"; nameContainer.style.styleFloat = "left"; typeContainer.style.styleFloat = "left"; sizeContainer.style.styleFloat = "left"; dateContainer.style.styleFloat = "left"; iconContainer.style.float = "left"; nameContainer.style.float = "left"; typeContainer.style.float = "left"; sizeContainer.style.float = "left"; dateContainer.style.float = "left"; iconContainer.style.width = "16px"; iconContainer.style.height = "16px"; nameContainer.style.width = "370px"; nameContainer.style.height = "16px"; nameContainer.style.paddingLeft = "4px"; nameContainer.style.paddingTop = "1px"; nameContainer.style.marginRight = "6px"; typeContainer.style.width = "130px"; typeContainer.style.height = "16px"; typeContainer.style.paddingTop = "2px"; sizeContainer.style.width = "90px"; sizeContainer.style.height = "16px"; sizeContainer.style.paddingTop = "2px"; dateContainer.style.width = "130px"; dateContainer.style.height = "16px"; dateContainer.style.paddingTop = "2px"; var icon = document.createElement("img"); icon.src = "/images/icons/file_folder.gif"; var name = document.createTextNode(d.name); var size = document.createTextNode("0 b"); var type = document.createTextNode("Filmapp"); var date = document.createTextNode(d.date); iconContainer.appendChild(icon); nameContainer.appendChild(name); typeContainer.appendChild(type); sizeContainer.appendChild(size); dateContainer.appendChild(date); node.appendChild(iconContainer); node.appendChild(nameContainer); node.appendChild(sizeContainer); node.appendChild(typeContainer); node.appendChild(dateContainer); } node.title = d.name + "\r\nÄndrad: " + d.date; node.setAttribute("isDir", d.dir != ".."); node.setAttribute("readonly", d.readonly); node.setAttribute("filename",d.dir); node.setAttribute("file", d); node.ondblclick = function() { if(this.isBeeingAltered) return; loadDirectory(this.getAttribute("filename")); } node.onclick = function() { if(!event) var event = window.event; try { if(!event.ctrlKey && !event.metaKey) { for(var i=0;i' + f.date + ''; node = FileBrowser.box.getElementById(FileBrowser.box.contentBox,'fileentry').cloneNode(true); if(node.getAttributeNode("id")) node.removeAttributeNode(node.getAttributeNode("id")); node.style.display = "block"; node.getElementsByTagName("span").item(0).innerHTML = "" + escape(f.title) + "
" + fileinfo + "
"; $(node).firstDescendant().firstDescendant().setAttribute("src", f.thumb); $(node).firstDescendant().firstDescendant().setAttribute("width", "48"); $(node).firstDescendant().firstDescendant().setAttribute("height", "48"); node.className = "file"; $(node).firstDescendant().style.overflow = "hidden"; } else { node = document.createElement("DIV"); node.className = "filedetails"; var iconContainer = document.createElement("div"); var nameContainer = document.createElement("div"); var typeContainer = document.createElement("div"); var sizeContainer = document.createElement("div"); var dateContainer = document.createElement("div"); iconContainer.style.styleFloat = "left"; nameContainer.style.styleFloat = "left"; typeContainer.style.styleFloat = "left"; dateContainer.style.styleFloat = "left"; sizeContainer.style.styleFloat = "left"; iconContainer.style.float = "left"; nameContainer.style.float = "left"; typeContainer.style.float = "left"; dateContainer.style.float = "left"; sizeContainer.style.float = "left"; iconContainer.style.width = "16px"; iconContainer.style.height = "16px"; nameContainer.style.width = "370px"; nameContainer.style.height = "16px"; nameContainer.style.paddingLeft = "4px"; nameContainer.style.paddingTop = "1px"; nameContainer.style.overFlow = "hidden"; nameContainer.style.overflow = "hidden"; nameContainer.style.marginRight = "6px"; typeContainer.style.width = "130px"; typeContainer.style.height = "16px"; typeContainer.style.paddingTop = "2px"; sizeContainer.style.width = "90px"; sizeContainer.style.height = "16px"; sizeContainer.style.paddingTop = "2px"; dateContainer.style.width = "130px"; dateContainer.style.height = "16px"; dateContainer.style.paddingTop = "2px"; var icon = document.createElement("img"); icon.src = f.thumb; icon.width = "16"; icon.height = "16"; var name = document.createTextNode(escape(f.name)); var size = document.createTextNode(f.size); var type = document.createTextNode(f.extension); var date = document.createTextNode(f.date); var nameLink = document.createElement("a"); nameLink.style.textDecoration = "none"; nameLink.href = escape(f.dir); nameLink.onclick = function() { return(false); } nameLink.appendChild(name); iconContainer.appendChild(icon); nameContainer.appendChild(nameLink); typeContainer.appendChild(type); sizeContainer.appendChild(size); dateContainer.appendChild(date); node.appendChild(iconContainer); node.appendChild(nameContainer); node.appendChild(sizeContainer); node.appendChild(typeContainer); node.appendChild(dateContainer); } node.title = f.name + "\r\nTyp: " + f.size + "\r\nÄndrad: " + f.date; node.setAttribute("readonly", f.readonly); node.setAttribute("filename", escape(f.dir)); if(isSafari || isGecko) node.file = f; else node.setAttribute("file", f); node.setAttribute("imgwidth", f.width); node.setAttribute("imgheight", f.height); node.setAttribute("isFile", "true"); node.setAttribute("thumb", f.thumb); node.onclick = function(event) { if(!event) var event = window.event; if(!event.ctrlKey && !event.metaKey) { for(var i = 0; i < FileBrowser.selectedFiles.length; i++) { $(FileBrowser.selectedFiles[i]).removeClassName("fileselected"); } FileBrowser.selectedFiles.clear(); } if(curFile && !event.ctrlKey && !event.metaKey) $(curFile).removeClassName("fileselected"); if(event.shiftKey) { var prev = $(this).previousSibling; while(prev) { if(prev.className == "file" && !prev.getAttribute("isDir")) { if(FileBrowser.selectedFiles.indexOf(prev) == -1) { FileBrowser.selectedFiles.push(prev); $(prev).addClassName("fileselected"); } } prev = $(prev).previousSibling; } if(FileBrowser.selectedFiles.indexOf(this) == -1) { FileBrowser.selectedFiles.push(this); $(this).addClassName("fileselected"); } } else { if(FileBrowser.selectedFiles.indexOf(this) == -1) { FileBrowser.selectedFiles.push(this); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'renameFile').disabled = (FileBrowser.selectedFiles.length != 1); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'moveFile').disabled = (FileBrowser.selectedFiles.length == 0); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'copyFile').disabled = (FileBrowser.selectedFiles.length == 0); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'delfile').disabled = (FileBrowser.selectedFiles.length == 0); $(this).addClassName("fileselected"); } else { FileBrowser.selectedFiles.remove(FileBrowser.selectedFiles.indexOf(this)); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'renameFile').disabled = (FileBrowser.selectedFiles.length != 1); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'moveFile').disabled = (FileBrowser.selectedFiles.length == 0); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'copyFile').disabled = (FileBrowser.selectedFiles.length == 0); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'delfile').disabled = (FileBrowser.selectedFiles.length == 0); $(this).removeClassName("fileselected"); } } event.cancelBubble = true; return(false); } node.ondblclick = function() { if(this.isBeeingAltered) return; FileBrowser.box.Close(); selectFile(FileBrowser.selectedFiles[0], FileBrowser.selectedFiles); } FileBrowser.box.getElementById(FileBrowser.box.contentBox,'files').appendChild(node); } } catch(e) { alert(e.message); } } /** * get information about the current file **/ var currentFile = null; var curFile = null; function loadFileInfo(file) { currentFile = file.getAttribute("filename"); curFile = file; var readonly = file.getAttribute("readonly"); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'delfile').disabled = (readonly ? true : false) || (currentFile == ".."); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'moveFile').disabled = readonly || file.getAttribute("isDir"); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'copyFile').disabled = readonly || file.getAttribute("isDir"); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'renameFile').disabled = readonly || file.getAttribute("isDir"); } function xinspect(o,i) { if(typeof i=='undefined')i=''; if(i.length>50)return '[MAX ITERATIONS]'; var r=[]; for(var p in o){ var t=typeof o[p]; r.push(i+'"'+p+'" ('+t+') => '+(t=='object' ? 'object:'+xinspect(o[p],i+' ') : o[p]+'')); } return r.join(i+'\n'); } // example of use: /** * Used to rename a file **/ function renameFile(file, button) { if(button.disabled) return; if(FileBrowser.selectedFiles.length < 1) { new MessageBox('Fel','Inga file markerade.', MessageBoxButtons.OK); return; } if(FileBrowser.selectedFiles.length > 1) { new MessageBox('Döp om filer','Du kan bara döpa om en fil åt gången.', MessageBoxButtons.OK); return; } file = FileBrowser.selectedFiles[0]; if(file.getAttribute("isDir")) { new MessageBox("Fel","Mappar kan inte döpas om.", MessageBoxButtons.OK); return; } if(file.getAttribute("readonly")) { new MessageBox("Fel","Denna mapp är skrivskyddad.", MessageBoxButtons.OK); return; } file.isBeeingAltered = true; var fname = file.getAttribute("filename"); if(fname.lastIndexOf('/') != -1) fname = fname.substring(fname.lastIndexOf('/') + 1); var input = document.createElement("input"); input.value = escape(fname); input.type = "text"; input.style.marginTop = "7px"; input.setAttribute("orgvalue", input.value); if(FileBrowser.ListStyle == 1) { input.style.fontSize = "11px"; input.style.width = "350px"; } var txtDiv = $(file).getElementsByTagName("div").item(1); var oldHTML = txtDiv.innerHTML; txtDiv.innerHTML = ''; txtDiv.appendChild(input); if(FileBrowser.ListStyle == 1) { file.style.height = "30px"; txtDiv.style.height = "26px"; } if(isIE) { var r = input.createTextRange(); r.findText(input.value.substr(0, input.value.indexOf("."))); r.select(); } else { input.select(); } input.onkeydown = function(e) { e = e || window.event; if(e.keyCode == 13 || e.keyCode == 27) { e.cancelBubble = true; if(e.keyCode == 27) input.value = input.getAttribute("orgValue"); this.onblur = function() { } this.rename(e); return(false); } return(true); } input.rename = function(e) { if(this.getAttribute("orgvalue") != this.value) { var val = this.value; this.disabled = true; new Ajax.Request('/browser/rename.php?directory=' + directory + "&filename=" + escape(fname) + "&newname=" + escape(val), { asynchronous : false, onSuccess: function(response) { FileBrowser.filesChanged = true; loadDirectory(directory); } , onFailure: function(response) { txtDiv.innerHTML = oldHTML; new MessageBox("Fel",response.responseText, MessageBoxButtons.OK); } }); } else { txtDiv.innerHTML = oldHTML; } file.isBeeingAltered = true; if(FileBrowser.ListStyle == 1) { file.style.height = ""; txtDiv.style.height = ""; } } input.onblur = function(e) { this.rename(e); } } /** * used to create a new folder in the current directory **/ function createNewFolder(button) { if(button.disabled) return; var template = FileBrowser.box.getElementById(FileBrowser.box.contentBox, 'newfolder').cloneNode(true); template.style.display = "block"; var mb = new MessageBox("Ny mapp", template.outerHTML,MessageBoxButtons.OK | MessageBoxButtons.CANCEL); mb.onBeforeDialogReturn = function(sender,result) { var form = mb.getElement('newfolderform'); var foldername = form.foldername.value; var r = RegExp(/^([A-Z0-9 ]*)$/ig); if(!foldername.match(r)) { alert("Ogiltiga tecken i namnet. Mappnamnet får endast innehåll bokstäver mellan A-Z och siffror."); return(false); } return(true); } mb.onDialogReturn = function(sender,result) { if(result == DialogResult.OK) { var form = mb.getElement('newfolderform'); var foldername = form.foldername.value; new Ajax.Request('/browser/newdir.php?directory=' + directory + "&foldername=" + foldername, { onSuccess: function(response) { loadDirectory(directory); FileBrowser.box.getElementById(FileBrowser.box.contentBox, 'newfolder').style.display = "none"; } , onFailure : function(response) { alert(response.responseText); } }); } } } function selectAllFiles() { var divs = FileBrowser.box.getElementsByTagName("div"); FileBrowser.selectedFiles.clear(); for(var i = 0; i < divs.length; i++) { var div = divs[i]; if(div.className == "file" && !$(div).getAttribute("isDir")) { FileBrowser.selectedFiles.push($(div)); $(div).addClassName("fileselected"); } } } function copyFiles(button) { if(button.disabled) return; if(FileBrowser.selectedFiles.length < 1) { new MessageBox('Fel','Inga filer markerade.', MessageBoxButtons.OK); return; } var mb = new MessageBox('Vänta laddar','Vänta laddar...'); new Ajax.Request("/browser/getfolders.php", { onSuccess : function(response) { mb.Close(); var moveDialog = new MessageBox('Välj mapp att kopiera till',response.responseText,MessageBoxButtons.OK | MessageBoxButtons.CANCEL); moveDialog.onDialogReturn = function(sender,result) { if(result == DialogResult.OK) { var errors = 0; var filesMoved = 0; var folderSelect = moveDialog.getElement('folderName'); var folderName = folderSelect[folderSelect.selectedIndex].value; var reportData = "

"; for(var i = 0; i < FileBrowser.selectedFiles.length; i++) { if(FileBrowser.selectedFiles[i].getAttribute("readonly")) { errors++; continue; } var fileName = "/" + FileBrowser.selectedFiles[i].getAttribute("filename"); new Ajax.Request("/browser/copyfile.php?filename=" + escape(fileName).substring(1) + "&folder=" + escape(folderName), { asynchronous: false, onSuccess: function(response) { reportData = reportData + response.responseText; filesMoved++; } , onFailure: function(response) { reportData = reportData + response.responseText; errors++; } }); } if(errors == 0) { mb = new MessageBox('Kopiera filer',filesMoved + ' objekt kopierades utan problem.' + reportData,MessageBoxButtons.OK); mb.onDialogReturn = function(sender,result) { loadDirectory(directory); } FileBrowser.box.getElementById(FileBrowser.box.contentBox,'newfolder').style.display = "none"; } else { mb = new MessageBox('Fel','En eller flera objekt kunde inte kopieras.

' + filesMoved + ' objekt flyttades.
' + errors + ' objekt kopierades inte.' + reportData,MessageBoxButtons.OK); mb.onDialogReturn = function(sender,result) { loadDirectory(directory); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'newfolder').style.display = "none"; } } } } } }); } function moveFiles(button) { if(button.disabled) return; if(FileBrowser.selectedFiles.length<1) { new MessageBox('Fel','Inga filer markerade.', MessageBoxButtons.OK); return; } var mb = new MessageBox('Flytta filer','Vill du verkligen flytta filerna?

OBS
Detta kan innebära att du måste justera länkar, bilder och bakgrundsbilder.
Det kräver också att du publicerar de sidor som använder filerna.
 
',MessageBoxButtons.YES | MessageBoxButtons.NO); mb.onDialogReturn = function(sender,result) { if(result==DialogResult.YES) { mb.Close(); mb = new MessageBox('Vänta laddar','Vänta laddar...'); new Ajax.Request("/browser/getfolders.php", { onSuccess : function(response) { mb.Close(); var moveDialog = new MessageBox('Välj mapp att flytta till',response.responseText,MessageBoxButtons.OK | MessageBoxButtons.CANCEL); moveDialog.onDialogReturn = function(sender,result) { if(result==DialogResult.OK) { var errors = 0; var filesMoved = 0; var folderSelect = moveDialog.getElement('folderName'); var folderName = folderSelect[folderSelect.selectedIndex].value; var reportData = "

"; for(var i=0;i
' + filesMoved + ' objekt flyttades.
' + errors + ' objekt flyttades inte.' + reportData,MessageBoxButtons.OK); mb.onDialogReturn = function(sender,result) { loadDirectory(directory); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'newfolder').style.display = "none"; } } } } } }); } } } /** * this will remove a file from the current directory **/ function removeFile(button) { if(button.disabled) return; if(FileBrowser.selectedFiles.length<1) { new MessageBox('Fel','Inga filer markerade.', MessageBoxButtons.OK); return; } var mb = new MessageBox('Ta bort','Vill du verkligen ta bort objekten?',MessageBoxButtons.YES | MessageBoxButtons.NO); mb.onDialogReturn = function(sender,result) { if(result==DialogResult.YES) { var errors = 0; var filesRemoved = 0; for(var i=0;i
' + filesRemoved + ' objekt togs bort.
' + errors + ' objekt togs inte bort.',MessageBoxButtons.OK); mb.onDialogReturn = function(sender,result) { loadDirectory(directory); FileBrowser.box.getElementById(FileBrowser.box.contentBox,'newfolder').style.display = "none"; } } } } } /** * opens up the file-uploading window **/ var waitForWin = 0; var uploadMessageBox = null; function uploadFile() { var url = "/browser/upload.php?directory=" + directory; new Ajax.Request(url, { onSuccess : function(response) { uploadMessageBox = new MessageBox("Ladda upp filer", response.responseText, MessageBoxButtons.CLOSE); uploadMessageBox.onDialogReturn = function(sender, result) { loadDirectory(directory); } } }); } /** * called when a file i doubleclicked **/ function selectFile(item, allItems) { if(FileBrowser.arguments) { var events = FileBrowser.arguments; if(events && events.onselectfile) { events.onselectfile(item, allItems); } } } function onCancel() { if(FileBrowser.arguments) { var events = FileBrowser.arguments; if(events && events.onclose) events.onclose(); } } function showSingleFilesUpload() { var single = $(uploadMessageBox.getElement("singlefiles")); var multiple = $(uploadMessageBox.getElement("multiplefiles")); var singletab = $(uploadMessageBox.getElement("singlefilestab")); var multipletab = $(uploadMessageBox.getElement("multiplefilestabs")); singletab.addClassName("active"); multipletab.removeClassName("active"); multiple.hide(); single.show(); } function showAdvancedFilesUpload(dir) { var single = $(uploadMessageBox.getElement("singlefiles")); var multiple = $(uploadMessageBox.getElement("multiplefiles")); var singletab = $(uploadMessageBox.getElement("singlefilestab")); var multipletab = $(uploadMessageBox.getElement("multiplefilestabs")); singletab.removeClassName("active"); multipletab.addClassName("active"); single.hide(); multiple.show(); var framedMode = ''; var osInfo = ''; if (navigator.appVersion.indexOf("Mac")!=-1) { framedMode = ' '; osInfo = 'Klicka på knappen Jumploader nedan för att ladda upp filer'; } // write applet code var jlCode = '' + osInfo + '' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + framedMode + ''; multiple.update(jlCode); } var listStyleBox = null; function showListStyleBox(button) { var offset = $(button).positionedOffset(); if(!listStyleBox) { listStyleBox = FileBrowser.box.getElementById(FileBrowser.box.box, "filebrowserliststyle"); listStyleBox.style.left = offset.left + "px"; listStyleBox.style.top = (offset.top + 10) + "px"; //listStyleBox.style.zIndex = getHighestZIndex() + 100; //document.body.appendChild(listStyleBox); } $(listStyleBox).show(); } var uploadedFiles = new Array(); function uploaderFileAdded(uploader, file) { new Ajax.Request("/browser/checkfilename.php?directory=" + escape(directory) + "&filename=" + file.getName(), { asynchronous : false, onSuccess : function(r) { var o = r.responseText.evalJSON(); if(o.needsRenaming == "1") { alert('Filen med namn ' + file.getName() + ' kommer att döpas om för att fungera på webben.\n\nNytt namn blir ' + o.renamed); uploader.updateFileName(file, o.renamed); } } }); new Ajax.Request("/browser/fileexists.php?directory=" + escape(directory) + "&filename=" + file.getName(), { asynchronous : false, onSuccess : function(r) { if(parseInt(r.responseText) == 1) { alert("Filen '" + file.getName() + "' existerar redan i den här mappen\n\nFilen kommer att skrivas över om du fortsätter med uppladdningen."); } } }); } function uploaderFileStatusChanged(uploader, file) { if(file.getStatus() == 2) // finished { new Ajax.Request("/browser/checkfilename.php?directory=" + escape(directory) + "&filename=" + file.getName(), { asynchronous : false, onSuccess : function(r) { var o = r.responseText.evalJSON(); uploadedFiles.push(o); } }); } } function uploaderStatusChanged(uploader) { if(uploader.getStatus() == 0) { var filesRenamed = false; var filesNeedsScaling = false; var filesNeedsRotation = false; var renamedInfo = ""; var filedata = ""; var rotfiledata = ""; for(var i = 0; i < uploadedFiles.length; i++) { var o = uploadedFiles[i]; if(o.needsRenaming == "1") { filesRenamed = true; renamedInfo = renamedInfo + o.filename + " => " + o.renamed + "\n"; } if(o.needsScaling == "1") { filesNeedsScaling = true; filedata = filedata + "&filename[]=" + o.renamed; } if(o.needsRotation == "1") { filesNeedsRotation = true; rotfiledata = rotfiledata + "&filename[]=" + o.renamed; } } if(filesRenamed) { alert('Vissa av filerna har döpts om för att fungera på webben.\n\n' + renamedInfo); } if(filesNeedsScaling) { if(confirm('Vissa av bilderna kan vara för stora för webben, vill du skala om dessa automatiskt?')) { new Ajax.Request("/browser/scaleimages.php?directory=" + escape(directory) + filedata, { asynchronous : false, onSuccess : function(r) { alert(r.responseText); } }); } } if(filesNeedsRotation) { var ignoreOrientation = 1; if(confirm('Vissa av bilderna innehåller information om kameraorientering (rotation), vill du ta hänsyn till denna information?')) { ignoreOrientation = 0; } debugger; new Ajax.Request("/browser/orientimages.php?directory=" + escape(directory) + rotfiledata + "&ignoreOrientation=" + ignoreOrientation , { asynchronous : false, onSuccess : function(r) { if(!ignoreOrientation) alert(r.responseText); } }); } uploadedFiles = new Array(); } } function editImageFile(button) { if(button.disabled) return; if(FileBrowser.selectedFiles.length < 1) { new MessageBox('Fel','Inga filer markerade.', MessageBoxButtons.OK); return; } if(FileBrowser.selectedFiles.length > 2) { new MessageBox('Fel','Du kan inte redigera fler än 1 bild åt gången.', MessageBoxButtons.OK); return; } var fileName = FileBrowser.selectedFiles[0].getAttribute("filename"); var image = (isSafari || isGecko) ? FileBrowser.selectedFiles[0].file : FileBrowser.selectedFiles[0].getAttribute("file"); if(image.isImage == true) { var img = document.createElement("img"); img.setAttribute("src", fileName); img.setAttribute("rSrc", fileName); rotateImage(img, function(newFileName) { new Ajax.Request('/browser/rename.php?directory=' + escape('/') + "&filename=" + escape(newFileName) + "&newname=" + escape(fileName), { asynchronous : false, onSuccess: function(response) { loadDirectory(directory); } , onFailure: function(response) { alert('Fail: ' + response); } }); }); } }