public override string GetItemUrl(Item item, UrlOptions options) { // call the base implementation for non-bucketed items if (!BucketManager.IsItemContainedWithinBucket(item)) { return(base.GetItemUrl(item, options)); } var bucketItem = item.GetParentBucketItemOrParent(); // is this item a bucket? if (bucketItem == null || !bucketItem.IsABucket()) { return(base.GetItemUrl(item, options)); } var bucketUrl = base.GetItemUrl(bucketItem, options); if (options.AddAspxExtension) { bucketUrl = bucketUrl.Replace(".aspx", string.Empty); } var name = item.Name; if (options.EncodeNames) { name = MainUtil.EncodePath(item.Name, '/'); } bucketUrl = FileUtil.MakePath(bucketUrl, name); // reutrn url as bucket-name/item-name return(bucketUrl + (options.AddAspxExtension ? ".aspx" : string.Empty)); }
/// <summary> /// Gets a media URL. /// </summary> /// <param name="item">The media item.</param> /// <param name="options">The query string.</param> /// <returns> /// The media URL. /// </returns> public override string GetMediaUrl(MediaItem item, MediaUrlOptions options) { Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(options, "options"); var flag = options.Thumbnail || HasMediaContent(item); if (!flag && item.InnerItem["path"].Length > 0) { if (!options.LowercaseUrls) { return(item.InnerItem["path"]); } return(item.InnerItem["path"].ToLowerInvariant()); } if (options.UseDefaultIcon && !flag) { return(!options.LowercaseUrls ? Themes.MapTheme(Settings.DefaultIcon) : Themes.MapTheme(Settings.DefaultIcon).ToLowerInvariant()); } Assert.IsTrue(Config.MediaPrefixes[0].Length > 0, "media prefixes are not configured properly."); var str1 = MediaLinkPrefix; if (options.AbsolutePath) { str1 = options.VirtualFolder + str1; } else if (str1.StartsWith("/", StringComparison.InvariantCulture)) { str1 = StringUtil.Mid(str1, 1); } var part2 = MainUtil.EncodePath(str1, '/'); if (options.AlwaysIncludeServerUrl) { part2 = FileUtil.MakePath(string.IsNullOrEmpty(options.MediaLinkServerUrl) ? WebUtil.GetServerUrl() : options.MediaLinkServerUrl, part2, '/'); } var str2 = StringUtil.EnsurePrefix('.', StringUtil.GetString(options.RequestExtension, item.Extension, "ashx")); var str3 = options.ToString(); if (str3.Length > 0) { str2 = str2 + "?" + str3; } const string str4 = "/sitecore/media library/"; var path = item.InnerItem.Paths.Path; var str5 = MainUtil.EncodePath(!options.UseItemPath || !path.StartsWith(str4, StringComparison.OrdinalIgnoreCase) ? item.ID.ToShortID().ToString() : StringUtil.Mid(path, str4.Length), '/'); var str6 = part2 + str5 + (options.IncludeExtension ? str2 : string.Empty); return(!options.LowercaseUrls ? str6 : str6.ToLowerInvariant()); }
public override string GetMediaUrl(MediaItem item, MediaUrlOptions options) { Assert.ArgumentNotNull((object)item, nameof(item)); Assert.ArgumentNotNull((object)options, nameof(options)); Assert.IsTrue(this.Config.MediaPrefixes[0].Length > 0, "media prefixes are not configured properly."); string str1 = this.MediaLinkPrefix; if (options.AbsolutePath) { str1 = options.VirtualFolder + str1; } else if (str1.StartsWith("/", StringComparison.InvariantCulture)) { str1 = StringUtil.Mid(str1, 1); } string part2 = MainUtil.EncodePath(str1, '/'); if (options.AlwaysIncludeServerUrl) { part2 = FileUtil.MakePath(string.IsNullOrEmpty(options.MediaLinkServerUrl) ? WebUtil.GetServerUrl() : options.MediaLinkServerUrl, part2, '/'); } string str2 = StringUtil.EnsurePrefix('.', StringUtil.GetString(options.RequestExtension, item.Extension, "ashx")); string str3 = options.ToString(); if (options.AlwaysAppendRevision) { string str4 = Guid.Parse(item.InnerItem.Statistics.Revision).ToString("N"); str3 = string.IsNullOrEmpty(str3) ? "rev=" + str4 : str3 + "&rev=" + str4; } if (str3.Length > 0) { str2 = str2 + "?" + str3; } string str5 = "/sitecore/media library/"; string path = item.InnerItem.Paths.Path; string str6 = MainUtil.EncodePath(!options.UseItemPath || !path.StartsWith(str5, StringComparison.OrdinalIgnoreCase) ? item.ID.ToShortID().ToString() : StringUtil.Mid(path, str5.Length), '/'); string mediaUrl = part2 + str6 + (options.IncludeExtension ? str2 : string.Empty); if (options.LowercaseUrls) { return(this.GetMediaUrl(mediaUrl.ToLowerInvariant(), item)); } return(this.GetMediaUrl(mediaUrl, item)); }
public static string AddShortUrl(this Item item, UrlOptions options) { if (item != null && item.Parent != null && item.Parent.IsABucketFolder()) { try { string shortUrl = item.ResolveShortUrl(options); if (string.IsNullOrEmpty(shortUrl)) { return(null); } if (options.EncodeNames) { shortUrl = MainUtil.EncodePath(shortUrl, '/'); } if (options.LowercaseUrls) { shortUrl = shortUrl.ToLowerInvariant(); } if (!shortUrl.EndsWith(".aspx") && options.AddAspxExtension) { shortUrl += ".aspx"; } ShortUrlTable.RemoveID(Prefix, item.ID); ShortUrlTable.Add(Prefix, shortUrl, item.ID); return(shortUrl); } catch (Exception exception) { Log.Fatal( string.Format("Short Url Manager: cannot add short url for item {0} {1} {2}", item.Uri, exception.Message, exception.StackTrace), new object()); return(null); } } return(null); }