Avatar billede tobias_l Nybegynder
18. september 2007 - 14:49 Der er 17 kommentarer og
1 løsning

Oprettelse af reference(href), der validerer om filen findes

Hej eksperter

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>
<a href="file://"sti"/"name_03".pdf" target="new">Uge 3</a><br>

etc.

Jeg ønsker hjælp til en kode(html eller javascript), 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:50 #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 sherlock Nybegynder
18. september 2007 - 18:15 #2
Det kunne laves med javascript på klienten, men det vil være meget omstændeligt i forhold til at foretage valideringen på serveren (asp/php +++) og kun inkludere de relevante links på siden.
Avatar billede tobias_l Nybegynder
18. september 2007 - 22:40 #3
Okay... dette er taget til efterretning, men mine kundskaber rækker desværre ikke så langt, at jeg har mulighed for at følge det forslag du gav mig der.
Jeg har nemlig allerede en fint virkende intranetside med links og referencer, så muligheden med det javascript er måske noget jeg kan forfølge. Kender du en side eller lign hvor jeg kan finde oplysninger der kan lede mig til løsning på mit problem?

På forhånd mange tak for hjælpen!
Avatar billede sherlock Nybegynder
19. september 2007 - 00:40 #4
http://www.jibbering.com/2002/4/httprequest.html

Der er et afsnit der hedder 'Does a url exist?'.

Men bare tanken om det giver mig myrekryb :) Både udviklingsmæssigt og performancemæssigt.

Held og lykke :|
Avatar billede tobias_l Nybegynder
20. september 2007 - 11:24 #5
Tusind tak for linket... har set på det og det er helt sikkert inde på noget af det rigtige, men det kræver stadig at man klikker på linket, hvorfor at fidusen så lidt ryger.

Er der mulighed for at lave en reference inde i sin kode, som bare lister links til alle de filer der nu findes i den mappe man refererer til?
Dette vil nemlig også løse mit problem.
Avatar billede sherlock Nybegynder
20. september 2007 - 12:50 #6
Her er et eksempel på at kalde det fra body-onload.


<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 roenving Novice
21. september 2007 - 16:06 #7
-- vil det ikke være meget lettere at sætte checket ind i din Notes-implementation ?-)
Avatar billede tobias_l Nybegynder
21. september 2007 - 16:20 #8
Det skal jeg desværre ikke kunne sige. Jeg vil i hvert fald ikke vide hvordan det skal gøres. Jeg skal bare have løst problemet på den ene eller den anden måde.
Lige nu sidder jeg og prøver at implementere koden ovenfor, men helt nemt er det ikke.
Hvis du har et eksempel på det du nævner med Notes-implementation, eller en instruktion til hvordan det gøres, vi jeg være meget taknemlig!
Avatar billede tobias_l Nybegynder
24. september 2007 - 19:26 #9
tak sherlock... kodestumpen virker fint. Desværre er performance ikke helt optimal, da det tager siden ca. 15 sek at loade og checke alle links, så hvis der er en mulighed for at forbedre performance ville det være super, men ellers siger jeg mange tak for svaret og kvitterer selvfølgelig med points.
Avatar billede sherlock Nybegynder
25. september 2007 - 00:33 #10
Ærgeligt, men forventeligt :) Men så er det da prøvet!!!
Avatar billede olebole Juniormester
25. september 2007 - 00:58 #11
<ole>

Er det ikke lettere blot at sørge for, der er styr på tingene og der ikke bliver oprettet links til dokumenter, der ikke eksisterer - samt at disse igen slettes, når filerne fjernes? Det andet lyder som en rodet panikløsning  :)

/mvh
</bole>
Avatar billede tobias_l Nybegynder
25. september 2007 - 23:21 #12
jo bestemt ole.
Sagen er bare den at jeg måske skal ind og rette i 20 koder hver uge, da jeg har med 20 sider at gøre. På denne måde skal jeg kun ind og rette 1 gang om året og dette vil spare mig meget tid... derfor denne løsning, desværre!
Avatar billede olebole Juniormester
25. september 2007 - 23:27 #13
Jamen, så må du jo vælge. Mulighederne er:

1) Udføre et stort arbejde
2) Bruge en dræbende langsom metode
3) Lære en smule PHP eller ASP

Ligger dine links i en samlet blok - og hvis, er den blok så ens fra dokument til dokument ... eller ligger dine links spredt over de mange sider?
Avatar billede olebole Juniormester
25. september 2007 - 23:28 #14
Njaahhh ... det var jo Notes:

3) Lære en smule Lotus Notes

- og så kan jeg zq godt forstå, du ikke orker have med backend'en at gøre  :o|
Avatar billede olebole Juniormester
25. september 2007 - 23:29 #15
- og da det er Lotus Notes, så glem bare mine spørgsmål i (25/09-2007 23:27:03)  :)
Avatar billede tobias_l Nybegynder
10. oktober 2007 - 11:43 #16
Tak for kommentaren Ole.

Jeg ved nu ikke hvor hæmmet man skal være af at det foregår i Lotus Notes, da jeg allerede nu, for at få ovenstående kodestump til at virke (den sherlock sendte mig), laver min kode i en simpel HTML-fil og viser så denne HTML på intranettet via LotusNotus som et iframe.

SÅ... hvis der findes en bedre/mere brugervenlig metode, hører jeg meget gerne fra dig. Det vigtigste er for mig, at jeg ikke skal ind og ændre i min kode hver uge, men bare skal lægge filen med det foruddefinerede navn ind i en mappe og så vises den på intranettet.
Avatar billede roenving Novice
10. oktober 2007 - 14:04 #17
Kan du ikke bare f.eks. med LotusScript (som også er en ECMA-script-art !-) checke for om filen findes ?-)
Avatar billede tobias_l Nybegynder
11. oktober 2007 - 12:41 #18
Jeg skal desværre ikke kunne sige det. Jeg har ikke ekspertisen til at foretage dette ihvertfald.
Hvis du har et eksempel eller forslag eller lign. vil jeg meget gerne høre fra dig!
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