Avatar billede tobias_l Nybegynder
18. september 2007 - 13:29 Der er 10 kommentarer

Oprettelse af "dynamisk" reference, der validerer om filen findes

Jeg styrer flere intranetsider igennem Lotus Notes.
På mange af siderne, linker jeg til nogle dokumenter(xls,pdf og html) som oprettes hver uge. eks:

        <a href="file://"sti"/"name_01".pdf" target="new">Uge 1</a><br>
        <a href="file://"sti"/"name_02".pdf" target="new">Uge 2</a><br>
etc.

Jeg ønsker en kode, som automatisk checker om hvert link virker når intranetsiden åbnes. Dette er meget vigtigt, da det er mange steder at disse href optræder og det er omkostningsfuldt at flytte udkommentere (<!--href.-->) links fra hvert enkelt side, hver uge.

Såfremt eks. vis at linket fra uge 38 - 52 ikke virker(filen findes ikke endnu), skal linkes skjules eller gøres til en anden farve eller lign.

Jeg vil være meget taknemlig for et svar på dette spørgsmål, da det har voldt mig mange problemer og vil spare mig for meget tid.

På forhånd tak.

Tobias Lund
Avatar billede tobias_l Nybegynder
18. september 2007 - 15:51 #1
Det vil også være en stor hjælp for mig, at finde ud af om dette overhoved kan lade sig gøre i HTML, eller jeg skal se mig om efter andre rapporteringsmuligheder!
Avatar billede jogii Nybegynder
18. september 2007 - 15:55 #2
Hvis "sti" og "name_01"  og name_02 etc. er værdier i databasen, så er det ikke specielt svært. Så kan man konstruere stien og kontrollere eksistensen af filerne med LotusScript.
Avatar billede tobias_l Nybegynder
18. september 2007 - 16:18 #3
"sti" er en reference til en lokal mappe på en server jeg har.
"name" er så navnet på den fil jeg gerne vil linke til.


eks:
<a href="file://Deltedata/projekt/kunder/2007/01_2007.pdf" target="new">Uge 1</a><br>
<a href="file://Deltedata/projekt/kunder/2007/02_2007.pdf" target="new">Uge 2</a><br>

Jeg importerer automatisk filerne til mappen via SAS.

og rigtig nok som du siger, så ønsker jeg at kontrollere eksistensen af hver enkelt fil og kun gøre de "eksisterende" links synlige eller på anden måde udskille de links der vil virke.

Og mange tak for det hurtige svar... jeg håber at du kan hjælpe mig lidt videre!
Avatar billede jogii Nybegynder
18. september 2007 - 18:45 #4
Man kan godt lave en skanner, der kører html-teksten igennem, og ved forekomsten af file:// ville den så prøve at undersøge eksistensen.

Det ville ikke være heeelt nemt, men kan lade sig gøre. Der findes garanteret nogen der allerede har noget kode dertil.

Selve den oprindelige url, "deledata/produkt/kunder/2007/01_2007.pdf", har du indtastet den med hånden (eller kopieret ind via stifinder etc)? Når du skrev "sti" og "name_01" foroven, var det nogle variable fra en aktuel formular (altså selvberegnende links på en formular) eller var det blot omskrivninger af det du skriver senere?
Avatar billede tobias_l Nybegynder
18. september 2007 - 22:30 #5
okay... dejligt at vide at der er håb forude og at det er muligt at lave.
Du ved evt. hvor jeg kan finde en sådan kode, eller noget lign?

Det er en url/link der er manuelt indtastet i koden og som er indtastet for alle 52 uger i året, så jeg kan blive ved med at lægge nye filer i den pågældende mappe jeg linker til og så ligger linket allerede i min HTML-kode(og derved på intranettet), så linket virker. Så ja, det var bare en omskrivning.
Avatar billede jogii Nybegynder
05. oktober 2007 - 23:53 #6
Jeg kom i tanke om en helt anden løsning. Har lige genlæst din oprindelige forespørgsel. Det lader til at filerne altid findes når ugen er gået, og altid efter nøjagtig samme skema(navngivning). Så kan man jo bare lave noget kode som genererer hrefs via computed text, så siden selv opdaterer sig hvergang en bruger ser den. Når ugen er gået, dukker der et nyt link op. Det tager selvfølgelig lidt ekstra beregningstid, men er det måske værd.
Avatar billede tobias_l Nybegynder
10. oktober 2007 - 11:37 #7
Jo tak jogii...
Jeg har faktisk allerede modtaget en kodestump der foretager dette hver gang en bruger går ind og ser siden.
Desværre er der bare en del beregningstid (ca. 15 sek med 52 links), hvilket er ærgeligt, men kan ikke umiddelbart se nogen bedre løsning lige nu.
Avatar billede jogii Nybegynder
10. oktober 2007 - 12:09 #8
15 sek er meget lang tid.
prøv vis mig koden, eller send en kopi af databasen (med et enkelt dokument eller 2).
Avatar billede tobias_l Nybegynder
11. oktober 2007 - 12:51 #9
Jeg har modtaget og benytter denne kode(beregningstid ca. 15 sek).
Koden virker ikke hvis den skrives i Lotus-Notes, men jeg har lagt koden i html og som jeg så viser på intranettet via lotus-notes i et iframe.

Kode:

<script language="JavaScript">
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
  xmlhttp = false;
  }
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    try {
        xmlhttp = new XMLHttpRequest();
    } catch (e) {
        xmlhttp=false;
    }
}
if (!xmlhttp && window.createRequest) {
    try {
        xmlhttp = window.createRequest();
    } catch (e) {
        xmlhttp=false;
    }
}


function CheckUrl(url, id) {
xmlhttp.open("HEAD", url,true);
  xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
  if (xmlhttp.status==200) SetVisibility(id, true);
    else if (xmlhttp.status==0)  SetVisibility(id, true);
    else SetVisibility(id, false);
  return;
  }
}
try
{
  xmlhttp.send(null);
}
catch (E)
{
}
}

function SetVisibility(id, visible) {
  if (!visible)
  {
    document.getElementById(id).style.visibility  = "hidden";
  }
}

function CheckUrls() {
CheckUrl("test.htm", "testhtm");
CheckUrl("testnothere.htm", "testnotherehtm"); 
CheckUrl("c:\\autoexec.bat", "autoexecbat"); 
CheckUrl("c:\\autoexec.cmd", "autoexeccmd"); 
}

</script>

<htlm>
<body onload="CheckUrls();">
    <span id="testhtm"><a href="test.htm">test.htm</a><br></span>
    <span id="testnotherehtm"><a href="testnothere.htm">testnothere.htm</a><br></span>
    <span id="autoexecbat"><a href="c:\\autoexec.bat">c:\autoexec.bat</a><br></span>
    <span id="autoexeccmd"><a href="c:\\autoexec.cmd">c:\autoexec.bat</a><br></span>
</body>
<htlm>
Avatar billede jogii Nybegynder
11. oktober 2007 - 16:16 #10
Det var da noget at en kanonsalve at fyre af ved åbning. Her foretages et check af hver url online for hver bruger. Der oprettes et htmp-request ned mod hvert element, og hvis det ikke findes, skjules et <span>.

Den løsning jeg ville servere var at kode noget lignende ind på selve serveren, dog afhængig af dato at beregne en uge, og derfra lave hide-when.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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