コード例 #1
0
        /// <summary>
        /// Handler der beim Laden der Seite aufgerufen wird.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            DirectoryWrapper currDir = FbConfigAgent.CurrentDirectory;

            if (!ControlPostback)
            {
                // Daten hinzufügen.
                if (currDir != null)
                {
                    if (currDir.SubDirectories.Length > 0)
                    {
                        directoryList.DataSource = currDir.SubDirectories;
                        directoryList.DataBind();
                        directoryArea.Visible = true;
                    }
                    else
                    {
                        directoryArea.Visible = false;
                    }

                    fileList.DataSource = currDir.Files;

                    // Is there another way than referncing the column by index?...
                    ((BoundField)fileList.Columns[4]).DataFormatString = "{0:" + Portal.API.Config.DateFormat + "}";
                    fileList.DataBind();
                }
            }

            // Die Controls im Header abhängig der aktuellen Einstellungen konfigurieren.
            ConfigureControls();
        }
コード例 #2
0
        /// <summary>
        /// Erzeugt die Anzeige des aktuellen Pfads mit den Links.
        /// </summary>
        /// <param name="targetCtrl"></param>
        protected void CreateDirPath(DirectoryWrapper directory, Control targetCtrl)
        {
            if (null != directory)
            {
                // Aktuelles Verzeichnis hinzufügen.
                Literal currLayer = new Literal();
                currLayer.Text = directory.PresentationName;
                targetCtrl.Controls.Add(currLayer);

                // Alle übergeordneten Verzeichnisse hinzufügen.
                int step             = 0;
                DirectoryWrapper dir = directory.Parent;
                while (dir != null)
                {
                    targetCtrl.Controls.AddAt(0, new LiteralControl(" >> "));

                    LinkButton dirLayer = new LinkButton();
                    dirLayer.ID              = "DirUp" + step;
                    dirLayer.Text            = dir.PresentationName;
                    dirLayer.CommandArgument = (++step).ToString();
                    dirLayer.Command        += new CommandEventHandler(this.ChangeDirUp);
                    targetCtrl.Controls.AddAt(0, dirLayer);

                    dir = dir.Parent;
                }
            }
            else
            {
                string dirNotFound = Portal.API.Language.GetText(Portal.API.Module.GetModuleControl(this), "DirectoryNotFound");
                targetCtrl.Controls.AddAt(0, new LiteralControl("<i>" + dirNotFound + "</i>"));
            }
        }
コード例 #3
0
        /// <summary>
        /// Konfiguriert die Controls im Header abhängig der aktuellen Einstellungen.
        /// </summary>
        private void ConfigureControls()
        {
            DirectoryWrapper currDir = FbConfigAgent.CurrentDirectory;

            // Existiert das Verzeichnis bereits?
            if (currDir != null)
            {
                // Edit-Funktion einblenden, wenn die Benutzerrechte entsprechend gesetzt sind.
                EditTools.Visible = ModuleHasEditRights;
                directoryList.Columns[1].Visible = ModuleHasEditRights;
                fileList.Columns[1].Visible      = ModuleHasEditRights;

                // Der Pfad zum akuellen Verzeichhnis nur einblenden, wenn überhaupt Verzeichnisse vorhanden sind.
                if (((currDir.SubDirectories.Length > 0) || (currDir.Parent != null)))
                {
                    currPathDiv.Visible = true;
                    CreateDirPath(currDir, currPath);
                }
                else
                {
                    currPathDiv.Visible = false;
                }

                pathNotFound.Visible = false;
            }
            else
            {
                // Das Verzeichnis existiert nicht. Der Benutzer hat die Möglichkeit, das Verzeichnis zu erstellen.
                pathNotFound.Visible = ModuleHasEditRights;
                string message = Portal.API.Language.GetText(Portal.API.Module.GetModuleControl(this),
                                                             "DirectoryNotFoundCreateQuestion");
                directoryCreateQuestion.Text = string.Format(message, FbConfigAgent.VirtualRoot);
            }
        }
コード例 #4
0
 /// <summary>
 /// Entfernt ein Verzeichnis aus der Liste, ohne diese physikalisch zu löschen.
 /// </summary>
 /// <param name="file">Datei die entfernt werden soll.</param>
 public void Detach(DirectoryWrapper dir)
 {
     if (subDirectories != null)
     {
         subDirectories.Remove(dir);
     }
 }
