Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 4
0
        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);
        }