public object Clone() { NavigationItem item = new NavigationItem(); item.Title = this.Title; item.Url = this.Url; item.Name = this.Name; item.SetSerializerData(this.GetSerializerData()); return item; }
public bool Set(UrlMapping.UrlMappingItem item, string requesturl) { Url = item; string url; if (item.Index == null || item.SubIndex == null || item.SubsubIndex == null) { Dictionary <int, NavigationItem> menuItems = UrlMapping.UrlMappingModule.Instance.Provider.MenuItems; if (item.Index == null) { double max = 0; int maxi = 0, maxj = 0, maxk = 0; foreach (int i in menuItems.Keys) { double d = 0; foreach (int j in menuItems[i].Children.Keys) { NavigationItem ni = menuItems[i].Children[j]; foreach (int k in ni.Children.Keys) { NavigationItem nii = ni.Children[k]; url = trimUrl(nii.Url); if (string.IsNullOrEmpty(url)) { continue; } d = StringUtil.Similarity(requesturl, url); if (d > max) { max = d; maxi = i; maxj = j; maxk = k; } } url = trimUrl(ni.Url); if (string.IsNullOrEmpty(url)) { continue; } d = StringUtil.Similarity(requesturl, url); if (d > max) { max = d; maxi = i; maxj = j; maxk = -1; } } url = trimUrl(menuItems[i].Url); if (string.IsNullOrEmpty(url)) { continue; } d = StringUtil.Similarity(requesturl, url); if (d > max) { max = d; maxi = i; maxj = -1; maxk = -1; } } if (max > 0) { Index = maxi; SubIndex = maxj; SubsubIndex = maxk; } else { return(false); } } else if (item.SubIndex == null) { Index = item.Index.Value; double max = 0; int maxj = 0, maxk = 0; double d = 0; foreach (int j in menuItems[Index].Children.Keys) { NavigationItem ni = menuItems[Index].Children[j]; foreach (int k in ni.Children.Keys) { NavigationItem nii = ni.Children[k]; url = trimUrl(nii.Url); if (string.IsNullOrEmpty(url)) { continue; } d = StringUtil.Similarity(requesturl, url); if (d > max) { max = d; maxj = j; maxk = k; } } url = trimUrl(ni.Url); if (string.IsNullOrEmpty(url)) { continue; } d = StringUtil.Similarity(requesturl, url); if (d > max) { max = d; maxj = j; maxk = -1; } } if (max > 0) { SubIndex = maxj; SubsubIndex = maxk; } else { return(false); } } else { double max = 0; int maxk = 0; double d = 0; NavigationItem ni = menuItems[Index].Children[SubIndex]; foreach (int k in ni.Children.Keys) { NavigationItem nii = ni.Children[k]; url = trimUrl(nii.Url); if (string.IsNullOrEmpty(url)) { continue; } d = StringUtil.Similarity(requesturl, url); if (d > max) { max = d; maxk = k; } } if (max > 0) { SubsubIndex = maxk; } else { return(false); } } } else { Index = item.Index.Value; SubIndex = item.SubIndex.Value; SubsubIndex = item.SubsubIndex.Value; } Title = item.Title; Name = item.Name; foreach (string key in Url.Keys) { SetExtendedAttribute(key, Url[key]); } OK = true; return(true); }