URLControl von DotNetNuke aufloesen in eine URL

Mit dem Usercontrol URLControl von DNN kann man auf die interne Dateiverwaltung von DNN zugreifen.

Die Einbindung habe ich in einem anderen Artikel bereits erläutert. Hier nur noch kurz der benötigte Code für die ASCX-Datei:

<%@ Register TagPrefix="Portal" TagName="URL" Src="~/controls/URLControl.ascx" %>

<portal:url id="ctlURL" runat="server" width="300" showtabs="false" showfiles="true" showUrls="false" urltype="F" showlog="false" shownewwindow="false" showtrack="false"/>

Die Eigenschaft URL dieses Controls liefert allerdings bei der Auswahl von Dateien lediglich so etwas wie "FileId=7".
Um aber Bilder darstellen zu können muss dieses in einer URL umgewandelt werden. Die folgenden Funktion sind genau dafür da.

        public string FileNameToImgSrc(string FileName)
        {
            string sSrc = GetRelativeFilePath(FileName) ;
            return this.PortalSettings.HomeDirectory  + sSrc;
        }


        public string GetRelativeFilePath(string FileName)
        {
            if (FileName.StartsWith("FileID="))
            {
                int fileId = int.Parse(FileName.Substring(7));
                FileController objFileController = new FileController();
                DotNetNuke.Services.FileSystem.FileInfo objFileInfo = objFileController.GetFileById(fileId, this.PortalId);
                if (!(objFileInfo == null))
                {
                    return objFileInfo.Folder + objFileInfo.FileName;
                }
                else
                {
                    return "";
                }
            }
            else
            {
                return FileName;
            }
        }

 

 

Kommentare (1) -

BK
07.07.2006 16:32:09 #

Super, danke für die Erklärung!

Was allerdings bei mir noch nicht klappt, ist die Übernahme der "Open in new Window"-Property des URL-Controls.

Auslesen (und damit auch abspeichern) der Eigenschaft (urlctl.newwindow, Typ string) klappt, beim "zurückschreiben" des Wertes (true/false) aus der Klasse ist allerdings die Tatsache, dass die newwindow-Property "ReadOnly" ist, etwas hinderlich Wink..

Aus dem Code des Core-Link-Moduls werde ich leider auch nicht schlauer, da wird afaics nur die URL-Property gesetzt (beim Laden des Edit-ascx). Auf wundersame Weise weiss das URL-Control dort trotzdem, ob ich vorher "Open in new window" angeklickt hatte, oder nicht...

Verwirrend...

Kommentar schreiben