London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

Problem with own VPP

Vote:
 

We have an own Virtual Path Provider that shall fetch folders from an XML and files from a remote server based on an attribute on the folder.
Listing of the folders works fine, but when you go 2 steps down in the folder structure abd want's to go up episerver says "Unsaved page - A folder for this page isn't created..."
We can't find where the problem is, need assistance.

Directoris method in SampleDirectory.cs:

public override IEnumerable Directories
        {
            get
            {
                directoryXml = new XmlDocument();
                directoryXml.Load(HttpContext.Current.Server.MapPath("~/App_Data/FileStore/FileStore.xml"));

                if (this.IsFirstLevel)
                {
                    XmlNode startNode = directoryXml["filestore"];

                    _directories = new List<SampleDirectory>();
                    foreach (XmlNode folderNode in startNode.ChildNodes)
                    {
                        string virtualPath = VirtualPath + folderNode.Attributes["id"].Value + "/";
                        _directories.Add(new SampleDirectory(vpp, virtualPath));
                    }

                    return _directories;
                }
                else
                {
                    string[] folders = this.VirtualPath.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);

                    bool dirUpSelected = false;

                    string[] formKeys = HttpContext.Current.Request.Form.AllKeys[14].Split('$');
                    if (formKeys[formKeys.Length - 1] == "DirectoryUpButton")
                    {
                        folders = this.Parent.VirtualPath.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                        dirUpSelected = true;
                    }

                    string parentFolder = folders[folders.Length - 1];
                    XmlNode startNode = directoryXml["filestore"].SelectSingleNode("//folder[@id=\"" + (parentFolder ?? "") + "\"]");
                    if (startNode == null)
                        startNode = directoryXml["filestore"];

                    _directories = new List<SampleDirectory>();
                    foreach (XmlNode folderNode in startNode.ChildNodes)
                    {
                        string virtualPath = VirtualPath + folderNode.Attributes["id"].Value + "/";

                        if (dirUpSelected)
                            virtualPath = this.Parent.VirtualPath;

                        _directories.Add(new SampleDirectory(vpp, virtualPath));
                    }

                    return _directories;
                }
            }
        }

        public override string Name
        {
            get
            {
                XmlNode node = GetXmlNode(VirtualPath);
                if (node == null)
                {
                    return "";
                }
                XmlAttribute name = node.Attributes["name"];
                return name != null ? name.Value : base.Name;
            }
        }

        private XmlNode GetXmlNode(string virtualPath)
        {
            string[] folders = virtualPath.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);

            if (folders.Length == 0)
            {
                return null;
            }

            if (folders.Length == 1)
            {
                return directoryXml[folders[0]];
            }
            return directoryXml.SelectSingleNode(string.Format("//folder[@id='{0}']", folders[folders.Length - 1]));
        }

    

#53371
Sep 06, 2011 10:10
Vote:
 
#53372
Edited, Sep 06, 2011 10:14
Vote:
 

No ideas?

#54211
Oct 05, 2011 13:10
Vote:
 

Due to the number in the path it figures it is a page folder even though it is not ?

#54213
Oct 05, 2011 14:39
Vote:
 

Per, not following you, how do you mean?

#54214
Oct 05, 2011 14:42
Vote:
 

I cannot find a reference to the error message "Unsaved page - A folder for this page isn't created..." in our code, I am just guessing that it has something to do with page folders which are in the format of /folder/number.

#54215
Oct 05, 2011 15:26
Vote:
 

ok, but sorry to say that this info doesn't help us getting closer to solving our problem

#54216
Oct 05, 2011 15:36
Vote:
 

No, but maybe you can help me out here. Is there a reason I cannot find the error message for example, is it the actual error message or something like it ? And are the folders in this format or not ?

#54220
Edited, Oct 05, 2011 16:27
Vote:
 

Per, take a look at the link to the code, there is also a few screen shots displaying our problem.
The "folder" structure is loaded from a xml-file included in the codesample file.

#54229
Oct 06, 2011 7:32
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.