Avatar billede mini-me Nybegynder
25. december 2003 - 17:41 Der er 19 kommentarer og
1 løsning

FileTree(stifinder)

Hej Eksperter,

Jeg er igang med at lave et lille script som skulle gøre det muligt for mig at se mine dir på computeren som i stifinder, jeg er dog rendt i lidt problemer.:

Problemet ligger i at, jeg ikke kan finde ud af hvornår en mappe er tom, og hvis mappen så er tom skal der ikke være mulighed for at klikke videre. Jeg har kommenteret koden der hvor mine fejl forefindes...

<HTML>
<HEAD></HEAD>
<BODY>
<script language="JavaScript">
    function getLayer(sender, imageId){
        if (document.all[sender].style.display == "none"){
            document.all[sender].style.display = "";
            document.all[imageId].src = "../../images/unfold.gif";
              }else{
            document.all[sender].style.display = "none";
            document.all[imageId].src = "../../images/fold.gif";
        }
    }
</script>
<%
    rootpath = server.MapPath("../../../../wwwroot/filearchive/folders/")
    level = 0

    sub getPath(strPath,level)
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set MainFolder = fso.GetFolder(strPath)
        Set Files = MainFolder.Files
        Set Folders = MainFolder.subfolders

        For Each Folder in Folders
       
            for a = 1 to level
                Response.Write "&nbsp;"
            next
            ' if folder empty hide next line
            response.Write "<img src=""../../images/fold.gif"" onclick=""getLayer('id" & lcase(folder.name) & "','myid" & lcase(folder.name) & "');"" id=""myid" & lcase(folder.name) & """>"
            ' end if
            response.write "<IMG SRC=""folder.gif"">&nbsp;<B>" & UCASE(folder.name) & "</b><br>"
            session.Contents("foldername") = lcase(folder.name)
            call getPath(strPath & "\" & lcase(folder.name),level+1)
   
        next
        ' Dette forekommer 2 gange?!? Naar det bliver skrevet ud..
        response.Write("<table id=""id" & session.Contents("foldername") & """ style=""display: none;"">")
        ' end of comment
        For Each File in Files
       
            for a = 1 to level
                Response.Write "&nbsp;"
            next
            response.write "<IMG SRC=""spacer.gif"">" & LCASE(file.name) & "<br>"
        next
        response.Write("</table>")
        set fsObj = Nothing
        set MainFolder = Nothing
    end sub
   
   
    call getPath(rootpath,level)
   
%>
</FONT>
</BODY>
</HTML>
Avatar billede thesurfer Nybegynder
25. december 2003 - 17:44 #1
Hvad med at du har en "i = 0" før "For each..", og "i = i + 1" inde i selve "for each"?
Så skal du bare checke om i = 0, hvis den er det, er der ikke nogen mapper/filer i den aktuelle mappe.
Avatar billede mini-me Nybegynder
25. december 2003 - 17:46 #2
Hmmm tror ikke helt jeg er med...
Avatar billede thesurfer Nybegynder
25. december 2003 - 17:48 #3
Hvornår er det at den skal checke om mappen er tom?
Avatar billede thesurfer Nybegynder
25. december 2003 - 17:50 #4
hmm.. prøv en "response.write Folder" i din første "for each.."
Hvad returnerer den? Hvis det er antallet af mapper, kan du bruge:

            if folder <> 0 then
            response.Write "<img src=""../../images/fold.gif"" onclick=""getLayer('id" & lcase(folder.name) & "','myid" & lcase(folder.name) & "');"" id=""myid" & lcase(folder.name) & """>"
            end if
Avatar billede mini-me Nybegynder
25. december 2003 - 17:51 #5
Den skal chekkke om mappen er tom for hvert gennemløb, for er mappen tom skal det ikke kunne lade sig gøre at benytte javascriptet til at gå til en undermappe, dette giver jo en fejl da undermappen jo så ikke ekisterer.
Avatar billede mini-me Nybegynder
25. december 2003 - 17:52 #6
den returnere mappens navn..
C:\Inetpub\openSource\builder.dk\wwwroot\filearchive\folders,
C:\Inetpub\openSource\builder.dk\wwwroot\filearchive\folders\Diverse

osv
Avatar billede mini-me Nybegynder
25. december 2003 - 17:53 #7
men så kan jeg bruge folder.size til at checkkke om den indeholder noget..
Avatar billede thesurfer Nybegynder
25. december 2003 - 17:54 #8
Hvis den returnerer mappens navn, kan du bruge:
if folder <> "" then
Avatar billede mini-me Nybegynder
25. december 2003 - 17:55 #9
Det mener jeg nu jeg har prøvet... tidligere i dag, men det virker jo nu med folder.size..!
Men så sidste problem i det her er at den skriver den sidste mappes navn ud 2 gange?!?!
Avatar billede thesurfer Nybegynder
25. december 2003 - 17:56 #10
Er det ikke her linier der gør det?:

            response.Write "<img src=""../../images/fold.gif"" onclick=""getLayer('id" & lcase(folder.name) & "','myid" & lcase(folder.name) & "');"" id=""myid" & lcase(folder.name) & """>"
            ' end if
            response.write "<IMG SRC=""folder.gif"">&nbsp;<B>" & UCASE(folder.name) & "</b><br>"