コード例 #5
0
        /// <summary>
        /// Gibt die enthaltene Datei mit dem angegebenen Namen zurück, bzw. null wenn sie nicht gefunden wurde.
        /// Es können auch vorgängige Verzeichnisse durch Slash getrennt angegeben werden. z.B. "Directory/File.txt"
        /// </summary>
        /// <param name="filePath">Name der Datei</param>
        /// <returns>Dateiwrapper, bzw. null wenn sie nicht gefunden wurde</returns>
        public FileWrapper GetFile(string filePath)
        {
            int slashPos = filePath.IndexOf('/');

            // Slash an erster Position werden übersprungen.
            if (slashPos == 0)
            {
                filePath = filePath.Substring(1);
                slashPos = filePath.IndexOf('/');
            }
            if ((-1 == slashPos))
            {
                // Kein Unterverzeichnis mehr enthalten. Es wird nach der Datei gesucht.
                return(Array.Find(Files, delegate(FileWrapper file) { return file.FileName == filePath; }));
            }
            else
            {
                // Suche nach dem Unterverzeichnis.
                string           dirName = filePath.Substring(0, slashPos);
                DirectoryWrapper subDir  = Array.Find(SubDirectories, delegate(DirectoryWrapper dir)
                                                      { return(dir.Name == dirName); });
                if (subDir != null)
                {
                    return(subDir.GetFile(filePath.Substring(slashPos + 1)));
                }
                else
                {
                    return(null); // Verzeichnis konnte nicht gefunden werden.
                }
            }
        }
コード例 #6
0
    /// <summary>
    /// Konstruktor.
    /// </summary>
    /// <param name="path">Physikalischer Pfad zu dieser Datei.</param>
    /// <param name="cnfgRow">DataRow welche die Daten dieses Files enthält.</param>
    /// <param name="parent">Das Verzeichnis welche diese Datei enthält.</param>
    public FileWrapper(string path, DirectoryData.FileConfigRow cnfgRow, DirectoryWrapper parent)
    {
      if (null == parent)
        throw new ArgumentNullException("Verzeichnis darf nicht null sein.");
      this.parent = parent;
      this.fileInfo = new FileInfo(path);

      this.fileInfoCfg = cnfgRow;
      this.fileInfoCfg.Name = this.fileInfo.Name;
    }
コード例 #7
0
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name="path">Physikalischer Pfad zu diesem Verzeichnis</param>
        /// <param name="parent">Das Parent-Verzeichnis</param>
        public DirectoryWrapper(string path, DirectoryWrapper parent)
        {
            this.directory = new System.IO.DirectoryInfo(path);
            this.parent    = parent;

            if (this.parent == null)
            {
                this.virtualPath = "";
            }
        }
コード例 #8
0
        /// <summary>
        /// Ereignishandler der eine Verzeichnisebene nach oben wechselt.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ChangeDirUp(object sender, CommandEventArgs e)
        {
            int nofLayer = Convert.ToInt32(e.CommandArgument);
            DirectoryWrapper newCurrDir = FbConfigAgent.CurrentDirectory;

            while ((nofLayer > 0) && (newCurrDir.Parent != null))
            {
                newCurrDir = newCurrDir.Parent;
                nofLayer--;
            }
            ChangeCurrentDir(newCurrDir);
        }
コード例 #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Aktuellen Verzeichnispfad anzeigen.
            DirectoryWrapper currDir = ((IStateProcessor)Parent).ConfigAgent.CurrentDirectory;

            dirPath.Text = currDir.PresentationPath;

            if (DateTime.MinValue == modDate.DateTimeValue)
            {
                modDate.DateTimeValue = DateTime.Now;
            }
        }
コード例 #10
0
        /// <summary>
        /// Erzeugt ein neues Unterverzeichnis.
        /// </summary>
        /// <param name="dirName"></param>
        /// <param name="dirDescription"></param>
        public void CreateSubDir(string dirName, string dirDescription)
        {
            DirectoryInfo newDirInfo = DirectoryData.CreateSubdirectory(dirName);

            // Erzeugen der Wrapper mit der selben Sortierung.
            DirectoryWrapper dirWrapper = new DirectoryWrapper(newDirInfo.FullName, this);

            dirWrapper.Description = dirDescription;
            dirWrapper.SaveData();

            subDirectories = null; // Neu einlesen der Unterverzeichnisse.
        }
コード例 #11
0
        /// <summary>
        /// Konstruktor.
        /// </summary>
        /// <param name="path">Physikalischer Pfad zu dieser Datei.</param>
        /// <param name="cnfgRow">DataRow welche die Daten dieses Files enthält.</param>
        /// <param name="parent">Das Verzeichnis welche diese Datei enthält.</param>
        public FileWrapper(string path, DirectoryData.FileConfigRow cnfgRow, DirectoryWrapper parent)
        {
            if (null == parent)
            {
                throw new ArgumentNullException("Verzeichnis darf nicht null sein.");
            }
            this.parent   = parent;
            this.fileInfo = new FileInfo(path);

            this.fileInfoCfg      = cnfgRow;
            this.fileInfoCfg.Name = this.fileInfo.Name;
        }
コード例 #12
0
        /// <summary>
        /// Ereignishandler der das aktuelle Verzeichnis wechselt.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ChangeDir(object sender, CommandEventArgs e)
        {
            ConfigAgent cfgAgent = FbConfigAgent;
            // Wechle zu dem entsprechenden Verzeichnis, welches als CommandArgument angegeben wurde.
            DirectoryWrapper newCurrDir = cfgAgent.RootDirectory.GetSubDirectory(e.CommandArgument.ToString());

            if (null == newCurrDir)
            {
                // Inzwischen scheint dieses Verzeichnis nicht mehr vorhanden zu sein. Aus diesem Grund wird wieder zum
                // Root Verzeichnis gewechselt.
                newCurrDir = cfgAgent.RootDirectory;
            }
            ChangeCurrentDir(newCurrDir);
        }
コード例 #13
0
        /// <summary>
        /// Gibt das Unterverzeichnis mit dem angegebenen Namen zurück, bzw. null wenn es nicht gefunden wurde.
        /// </summary>
        /// <param name="dirName">Der Verzeichnisname bzw. der relative Pfad zum Verzeichnis</param>
        /// <returns>Verzeichniswrapper, bzw. null wenn es nicht gefunden wurde</returns>
        public DirectoryWrapper GetSubDirectory(string dirPath)
        {
            int slashPos = dirPath.IndexOf('/');

            // Slash an erster Position werden übersprungen.
            if (slashPos == 0)
            {
                dirPath  = dirPath.Substring(1);
                slashPos = dirPath.IndexOf('/');
            }

            String subDirName;

            if (slashPos != -1)
            {
                subDirName = dirPath.Substring(0, slashPos);
                dirPath    = dirPath.Substring(slashPos + 1);
                if (dirPath == "/")
                {
                    dirPath = String.Empty;
                }
            }
            else
            {
                subDirName = dirPath;
            }

            // Suche nach dem Unterverzeichnis.
            DirectoryWrapper subDir = Array.Find(SubDirectories, delegate(DirectoryWrapper dir)
                                                 { return(dir.Name == subDirName); });

            if (subDir != null)
            {
                if (String.IsNullOrEmpty(dirPath))
                {
                    return(subDir);
                }
                else
                {
                    return(subDir.GetSubDirectory(dirPath));
                }
            }
            else
            {
                return(null); // Verzeichnis konnte nicht gefunden werden.
            }
        }
コード例 #14
0
        protected void OkBtn_Click(object sender, EventArgs e)
        {
            DirectoryWrapper editDir = ((IStateProcessor)Parent).ConfigAgent.EditDirectory;

            if (editDir != null)
            {
                editDir.PresentationName = dirName.Text;
                editDir.Description      = description.Text;
                editDir.SaveData();
            }
            else if (!string.IsNullOrEmpty(dirName.Text))
            {
                DirectoryWrapper parentDir = ((IStateProcessor)Parent).ConfigAgent.CurrentDirectory;
                parentDir.CreateSubDir(dirName.Text, description.Text);
            }

            ProcessEvent((int)StateEvent.ok);
        }
コード例 #15
0
        protected void DeleteBtn_Click(object sender, EventArgs e)
        {
            ConfigAgent      cfgAgent = ((IStateProcessor)Parent).ConfigAgent;
            DirectoryWrapper editDir  = cfgAgent.EditDirectory;

            if (editDir != null)
            {
                editDir.Delete();

                // Falls das aktuelle Verzeichnis das aktive ist, wird eine Ebene nach oben navigiert.
                if (cfgAgent.EditDirectory == cfgAgent.CurrentDirectory)
                {
                    cfgAgent.CurrentDirectory = cfgAgent.CurrentDirectory.Parent;
                }
            }

            ProcessEvent((int)StateEvent.ok);
        }
コード例 #16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!ControlPostback)
            {
                DirectoryWrapper editDir = ((IStateProcessor)Parent).ConfigAgent.EditDirectory;
                // Ist es ein Edit oder ein New.
                if (editDir != null)
                {
                    dirName.Text     = editDir.PresentationName;
                    description.Text = editDir.Description;

                    // Der löschen Button ist nur aktiv, wenn es nicht das Root Verzeichnis ist.
                    if (Parent != null)
                    {
                        DeleteBtn.Visible = true;
                    }
                }
            }
        }
コード例 #17
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Aktuellen Verzeichnispfad anzeigen.
            ConfigAgent      cfgAgent = ((IStateProcessor)Parent).ConfigAgent;
            DirectoryWrapper currDir  = cfgAgent.CurrentDirectory;

            dirPath.Text = currDir.PresentationPath;

            FileWrapper editFile = cfgAgent.EditFile;

            fileName.Text = editFile.FileName;
            fileDesc.Text = editFile.Description;

            string dateFormat = Portal.API.Config.DateFormat;

            modDate.DateTimeValue = editFile.ModificationDate;

            // Wird eine Datei ausgewählt, soll das Datum aktualisiert werden.
            fileSelect.Attributes.Add("onChange", modDate.GetChangeHandlerCode(DateTime.Now));
        }
コード例 #18
0
        /// <summary>
        /// Wechselt das aktuelle Verzeichnis und lädt die Daten neu.
        /// </summary>
        /// <param name="newCurrDir">Neues Verzeichnis, oder null wenn das RootVerzeichnis gelten soll.</param>
        protected void ChangeCurrentDir(DirectoryWrapper newCurrDir)
        {
            // Zuweisen des neuen Verzeichnis.
            FbConfigAgent.CurrentDirectory = newCurrDir;
            if (null == newCurrDir)
            {
                newCurrDir = FbConfigAgent.CurrentDirectory;
            }

            directoryList.DataSource = newCurrDir.SubDirectories;
            directoryList.DataBind();
            fileList.DataSource = newCurrDir.Files;
            fileList.DataBind();

            // Pfad zu diesem Verzeichnis aktualisieren.
            currPath.Controls.Clear();
            CreateDirPath(newCurrDir, currPath);

            // Wenn das aktuelle Verzeichnis das Root Verzeichnis ist, wird der Up-Button ausgeblendet.
            dirUpBtn.Visible = (FbConfigAgent.CurrentDirectory.Parent != null);
        }
コード例 #19
0
        /// <summary>
        /// Ereignishandler für den OK Button.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void OkBtn_Click(object sender, EventArgs e)
        {
            bool success = false;

            // Falls kein Name angegeben wurde, wird der Dateiname der Upload Datei verwendet.
            if (string.IsNullOrEmpty(fileName.Text.Trim()))
            {
                fileName.Text = fileSelect.FileName;
            }
            else
            {
                // Sicherstellen dass der Dateiname die selbe Endung aufweist.
                fileName.Text = fileName.Text.Trim();
                int lastPoint = fileSelect.FileName.LastIndexOf('.');
                if (-1 != lastPoint)
                {
                    // Ermitteln der Endung der Upload Datei.
                    string extension = fileSelect.FileName.Substring(lastPoint);

                    // Stimmt die Endung nicht überein, wird sie einfach angehängt.
                    if (!fileName.Text.EndsWith(extension, true, null))
                    {
                        // Zuerst muss aber sichergestellt werden dass die maximale Länge nicht überschritten wird.
                        int availLength = 255 - extension.Length;
                        if (availLength < fileName.Text.Length)
                        {
                            fileName.Text.Remove(availLength);
                        }

                        fileName.Text += extension;
                    }
                }
            }

            try
            {
                // Überprüfen ob die Datei bereits existiert und ob der Name gültig ist.
                DirectoryWrapper currDir = ((IStateProcessor)Parent).ConfigAgent.CurrentDirectory;
                if (null != currDir.GetFile(fileName.Text) || !currDir.IsFileNameAllowed(fileName.Text))
                {
                    fileAllreadyExist.IsValid = false;
                }
                else
                {
                    // Datei speichern.
                    fileSelect.PostedFile.SaveAs(currDir.DirectoryData.FullName + "\\" + fileName.Text);

                    // Dateiwrapper erzeugen und dem Cache hinzufügen.
                    currDir.AddFile(fileName.Text, fileDesc.Text, modDate.DateTimeValue);

                    success = true;
                }
            }
            catch (Exception ex)
            {
                uploadException.Text    = Portal.API.Language.GetText(this, "UploadException") + ": " + ex.Message;
                uploadException.IsValid = false;
            }

            if (true == success)
            {
                ProcessEvent((int)StateEvent.ok);
            }
        }
コード例 #20
0
    /// <summary>
    /// Erzeugt ein neues Unterverzeichnis.
    /// </summary>
    /// <param name="dirName"></param>
    /// <param name="dirDescription"></param>
    public void CreateSubDir(string dirName, string dirDescription)
    {
      DirectoryInfo newDirInfo = DirectoryData.CreateSubdirectory(dirName);

      // Erzeugen der Wrapper mit der selben Sortierung.
      DirectoryWrapper dirWrapper = new DirectoryWrapper(newDirInfo.FullName, this);
      dirWrapper.Description = dirDescription;
      dirWrapper.SaveData();

      subDirectories = null;  // Neu einlesen der Unterverzeichnisse.
    }
コード例 #21
0
 /// <summary>
 /// Entfernt ein Verzeichnis aus der Liste, ohne diese physikalisch zu löschen.
 /// </summary>
 /// <param name="file">Datei die entfernt werden soll.</param>
 public void Detach(DirectoryWrapper dir)
 {
   if (subDirectories != null)
   {
     subDirectories.Remove(dir);
   }
 }
コード例 #22
0
    /// <summary>
    /// Erzeugt die Anzeige des aktuellen Pfads mit den Links.
    /// </summary>
    /// <param name="targetCtrl"></param>
    protected void CreateDirPath(DirectoryWrapper directory, Control targetCtrl)
    {
      if (null != directory)
      {
        // Aktuelles Verzeichnis hinzufügen.
        Literal currLayer = new Literal();
        currLayer.Text = directory.PresentationName;
        targetCtrl.Controls.Add(currLayer);

        // Alle übergeordneten Verzeichnisse hinzufügen.
        int step = 0;
        DirectoryWrapper dir = directory.Parent;
        while (dir != null)
        {
          targetCtrl.Controls.AddAt(0, new LiteralControl(" >> "));

          LinkButton dirLayer = new LinkButton();
          dirLayer.ID = "DirUp" + step;
          dirLayer.Text = dir.PresentationName;
          dirLayer.CommandArgument = (++step).ToString();
          dirLayer.Command += new CommandEventHandler(this.ChangeDirUp);
          targetCtrl.Controls.AddAt(0, dirLayer);

          dir = dir.Parent;
        }
      }
      else
      {
        string dirNotFound = Portal.API.Language.GetText(Portal.API.Module.GetModuleControl(this), "DirectoryNotFound");
        targetCtrl.Controls.AddAt(0, new LiteralControl("<i>" + dirNotFound + "</i>"));
      }
    }
コード例 #23
0
    /// <summary>
    /// Wechselt das aktuelle Verzeichnis und lädt die Daten neu.
    /// </summary>
    /// <param name="newCurrDir">Neues Verzeichnis, oder null wenn das RootVerzeichnis gelten soll.</param>
    protected void ChangeCurrentDir(DirectoryWrapper newCurrDir)
    {
      // Zuweisen des neuen Verzeichnis.
      FbConfigAgent.CurrentDirectory = newCurrDir;
      if (null == newCurrDir)
        newCurrDir = FbConfigAgent.CurrentDirectory;

      directoryList.DataSource = newCurrDir.SubDirectories;
      directoryList.DataBind();
      fileList.DataSource = newCurrDir.Files;
      fileList.DataBind();

      // Pfad zu diesem Verzeichnis aktualisieren.
      currPath.Controls.Clear();
      CreateDirPath(newCurrDir, currPath);

      // Wenn das aktuelle Verzeichnis das Root Verzeichnis ist, wird der Up-Button ausgeblendet.
      dirUpBtn.Visible = (FbConfigAgent.CurrentDirectory.Parent != null);
    }
コード例 #24
0
    /// <summary>
    /// Konstruktor
    /// </summary>
    /// <param name="path">Physikalischer Pfad zu diesem Verzeichnis</param>
    /// <param name="parent">Das Parent-Verzeichnis</param>
    public DirectoryWrapper(string path, DirectoryWrapper parent)
    {
      this.directory = new System.IO.DirectoryInfo(path);
      this.parent = parent;

      if (this.parent == null)
        this.virtualPath = "";
    }