Avatar billede mini-me Nybegynder
25. december 2003 - 17:58 #11
nope her:

' Dette forekommer 2 gange?!? Naar det bliver skrevet ud..
        response.Write("<table id=""id" & session.Contents("foldername") & """ style=""display: none;"">")
        ' end of comment
Avatar billede mini-me Nybegynder
25. december 2003 - 17:58 #12
koden ser nu sådan ud:

<HTML>
<HEAD></HEAD>
<BODY>
<script language="JavaScript">
    function getLayer(sender, imageId){
        if (document.all[sender].style.display == "none"){
            document.all[sender].style.display = "";
            document.all[imageId].src = "../../images/unfold.gif";
              }else{
            document.all[sender].style.display = "none";
            document.all[imageId].src = "../../images/fold.gif";
        }
    }
</script>
<%
    rootpath = server.MapPath("../../../../wwwroot/filearchive/")
    level = 0
   
    sub getPath(strPath,level)
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set MainFolder = fso.GetFolder(strPath)
        Set Files = MainFolder.Files
        Set Folders = MainFolder.subfolders
       
        For Each Folder in Folders
            for a = 1 to level
                Response.Write "&nbsp;"
            next
            if folder.size = 0 then
            else
            response.Write "<img src=""../../images/fold.gif"" onclick=""getLayer('id" & lcase(folder.name) & "','myid" & lcase(folder.name) & "');"" id=""myid" & lcase(folder.name) & """>"
            end if
            response.write "<IMG SRC=""folder.gif"">&nbsp;<B>" & UCASE(folder.name) & "</b><br>"
            session.Contents("foldername") = lcase(folder.name)
            call getPath(strPath & "\" & lcase(folder.name),level+1)
   
        next
        if session.Contents("foldername") = checkstr then
        response.Write("FISSE")
        else 
            response.Write("<table id=""id" & session.Contents("foldername") & """ style=""display: none;"">")
            checkstr = session.Contents("foldername")
        end if
        For Each File in Files
       
            for a = 1 to level
                Response.Write "&nbsp;"
            next
            response.write "<IMG SRC=""spacer.gif"">" & LCASE(file.name) & "<br>"
        next
        response.Write("</table>")
        set fsObj = Nothing
        set MainFolder = Nothing
    end sub
   
   
    call getPath(rootpath,level)
   
%>
</FONT>
</BODY>
</HTML>
Avatar billede thesurfer Nybegynder
25. december 2003 - 18:00 #13
erstat:
            if folder.size = 0 then
            else
med:
            if folder.size <> 0 then
Avatar billede thesurfer Nybegynder
25. december 2003 - 18:02 #14
Hvad er meninger med denne del?:

        if session.Contents("foldername") = checkstr then
        response.Write("FISSE")
        else 
            response.Write("<table id=""id" & session.Contents("foldername") & """ style=""display: none;"">")
            checkstr = session.Contents("foldername")
        end if
Avatar billede mini-me Nybegynder
25. december 2003 - 18:02 #15
det var lige en test... :)
Avatar billede mini-me Nybegynder
25. december 2003 - 18:03 #16
Tilrettet igen...

<HTML>
<HEAD></HEAD>
<BODY>
<script language="JavaScript">
    function getLayer(sender, imageId){
        if (document.all[sender].style.display == "none"){
            document.all[sender].style.display = "";
            document.all[imageId].src = "../../images/unfold.gif";
              }else{
            document.all[sender].style.display = "none";
            document.all[imageId].src = "../../images/fold.gif";
        }
    }
   
    function hideLayer(sender, imageId){
    if (document.all[sender].style.display == ""){
            document.all[sender].style.display = "none";
            document.all[imageId].src = "../../images/fold.gif";
              }else{
            document.all[sender].style.display = "";
            document.all[imageId].src = "../../images/unfold.gif";
        }
    }
</script>
<%
    rootpath = server.MapPath("../../../../wwwroot/filearchive/")
    level = 0
   
    sub getPath(strPath,level)
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set MainFolder = fso.GetFolder(strPath)
        Set Files = MainFolder.Files
        Set Folders = MainFolder.subfolders
       
        For Each Folder in Folders
            for a = 1 to level
                Response.Write "&nbsp;"
            next
        if level = 0 then
            response.Write "<img src=""../../images/unfold.gif"" onclick=""hideLayer('id" & lcase(folder.name) & "','myid" & lcase(folder.name) & "');"" id=""myid" & lcase(folder.name) & """>"
               
        else
            if folder.size <> 0 then
                response.Write "<img src=""../../images/fold.gif"" onclick=""getLayer('id" & lcase(folder.name) & "','myid" & lcase(folder.name) & "');"" id=""myid" & lcase(folder.name) & """>"
            end if
        end if
       
            response.write "<IMG SRC=""folder.gif"">&nbsp;<B>" & UCASE(folder.name) & "</b><br>"
            session.Contents("foldername") = lcase(folder.name)
            call getPath(strPath & "\" & lcase(folder.name),level+1)
   
        next
            response.Write("<table id=""id" & session.Contents("foldername") & """ style=""display: none;"">")
            checkstr = session.Contents("foldername")
        For Each File in Files
       
            for a = 1 to level
                Response.Write "&nbsp;"
            next
            response.write "<IMG SRC=""spacer.gif"">" & LCASE(file.name) & "<br>"
        next
        response.Write("</table>")
        set fsObj = Nothing
        set MainFolder = Nothing
    end sub
   
   
    call getPath(rootpath,level)
   
%>
</FONT>
</BODY>
</HTML>
Avatar billede mini-me Nybegynder
25. december 2003 - 18:06 #17
Det eneste problem jeg har nu er at det skal køres ind i tabller og at det skal virke på flg. måde:

-TopMappen
+Undermappe(skjuler tabel med flere underfiler)
+UnderMappe2(skjuler tabel med flere underfiler)
-UnderMappe3(der er klikket på + tegnet)
  +Undermappe1til3(skjuler flere mapper)
  Fil1.tmp
  fil2.tmp
  fil3.tmp


og jeg bruger display=none til at skjule mapperne med, mit problem er bare at jeg ikke kan få det kodet ordentlig sammen til det...!

Det skal virke som stifinder i windows!
Avatar billede thesurfer Nybegynder
25. december 2003 - 18:11 #18
Avatar billede mini-me Nybegynder
25. december 2003 - 18:18 #19
Hmmm... virker på noget for avanceret til det jeg ksal bruge det til..
Avatar billede mini-me Nybegynder
28. december 2003 - 00:56 #20
Har løst det:

<%
IF request.QueryString("action") ="upload_images" THEN
    SavePath = server.MapPath("../../filearchive/folders/siteImages/")

    Set Upload = Server.CreateObject("Persits.Upload")
    Upload.OverwriteFiles = False
    Upload.Save SavePath
    For Each File in Upload.Files
    if File.ImageType <> "UNKNOWN" then
    else
    response.write("Wrong file format!"&"<br>")
    File.Delete
    end if
    Next
    Set Upload = Nothing
    response.redirect"upload_attached_image.asp?id=" & Request.Querystring("id")
end if

ServerName = Request.ServerVariables("SERVER_NAME")&":"&Request.ServerVariables("SERVER_PORT")

%>
<html>
<title>Upload</title>
<link href="../stylesheets/adminsheet.css" rel="stylesheet" type="text/css">
<body>
<script language="JavaScript">
<!--
function ListImage(){
    document.getElementById('image').src = 'http://<%= ServerName %>/filearchive/folders/siteImages/'+document.getElementById('image_list').value}
-->
</script>
<table align="center" class="stdTable">
    <tr>
        <td class="topTd" colspan="2">
            <div align="center">Billede oversigt
        </div></td>
    </tr>
    <tr>
        <td class="tdHr" colspan="2"></td>
    </tr>
    <tr>
        <td>
        <font>Standardvisning</font>
        </td>
        <td>
        <font>Thumbnailvisning</font>
        </td>
    </tr>
    <tr>
        <td class="tdHr" colspan="2"></td>
    </tr>
    <!-- Standard -->
    <tr>
        <td>
<%
    rootpath = Server.Mappath("../../../wwwroot/filearchive")       
    level = 0

    sub getPath(strPath,level)
        Set fsObj = CreateObject("Scripting.FileSystemObject")
        Set MainFolder = fsObj.GetFolder(strPath)
        Set Folders = MainFolder.subfolders

        For Each Folder in Folders
            for a = 1 to level
                Response.Write "&nbsp;"
            next
            response.write "<IMG SRC=""../images/_folder.gif"">&nbsp;<B>" & UCASE(folder.name) & "</b><br>"
           
            set fileFolder = fsObj.GetFolder(strPath & "\" & lcase(folder.name))
            set Files = fileFolder.files
                   
            For Each File in Files
                for a = 1 to level
                    Response.Write "&nbsp;"
                next
            response.write "<IMG SRC=""../images/_blank.gif"">" & LCASE(file.name) & "<br>"
            next
           
            call getPath(strPath & "\" & lcase(folder.name),level+1)
           
           
        next

       
        set fsObj = Nothing
        set MainFolder = Nothing
    end sub
   
    call getPath(rootpath,level) %>
        </td>
        <td>billede</td>
    </tr>
    <!-- end -->
</table>

</body>
</html>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB